{"version":3,"sources":["webpack:///./node_modules/adaptivecards/src/card-elements.ts"],"names":["Enums","__webpack_require__","shared_1","Utils","host_config_1","TextFormatters","card_object_1","serialization_1","registry_1","strings_1","controls_1","clearElement","element","trustedHtml","window","_b","_a","trustedTypes","emptyHTML","innerHTML","renderSeparation","hostConfig","separationDefinition","orientation","spacing","lineThickness","separator","document","createElement","className","makeCssClassName","Orientation","Horizontal","setAttribute","color","lineColor","stringToCssColor","style","paddingTop","marginBottom","borderBottom","height","paddingLeft","marginRight","borderRight","width","overflow","flex","exports","CardElement","_super","_this","apply","this","arguments","_truncatedDueToOverflow","__extends","Object","defineProperty","prototype","lang","getValue","langProperty","parent","value","setValue","isVisibleProperty","GlobalSettings","useAdvancedCardBottomTruncation","undoOverflowTruncation","isVisible","updateRenderedElementVisibility","_renderedElement","raiseElementVisibilityChangedEvent","toString","internalRenderSeparator","renderedSeparator","getEffectiveSpacing","undefined","separatorOrientation","alwaysBleedSeparators","parentContainer","getParentContainer","getEffectivePadding","parentPhysicalPadding","paddingDefinitionToSpacingDefinition","marginLeft","left","right","displayMode","isDesignMode","_defaultRenderedElementDisplayMode","display","removeProperty","_separatorElement","isFirstElement","hideElementDueToOverflow","visibility","showElementHiddenDueToOverflow","handleOverflow","maxHeight","isHiddenDueToOverflow","handled","truncateOverflow","resetOverflow","sizeChanged","getDefaultSerializationContext","SerializationContext","createPlaceholderElement","styleDefinition","getEffectiveStyleDefinition","foregroundCssColor","foregroundColors","default","subtle","border","padding","minHeight","fontSize","innerText","Strings","defaults","emptyElementText","getJsonTypeName","adjustRenderedElementSize","renderedElement","updateInputsVisualState","hover","allInputs","getAllInputs","inputEventType","InputEventType","MouseEnterOnCard","MouseLeaveOnCard","forEach","input","updateVisualState","isDisplayed","offsetHeight","overrideInternalRender","internalRender","applyPadding","separatorElement","isBleeding","PaddingDefinition","getImmediateSurroundingPadding","physicalPadding","_maxHeight","getDefaultPadding","getHasBackground","ignoreBackgroundImages","getHasBorder","getPadding","_padding","setPadding","shouldSerialize","context","elementRegistry","findByName","ContainerStyle","Default","parse","source","call","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","Error","errors","indexOutOfRange","indexOfAction","action","i","remove","CardElementContainer","removeItem","render","id","customCssSelector","classList","add","boxSizing","updateLayout","_processChildren","updateActionsEnabledState","_i","allActions_1","getRootElement","getAllActions","length","updateEnabledState","indexOf","_cardElement","rootElement","AdaptiveCard","designMode","_element","isLastElement","isAtTheVeryLeft","isAtTheVeryRight","isAtTheVeryTop","isAtTheVeryBottom","isBleedingAtTop","isBleedingAtBottom","getRootObject","currentElement","Container","processActions","push","getResourceInformation","getElementById","getActionById","_id","getElementByIdFromAction","ShowCardAction","card","getEffectiveHorizontalAlignment","horizontalAlignment","HorizontalAlignment","Left","_hostConfig","defaultHostConfig","_parent","StringProperty","Versions","v1_1","BoolProperty","v1_2","separatorProperty","v1_0","heightProperty","ValueSetProperty","horizontalAlignmentProperty","EnumProperty","spacingProperty","__decorate","property","CardObject","ActionProperty","targetVersion","name","forbiddenActionTypes","sender","parseAction","toJSON","target","serializeValue","PropertyDefinition","BaseTextBlock","text","ariaHidden","populateSchema","schema","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","warning","Attention","attention","init","textDefinition","size","weight","isSubtle","applyStylesTo","targetElement","getFontTypeDefinition","effectiveFontType","fontFamily","fontWeight","colorDefinition","effectiveColor","targetColor","effectiveIsSubtle","effectiveWeight","TextWeight","Lighter","fontWeights","lighter","Bolder","bolder","selectAction","sizeProperty","weightProperty","colorProperty","isSubtleProperty","fontTypeProperty","FontType","TextBlock","wrap","_treatAsPlainText","useMarkdown","restoreOriginalContent","maxLines","_computedLineHeight","originalHtml","_ttRoundtripPolicy","createHTML","_originalInnerHtml","truncateIfSupported","children","isTextOnly","tagName","toLowerCase","truncateText","_processedText","preProcessedText","preProcessPropertyValue","forElementId","labelElement","htmlFor","headingLevel","textBlock","supportsInteractivity","onclick","e","isEffectivelyEnabled","preventDefault","cancelBubble","execute","setupElementForAccessibility","formattedText","formatText","allowMarkForTextHighlighting","replace","markdownProcessingResult","applyMarkdown","didProcess","outputHtml","markStyle","effectiveStyle","highlightBackgroundColor","highlightForegroundColor","processedHtml","_ttMarkdownPolicy","firstElementChild","HTMLElement","marginTop","textOverflow","lastElementChild","anchors","getElementsByTagName","anchor","raiseAnchorClickedEvent","oncontextmenu","_c","Array","from","wordWrap","isInternetExplorer","useWebkitLineClamp","webkitBoxOrient","webkitLineClamp","whiteSpace","useAdvancedTextBlockTruncation","Center","textAlign","Right","lineHeights","lineHeight","processChildren","wrapProperty","maxLinesProperty","NumProperty","styleProperty","v1_5","createPolicy","TextRun","italic","strikethrough","highlight","underline","href","getHref","appendChild","fontStyle","textDecoration","backgroundColor","highlightColors","italicProperty","strikethroughProperty","highlightProperty","underlineProperty","v1_3","RichTextBlock","_inlines","internalAddInline","inline","forceAdd","isInline","elementCannotBeUsedAsInline","inlineAlreadyParented","setParent","internalParse","isArray","jsonInline","textRun","parseElement","internalToJSON","jsonInlines","renderedInlines","renderedInline","getInlineCount","getInlineAt","addInline","removeInline","splice","Fact","getSchemaKey","titleProperty","valueProperty","SerializableObject","FactSet","facts","borderWidth","borderSpacing","borderStyle","borderCollapse","trElement","factSet","tdElement","title","maxWidth","verticalAlign","factsProperty","SerializableObjectCollectionProperty","ImageDimensionProperty","internalName","fallbackProperty","getInternalName","sourceValue","defaultValue","isValid","SizeAndUnit","unit","SizeUnit","Pixel","physicalSize","isValidValue","logParseEvent","ValidationEvent","InvalidPropertyValue","invalidPropertyValue","isNaN","Image","Size","Auto","ImageStyle","applySize","pixelWidth","pixelHeight","imageSizes","Stretch","url","alignItems","justifyContent","imageElement","renderedImageElement","onload","_e","raiseImageLoadedEvent","onerror","errorElement","minWidth","onkeypress","code","Person","borderRadius","backgroundPosition","backgroundRepeat","setImageSource","altTextProperty","alt","mimeType","imageForceLoader","ImageForceLoader","forceLoad","configureImage","src","urlProperty","resetImage","backgroundColorProperty","pixelWidthProperty","pixelHeightProperty","shouldForceLoadProperty","v1_6","doForceLoad","uniqueHash","Date","now","urlWithForceLoadOption","image","allowVerticalOverflow","isSelectable","isElementAllowed","isInteractive","SpacingDefinition","paddingRight","paddingBottom","forbiddenChildElements","releaseDOMResources","getItemCount","getItemAt","internalValidateProperties","item","addFailure","InteractivityNotAllowed","interactivityNotAllowed","elementTypeNotAllowed","_selectAction","overflowX","overflowY","findDOMNodeOwner","node","ImageSet","_images","imageSize","ImageSize","presentationStyle","ImageSetPresentationStyle","pixelOffset","flexWrap","imageSet","maxImageHeight","renderedImage","margin","Stacked","applyStackedPresentationStyle","dimension","StackedImageConfigurator","parseNumericPixelDimension","bgColor","getEffectiveBackgroundColor","configureImagesArrayAsStackedLayout","getFirstVisibleRenderedItem","getLastVisibleRenderedItem","itemIndex","addImage","cardElement","imagesProperty","imageSizeProperty","imagePresentationStyle","offset","sign45","maxImageCounts","normalizationConstant","Math","max","moveImageRight","moveImageUp","moveImageDown","makeImageRound","applyBorder","configureImageForBottomLeft","zIndex","configureImageForTopRight","elements","substring","parseInt","ContentSource","mimeTypeProperty","CaptionSource","label","kind","labelProperty","MediaSource","type","MediaPlayer","play","_posterUrl","HTML5MediaPlayer","owner","_selectedSources","_captionSources","processSources","_selectedMediaType","sources","mimeComponents","split","supportedMediaTypes","captionSources","canPlay","fetchVideoDetails","_mediaElement","altText","mediaPlayerAriaLabel","autoplay","controls","isMobileOS","muted","preload","renderedSource","captionSource","renderedCaptionSource","CustomMediaPlayer","matches","IFrameMediaMediaPlayer","iFrameTitle","_videoId","container","position","iFrame","getEmbedVideoUrl","frameBorder","allow","allowFullscreen","VimeoPlayer","oEmbedUrl","concat","fetch","response","sent","ok","json","posterUrl","videoId","DailymotionPlayer","apiUrl","YouTubePlayer","_startTimeIndex","Media","createMediaPlayer","customMediaPlayers","provider","_d","_f","urlPatterns","exec","handlePlayButtonInvoke","event","media","allowInlinePlayback","mediaPlayerElement","_mediaPlayer","focus","onPlay","displayPoster","posterRootElement_1","poster","defaultPoster","posterImageElement_1","parentNode","removeChild","playButtonOuterElement","tabIndex","mediaPlayerPlayMedia","playButtonInnerElement","playButtonArrowWidth","playButtonArrowHeight","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopColor","borderRightColor","borderBottomColor","transform","playButtonContainer","then","mediaSource","selectedMediaType","youTubeVideoPlayer","vimeoVideoPlayer","dailymotionVideoPlayer","sourcesProperty","captionSourcesProperty","posterProperty","Input","inputStyle","InputStyle","getAllLabelIds","labelIds","labelledBy","_renderedLabelElement","_renderedErrorMessageElement","updateInputControlAriaLabelledBy","_renderedInputControlElement","join","removeAttribute","_inputControlContainerElement","_outerContainerElement","labelPosition","InputLabelPosition","Inline","flexDirection","renderedInputControlId","generateUniqueId","labelRichTextBlock","labelInline","isRequired","inputs","requiredInputs","isRequiredCueInline","suffix","suffixColor","optionalInputs","alignSelf","inputSpacing","isNullable","labelWidth","Weight","labelWidthInPercent","labelWidthInPixel","defaultLabelWidth","InitialRender","onblur","ev","FocusLeave","resetDirtyState","valueChanged","onInputValueChangedHandler","resetValidationFailureCue","onValueChanged","onInputValueChanged","renderedInputControlElement","ChoiceSetInput","isDynamicTypeahead","removeValidationFailureCue","showValidationErrorMessage","errorMessage","displayInputValidationErrors","errorMessageTextBlock","allowRevealOnHoverStyle","shouldHideInputAdornersForRevealOnHover","eventType","isInputInFocus","activeElement","inputHoverClassName","isMouseOverCard","contains","RevealOnHover","isDirty","_oldValue","PropertyCantBeNull","inputsMustHaveUniqueId","RequiredInputsShouldHaveLabel","RequiredInputsShouldHaveErrorMessage","validateValue","isSet","showValidationFailureCue","isRequiredProperty","errorMessageProperty","inputStyleProperty","labelWidthProperty","CustomProperty","prop","invalidLabelWidth","invalidInputLabelWidth","serializeNumber","labelPositionProperty","Above","TextInput","isMultiline","InputTextStyle","Text","setupInput","placeholder","maxLength","oninput","ctrlKey","inlineAction","Password","renderedInputControl","button_1","iconUrl","icon_1","textContent","inlineActionTitle","inputControlContainerElement","regex","RegExp","test","maxLengthProperty","isMultilineProperty","placeholderProperty","Tel","Url","Email","inlineActionProperty","regexProperty","ToggleInput","valueOn","valueOff","_checkboxInputElement","joinedLabelIds","_checkboxInputLabelElement","checked","_oldCheckboxValue","onchange","useMarkdownInRadioButtonAndCheckbox","spacerElement","valueOnProperty","valueOffProperty","Choice","ChoiceSetInputDataQuery","typeProperty","datasetProperty","countProperty","skipProperty","isMultiSelect","choices","getUniqueCategoryName","uniqueCategoryName","_uniqueCategoryCounter","allowDynamicallyFilteredChoiceSet","choicesData","dataset","getFilterForDynamicSearch","_textInput","getDropdownElement","_filteredChoiceSet","dropdown","renderChoices","filter","fetchedChoices","processResponse","showLoadingIndicator","removeLoadingIndicator","showErrorIndicator","error","createPlaceholderOptionWhenValueDoesNotExist","placeholderOption","selected","disabled","hidden","internalApplyAriaCurrent","_selectElement","options","option","renderCompoundInput","cssClassName","defaultValues","_toggleInputs","_labels","choice","_uniqueCategoryName","compoundInput","filteredChoiceSet_1","FilteredChoiceSet","textInput","onInputChangeEventHandler","debounce","processChoices","debounceTimeInMilliSeconds","choiceSetInputValueSeparator","inputContainer","dataList","append","isCompact","appearance","CollectionCantBeEmpty","choiceSetMustHaveAtLeastOneChoice","choiceSetChoicesMustHaveTitleAndValue","dynamicChoices","toggleInput","selectedIndex","choicesProperty","choicesDataProperty","SerializableObjectProperty","isMultiSelectProperty","choiceSetId","_choiceSetId","_choices","_dynamicChoices","_visibleChoiceCount","_highlightedChoiceId","choiceSetContainer","onkeydown","key","highlightChoice","click","_dropdown","createChoice","onmousemove","scrollIntoView","currentHighlightedChoice","nextHighlightedChoice","filterChoices","trim","choices_1","__spreadArray","matchIndex","matchedText","choiceContainer","getStatusIndicator","_errorIndicator","errorIndicator","_loadingIndicator","loadingIndicator","resetDropdown","clearElementChildren","showDropdown","hasChildNodes","map","NumberInput","_numberInputElement","min","valueAsNumber","minProperty","maxProperty","DateInput","_dateInputElement","hideDatePicker","updateInputAdornersVisibility","valueAsDate","minDate","maxDate","TimeProperty","TimeInput","convertTimeStringToDate","timeString","_timeInputElement","hideTimePicker","Action","ActionStyle","mode","ActionMode","Primary","_state","_isFocusable","renderButtonContent","titleElement","actions","iconPlacement","ActionIconPlacement","AboveTitle","allowTitleToWrap","iconElement","iconSize","updateCssClasses","parentContainerStyle","isFocusable","Positive","makeCssClassNames","internalGetReferencedInputs","internalPrepareForExecution","_inputs","internalValidateInputs","referencedInputs","keys","actionRegistry","raiseExecuteActionEvent","onExecuteActionHandler","onExecute","onExecuteAction","prepareForExecution","internalAfterExecute","rootObject","getAriaRole","ariaRole","getAriaRoleFromEnum","role","ActionRole","Button","Link","Menu","MenuItem","Tab","promoteTooltipToLabel","HTMLButtonElement","tooltip","buttonElement","_actionCollection","actionExecuted","getReferencedInputs","invalidInputs","removeAction","validateInputs","isEnabled","iconUrlProperty","Destructive","modeProperty","Secondary","tooltipProperty","isEnabledProperty","roleProperty","SubmitActionBase","disabledUnlessAssociatedInputsChange","_isPrepared","_areReferencedInputsDirty","associatedInputs","current","inputs_1","_originalData","_processedData","JSON","stringify","resetInputsDirtyStateAfterActionExecution","resetReferencedInputsDirtyState","dataProperty","associatedInputsProperty","disabledUnlessAssociatedInputsChangeProperty","SubmitAction","JsonTypeName","UniversalAction","ExecuteAction","verbProperty","v1_4","DataQuery","filterProperty","OpenUrlAction","propertyMustBeSet","ToggleVisibilityAction","targetElements","updateAriaControlsAttribute","elementIds","elementId","addTargetElement","removeTargetElement","targetElementsProperty","parseBool","serializeArray","StringWithSubstitutionProperty","StringWithSubstitutions","set","parseString","getOriginal","HttpHeader","_value","substituteInputValues","ContentTypes","applicationXWwwFormUrlencoded","get","newValue","nameProperty","HttpAction","_ignoreInputValidation","_url","headers","_body","contentType","applicationJson","header","actionHttpHeadersMustHaveNameAndValue","bodyProperty","methodProperty","headersProperty","ignoreInputValidationProperty","InlineAdaptiveCard","effectiveHostConfig","state","jsonCard","showCardMustHaveCard","showCard","actionMode","ShowCardActionMode","Popup","OverflowAction","_actions","overflowButtonText","overflowButtonTooltip","getActions","onDisplayOverflowActionMenuHandler","onDisplayOverflowActionMenu","contextMenu_1","PopupMenu","menuItem","this_1","onClick","actionToExecute","closePopup","items","onClose","popup","ActionCollection","_items","_renderedActions","_owner","isActionAllowed","forbiddenTypes","forbiddenTypes_1","forbiddenType","constructor","refreshContainer","_actionCardContainer","_actionCard","renderedActionCount","inlineTopMargin","layoutChanged","showActionCard","suppressStyle","raiseEvent","renderedCard","_expandedAction","raiseInlineCardExpandedEvent","collapseExpandedAction","previouslyExpandedAction","expandShowCardAction","afterSelectedAction","renderedAction","actionsOrientation","clear","source_1","jsonAction","forbiddenActions","ContainerWithActions","getForbiddenActionNames","addAction","propertyName","validateProperties","maxActions","TooManyActions","tooManyActions","ActionTypeNotAllowed","actionTypeNotAllowed","preExpandSingleShowCardAction","buttonStrip","actionAlignment","ActionAlignment","allowedActions","bind","primaryActions_1","secondaryActions_1","overflowPrimaryActions","allowMoreThanMaxActionsInOverflowMenu","shouldRenderOverflowActionButton","_overflowAction","isRootAction","isAtRootLevelActions","onRenderOverflowActionsHandler","onRenderOverflowActions","raiseRenderOverflowActionsEvent","buttonSpacing","spacer","buttonStripContainer","actionAlreadyParented","expandedAction","actionIndex","ActionSet","orientationProperty","ContainerStyleProperty","onGetInitialValue","Emphasis","StylableCardElementContainer","allowCustomStyle","applyBackground","surroundingPadding","currentElementHasBackgroundImage","backgroundImage","hasExplicitStyle","Padding","explicitStyle","ContainerBase","_bleed","minPixelHeight","getHasExpandedAction","getBleed","setBleed","alwaysAllowBleed","bleedProperty","minHeightProperty","PixelSizeProperty","BackgroundImage","resetDefaultValues","fillMode","FillMode","Repeat","RepeatHorizontally","RepeatVertically","Cover","backgroundSize","backgroundPositionX","verticalAlignment","VerticalAlignment","Top","backgroundPositionY","Bottom","fillModeProperty","verticalAlignmentProperty","_renderedItems","backgroundImageProperty","insertItemAt","forceInsert","elementAlreadyParented","isStandalone","elementTypeNotStandalone","getItemsCollectionPropertyName","applyRTL","rtl","dir","getEffectiveVerticalContentAlignment","renderedItem","placeholderElement","boundary_1","offsetTop","handleElement_1","elt","getFitStatus","ContainerFitStatus","FullyInContainer","Overflowing","containerMaxHeight","FullyOutOfContainer","setShouldFallback","jsonItems","jsonItems_1","collectionPropertyName","removePaddingFromContainersWithBackgroundImage","verticalContentAlignment","isRtl","firstRenderedItem","lastRenderedItem","addItem","insertItemBefore","insertBefore","insertItemAfter","insertAfter","verticalContentAlignmentProperty","rtlProperty","Column","_computedWeight","_context","Vertical","ColumnSet","widthProperty","invalidWidth","compareTo","invalidColumnWidth","_columns","createColumnInstance","parseCardObject","typeName","_errorType","ElementTypeNotAllowed","_renderedColumns","totalWeight","column","computedWeight","renderedColumn","jsonColumns","jsonColumns_1","getColumnAt","weightedColumns","stretchedColumns","Hint","hints","dontUseWeightedAndStrecthedColumnsInSameSet","addColumn","columnAlreadyBelongsToAnotherSet","onImageLoadedHandler","onImageLoaded","onAnchorClickedHandler","onAnchorClicked","isExpanded","onInlineCardExpandedHandler","onInlineCardExpanded","shouldUpdateLayout","onElementVisibilityChangedHandler","onElementVisibilityChanged","hide","readOnly","required","parseActions","renderedActions","renderIfEmpty","RefreshActionProperty","RefreshDefinition","actionProperty","userIdsProperty","StringArrayProperty","AuthCardButton","imageProperty","TokenExchangeResource","idProperty","uriProperty","providerIdProperty","Authentication","connectionNameProperty","buttonsProperty","tokenExchangeResourceProperty","refreshProperty","processMarkdownEventRemoved","onProcessMarkdown","markdownit","markdownIt","_haveWarnedAboutNoMarkdownProcessing","console","warn","markdownProcessingNotEnabled","isVersionSupported","bypassVersionCheck","version","maxVersion","major","minor","_fallbackCard","fallbackElement","versionProperty","adaptiveCard","typeNameProperty","MissingCardType","invalidCardType","UnsupportedCardVersion","unsupportedCardVersion","shouldFallback","setTabIndexAtCardRoot","speak","onmouseenter","onmouseleave","inputElements","schemaUrl","$schemaProperty","Version","latest","invalidCardVersion","fallbackTextProperty","speakProperty","authenticationProperty","_forbiddenTypes","Set","internalParseCardObject","allowFallback","createInstanceCallback","oldForbiddenTypes_1","has","TypeErrorType","ForbiddenType","tryToFallback","enableFallback","UnknownType","fallback","cardObjectParsed","o","onParseAction","onParseElement","forbiddenTypeNames","createInstance","errorType","UnknownElementType","unknownElementType","UnknownActionType","unknownActionType","_elementRegistry","GlobalRegistry","setElementRegistry","_actionRegistry","setActionRegistry","BaseSerializationContext","defaultElements","register","defaultActions"],"mappings":"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","file":"50.9450a9c976adac8268dd.js","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport * as Enums from \"./enums\";\r\nimport { CarouselEvent } from \"./carousel\";\r\nimport {\r\n    PaddingDefinition,\r\n    GlobalSettings,\r\n    SizeAndUnit,\r\n    SpacingDefinition,\r\n    ISeparationDefinition,\r\n    Dictionary,\r\n    StringWithSubstitutions,\r\n    ContentTypes,\r\n    IInput,\r\n    IResourceInformation\r\n} from \"./shared\";\r\nimport * as Utils from \"./utils\";\r\nimport {\r\n    HostConfig,\r\n    defaultHostConfig,\r\n    BaseTextDefinition,\r\n    FontTypeDefinition,\r\n    ColorSetDefinition,\r\n    TextColorDefinition,\r\n    ContainerStyleDefinition,\r\n    TextStyleDefinition\r\n} from \"./host-config\";\r\nimport * as TextFormatters from \"./text-formatters\";\r\nimport { CardObject, ValidationResults } from \"./card-object\";\r\nimport {\r\n    Versions,\r\n    Version,\r\n    property,\r\n    BaseSerializationContext,\r\n    SerializableObject,\r\n    SerializableObjectSchema,\r\n    StringProperty,\r\n    BoolProperty,\r\n    ValueSetProperty,\r\n    EnumProperty,\r\n    SerializableObjectCollectionProperty,\r\n    SerializableObjectProperty,\r\n    PixelSizeProperty,\r\n    NumProperty,\r\n    PropertyBag,\r\n    CustomProperty,\r\n    PropertyDefinition,\r\n    StringArrayProperty\r\n} from \"./serialization\";\r\nimport { CardObjectRegistry, GlobalRegistry } from \"./registry\";\r\nimport { Strings } from \"./strings\";\r\nimport { MenuItem, PopupMenu } from \"./controls\";\r\n\r\n\r\nfunction clearElement(element: HTMLElement) : void {\r\n    const trustedHtml = (typeof window === 'undefined') ? \"\" : (window.trustedTypes?.emptyHTML ?? \"\");\r\n    element.innerHTML = trustedHtml as string;\r\n}\r\n\r\nexport function renderSeparation(\r\n    hostConfig: HostConfig,\r\n    separationDefinition: ISeparationDefinition,\r\n    orientation: Enums.Orientation\r\n): HTMLElement | undefined {\r\n    if (\r\n        separationDefinition.spacing > 0 ||\r\n        (separationDefinition.lineThickness && separationDefinition.lineThickness > 0)\r\n    ) {\r\n        const separator = document.createElement(\"div\");\r\n        separator.className = hostConfig.makeCssClassName(\r\n            \"ac-\" +\r\n                (orientation === Enums.Orientation.Horizontal ? \"horizontal\" : \"vertical\") +\r\n                \"-separator\"\r\n        );\r\n        separator.setAttribute(\"aria-hidden\", \"true\");\r\n\r\n        const color = separationDefinition.lineColor\r\n            ? Utils.stringToCssColor(separationDefinition.lineColor)\r\n            : \"\";\r\n\r\n        if (orientation === Enums.Orientation.Horizontal) {\r\n            if (separationDefinition.lineThickness) {\r\n                separator.style.paddingTop = separationDefinition.spacing / 2 + \"px\";\r\n                separator.style.marginBottom = separationDefinition.spacing / 2 + \"px\";\r\n                separator.style.borderBottom =\r\n                    separationDefinition.lineThickness + \"px solid \" + color;\r\n            } else {\r\n                separator.style.height = separationDefinition.spacing + \"px\";\r\n            }\r\n        } else {\r\n            if (separationDefinition.lineThickness) {\r\n                separator.style.paddingLeft = separationDefinition.spacing / 2 + \"px\";\r\n                separator.style.marginRight = separationDefinition.spacing / 2 + \"px\";\r\n                separator.style.borderRight =\r\n                    separationDefinition.lineThickness + \"px solid \" + color;\r\n            } else {\r\n                separator.style.width = separationDefinition.spacing + \"px\";\r\n            }\r\n        }\r\n\r\n        separator.style.overflow = \"hidden\";\r\n        separator.style.flex = \"0 0 auto\";\r\n\r\n        return separator;\r\n    } else {\r\n        return undefined;\r\n    }\r\n}\r\n\r\nexport type CardElementHeight = \"auto\" | \"stretch\";\r\n\r\nexport abstract class CardElement extends CardObject {\r\n    //#region Schema\r\n\r\n    static readonly langProperty = new StringProperty(\r\n        Versions.v1_1,\r\n        \"lang\",\r\n        true,\r\n        /^[a-z]{2,3}$/gi\r\n    );\r\n    static readonly isVisibleProperty = new BoolProperty(Versions.v1_2, \"isVisible\", true);\r\n    static readonly separatorProperty = new BoolProperty(Versions.v1_0, \"separator\", false);\r\n    static readonly heightProperty = new ValueSetProperty(\r\n        Versions.v1_1,\r\n        \"height\",\r\n        [{ value: \"auto\" }, { value: \"stretch\" }],\r\n        \"auto\"\r\n    );\r\n    static readonly horizontalAlignmentProperty = new EnumProperty(\r\n        Versions.v1_0,\r\n        \"horizontalAlignment\",\r\n        Enums.HorizontalAlignment\r\n    );\r\n    static readonly spacingProperty = new EnumProperty(\r\n        Versions.v1_0,\r\n        \"spacing\",\r\n        Enums.Spacing,\r\n        Enums.Spacing.Default\r\n    );\r\n\r\n    @property(CardElement.horizontalAlignmentProperty)\r\n    horizontalAlignment?: Enums.HorizontalAlignment;\r\n\r\n    @property(CardElement.spacingProperty)\r\n    spacing: Enums.Spacing;\r\n\r\n    @property(CardElement.separatorProperty)\r\n    separator: boolean;\r\n\r\n    @property(CardElement.heightProperty)\r\n    height: CardElementHeight;\r\n\r\n    @property(CardElement.langProperty)\r\n    get lang(): string | undefined {\r\n        const lang = this.getValue(CardElement.langProperty);\r\n\r\n        if (lang) {\r\n            return lang;\r\n        } else {\r\n            if (this.parent) {\r\n                return this.parent.lang;\r\n            } else {\r\n                return undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    set lang(value: string | undefined) {\r\n        this.setValue(CardElement.langProperty, value);\r\n    }\r\n\r\n    @property(CardElement.isVisibleProperty)\r\n    get isVisible(): boolean {\r\n        return this.getValue(CardElement.isVisibleProperty);\r\n    }\r\n\r\n    set isVisible(value: boolean) {\r\n        // If the element is going to be hidden, reset any changes that were due\r\n        // to overflow truncation (this ensures that if the element is later\r\n        // un-hidden it has the right content)\r\n        if (GlobalSettings.useAdvancedCardBottomTruncation && !value) {\r\n            this.undoOverflowTruncation();\r\n        }\r\n\r\n        if (this.isVisible !== value) {\r\n            this.setValue(CardElement.isVisibleProperty, value);\r\n\r\n            this.updateRenderedElementVisibility();\r\n\r\n            if (this._renderedElement) {\r\n                raiseElementVisibilityChangedEvent(this);\r\n            }\r\n        }\r\n\r\n        if (this._renderedElement) {\r\n            this._renderedElement.setAttribute(\"aria-expanded\", value.toString());\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    private _hostConfig?: HostConfig;\r\n    private _separatorElement?: HTMLElement;\r\n    private _truncatedDueToOverflow: boolean = false;\r\n    private _defaultRenderedElementDisplayMode?: string;\r\n    private _padding?: PaddingDefinition;\r\n\r\n    private internalRenderSeparator(): HTMLElement | undefined {\r\n        const renderedSeparator = renderSeparation(\r\n            this.hostConfig,\r\n            {\r\n                spacing: this.hostConfig.getEffectiveSpacing(this.spacing),\r\n                lineThickness: this.separator ? this.hostConfig.separator.lineThickness : undefined,\r\n                lineColor: this.separator ? this.hostConfig.separator.lineColor : undefined\r\n            },\r\n            this.separatorOrientation\r\n        );\r\n\r\n        if (\r\n            GlobalSettings.alwaysBleedSeparators &&\r\n            renderedSeparator &&\r\n            this.separatorOrientation === Enums.Orientation.Horizontal\r\n        ) {\r\n            // Adjust separator's margins if the option to always bleed separators is turned on\r\n            const parentContainer = this.getParentContainer();\r\n\r\n            if (parentContainer && parentContainer.getEffectivePadding()) {\r\n                const parentPhysicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(\r\n                    parentContainer.getEffectivePadding()\r\n                );\r\n\r\n                renderedSeparator.style.marginLeft = \"-\" + parentPhysicalPadding.left + \"px\";\r\n                renderedSeparator.style.marginRight = \"-\" + parentPhysicalPadding.right + \"px\";\r\n            }\r\n        }\r\n\r\n        return renderedSeparator;\r\n    }\r\n\r\n    private updateRenderedElementVisibility() {\r\n        const displayMode =\r\n            this.isDesignMode() || this.isVisible\r\n                ? this._defaultRenderedElementDisplayMode\r\n                : \"none\";\r\n\r\n        if (this._renderedElement) {\r\n            if (displayMode) {\r\n                this._renderedElement.style.display = displayMode;\r\n            } else {\r\n                this._renderedElement.style.removeProperty(\"display\");\r\n            }\r\n        }\r\n\r\n        if (this._separatorElement) {\r\n            if (this.parent && this.parent.isFirstElement(this)) {\r\n                this._separatorElement.style.display = \"none\";\r\n            } else {\r\n                if (displayMode) {\r\n                    this._separatorElement.style.display = displayMode;\r\n                } else {\r\n                    this._separatorElement.style.removeProperty(\"display\");\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private hideElementDueToOverflow() {\r\n        if (this._renderedElement && this.isVisible) {\r\n            this._renderedElement.style.visibility = \"hidden\";\r\n\r\n            this.isVisible = false;\r\n            raiseElementVisibilityChangedEvent(this, false);\r\n        }\r\n    }\r\n\r\n    private showElementHiddenDueToOverflow() {\r\n        if (this._renderedElement && !this.isVisible) {\r\n            this._renderedElement.style.removeProperty(\"visibility\");\r\n\r\n            this.isVisible = true;\r\n            raiseElementVisibilityChangedEvent(this, false);\r\n        }\r\n    }\r\n\r\n    // Marked private to emulate internal access\r\n    private handleOverflow(maxHeight: number) {\r\n        if (this.isVisible || this.isHiddenDueToOverflow()) {\r\n            const handled = this.truncateOverflow(maxHeight);\r\n\r\n            // Even if we were unable to truncate the element to fit this time,\r\n            // it still could have been previously truncated\r\n            this._truncatedDueToOverflow = handled || this._truncatedDueToOverflow;\r\n\r\n            if (!handled) {\r\n                this.hideElementDueToOverflow();\r\n            } else if (handled && !this.isVisible) {\r\n                this.showElementHiddenDueToOverflow();\r\n            }\r\n        }\r\n    }\r\n\r\n    // Marked private to emulate internal access\r\n    private resetOverflow(): boolean {\r\n        let sizeChanged = false;\r\n\r\n        if (this._truncatedDueToOverflow) {\r\n            this.undoOverflowTruncation();\r\n            this._truncatedDueToOverflow = false;\r\n            sizeChanged = true;\r\n        }\r\n\r\n        if (this.isHiddenDueToOverflow()) {\r\n            this.showElementHiddenDueToOverflow();\r\n        }\r\n\r\n        return sizeChanged;\r\n    }\r\n\r\n    protected getDefaultSerializationContext(): BaseSerializationContext {\r\n        return new SerializationContext();\r\n    }\r\n\r\n    protected createPlaceholderElement(): HTMLElement {\r\n        const styleDefinition = this.getEffectiveStyleDefinition();\r\n        const foregroundCssColor = Utils.stringToCssColor(\r\n            styleDefinition.foregroundColors.default.subtle\r\n        );\r\n\r\n        const element = document.createElement(\"div\");\r\n        element.style.border = \"1px dashed \" + foregroundCssColor;\r\n        element.style.padding = \"4px\";\r\n        element.style.minHeight = \"32px\";\r\n        element.style.fontSize = \"10px\";\r\n\r\n        if (foregroundCssColor) {\r\n            element.style.color = foregroundCssColor;\r\n        }\r\n\r\n        element.innerText = Strings.defaults.emptyElementText(this.getJsonTypeName());\r\n\r\n        return element;\r\n    }\r\n\r\n    protected adjustRenderedElementSize(renderedElement: HTMLElement) {\r\n        if (this.height === \"auto\") {\r\n            renderedElement.style.flex = \"0 0 auto\";\r\n        } else {\r\n            renderedElement.style.flex = \"1 1 auto\";\r\n        }\r\n    }\r\n\r\n    /*\r\n     * Called when mouse enters or leaves the card.\r\n     * Inputs elements need to update their visual state in such events like showing or hiding borders etc.\r\n     * It calls Input.updateVisualState(eventType) for all inputs.\r\n     * This method on input (updateVisualState) is supposed to be called from card level on mouse events.\r\n     */\r\n    protected updateInputsVisualState(hover: boolean) {\r\n        const allInputs: Input[] = this.getAllInputs();\r\n        const inputEventType = !!hover ? InputEventType.MouseEnterOnCard : InputEventType.MouseLeaveOnCard;\r\n        allInputs.forEach((input) => input.updateVisualState(inputEventType));\r\n    }\r\n\r\n    protected isDisplayed(): boolean {\r\n        return (\r\n            this._renderedElement !== undefined &&\r\n            this.isVisible &&\r\n            this._renderedElement.offsetHeight > 0\r\n        );\r\n    }\r\n\r\n    protected abstract internalRender(): HTMLElement | undefined;\r\n\r\n    protected overrideInternalRender(): HTMLElement | undefined {\r\n        return this.internalRender();\r\n    }\r\n\r\n    protected applyPadding() {\r\n        if (this.separatorElement && this.separatorOrientation === Enums.Orientation.Horizontal) {\r\n            if (GlobalSettings.alwaysBleedSeparators && !this.isBleeding()) {\r\n                const padding = new PaddingDefinition();\r\n\r\n                this.getImmediateSurroundingPadding(padding);\r\n\r\n                const physicalPadding =\r\n                    this.hostConfig.paddingDefinitionToSpacingDefinition(padding);\r\n\r\n                this.separatorElement.style.marginLeft = \"-\" + physicalPadding.left + \"px\";\r\n                this.separatorElement.style.marginRight = \"-\" + physicalPadding.right + \"px\";\r\n            } else {\r\n                this.separatorElement.style.marginRight = \"0\";\r\n                this.separatorElement.style.marginLeft = \"0\";\r\n            }\r\n        }\r\n    }\r\n\r\n    /*\r\n     * Called when this element overflows the bottom of the card.\r\n     * maxHeight will be the amount of space still available on the card (0 if\r\n     * the element is fully off the card).\r\n     */\r\n    protected truncateOverflow(_maxHeight: number): boolean {\r\n        // Child implementations should return true if the element handled\r\n        // the truncation request such that its content fits within maxHeight,\r\n        // false if the element should fall back to being hidden\r\n        return false;\r\n    }\r\n\r\n    /*\r\n     * This should reverse any changes performed in truncateOverflow().\r\n     */\r\n    protected undoOverflowTruncation() {\r\n        return;\r\n    }\r\n\r\n    protected getDefaultPadding(): PaddingDefinition {\r\n        return new PaddingDefinition();\r\n    }\r\n\r\n    protected getHasBackground(ignoreBackgroundImages: boolean = false): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected getHasBorder(): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected getPadding(): PaddingDefinition | undefined {\r\n        return this._padding;\r\n    }\r\n\r\n    protected setPadding(value: PaddingDefinition | undefined) {\r\n        this._padding = value;\r\n    }\r\n\r\n    protected shouldSerialize(context: SerializationContext): boolean {\r\n        return context.elementRegistry.findByName(this.getJsonTypeName()) !== undefined;\r\n    }\r\n\r\n    protected get useDefaultSizing(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get separatorOrientation(): Enums.Orientation {\r\n        return Enums.Orientation.Horizontal;\r\n    }\r\n\r\n    protected get defaultStyle(): string {\r\n        return Enums.ContainerStyle.Default;\r\n    }\r\n\r\n    customCssSelector?: string;\r\n\r\n    parse(source: any, context?: SerializationContext) {\r\n        super.parse(source, context ? context : new SerializationContext());\r\n    }\r\n\r\n    asString(): string | undefined {\r\n        return \"\";\r\n    }\r\n\r\n    isBleeding(): boolean {\r\n        return false;\r\n    }\r\n\r\n    getEffectiveStyle(): string {\r\n        if (this.parent) {\r\n            return this.parent.getEffectiveStyle();\r\n        }\r\n\r\n        return this.defaultStyle;\r\n    }\r\n\r\n    getEffectiveStyleDefinition(): ContainerStyleDefinition {\r\n        return this.hostConfig.containerStyles.getStyleByName(this.getEffectiveStyle());\r\n    }\r\n\r\n    getEffectiveTextStyleDefinition(): TextStyleDefinition {\r\n        if (this.parent) {\r\n            return this.parent.getEffectiveTextStyleDefinition();\r\n        }\r\n\r\n        return this.hostConfig.textStyles.default;\r\n    }\r\n\r\n    getForbiddenActionTypes(): ActionType[] {\r\n        return [];\r\n    }\r\n\r\n    getImmediateSurroundingPadding(\r\n        result: PaddingDefinition,\r\n        processTop: boolean = true,\r\n        processRight: boolean = true,\r\n        processBottom: boolean = true,\r\n        processLeft: boolean = true\r\n    ) {\r\n        if (this.parent) {\r\n            let doProcessTop = processTop && this.parent.isTopElement(this);\r\n            let doProcessRight = processRight && this.parent.isRightMostElement(this);\r\n            let doProcessBottom = processBottom && this.parent.isBottomElement(this);\r\n            let doProcessLeft = processLeft && this.parent.isLeftMostElement(this);\r\n\r\n            const effectivePadding = this.parent.getEffectivePadding();\r\n\r\n            if (effectivePadding) {\r\n                if (doProcessTop && effectivePadding.top !== Enums.Spacing.None) {\r\n                    result.top = effectivePadding.top;\r\n\r\n                    doProcessTop = false;\r\n                }\r\n\r\n                if (doProcessRight && effectivePadding.right !== Enums.Spacing.None) {\r\n                    result.right = effectivePadding.right;\r\n\r\n                    doProcessRight = false;\r\n                }\r\n\r\n                if (doProcessBottom && effectivePadding.bottom !== Enums.Spacing.None) {\r\n                    result.bottom = effectivePadding.bottom;\r\n\r\n                    doProcessBottom = false;\r\n                }\r\n\r\n                if (doProcessLeft && effectivePadding.left !== Enums.Spacing.None) {\r\n                    result.left = effectivePadding.left;\r\n\r\n                    doProcessLeft = false;\r\n                }\r\n            }\r\n\r\n            if (doProcessTop || doProcessRight || doProcessBottom || doProcessLeft) {\r\n                this.parent.getImmediateSurroundingPadding(\r\n                    result,\r\n                    doProcessTop,\r\n                    doProcessRight,\r\n                    doProcessBottom,\r\n                    doProcessLeft\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    getActionCount(): number {\r\n        return 0;\r\n    }\r\n\r\n    getActionAt(index: number): Action | undefined {\r\n        throw new Error(Strings.errors.indexOutOfRange(index));\r\n    }\r\n\r\n    indexOfAction(action: Action): number {\r\n        for (let i = 0; i < this.getActionCount(); i++) {\r\n            if (this.getActionAt(i) === action) {\r\n                return i;\r\n            }\r\n        }\r\n\r\n        return -1;\r\n    }\r\n\r\n    remove(): boolean {\r\n        if (this.parent && this.parent instanceof CardElementContainer) {\r\n            return this.parent.removeItem(this);\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    render(): HTMLElement | undefined {\r\n        this._renderedElement = this.overrideInternalRender();\r\n        this._separatorElement = this.internalRenderSeparator();\r\n\r\n        if (this._renderedElement) {\r\n            if (this.id) {\r\n                this._renderedElement.id = this.id;\r\n            }\r\n\r\n            if (this.customCssSelector) {\r\n                this._renderedElement.classList.add(this.customCssSelector);\r\n            }\r\n\r\n            this._renderedElement.style.boxSizing = \"border-box\";\r\n            this._defaultRenderedElementDisplayMode = this._renderedElement.style.display\r\n                ? this._renderedElement.style.display\r\n                : undefined;\r\n\r\n            this.adjustRenderedElementSize(this._renderedElement);\r\n            this.updateLayout(false);\r\n        } else if (this.isDesignMode()) {\r\n            this._renderedElement = this.createPlaceholderElement();\r\n        }\r\n\r\n        return this._renderedElement;\r\n    }\r\n\r\n    updateLayout(_processChildren: boolean = true) {\r\n        this.updateRenderedElementVisibility();\r\n        this.applyPadding();\r\n    }\r\n\r\n    updateActionsEnabledState() {\r\n        const allActions = this.getRootElement().getAllActions();\r\n\r\n        for (let action of allActions) {\r\n            action.updateEnabledState();\r\n        }\r\n    }\r\n\r\n    indexOf(_cardElement: CardElement): number {\r\n        return -1;\r\n    }\r\n\r\n    isDesignMode(): boolean {\r\n        const rootElement = this.getRootElement();\r\n\r\n        return rootElement instanceof AdaptiveCard && rootElement.designMode;\r\n    }\r\n\r\n    isFirstElement(_element: CardElement): boolean {\r\n        return true;\r\n    }\r\n\r\n    isLastElement(_element: CardElement): boolean {\r\n        return true;\r\n    }\r\n\r\n    isAtTheVeryLeft(): boolean {\r\n        return this.parent\r\n            ? this.parent.isLeftMostElement(this) && this.parent.isAtTheVeryLeft()\r\n            : true;\r\n    }\r\n\r\n    isAtTheVeryRight(): boolean {\r\n        return this.parent\r\n            ? this.parent.isRightMostElement(this) && this.parent.isAtTheVeryRight()\r\n            : true;\r\n    }\r\n\r\n    isAtTheVeryTop(): boolean {\r\n        return this.parent\r\n            ? this.parent.isFirstElement(this) && this.parent.isAtTheVeryTop()\r\n            : true;\r\n    }\r\n\r\n    isAtTheVeryBottom(): boolean {\r\n        return this.parent\r\n            ? this.parent.isLastElement(this) && this.parent.isAtTheVeryBottom()\r\n            : true;\r\n    }\r\n\r\n    isBleedingAtTop(): boolean {\r\n        return false;\r\n    }\r\n\r\n    isBleedingAtBottom(): boolean {\r\n        return false;\r\n    }\r\n\r\n    isLeftMostElement(_element: CardElement): boolean {\r\n        return true;\r\n    }\r\n\r\n    isRightMostElement(_element: CardElement): boolean {\r\n        return true;\r\n    }\r\n\r\n    isTopElement(element: CardElement): boolean {\r\n        return this.isFirstElement(element);\r\n    }\r\n\r\n    isBottomElement(element: CardElement): boolean {\r\n        return this.isLastElement(element);\r\n    }\r\n\r\n    isHiddenDueToOverflow(): boolean {\r\n        return (\r\n            this._renderedElement !== undefined &&\r\n            this._renderedElement.style.visibility === \"hidden\"\r\n        );\r\n    }\r\n\r\n    getRootElement(): CardElement {\r\n        return this.getRootObject() as CardElement;\r\n    }\r\n\r\n    getParentContainer(): Container | undefined {\r\n        let currentElement = this.parent;\r\n\r\n        while (currentElement) {\r\n            if (currentElement instanceof Container) {\r\n                return currentElement;\r\n            }\r\n\r\n            currentElement = currentElement.parent;\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        return [];\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result: Action[] = [];\r\n\r\n        for (let i = 0; i < this.getActionCount(); i++) {\r\n            let action = this.getActionAt(i);\r\n\r\n            if (action) {\r\n                result.push(action);\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        return [];\r\n    }\r\n\r\n    getElementById(id: string): CardElement | undefined {\r\n        return this.id === id ? this : undefined;\r\n    }\r\n\r\n    getActionById(_id: string): Action | undefined {\r\n        return undefined;\r\n    }\r\n    \r\n    getElementByIdFromAction(id: string): CardElement | undefined {\r\n        let result = undefined;\r\n        for (let i = 0; i < this.getActionCount(); i++) {\r\n            const action = this.getActionAt(i);\r\n\r\n            if (action instanceof ShowCardAction) {\r\n                result = action.card.getElementById(id);\r\n\r\n                if (result) {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    getEffectivePadding(): PaddingDefinition {\r\n        const padding = this.getPadding();\r\n\r\n        return padding ? padding : this.getDefaultPadding();\r\n    }\r\n\r\n    getEffectiveHorizontalAlignment(): Enums.HorizontalAlignment {\r\n        if (this.horizontalAlignment !== undefined) {\r\n            return this.horizontalAlignment;\r\n        }\r\n\r\n        if (this.parent) {\r\n            return this.parent.getEffectiveHorizontalAlignment();\r\n        }\r\n\r\n        return Enums.HorizontalAlignment.Left;\r\n    }\r\n\r\n    get hostConfig(): HostConfig {\r\n        if (this._hostConfig) {\r\n            return this._hostConfig;\r\n        } else {\r\n            if (this.parent) {\r\n                return this.parent.hostConfig;\r\n            } else {\r\n                return defaultHostConfig;\r\n            }\r\n        }\r\n    }\r\n\r\n    set hostConfig(value: HostConfig) {\r\n        this._hostConfig = value;\r\n    }\r\n\r\n    get index(): number {\r\n        if (this.parent) {\r\n            return this.parent.indexOf(this);\r\n        } else {\r\n            return 0;\r\n        }\r\n    }\r\n\r\n    get isInteractive(): boolean {\r\n        return false;\r\n    }\r\n\r\n    get isStandalone(): boolean {\r\n        return true;\r\n    }\r\n\r\n    get isInline(): boolean {\r\n        return false;\r\n    }\r\n\r\n    get hasVisibleSeparator(): boolean {\r\n        if (this.parent && this.separatorElement) {\r\n            return !this.parent.isFirstElement(this) && (this.isVisible || this.isDesignMode());\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    get separatorElement(): HTMLElement | undefined {\r\n        return this._separatorElement;\r\n    }\r\n\r\n    get parent(): CardElement | undefined {\r\n        return <CardElement>this._parent;\r\n    }\r\n}\r\n\r\nexport class ActionProperty extends PropertyDefinition {\r\n    parse(\r\n        sender: SerializableObject,\r\n        source: PropertyBag,\r\n        context: SerializationContext\r\n    ): Action | undefined {\r\n        const parent = <CardElement>sender;\r\n\r\n        return context.parseAction(\r\n            parent,\r\n            source[this.name],\r\n            this.forbiddenActionTypes,\r\n            parent.isDesignMode()\r\n        );\r\n    }\r\n\r\n    toJSON(\r\n        sender: SerializableObject,\r\n        target: PropertyBag,\r\n        value: Action | undefined,\r\n        context: SerializationContext\r\n    ) {\r\n        context.serializeValue(\r\n            target,\r\n            this.name,\r\n            value ? value.toJSON(context) : undefined,\r\n            undefined,\r\n            true\r\n        );\r\n    }\r\n\r\n    constructor(\r\n        readonly targetVersion: Version,\r\n        readonly name: string,\r\n        readonly forbiddenActionTypes: string[] = []\r\n    ) {\r\n        super(targetVersion, name, undefined);\r\n    }\r\n}\r\n\r\nexport abstract class BaseTextBlock extends CardElement {\r\n    //#region Schema\r\n\r\n    static readonly textProperty = new StringProperty(Versions.v1_0, \"text\", true);\r\n    static readonly sizeProperty = new EnumProperty(Versions.v1_0, \"size\", Enums.TextSize);\r\n    static readonly weightProperty = new EnumProperty(Versions.v1_0, \"weight\", Enums.TextWeight);\r\n    static readonly colorProperty = new EnumProperty(Versions.v1_0, \"color\", Enums.TextColor);\r\n    static readonly isSubtleProperty = new BoolProperty(Versions.v1_0, \"isSubtle\");\r\n    static readonly fontTypeProperty = new EnumProperty(Versions.v1_2, \"fontType\", Enums.FontType);\r\n    static readonly selectActionProperty = new ActionProperty(Versions.v1_1, \"selectAction\", [\r\n        \"Action.ShowCard\"\r\n    ]);\r\n\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        // selectAction is declared on BaseTextBlock but is only exposed on TextRun,\r\n        // so the property is removed from the BaseTextBlock schema.\r\n        schema.remove(BaseTextBlock.selectActionProperty);\r\n    }\r\n\r\n    @property(BaseTextBlock.sizeProperty)\r\n    size?: Enums.TextSize;\r\n\r\n    @property(BaseTextBlock.weightProperty)\r\n    weight?: Enums.TextWeight;\r\n\r\n    @property(BaseTextBlock.colorProperty)\r\n    color?: Enums.TextColor;\r\n\r\n    @property(BaseTextBlock.fontTypeProperty)\r\n    fontType?: Enums.FontType;\r\n\r\n    @property(BaseTextBlock.isSubtleProperty)\r\n    isSubtle?: boolean;\r\n\r\n    @property(BaseTextBlock.textProperty)\r\n    get text(): string | undefined {\r\n        return this.getValue(BaseTextBlock.textProperty);\r\n    }\r\n\r\n    set text(value: string | undefined) {\r\n        this.setText(value);\r\n    }\r\n\r\n    @property(BaseTextBlock.selectActionProperty)\r\n    selectAction?: Action;\r\n\r\n    //#endregion\r\n\r\n    protected getFontSize(fontType: FontTypeDefinition): number {\r\n        switch (this.effectiveSize) {\r\n            case Enums.TextSize.Small:\r\n                return fontType.fontSizes.small;\r\n            case Enums.TextSize.Medium:\r\n                return fontType.fontSizes.medium;\r\n            case Enums.TextSize.Large:\r\n                return fontType.fontSizes.large;\r\n            case Enums.TextSize.ExtraLarge:\r\n                return fontType.fontSizes.extraLarge;\r\n            default:\r\n                return fontType.fontSizes.default;\r\n        }\r\n    }\r\n\r\n    protected getColorDefinition(\r\n        colorSet: ColorSetDefinition,\r\n        color: Enums.TextColor\r\n    ): TextColorDefinition {\r\n        switch (color) {\r\n            case Enums.TextColor.Accent:\r\n                return colorSet.accent;\r\n            case Enums.TextColor.Dark:\r\n                return colorSet.dark;\r\n            case Enums.TextColor.Light:\r\n                return colorSet.light;\r\n            case Enums.TextColor.Good:\r\n                return colorSet.good;\r\n            case Enums.TextColor.Warning:\r\n                return colorSet.warning;\r\n            case Enums.TextColor.Attention:\r\n                return colorSet.attention;\r\n            default:\r\n                return colorSet.default;\r\n        }\r\n    }\r\n\r\n    protected setText(value: string | undefined) {\r\n        this.setValue(BaseTextBlock.textProperty, value);\r\n    }\r\n\r\n    ariaHidden: boolean = false;\r\n\r\n    constructor(text?: string) {\r\n        super();\r\n\r\n        if (text) {\r\n            this.text = text;\r\n        }\r\n    }\r\n\r\n    init(textDefinition: BaseTextDefinition) {\r\n        this.size = textDefinition.size;\r\n        this.weight = textDefinition.weight;\r\n        this.color = textDefinition.color;\r\n        this.isSubtle = textDefinition.isSubtle;\r\n    }\r\n\r\n    asString(): string | undefined {\r\n        return this.text;\r\n    }\r\n\r\n    applyStylesTo(targetElement: HTMLElement) {\r\n        const fontType = this.hostConfig.getFontTypeDefinition(this.effectiveFontType);\r\n\r\n        if (fontType.fontFamily) {\r\n            targetElement.style.fontFamily = fontType.fontFamily;\r\n        }\r\n\r\n        let fontSize: number;\r\n\r\n        switch (this.effectiveSize) {\r\n            case Enums.TextSize.Small:\r\n                fontSize = fontType.fontSizes.small;\r\n                break;\r\n            case Enums.TextSize.Medium:\r\n                fontSize = fontType.fontSizes.medium;\r\n                break;\r\n            case Enums.TextSize.Large:\r\n                fontSize = fontType.fontSizes.large;\r\n                break;\r\n            case Enums.TextSize.ExtraLarge:\r\n                fontSize = fontType.fontSizes.extraLarge;\r\n                break;\r\n            default:\r\n                fontSize = fontType.fontSizes.default;\r\n                break;\r\n        }\r\n\r\n        targetElement.style.fontSize = fontSize + \"px\";\r\n\r\n        const colorDefinition = this.getColorDefinition(\r\n            this.getEffectiveStyleDefinition().foregroundColors,\r\n            this.effectiveColor\r\n        );\r\n\r\n        const targetColor = Utils.stringToCssColor(\r\n            this.effectiveIsSubtle ? colorDefinition.subtle : colorDefinition.default\r\n        );\r\n        if (targetColor) {\r\n            targetElement.style.color = targetColor;\r\n        }\r\n\r\n        let fontWeight: number;\r\n\r\n        switch (this.effectiveWeight) {\r\n            case Enums.TextWeight.Lighter:\r\n                fontWeight = fontType.fontWeights.lighter;\r\n                break;\r\n            case Enums.TextWeight.Bolder:\r\n                fontWeight = fontType.fontWeights.bolder;\r\n                break;\r\n            default:\r\n                fontWeight = fontType.fontWeights.default;\r\n                break;\r\n        }\r\n\r\n        targetElement.style.fontWeight = fontWeight.toString();\r\n\r\n        if (this.ariaHidden) {\r\n            targetElement.setAttribute(\"aria-hidden\", \"true\");\r\n        }\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        if (this.selectAction) {\r\n            result.push(this.selectAction);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get effectiveColor(): Enums.TextColor {\r\n        return this.color !== undefined ? this.color : this.getEffectiveTextStyleDefinition().color;\r\n    }\r\n\r\n    get effectiveFontType(): Enums.FontType {\r\n        return this.fontType !== undefined\r\n            ? this.fontType\r\n            : this.getEffectiveTextStyleDefinition().fontType;\r\n    }\r\n\r\n    get effectiveIsSubtle(): boolean {\r\n        return this.isSubtle !== undefined\r\n            ? this.isSubtle\r\n            : this.getEffectiveTextStyleDefinition().isSubtle;\r\n    }\r\n\r\n    get effectiveSize(): Enums.TextSize {\r\n        return this.size !== undefined ? this.size : this.getEffectiveTextStyleDefinition().size;\r\n    }\r\n\r\n    get effectiveWeight(): Enums.TextWeight {\r\n        return this.weight !== undefined\r\n            ? this.weight\r\n            : this.getEffectiveTextStyleDefinition().weight;\r\n    }\r\n}\r\n\r\nexport type TextBlockStyle = \"default\" | \"heading\" | \"columnHeader\";\r\n\r\nexport class TextBlock extends BaseTextBlock {\r\n    //#region Schema\r\n\r\n    static readonly wrapProperty = new BoolProperty(Versions.v1_0, \"wrap\", false);\r\n    static readonly maxLinesProperty = new NumProperty(Versions.v1_0, \"maxLines\");\r\n    static readonly styleProperty = new ValueSetProperty(Versions.v1_5, \"style\", [\r\n        { value: \"default\" },\r\n        { value: \"columnHeader\" },\r\n        { value: \"heading\" }\r\n    ]);\r\n\r\n    @property(TextBlock.wrapProperty)\r\n    wrap: boolean = false;\r\n\r\n    @property(TextBlock.maxLinesProperty)\r\n    maxLines?: number;\r\n\r\n    @property(TextBlock.styleProperty)\r\n    style?: TextBlockStyle;\r\n\r\n    //#endregion\r\n\r\n    private _computedLineHeight: number;\r\n    private _originalInnerHtml: string;\r\n    private _processedText?: string;\r\n    private _treatAsPlainText: boolean = true;\r\n\r\n    private restoreOriginalContent() {\r\n        if (this.renderedElement !== undefined) {\r\n            if (this.maxLines && this.maxLines > 0) {\r\n                this.renderedElement.style.maxHeight =\r\n                    this._computedLineHeight * this.maxLines + \"px\";\r\n            }\r\n\r\n            const originalHtml = TextBlock._ttRoundtripPolicy?.createHTML(this._originalInnerHtml) ?? this._originalInnerHtml;\r\n            this.renderedElement.innerHTML = originalHtml as string;\r\n        }\r\n    }\r\n\r\n    private truncateIfSupported(maxHeight: number): boolean {\r\n        if (this.renderedElement !== undefined) {\r\n            // For now, only truncate TextBlocks that contain just a single\r\n            // paragraph -- since the maxLines calculation doesn't take into\r\n            // account Markdown lists\r\n            const children = this.renderedElement.children;\r\n            const isTextOnly = !children.length;\r\n            const truncationSupported =\r\n                isTextOnly ||\r\n                (children.length === 1 && (<HTMLElement>children[0]).tagName.toLowerCase() === \"p\" && !(<HTMLElement>children[0]).children.length);\r\n\r\n            if (truncationSupported) {\r\n                const element = isTextOnly ? this.renderedElement : <HTMLElement>children[0];\r\n\r\n                Utils.truncateText(element, maxHeight, this._computedLineHeight);\r\n\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    // Markdown processing is handled outside of Adaptive Cards. It's up to the host to ensure that markdown is safely\r\n    // processed.\r\n    private static readonly _ttMarkdownPolicy = (typeof window === 'undefined') ? undefined : window.trustedTypes?.createPolicy(\r\n        \"adaptivecards#markdownPassthroughPolicy\",\r\n        { createHTML: (value) => value }\r\n    );\r\n\r\n    // When \"advanced\" truncation is enabled (see GlobalSettings.useAdvancedCardBottomTruncation and\r\n    // GlobalSettings.useAdvancedTextBlockTruncation), we store the original pre-truncation content in\r\n    // _originalInnerHtml so that we can restore/recalculate truncation later if space availability has changed (see\r\n    // TextBlock.restoreOriginalContent())\r\n    private static readonly _ttRoundtripPolicy = (typeof window === 'undefined') ? undefined : window.trustedTypes?.createPolicy(\r\n        \"adaptivecards#restoreContentsPolicy\",\r\n        { createHTML: (value) => value }\r\n    );\r\n\r\n    protected setText(value: string) {\r\n        super.setText(value);\r\n\r\n        this._processedText = undefined;\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._processedText = undefined;\r\n\r\n        if (this.text) {\r\n            const preProcessedText = this.preProcessPropertyValue(BaseTextBlock.textProperty);\r\n            const hostConfig = this.hostConfig;\r\n\r\n            let element: HTMLElement;\r\n\r\n            if (this.forElementId) {\r\n                const labelElement = document.createElement(\"label\");\r\n                labelElement.htmlFor = this.forElementId;\r\n\r\n                element = labelElement;\r\n            } else {\r\n                element = document.createElement(\"div\");\r\n            }\r\n\r\n            element.classList.add(hostConfig.makeCssClassName(\"ac-textBlock\"));\r\n            element.style.overflow = \"hidden\";\r\n\r\n            this.applyStylesTo(element);\r\n\r\n            if (this.style === \"heading\") {\r\n                element.setAttribute(\"role\", \"heading\");\r\n\r\n                const headingLevel = this.hostConfig.textBlock.headingLevel;\r\n\r\n                if (headingLevel !== undefined && headingLevel > 0) {\r\n                    element.setAttribute(\"aria-level\", headingLevel.toString());\r\n                }\r\n            }\r\n\r\n            if (this.selectAction && hostConfig.supportsInteractivity) {\r\n                element.onclick = (e) => {\r\n                    if (this.selectAction && this.selectAction.isEffectivelyEnabled()) {\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        this.selectAction.execute();\r\n                    }\r\n                };\r\n\r\n                this.selectAction.setupElementForAccessibility(element);\r\n\r\n                if (this.selectAction.isEffectivelyEnabled()) {\r\n                    element.classList.add(hostConfig.makeCssClassName(\"ac-selectable\"));\r\n                }\r\n            }\r\n\r\n            if (!this._processedText) {\r\n                this._treatAsPlainText = true;\r\n\r\n                let formattedText = TextFormatters.formatText(this.lang, preProcessedText);\r\n\r\n                if (this.useMarkdown && formattedText) {\r\n                    if (GlobalSettings.allowMarkForTextHighlighting) {\r\n                        formattedText = formattedText\r\n                            .replace(/<mark>/g, \"===\")\r\n                            .replace(/<\\/mark>/g, \"/==/\");\r\n                    }\r\n\r\n                    const markdownProcessingResult = AdaptiveCard.applyMarkdown(formattedText);\r\n\r\n                    if (\r\n                        markdownProcessingResult.didProcess &&\r\n                        markdownProcessingResult.outputHtml\r\n                    ) {\r\n                        this._processedText = markdownProcessingResult.outputHtml;\r\n                        this._treatAsPlainText = false;\r\n\r\n                        // Only process <mark> tag if markdown processing was applied because\r\n                        // markdown processing is also responsible for sanitizing the input string\r\n                        if (GlobalSettings.allowMarkForTextHighlighting && this._processedText) {\r\n                            let markStyle: string = \"\";\r\n                            const effectiveStyle = this.getEffectiveStyleDefinition();\r\n\r\n                            if (effectiveStyle.highlightBackgroundColor) {\r\n                                markStyle +=\r\n                                    \"background-color: \" +\r\n                                    effectiveStyle.highlightBackgroundColor +\r\n                                    \";\";\r\n                            }\r\n\r\n                            if (effectiveStyle.highlightForegroundColor) {\r\n                                markStyle +=\r\n                                    \"color: \" + effectiveStyle.highlightForegroundColor + \";\";\r\n                            }\r\n\r\n                            if (markStyle) {\r\n                                markStyle = 'style=\"' + markStyle + '\"';\r\n                            }\r\n\r\n                            this._processedText = this._processedText\r\n                                .replace(/===/g, \"<mark \" + markStyle + \">\")\r\n                                .replace(/\\/==\\//g, \"</mark>\");\r\n                        }\r\n                    } else {\r\n                        this._processedText = formattedText;\r\n                        this._treatAsPlainText = true;\r\n                    }\r\n                } else {\r\n                    this._processedText = formattedText;\r\n                    this._treatAsPlainText = true;\r\n                }\r\n            }\r\n\r\n            if (!this._processedText) {\r\n                this._processedText = \"\";\r\n            }\r\n\r\n            if (this._treatAsPlainText) {\r\n                element.innerText = this._processedText;\r\n            } else {\r\n                const processedHtml =\r\n                    TextBlock._ttMarkdownPolicy?.createHTML(this._processedText) ??\r\n                    this._processedText;\r\n                element.innerHTML = processedHtml as string;\r\n            }\r\n\r\n            if (element.firstElementChild instanceof HTMLElement) {\r\n                const firstElementChild = element.firstElementChild;\r\n                firstElementChild.style.marginTop = \"0px\";\r\n                firstElementChild.style.width = \"100%\";\r\n\r\n                if (!this.wrap) {\r\n                    firstElementChild.style.overflow = \"hidden\";\r\n                    firstElementChild.style.textOverflow = \"ellipsis\";\r\n                }\r\n            }\r\n\r\n            if (element.lastElementChild instanceof HTMLElement) {\r\n                element.lastElementChild.style.marginBottom = \"0px\";\r\n            }\r\n\r\n            const anchors = element.getElementsByTagName(\"a\");\r\n\r\n            for (const anchor of Array.from(anchors)) {\r\n                anchor.classList.add(hostConfig.makeCssClassName(\"ac-anchor\"));\r\n                anchor.target = \"_blank\";\r\n                anchor.onclick = (e: MouseEvent) => {\r\n                    if (raiseAnchorClickedEvent(this, anchor, e)) {\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n                    }\r\n                };\r\n                anchor.oncontextmenu = (e: MouseEvent) => {\r\n                    if (raiseAnchorClickedEvent(this, anchor, e)) {\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        return false;\r\n                    }\r\n\r\n                    return true;\r\n                };\r\n            }\r\n\r\n            if (this.wrap) {\r\n                element.style.wordWrap = \"break-word\";\r\n\r\n                if (this.maxLines && this.maxLines > 0) {\r\n                    element.style.overflow = \"hidden\";\r\n\r\n                    if (Utils.isInternetExplorer() || !GlobalSettings.useWebkitLineClamp) {\r\n                        element.style.maxHeight = this._computedLineHeight * this.maxLines + \"px\";\r\n                    } else {\r\n                        // While non standard, --webkit-line-clamp works in every browser (except IE)\r\n                        // and is a great solution to support the maxLines feature with ellipsis\r\n                        // truncation. With --webkit-line-clamp there is need to use explicit line heights\r\n                        element.style.removeProperty(\"line-height\");\r\n                        element.style.display = \"-webkit-box\";\r\n                        element.style.webkitBoxOrient = \"vertical\";\r\n                        element.style.webkitLineClamp = this.maxLines.toString();\r\n                    }\r\n                }\r\n            } else {\r\n                element.style.whiteSpace = \"nowrap\";\r\n                element.style.textOverflow = \"ellipsis\";\r\n            }\r\n\r\n            if (\r\n                GlobalSettings.useAdvancedTextBlockTruncation ||\r\n                GlobalSettings.useAdvancedCardBottomTruncation\r\n            ) {\r\n                this._originalInnerHtml = element.innerHTML;\r\n            }\r\n\r\n            return element;\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    protected truncateOverflow(maxHeight: number): boolean {\r\n        if (maxHeight >= this._computedLineHeight) {\r\n            return this.truncateIfSupported(maxHeight);\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    protected undoOverflowTruncation() {\r\n        this.restoreOriginalContent();\r\n\r\n        if (GlobalSettings.useAdvancedTextBlockTruncation && this.maxLines) {\r\n            const maxHeight = this._computedLineHeight * this.maxLines;\r\n\r\n            this.truncateIfSupported(maxHeight);\r\n        }\r\n    }\r\n\r\n    useMarkdown: boolean = true;\r\n    forElementId?: string;\r\n\r\n    applyStylesTo(targetElement: HTMLElement) {\r\n        super.applyStylesTo(targetElement);\r\n\r\n        switch (this.getEffectiveHorizontalAlignment()) {\r\n            case Enums.HorizontalAlignment.Center:\r\n                targetElement.style.textAlign = \"center\";\r\n                break;\r\n            case Enums.HorizontalAlignment.Right:\r\n                targetElement.style.textAlign = \"end\";\r\n                break;\r\n            default:\r\n                targetElement.style.textAlign = \"start\";\r\n                break;\r\n        }\r\n\r\n        const lineHeights = this.hostConfig.lineHeights;\r\n\r\n        if (lineHeights) {\r\n            switch (this.effectiveSize) {\r\n                case Enums.TextSize.Small:\r\n                    this._computedLineHeight = lineHeights.small;\r\n                    break;\r\n                case Enums.TextSize.Medium:\r\n                    this._computedLineHeight = lineHeights.medium;\r\n                    break;\r\n                case Enums.TextSize.Large:\r\n                    this._computedLineHeight = lineHeights.large;\r\n                    break;\r\n                case Enums.TextSize.ExtraLarge:\r\n                    this._computedLineHeight = lineHeights.extraLarge;\r\n                    break;\r\n                default:\r\n                    this._computedLineHeight = lineHeights.default;\r\n                    break;\r\n            }\r\n        } else {\r\n            // Looks like 1.33 is the magic number to compute line-height\r\n            // from font size.\r\n            this._computedLineHeight =\r\n                this.getFontSize(this.hostConfig.getFontTypeDefinition(this.effectiveFontType)) *\r\n                1.33;\r\n        }\r\n\r\n        targetElement.style.lineHeight = this._computedLineHeight + \"px\";\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"TextBlock\";\r\n    }\r\n\r\n    getEffectiveTextStyleDefinition(): TextStyleDefinition {\r\n        if (this.style) {\r\n            return this.hostConfig.textStyles.getStyleByName(this.style);\r\n        }\r\n\r\n        return super.getEffectiveTextStyleDefinition();\r\n    }\r\n\r\n    updateLayout(processChildren: boolean = false) {\r\n        super.updateLayout(processChildren);\r\n\r\n        if (GlobalSettings.useAdvancedTextBlockTruncation && this.maxLines && this.isDisplayed()) {\r\n            // Reset the element's innerHTML in case the available room for\r\n            // content has increased\r\n            this.restoreOriginalContent();\r\n            this.truncateIfSupported(this._computedLineHeight * this.maxLines);\r\n        }\r\n    }\r\n}\r\n\r\nexport class TextRun extends BaseTextBlock {\r\n    //#region Schema\r\n\r\n    static readonly italicProperty = new BoolProperty(Versions.v1_2, \"italic\", false);\r\n    static readonly strikethroughProperty = new BoolProperty(Versions.v1_2, \"strikethrough\", false);\r\n    static readonly highlightProperty = new BoolProperty(Versions.v1_2, \"highlight\", false);\r\n    static readonly underlineProperty = new BoolProperty(Versions.v1_3, \"underline\", false);\r\n\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        schema.add(BaseTextBlock.selectActionProperty);\r\n    }\r\n\r\n    @property(TextRun.italicProperty)\r\n    italic: boolean = false;\r\n\r\n    @property(TextRun.strikethroughProperty)\r\n    strikethrough: boolean = false;\r\n\r\n    @property(TextRun.highlightProperty)\r\n    highlight: boolean = false;\r\n\r\n    @property(TextRun.underlineProperty)\r\n    underline: boolean = false;\r\n\r\n    //#endregion\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        if (this.text) {\r\n            const preProcessedText = this.preProcessPropertyValue(BaseTextBlock.textProperty);\r\n            const hostConfig = this.hostConfig;\r\n\r\n            let formattedText = TextFormatters.formatText(this.lang, preProcessedText);\r\n\r\n            if (!formattedText) {\r\n                formattedText = \"\";\r\n            }\r\n\r\n            const element = document.createElement(\"span\");\r\n            element.classList.add(hostConfig.makeCssClassName(\"ac-textRun\"));\r\n\r\n            this.applyStylesTo(element);\r\n\r\n            if (this.selectAction && hostConfig.supportsInteractivity) {\r\n                const anchor = document.createElement(\"a\");\r\n                anchor.classList.add(hostConfig.makeCssClassName(\"ac-anchor\"));\r\n\r\n                const href = this.selectAction.getHref();\r\n\r\n                anchor.href = href ? href : \"\";\r\n                anchor.target = \"_blank\";\r\n                anchor.onclick = (e) => {\r\n                    if (this.selectAction && this.selectAction.isEffectivelyEnabled()) {\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        this.selectAction.execute();\r\n                    }\r\n                };\r\n\r\n                this.selectAction.setupElementForAccessibility(anchor);\r\n\r\n                anchor.innerText = formattedText;\r\n\r\n                element.appendChild(anchor);\r\n            } else {\r\n                element.innerText = formattedText;\r\n            }\r\n\r\n            return element;\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    applyStylesTo(targetElement: HTMLElement) {\r\n        super.applyStylesTo(targetElement);\r\n\r\n        if (this.italic) {\r\n            targetElement.style.fontStyle = \"italic\";\r\n        }\r\n\r\n        if (this.strikethrough) {\r\n            targetElement.style.textDecoration = \"line-through\";\r\n        }\r\n\r\n        if (this.highlight) {\r\n            const colorDefinition = this.getColorDefinition(\r\n                this.getEffectiveStyleDefinition().foregroundColors,\r\n                this.effectiveColor\r\n            );\r\n\r\n            const backgroundColor = Utils.stringToCssColor(\r\n                this.effectiveIsSubtle\r\n                    ? colorDefinition.highlightColors.subtle\r\n                    : colorDefinition.highlightColors.default\r\n            );\r\n            if (backgroundColor) {\r\n                targetElement.style.backgroundColor = backgroundColor;\r\n            }\r\n        }\r\n\r\n        if (this.underline) {\r\n            targetElement.style.textDecoration = \"underline\";\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"TextRun\";\r\n    }\r\n\r\n    get isStandalone(): boolean {\r\n        return false;\r\n    }\r\n\r\n    get isInline(): boolean {\r\n        return true;\r\n    }\r\n}\r\n\r\nexport class RichTextBlock extends CardElement {\r\n    private _inlines: CardElement[] = [];\r\n\r\n    private internalAddInline(inline: CardElement, forceAdd: boolean = false) {\r\n        if (!inline.isInline) {\r\n            throw new Error(Strings.errors.elementCannotBeUsedAsInline());\r\n        }\r\n\r\n        const doAdd: boolean = inline.parent === undefined || forceAdd;\r\n\r\n        if (!doAdd && inline.parent !== this) {\r\n            throw new Error(Strings.errors.inlineAlreadyParented());\r\n        } else {\r\n            inline.setParent(this);\r\n\r\n            this._inlines.push(inline);\r\n        }\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this._inlines = [];\r\n\r\n        if (Array.isArray(source[\"inlines\"])) {\r\n            for (const jsonInline of source[\"inlines\"]) {\r\n                let inline: CardElement | undefined;\r\n\r\n                if (typeof jsonInline === \"string\") {\r\n                    const textRun = new TextRun();\r\n                    textRun.text = jsonInline;\r\n\r\n                    inline = textRun;\r\n                } else {\r\n                    // No fallback for inlines in 1.2\r\n                    inline = context.parseElement(this, jsonInline, [], false);\r\n                }\r\n\r\n                if (inline) {\r\n                    this.internalAddInline(inline, true);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        if (this._inlines.length > 0) {\r\n            const jsonInlines: any[] = [];\r\n\r\n            for (const inline of this._inlines) {\r\n                jsonInlines.push(inline.toJSON(context));\r\n            }\r\n\r\n            context.serializeValue(target, \"inlines\", jsonInlines);\r\n        }\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        if (this._inlines.length > 0) {\r\n            let element: HTMLElement;\r\n\r\n            if (this.forElementId) {\r\n                const labelElement = document.createElement(\"label\");\r\n                labelElement.htmlFor = this.forElementId;\r\n\r\n                element = labelElement;\r\n            } else {\r\n                element = document.createElement(\"div\");\r\n            }\r\n\r\n            element.className = this.hostConfig.makeCssClassName(\"ac-richTextBlock\");\r\n\r\n            switch (this.getEffectiveHorizontalAlignment()) {\r\n                case Enums.HorizontalAlignment.Center:\r\n                    element.style.textAlign = \"center\";\r\n                    break;\r\n                case Enums.HorizontalAlignment.Right:\r\n                    element.style.textAlign = \"end\";\r\n                    break;\r\n                default:\r\n                    element.style.textAlign = \"start\";\r\n                    break;\r\n            }\r\n\r\n            let renderedInlines: number = 0;\r\n\r\n            for (const inline of this._inlines) {\r\n                const renderedInline = inline.render();\r\n\r\n                if (renderedInline) {\r\n                    element.appendChild(renderedInline);\r\n\r\n                    renderedInlines++;\r\n                }\r\n            }\r\n\r\n            if (renderedInlines > 0) {\r\n                return element;\r\n            }\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n\r\n    forElementId?: string;\r\n\r\n    asString(): string | undefined {\r\n        let result = \"\";\r\n\r\n        for (const inline of this._inlines) {\r\n            result += inline.asString();\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"RichTextBlock\";\r\n    }\r\n\r\n    getInlineCount(): number {\r\n        return this._inlines.length;\r\n    }\r\n\r\n    getInlineAt(index: number): CardElement {\r\n        if (index >= 0 && index < this._inlines.length) {\r\n            return this._inlines[index];\r\n        } else {\r\n            throw new Error(Strings.errors.indexOutOfRange(index));\r\n        }\r\n    }\r\n\r\n    addInline(inline: CardElement | string) {\r\n        if (typeof inline === \"string\") {\r\n            this.internalAddInline(new TextRun(inline));\r\n        } else {\r\n            this.internalAddInline(inline);\r\n        }\r\n    }\r\n\r\n    removeInline(inline: CardElement): boolean {\r\n        const index = this._inlines.indexOf(inline);\r\n\r\n        if (index >= 0) {\r\n            this._inlines[index].setParent(undefined);\r\n            this._inlines.splice(index, 1);\r\n\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n}\r\n\r\nexport class Fact extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\r\n    static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\r\n\r\n    // For historic reasons, the \"title\" schema property is exposed as \"name\" in the OM.\r\n    @property(Fact.titleProperty)\r\n    name?: string;\r\n\r\n    @property(Fact.valueProperty)\r\n    value?: string;\r\n\r\n    //#endregion\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"Fact\";\r\n    }\r\n\r\n    constructor(name?: string, value?: string) {\r\n        super();\r\n\r\n        this.name = name;\r\n        this.value = value;\r\n    }\r\n}\r\n\r\nexport class FactSet extends CardElement {\r\n    //#region Schema\r\n\r\n    static readonly factsProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_0,\r\n        \"facts\",\r\n        Fact\r\n    );\r\n\r\n    @property(FactSet.factsProperty)\r\n    facts: Fact[];\r\n\r\n    //#endregion\r\n\r\n    protected get useDefaultSizing(): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        let element: HTMLElement | undefined = undefined;\r\n        const hostConfig = this.hostConfig;\r\n\r\n        if (this.facts.length > 0) {\r\n            element = document.createElement(\"table\");\r\n            element.style.borderWidth = \"0px\";\r\n            element.style.borderSpacing = \"0px\";\r\n            element.style.borderStyle = \"none\";\r\n            element.style.borderCollapse = \"collapse\";\r\n            element.style.display = \"block\";\r\n            element.style.overflow = \"hidden\";\r\n            element.classList.add(hostConfig.makeCssClassName(\"ac-factset\"));\r\n            element.setAttribute(\"role\", \"presentation\");\r\n\r\n            for (let i = 0; i < this.facts.length; i++) {\r\n                const trElement = document.createElement(\"tr\");\r\n\r\n                if (i > 0) {\r\n                    trElement.style.marginTop = hostConfig.factSet.spacing + \"px\";\r\n                }\r\n\r\n                // Title column\r\n                let tdElement = document.createElement(\"td\");\r\n                tdElement.style.padding = \"0\";\r\n                tdElement.classList.add(hostConfig.makeCssClassName(\"ac-fact-title\"));\r\n\r\n                if (hostConfig.factSet.title.maxWidth) {\r\n                    tdElement.style.maxWidth = hostConfig.factSet.title.maxWidth + \"px\";\r\n                }\r\n\r\n                tdElement.style.verticalAlign = \"top\";\r\n\r\n                let textBlock = new TextBlock();\r\n                textBlock.setParent(this);\r\n                textBlock.text =\r\n                    !this.facts[i].name && this.isDesignMode() ? \"Title\" : this.facts[i].name;\r\n                textBlock.size = hostConfig.factSet.title.size;\r\n                textBlock.color = hostConfig.factSet.title.color;\r\n                textBlock.isSubtle = hostConfig.factSet.title.isSubtle;\r\n                textBlock.weight = hostConfig.factSet.title.weight;\r\n                textBlock.wrap = hostConfig.factSet.title.wrap;\r\n                textBlock.spacing = Enums.Spacing.None;\r\n\r\n                Utils.appendChild(tdElement, textBlock.render());\r\n                Utils.appendChild(trElement, tdElement);\r\n\r\n                // Spacer column\r\n                tdElement = document.createElement(\"td\");\r\n                tdElement.style.width = \"10px\";\r\n\r\n                Utils.appendChild(trElement, tdElement);\r\n\r\n                // Value column\r\n                tdElement = document.createElement(\"td\");\r\n                tdElement.style.padding = \"0\";\r\n                tdElement.style.verticalAlign = \"top\";\r\n                tdElement.classList.add(hostConfig.makeCssClassName(\"ac-fact-value\"));\r\n\r\n                textBlock = new TextBlock();\r\n                textBlock.setParent(this);\r\n                textBlock.text = this.facts[i].value;\r\n                textBlock.size = hostConfig.factSet.value.size;\r\n                textBlock.color = hostConfig.factSet.value.color;\r\n                textBlock.isSubtle = hostConfig.factSet.value.isSubtle;\r\n                textBlock.weight = hostConfig.factSet.value.weight;\r\n                textBlock.wrap = hostConfig.factSet.value.wrap;\r\n                textBlock.spacing = Enums.Spacing.None;\r\n\r\n                Utils.appendChild(tdElement, textBlock.render());\r\n                Utils.appendChild(trElement, tdElement);\r\n                Utils.appendChild(element, trElement);\r\n            }\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"FactSet\";\r\n    }\r\n}\r\n\r\nclass ImageDimensionProperty extends PropertyDefinition {\r\n    getInternalName(): string {\r\n        return this.internalName;\r\n    }\r\n\r\n    parse(\r\n        sender: SerializableObject,\r\n        source: PropertyBag,\r\n        context: BaseSerializationContext\r\n    ): number | undefined {\r\n        let result: number | undefined = undefined;\r\n        const sourceValue = source[this.name];\r\n\r\n        if (sourceValue === undefined) {\r\n            return this.defaultValue;\r\n        }\r\n\r\n        let isValid = false;\r\n\r\n        if (typeof sourceValue === \"string\") {\r\n            try {\r\n                const size = SizeAndUnit.parse(sourceValue, true);\r\n\r\n                if (size.unit === Enums.SizeUnit.Pixel) {\r\n                    result = size.physicalSize;\r\n\r\n                    isValid = true;\r\n                }\r\n            } catch {\r\n                // Swallow the exception\r\n            }\r\n\r\n            // If the source value isn't valid per this property definition,\r\n            // check its validity per the fallback property, if specified\r\n            if (!isValid && this.fallbackProperty) {\r\n                isValid = this.fallbackProperty.isValidValue(sourceValue, context);\r\n            }\r\n        }\r\n\r\n        if (!isValid) {\r\n            context.logParseEvent(\r\n                sender,\r\n                Enums.ValidationEvent.InvalidPropertyValue,\r\n                Strings.errors.invalidPropertyValue(sourceValue, this.name)\r\n            );\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    toJSON(\r\n        sender: SerializableObject,\r\n        target: PropertyBag,\r\n        value: number | undefined,\r\n        context: BaseSerializationContext\r\n    ) {\r\n        context.serializeValue(\r\n            target,\r\n            this.name,\r\n            typeof value === \"number\" && !isNaN(value) ? value + \"px\" : undefined\r\n        );\r\n    }\r\n\r\n    constructor(\r\n        readonly targetVersion: Version,\r\n        readonly name: string,\r\n        readonly internalName: string,\r\n        readonly fallbackProperty?: ValueSetProperty\r\n    ) {\r\n        super(targetVersion, name);\r\n    }\r\n}\r\n\r\nexport class Image extends CardElement {\r\n    //#region Schema\r\n\r\n    static readonly urlProperty = new StringProperty(Versions.v1_0, \"url\");\r\n    static readonly altTextProperty = new StringProperty(Versions.v1_0, \"altText\");\r\n    static readonly backgroundColorProperty = new StringProperty(Versions.v1_1, \"backgroundColor\");\r\n    static readonly styleProperty = new EnumProperty(\r\n        Versions.v1_0,\r\n        \"style\",\r\n        Enums.ImageStyle,\r\n        Enums.ImageStyle.Default\r\n    );\r\n    static readonly sizeProperty = new EnumProperty(\r\n        Versions.v1_0,\r\n        \"size\",\r\n        Enums.Size,\r\n        Enums.Size.Auto\r\n    );\r\n    static readonly pixelWidthProperty = new ImageDimensionProperty(\r\n        Versions.v1_1,\r\n        \"width\",\r\n        \"pixelWidth\"\r\n    );\r\n    static readonly pixelHeightProperty = new ImageDimensionProperty(\r\n        Versions.v1_1,\r\n        \"height\",\r\n        \"pixelHeight\",\r\n        CardElement.heightProperty\r\n    );\r\n    static readonly selectActionProperty = new ActionProperty(Versions.v1_1, \"selectAction\", [\r\n        \"Action.ShowCard\"\r\n    ]);\r\n    static readonly shouldForceLoadProperty = new BoolProperty(Versions.v1_6, \"forceLoad\", false);\r\n\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        schema.remove(CardElement.heightProperty);\r\n    }\r\n\r\n    public renderedImageElement?: HTMLElement;\r\n\r\n    @property(Image.urlProperty)\r\n    url?: string;\r\n\r\n    @property(Image.altTextProperty)\r\n    altText?: string;\r\n\r\n    @property(Image.backgroundColorProperty)\r\n    backgroundColor?: string;\r\n\r\n    @property(Image.sizeProperty)\r\n    size: Enums.Size = Enums.Size.Auto;\r\n\r\n    @property(Image.styleProperty)\r\n    style: Enums.ImageStyle = Enums.ImageStyle.Default;\r\n\r\n    @property(Image.pixelWidthProperty)\r\n    pixelWidth?: number;\r\n\r\n    @property(Image.pixelHeightProperty)\r\n    pixelHeight?: number;\r\n\r\n    @property(Image.selectActionProperty)\r\n    selectAction?: Action;\r\n\r\n    @property(Image.shouldForceLoadProperty)\r\n    forceLoad: boolean;\r\n\r\n    //#endregion\r\n\r\n    private applySize(element: HTMLElement) {\r\n        if (this.pixelWidth || this.pixelHeight) {\r\n            if (this.pixelWidth) {\r\n                element.style.width = this.pixelWidth + \"px\";\r\n            }\r\n\r\n            if (this.pixelHeight) {\r\n                element.style.height = this.pixelHeight + \"px\";\r\n            }\r\n        } else {\r\n            if (this.maxHeight) {\r\n                // If the image is constrained in height, we set its height property and\r\n                // auto and stretch are ignored (default to medium). THis is necessary for\r\n                // ImageSet which uses a maximum image height as opposed to the cards width\r\n                // as a constraining dimension\r\n                switch (this.size) {\r\n                    case Enums.Size.Small:\r\n                        element.style.height = this.hostConfig.imageSizes.small + \"px\";\r\n                        break;\r\n                    case Enums.Size.Large:\r\n                        element.style.height = this.hostConfig.imageSizes.large + \"px\";\r\n                        break;\r\n                    default:\r\n                        element.style.height = this.hostConfig.imageSizes.medium + \"px\";\r\n                        break;\r\n                }\r\n\r\n                element.style.maxHeight = this.maxHeight + \"px\";\r\n            } else {\r\n                switch (this.size) {\r\n                    case Enums.Size.Stretch:\r\n                        element.style.width = \"100%\";\r\n                        break;\r\n                    case Enums.Size.Auto:\r\n                        element.style.maxWidth = \"100%\";\r\n                        break;\r\n                    case Enums.Size.Small:\r\n                        element.style.width = this.hostConfig.imageSizes.small + \"px\";\r\n                        break;\r\n                    case Enums.Size.Large:\r\n                        element.style.width = this.hostConfig.imageSizes.large + \"px\";\r\n                        break;\r\n                    case Enums.Size.Medium:\r\n                        element.style.width = this.hostConfig.imageSizes.medium + \"px\";\r\n                        break;\r\n                }\r\n\r\n                element.style.maxHeight = \"100%\";\r\n            }\r\n        }\r\n    }\r\n\r\n    protected get useDefaultSizing() {\r\n        return false;\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        let element: HTMLElement | undefined = undefined;\r\n\r\n        if (this.url) {\r\n            element = document.createElement(\"div\");\r\n            element.style.display = \"flex\";\r\n            element.style.alignItems = \"flex-start\";\r\n\r\n            // Cache hostConfig to avoid walking the parent hierarchy multiple times\r\n            const hostConfig = this.hostConfig;\r\n\r\n            switch (this.getEffectiveHorizontalAlignment()) {\r\n                case Enums.HorizontalAlignment.Center:\r\n                    element.style.justifyContent = \"center\";\r\n                    break;\r\n                case Enums.HorizontalAlignment.Right:\r\n                    element.style.justifyContent = \"flex-end\";\r\n                    break;\r\n                default:\r\n                    element.style.justifyContent = \"flex-start\";\r\n                    break;\r\n            }\r\n\r\n            const imageElement = document.createElement(\"img\");\r\n\r\n            this.renderedImageElement = imageElement;\r\n\r\n            imageElement.onload = (_e: Event) => {\r\n                raiseImageLoadedEvent(this);\r\n            };\r\n            imageElement.onerror = (_e: Event) => {\r\n                if (this.renderedElement) {\r\n                    const card = this.getRootElement() as AdaptiveCard;\r\n\r\n                    clearElement(this.renderedElement);\r\n\r\n                    if (card && card.designMode) {\r\n                        const errorElement = document.createElement(\"div\");\r\n                        errorElement.style.display = \"flex\";\r\n                        errorElement.style.alignItems = \"center\";\r\n                        errorElement.style.justifyContent = \"center\";\r\n                        errorElement.style.backgroundColor = \"#EEEEEE\";\r\n                        errorElement.style.color = \"black\";\r\n                        errorElement.innerText = \":-(\";\r\n                        errorElement.style.padding = \"10px\";\r\n\r\n                        this.applySize(errorElement);\r\n\r\n                        this.renderedElement.appendChild(errorElement);\r\n                    }\r\n                }\r\n\r\n                raiseImageLoadedEvent(this);\r\n            };\r\n            imageElement.style.minWidth = \"0\";\r\n            imageElement.classList.add(hostConfig.makeCssClassName(\"ac-image\"));\r\n\r\n            if (this.selectAction && hostConfig.supportsInteractivity) {\r\n                imageElement.onkeypress = (e) => {\r\n                    if (\r\n                        this.selectAction &&\r\n                        this.selectAction.isEffectivelyEnabled() &&\r\n                        (e.code === \"Enter\" || e.code === \"Space\")\r\n                    ) {\r\n                        // enter or space pressed\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        this.selectAction.execute();\r\n                    }\r\n                };\r\n\r\n                imageElement.onclick = (e) => {\r\n                    if (this.selectAction && this.selectAction.isEffectivelyEnabled()) {\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        this.selectAction.execute();\r\n                    }\r\n                };\r\n\r\n                this.selectAction.setupElementForAccessibility(imageElement);\r\n\r\n                if (this.selectAction.isEffectivelyEnabled()) {\r\n                    imageElement.classList.add(hostConfig.makeCssClassName(\"ac-selectable\"));\r\n                }\r\n            }\r\n\r\n            this.applySize(imageElement);\r\n\r\n            if (this.style === Enums.ImageStyle.Person) {\r\n                imageElement.style.borderRadius = \"50%\";\r\n                imageElement.style.backgroundPosition = \"50% 50%\";\r\n                imageElement.style.backgroundRepeat = \"no-repeat\";\r\n            }\r\n\r\n            const backgroundColor = Utils.stringToCssColor(this.backgroundColor);\r\n            if (backgroundColor) {\r\n                imageElement.style.backgroundColor = backgroundColor;\r\n            }\r\n\r\n            this.setImageSource(imageElement);    \r\n\r\n            const altTextProperty = this.preProcessPropertyValue(Image.altTextProperty);\r\n            if (altTextProperty) {\r\n                imageElement.alt = <string>altTextProperty;\r\n            }\r\n\r\n            element.appendChild(imageElement);\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    maxHeight?: number;\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Image\";\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        if (this.selectAction) {\r\n            result.push(this.selectAction);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getActionById(id: string) {\r\n        let result = super.getActionById(id);\r\n\r\n        if (!result && this.selectAction) {\r\n            result = this.selectAction.getActionById(id);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        return this.url ? [{ url: this.url, mimeType: \"image\" }] : [];\r\n    }\r\n\r\n    private setImageSource(imageElement: HTMLImageElement): void {\r\n        const imageForceLoader: ImageForceLoader = new ImageForceLoader(this.forceLoad, this.url);\r\n        imageForceLoader.configureImage(this);\r\n        imageElement.src = <string>this.preProcessPropertyValue(Image.urlProperty);\r\n        imageForceLoader.resetImage(this);\r\n    } \r\n}\r\n\r\n// configures Image element to fetch a new image data from url source instead of relying on cache\r\n// currently rudimentary refreshing scheme is used\r\n// by attaching unique query string to url, we bypass the cache usage\r\nclass ImageForceLoader{\r\n    private uniqueHash : string;\r\n    public readonly urlWithForceLoadOption : string;\r\n    constructor(\r\n        readonly doForceLoad: boolean,\r\n        readonly url : string | undefined,\r\n    )\r\n    {\r\n        if (url && url.length && doForceLoad) {\r\n            // we can do better by appending unique key such as uuid instead of epoch\r\n            // however the current usage is for front-end ui and networking,  \r\n            // since ui is running in single main thread, this is sufficient mechanism\r\n            // without needing to depend on external library for our small use cases.\r\n            this.uniqueHash = '?' + Date.now();\r\n            this.urlWithForceLoadOption = url + this.uniqueHash;\r\n        }\r\n    }\r\n\r\n    public configureImage(image: Image): void {\r\n        if (this.urlWithForceLoadOption && this.urlWithForceLoadOption.length) {\r\n            image.url = this.urlWithForceLoadOption;\r\n        }\r\n    }\r\n\r\n    public resetImage(image: Image): void {\r\n        image.url = this.url;\r\n    }\r\n}\r\n\r\nexport abstract class CardElementContainer extends CardElement {\r\n    //#region Schema\r\n\r\n    static readonly selectActionProperty = new ActionProperty(Versions.v1_1, \"selectAction\", [\r\n        \"Action.ShowCard\"\r\n    ]);\r\n\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        if (!this.isSelectable) {\r\n            schema.remove(CardElementContainer.selectActionProperty);\r\n        }\r\n    }\r\n\r\n    @property(CardElementContainer.selectActionProperty)\r\n    protected _selectAction?: Action;\r\n\r\n    //#endregion\r\n\r\n    protected isElementAllowed(element: CardElement) {\r\n        return this.hostConfig.supportsInteractivity || !element.isInteractive;\r\n    }\r\n\r\n    protected applyPadding() {\r\n        super.applyPadding();\r\n\r\n        if (!this.renderedElement) {\r\n            return;\r\n        }\r\n\r\n        let physicalPadding = new SpacingDefinition();\r\n\r\n        if (this.getEffectivePadding()) {\r\n            physicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(\r\n                this.getEffectivePadding()\r\n            );\r\n        }\r\n\r\n        this.renderedElement.style.paddingTop = physicalPadding.top + \"px\";\r\n        this.renderedElement.style.paddingRight = physicalPadding.right + \"px\";\r\n        this.renderedElement.style.paddingBottom = physicalPadding.bottom + \"px\";\r\n        this.renderedElement.style.paddingLeft = physicalPadding.left + \"px\";\r\n\r\n        this.renderedElement.style.marginRight = \"0\";\r\n        this.renderedElement.style.marginLeft = \"0\";\r\n    }\r\n\r\n    protected get isSelectable(): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected forbiddenChildElements(): string[] {\r\n        return [];\r\n    }\r\n\r\n    abstract getItemCount(): number;\r\n    abstract getItemAt(index: number): CardElement;\r\n    abstract getFirstVisibleRenderedItem(): CardElement | undefined;\r\n    abstract getLastVisibleRenderedItem(): CardElement | undefined;\r\n    abstract removeItem(item: CardElement): boolean;\r\n\r\n    allowVerticalOverflow: boolean = false;\r\n\r\n    releaseDOMResources() {\r\n        super.releaseDOMResources();\r\n\r\n        for (let i = 0; i < this.getItemCount(); i++) {\r\n            this.getItemAt(i).releaseDOMResources();\r\n        }\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        for (let i = 0; i < this.getItemCount(); i++) {\r\n            const item = this.getItemAt(i);\r\n\r\n            if (!this.hostConfig.supportsInteractivity && item.isInteractive) {\r\n                context.addFailure(\r\n                    this,\r\n                    Enums.ValidationEvent.InteractivityNotAllowed,\r\n                    Strings.errors.interactivityNotAllowed()\r\n                );\r\n            }\r\n\r\n            if (!this.isElementAllowed(item)) {\r\n                context.addFailure(\r\n                    this,\r\n                    Enums.ValidationEvent.InteractivityNotAllowed,\r\n                    Strings.errors.elementTypeNotAllowed(item.getJsonTypeName())\r\n                );\r\n            }\r\n\r\n            item.internalValidateProperties(context);\r\n        }\r\n\r\n        if (this._selectAction) {\r\n            this._selectAction.internalValidateProperties(context);\r\n        }\r\n    }\r\n\r\n    render(): HTMLElement | undefined {\r\n        const element = super.render();\r\n\r\n        if (element) {\r\n            const hostConfig = this.hostConfig;\r\n\r\n            if (this.allowVerticalOverflow) {\r\n                element.style.overflowX = \"hidden\";\r\n                element.style.overflowY = \"auto\";\r\n            }\r\n\r\n            if (\r\n                element &&\r\n                this.isSelectable &&\r\n                this._selectAction &&\r\n                hostConfig.supportsInteractivity\r\n            ) {\r\n                element.onclick = (e) => {\r\n                    if (this._selectAction && this._selectAction.isEffectivelyEnabled()) {\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        this._selectAction.execute();\r\n                    }\r\n                };\r\n\r\n                element.onkeypress = (e) => {\r\n                    if (\r\n                        this._selectAction &&\r\n                        this._selectAction.isEffectivelyEnabled() &&\r\n                        (e.code === \"Enter\" || e.code === \"Space\")\r\n                    ) {\r\n                        // Enter or space pressed\r\n                        e.preventDefault();\r\n                        e.cancelBubble = true;\r\n\r\n                        this._selectAction.execute();\r\n                    }\r\n                };\r\n\r\n                this._selectAction.setupElementForAccessibility(element);\r\n\r\n                if (this._selectAction.isEffectivelyEnabled()) {\r\n                    element.classList.add(hostConfig.makeCssClassName(\"ac-selectable\"));\r\n                }\r\n            }\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    updateLayout(processChildren: boolean = true) {\r\n        super.updateLayout(processChildren);\r\n\r\n        if (processChildren) {\r\n            for (let i = 0; i < this.getItemCount(); i++) {\r\n                this.getItemAt(i).updateLayout();\r\n            }\r\n        }\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        let result: Input[] = [];\r\n\r\n        for (let i = 0; i < this.getItemCount(); i++) {\r\n            result.push(...this.getItemAt(i).getAllInputs(processActions));\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        for (let i = 0; i < this.getItemCount(); i++) {\r\n            result.push(...this.getItemAt(i).getAllActions());\r\n        }\r\n\r\n        if (this._selectAction) {\r\n            result.push(this._selectAction);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        let result: IResourceInformation[] = [];\r\n\r\n        for (let i = 0; i < this.getItemCount(); i++) {\r\n            result.push(...this.getItemAt(i).getResourceInformation());\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getElementById(id: string): CardElement | undefined {\r\n        let result = super.getElementById(id);\r\n\r\n        if (!result) {\r\n            for (let i = 0; i < this.getItemCount(); i++) {\r\n                result = this.getItemAt(i).getElementById(id);\r\n\r\n                if (result) {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * @inheritdoc\r\n     */\r\n    findDOMNodeOwner(node: Node): CardObject | undefined {\r\n        let target: CardObject | undefined = undefined;\r\n\r\n        for (let i = 0; i < this.getItemCount(); i++) {\r\n            // recur through child elements\r\n            target = this.getItemAt(i).findDOMNodeOwner(node);\r\n\r\n            if (target) {\r\n                return target;\r\n            }\r\n        }\r\n\r\n        // If not found in children, check the actions\r\n        for (let i = 0; i < this.getActionCount(); i++) {\r\n            target = this.getActionAt(i)?.findDOMNodeOwner(node);\r\n\r\n            if (target) {\r\n                return target;\r\n            }\r\n        }\r\n\r\n        // if not found in children or actions, defer to parent implementation\r\n        return super.findDOMNodeOwner(node);\r\n    }\r\n}\r\n\r\nexport class ImageSet extends CardElementContainer {\r\n    //#region Schema\r\n\r\n    static readonly imagesProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_0,\r\n        \"images\",\r\n        Image,\r\n        (sender: SerializableObject, item: Image) => {\r\n            item.setParent(<CardElement>sender);\r\n        }\r\n    );\r\n\r\n    static readonly imageSizeProperty = new EnumProperty(\r\n        Versions.v1_0,\r\n        \"imageSize\",\r\n        Enums.ImageSize,\r\n        Enums.ImageSize.Medium\r\n    );\r\n\r\n    static readonly imagePresentationStyle = new EnumProperty(\r\n        Versions.v1_6,\r\n        \"style\",\r\n        Enums.ImageSetPresentationStyle,\r\n        Enums.ImageSetPresentationStyle.Default\r\n    );\r\n\r\n    static readonly pixelOffset = new NumProperty(\r\n        Versions.v1_6,\r\n        \"offset\",\r\n        0,\r\n        undefined\r\n    );\r\n\r\n    @property(ImageSet.imagesProperty)\r\n    private _images: Image[] = [];\r\n\r\n    @property(ImageSet.imageSizeProperty)\r\n    imageSize: Enums.ImageSize = Enums.ImageSize.Medium;\r\n\r\n    @property(ImageSet.imagePresentationStyle)\r\n    presentationStyle: Enums.ImageSetPresentationStyle = Enums.ImageSetPresentationStyle.Default;\r\n\r\n    @property(ImageSet.pixelOffset)\r\n    pixelOffset: number = 0;\r\n\r\n    //#endregion\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        let element: HTMLElement | undefined = undefined;\r\n\r\n        if (this._images.length > 0) {\r\n            element = document.createElement(\"div\");\r\n            element.style.display = \"flex\";\r\n            element.style.flexWrap = \"wrap\";\r\n\r\n            for (const image of this._images) {\r\n                switch (this.imageSize) {\r\n                    case Enums.ImageSize.Small:\r\n                        image.size = Enums.Size.Small;\r\n                        break;\r\n                    case Enums.ImageSize.Large:\r\n                        image.size = Enums.Size.Large;\r\n                        break;\r\n                    default:\r\n                        image.size = Enums.Size.Medium;\r\n                        break;\r\n                }\r\n\r\n                image.maxHeight = this.hostConfig.imageSet.maxImageHeight;\r\n\r\n                const renderedImage = image.render();\r\n\r\n                if (renderedImage) {\r\n                    renderedImage.style.display = \"inline-flex\";\r\n                    renderedImage.style.margin = \"0px\";\r\n                    if (this.presentationStyle == Enums.ImageSetPresentationStyle.Default) {\r\n                        renderedImage.style.marginRight = \"10px\";\r\n                    }\r\n\r\n                    Utils.appendChild(element, renderedImage);\r\n                }\r\n            }\r\n            if (this.presentationStyle == Enums.ImageSetPresentationStyle.Stacked) {\r\n                this.applyStackedPresentationStyle();\r\n            }\r\n        }\r\n        \r\n\r\n        return element;\r\n    }\r\n\r\n    applyStackedPresentationStyle() {\r\n        if (this._images[0].renderedImageElement) {\r\n            let dimension = StackedImageConfigurator.parseNumericPixelDimension(this._images[0].renderedImageElement.style.height);\r\n            let bgColor = this.getEffectiveBackgroundColor();\r\n            if (dimension) {\r\n                let stackedImageConfigurator = new StackedImageConfigurator(this.pixelOffset, \r\n                    dimension, bgColor);\r\n                stackedImageConfigurator.configureImagesArrayAsStackedLayout(this._images);\r\n            }\r\n        }\r\n    }\r\n\r\n    getEffectiveBackgroundColor() : string | undefined {\r\n        let parentContainer = this.getParentContainer();\r\n        let style = parentContainer?.getEffectiveStyle();\r\n\r\n        const styleDefinition = this.hostConfig.containerStyles.getStyleByName(\r\n            style,\r\n            this.hostConfig.containerStyles.getStyleByName(this.defaultStyle)\r\n        );\r\n\r\n        return Utils.stringToCssColor(styleDefinition.backgroundColor);\r\n    }\r\n\r\n    getItemCount(): number {\r\n        return this._images.length;\r\n    }\r\n\r\n    getItemAt(index: number): CardElement {\r\n        return this._images[index];\r\n    }\r\n\r\n    getFirstVisibleRenderedItem(): CardElement | undefined {\r\n        return this._images && this._images.length > 0 ? this._images[0] : undefined;\r\n    }\r\n\r\n    getLastVisibleRenderedItem(): CardElement | undefined {\r\n        return this._images && this._images.length > 0\r\n            ? this._images[this._images.length - 1]\r\n            : undefined;\r\n    }\r\n\r\n    removeItem(item: CardElement): boolean {\r\n        if (item instanceof Image) {\r\n            const itemIndex = this._images.indexOf(item);\r\n\r\n            if (itemIndex >= 0) {\r\n                this._images.splice(itemIndex, 1);\r\n\r\n                item.setParent(undefined);\r\n\r\n                this.updateLayout();\r\n\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"ImageSet\";\r\n    }\r\n\r\n    addImage(image: Image) {\r\n        if (!image.parent) {\r\n            this._images.push(image);\r\n\r\n            image.setParent(this);\r\n        } else {\r\n            throw new Error(\"This image already belongs to another ImageSet\");\r\n        }\r\n    }\r\n\r\n    indexOf(cardElement: CardElement): number {\r\n        return cardElement instanceof Image ? this._images.indexOf(cardElement) : -1;\r\n    }\r\n}\r\n\r\nclass StackedImageConfigurator {\r\n    private sign45 = 0.7071;\r\n    private maxImageCounts: number = 2;\r\n    private offset: number = 0;\r\n    private normalizationConstant: number = 0;\r\n    private border: number = 5;\r\n    private dimension: number = 0;\r\n    private style: string;\r\n\r\n    constructor(offset: number, dimension: number, style: string | undefined) {\r\n        this.dimension = dimension;\r\n        this.normalizationConstant = (dimension * this.sign45 - 0.5 * dimension) * 2;\r\n        // offset determines how far images are placed from each other\r\n        // at zero, images are separated only by the border\r\n        // there is no restriction on how far they are apart in positive values, their actual\r\n        // positioning is limited by maximum size imposed by Image renderer\r\n        // a negative value can decrease upto the diameter of the image since a value less than the diameter\r\n        // put the images past each other, and the use of such value is not reasonable request\r\n        // users should change image positions in such case.\r\n        this.offset = this.sign45 * (Math.max(offset, -dimension) - this.normalizationConstant);\r\n        this.style = style ? style : \"\";\r\n    }\r\n\r\n    private moveImageRight(element: HTMLElement) {\r\n        element.style.marginLeft = this.offset + \"px\";\r\n    }\r\n\r\n    private moveImageUp(element: HTMLElement) {\r\n        element.style.marginBottom = this.offset + this.dimension+ \"px\";\r\n    }\r\n\r\n    private moveImageDown(element: HTMLElement) {\r\n        element.style.marginTop = this.offset + this.dimension + \"px\";\r\n    }\r\n\r\n    private makeImageRound(element: HTMLElement) {\r\n        element.style.borderRadius = \"50%\";\r\n        element.style.backgroundPosition = \"50% 50%\";\r\n        element.style.backgroundRepeat = \"no-repeat\";\r\n    }\r\n\r\n    private applyBorder(element: HTMLElement) {\r\n        element.style.height = (this.dimension + this.border * 2) + \"px\";\r\n        element.style.border = this.border + \"px\" + \" solid \" + this.style;\r\n    }\r\n\r\n    private configureImageForBottomLeft(element: HTMLElement) {\r\n        this.moveImageDown(element);\r\n        this.makeImageRound(element); \r\n        this.applyBorder(element);\r\n        element.style.zIndex = \"2\";\r\n    }\r\n\r\n    private configureImageForTopRight(element: HTMLElement) {\r\n        this.moveImageUp(element);\r\n        this.moveImageRight(element);\r\n        this.makeImageRound(element); \r\n        element.style.zIndex = \"1\";\r\n    }\r\n\r\n    // stacked layout is applied when there are two images in ImageSet,\r\n    // first image in the ImageSet is put bottom left of ImageSet,\r\n    // second image is placed top right diagonally to the first image at 45 angle\r\n    // first image is placed over the second image should the overlap to occur.\r\n    public configureImagesArrayAsStackedLayout(elements: Array<Image>) {\r\n        if (elements.length == 1) {\r\n            if (elements[0].renderedImageElement) {\r\n                this.makeImageRound(elements[0].renderedImageElement); \r\n            }\r\n        }\r\n        else if (elements.length <= this.maxImageCounts) {\r\n            if (elements[0].renderedImageElement && elements[1].renderedImageElement) {\r\n                this.configureImageForBottomLeft(elements[0].renderedImageElement);\r\n                this.configureImageForTopRight(elements[1].renderedImageElement);\r\n            }\r\n        }\r\n    }\r\n\r\n    public static parseNumericPixelDimension(dimension: string): number | undefined  {\r\n        if (dimension?.substring(dimension.length - 2) == 'px') {\r\n            return parseInt(dimension.substring(0, dimension.length - 2));\r\n        }\r\n        return undefined;\r\n    }\r\n}\r\n\r\nexport abstract class ContentSource extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly mimeTypeProperty = new StringProperty(Versions.v1_1, \"mimeType\");\r\n    static readonly urlProperty = new StringProperty(Versions.v1_1, \"url\");\r\n\r\n    @property(ContentSource.mimeTypeProperty)\r\n    mimeType?: string;\r\n\r\n    @property(ContentSource.urlProperty)\r\n    url?: string;\r\n\r\n    //#endregion\r\n\r\n    constructor(url?: string, mimeType?: string) {\r\n        super();\r\n\r\n        this.url = url;\r\n        this.mimeType = mimeType;\r\n    }\r\n\r\n    isValid(): boolean {\r\n        return this.mimeType && this.url ? true : false;\r\n    }\r\n}\r\n\r\nexport class CaptionSource extends ContentSource {\r\n    //#region Schema\r\n\r\n    static readonly labelProperty = new StringProperty(Versions.v1_6, \"label\");\r\n\r\n    @property(CaptionSource.labelProperty)\r\n    label?: string;\r\n\r\n    //#endregion\r\n\r\n    constructor(url?: string, mimeType?: string, label?: string) {\r\n        super(url, mimeType);\r\n\r\n        this.label = label;\r\n    }\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"CaptionSource\";\r\n    }\r\n\r\n    render(): HTMLElement | undefined {\r\n        let result: HTMLTrackElement | undefined = undefined;\r\n\r\n        if (this.isValid()) {\r\n            result = document.createElement(\"track\");\r\n            result.src = this.url!;\r\n            result.kind = \"captions\";\r\n            result.label = this.label!;\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\nexport class MediaSource extends ContentSource {\r\n    protected getSchemaKey(): string {\r\n        return \"MediaSource\";\r\n    }\r\n\r\n    render(): HTMLElement | undefined {\r\n        let result: HTMLSourceElement | undefined = undefined;\r\n\r\n        if (this.isValid()) {\r\n            result = document.createElement(\"source\");\r\n            result.src = this.url!;\r\n            result.type = this.mimeType!;\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\nexport abstract class MediaPlayer {\r\n    private _posterUrl?: string;\r\n\r\n    abstract canPlay(): boolean;\r\n    abstract render(): HTMLElement;\r\n    abstract fetchVideoDetails(): Promise<void>;\r\n\r\n    play() {\r\n        // Do nothing in base implementation\r\n    }\r\n\r\n    get posterUrl(): string | undefined {\r\n        return this._posterUrl;\r\n    }\r\n\r\n    protected set posterUrl(value: string | undefined) {\r\n        this._posterUrl = value;\r\n    }\r\n\r\n    get selectedMediaType(): string | undefined {\r\n        return undefined;\r\n    }\r\n}\r\n\r\nexport class HTML5MediaPlayer extends MediaPlayer {\r\n    private _selectedMediaType?: string;\r\n    private _selectedSources: MediaSource[] = [];\r\n    private _captionSources: CaptionSource[] = [];\r\n    private _mediaElement?: HTMLMediaElement;\r\n\r\n    private processSources() {\r\n        this._selectedSources = [];\r\n        this._captionSources = [];\r\n        this._selectedMediaType = undefined;\r\n\r\n        for (const source of this.owner.sources) {\r\n            const mimeComponents = source.mimeType ? source.mimeType.split(\"/\") : [];\r\n\r\n            if (mimeComponents.length === 2) {\r\n                if (!this._selectedMediaType) {\r\n                    const index = HTML5MediaPlayer.supportedMediaTypes.indexOf(mimeComponents[0]);\r\n\r\n                    if (index >= 0) {\r\n                        this._selectedMediaType = HTML5MediaPlayer.supportedMediaTypes[index];\r\n                    }\r\n                }\r\n                if (mimeComponents[0] === this._selectedMediaType) {\r\n                    this._selectedSources.push(source);\r\n                }\r\n            }\r\n        }\r\n\r\n        this._captionSources.push(...this.owner.captionSources);\r\n    }\r\n\r\n    static readonly supportedMediaTypes = [\"audio\", \"video\"];\r\n\r\n    constructor(readonly owner: Media) {\r\n        super();\r\n\r\n        this.processSources();\r\n    }\r\n\r\n    canPlay(): boolean {\r\n        return this._selectedSources.length > 0;\r\n    }\r\n\r\n    async fetchVideoDetails() {\r\n        // Nothing to fetch for the HTML5 media player\r\n    }\r\n\r\n    render(): HTMLElement {\r\n        if (this._selectedMediaType === \"video\") {\r\n            this._mediaElement = document.createElement(\"video\");\r\n        } else {\r\n            this._mediaElement = document.createElement(\"audio\");\r\n        }\r\n\r\n        this._mediaElement.setAttribute(\r\n            \"aria-label\",\r\n            this.owner.altText ? this.owner.altText : Strings.defaults.mediaPlayerAriaLabel()\r\n        );\r\n        this._mediaElement.setAttribute(\"webkit-playsinline\", \"\");\r\n        this._mediaElement.setAttribute(\"playsinline\", \"\");\r\n        // We enable crossorigin for cases where the caption file has a different domain than\r\n        // the video file. If the caption file lives in a different domain than the video file\r\n        // and crossorigin is not set, then the caption file will fail to load.\r\n        this._mediaElement.setAttribute(\"crossorigin\", \"\");\r\n        this._mediaElement.autoplay = true;\r\n        this._mediaElement.controls = true;\r\n\r\n        if (Utils.isMobileOS()) {\r\n            this._mediaElement.muted = true;\r\n        }\r\n\r\n        this._mediaElement.preload = \"none\";\r\n        this._mediaElement.style.width = \"100%\";\r\n\r\n        for (const source of this.owner.sources) {\r\n            const renderedSource = source.render();\r\n\r\n            Utils.appendChild(this._mediaElement, renderedSource);\r\n        }\r\n\r\n        for (const captionSource of this.owner.captionSources) {\r\n            if (captionSource.mimeType == \"vtt\") {\r\n                const renderedCaptionSource = captionSource.render();\r\n\r\n                Utils.appendChild(this._mediaElement, renderedCaptionSource);\r\n            }\r\n        }\r\n\r\n        return this._mediaElement;\r\n    }\r\n\r\n    play() {\r\n        if (this._mediaElement) {\r\n            this._mediaElement.play();\r\n        }\r\n    }\r\n\r\n    get selectedMediaType(): string | undefined {\r\n        return this._selectedMediaType;\r\n    }\r\n}\r\n\r\nexport abstract class CustomMediaPlayer extends MediaPlayer {\r\n    constructor(matches: RegExpExecArray) {\r\n        super();\r\n    }\r\n}\r\n\r\nexport abstract class IFrameMediaMediaPlayer extends CustomMediaPlayer {\r\n    private _videoId?: string;\r\n\r\n    constructor(matches: RegExpExecArray, readonly iFrameTitle?: string) {\r\n        super(matches);\r\n\r\n        if (matches.length >= 2) {\r\n            this._videoId = matches[1];\r\n        }\r\n    }\r\n\r\n    abstract getEmbedVideoUrl(): string;\r\n\r\n    canPlay(): boolean {\r\n        return this._videoId !== undefined;\r\n    }\r\n\r\n    render(): HTMLElement {\r\n        let container = document.createElement(\"div\");\r\n        container.style.position = \"relative\";\r\n        container.style.width = \"100%\";\r\n        container.style.height = \"0\";\r\n        container.style.paddingBottom = \"56.25%\";\r\n\r\n        let iFrame = document.createElement(\"iframe\");\r\n        iFrame.style.position = \"absolute\";\r\n        iFrame.style.top = \"0\";\r\n        iFrame.style.left = \"0\";\r\n        iFrame.style.width = \"100%\";\r\n        iFrame.style.height = \"100%\";\r\n        iFrame.src = this.getEmbedVideoUrl();\r\n        iFrame.frameBorder = \"0\";\r\n\r\n        if (this.iFrameTitle) {\r\n            iFrame.title = this.iFrameTitle;\r\n        }\r\n\r\n        iFrame.allow =\r\n            \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\";\r\n        iFrame.allowFullscreen = true;\r\n\r\n        container.appendChild(iFrame);\r\n\r\n        return container;\r\n    }\r\n\r\n    get videoId(): string | undefined {\r\n        return this._videoId;\r\n    }\r\n}\r\n\r\nexport class VimeoPlayer extends IFrameMediaMediaPlayer {\r\n    async fetchVideoDetails(): Promise<void> {\r\n        const oEmbedUrl = `https://vimeo.com/api/oembed.json?url=${this.getEmbedVideoUrl()}`;\r\n\r\n        let response = await fetch(oEmbedUrl);\r\n\r\n        if (response.ok) {\r\n            let json = await response.json();\r\n\r\n            this.posterUrl = json[\"thumbnail_url\"];\r\n        }\r\n    }\r\n\r\n    getEmbedVideoUrl(): string {\r\n        return `https://player.vimeo.com/video/${this.videoId}?autoplay=1`;\r\n    }\r\n}\r\n\r\nexport class DailymotionPlayer extends IFrameMediaMediaPlayer {\r\n    async fetchVideoDetails(): Promise<void> {\r\n        const apiUrl = `https://api.dailymotion.com/video/${this.videoId}?fields=thumbnail_720_url`;\r\n\r\n        let response = await fetch(apiUrl);\r\n\r\n        if (response.ok) {\r\n            let json = await response.json();\r\n\r\n            this.posterUrl = json[\"thumbnail_720_url\"];\r\n        }\r\n    }\r\n\r\n    getEmbedVideoUrl(): string {\r\n        return `https://www.dailymotion.com/embed/video/${this.videoId}?autoplay=1`;\r\n    }\r\n}\r\n\r\nexport class YouTubePlayer extends IFrameMediaMediaPlayer {\r\n    private _startTimeIndex?: number;\r\n\r\n    constructor(matches: RegExpExecArray, readonly iFrameTitle?: string) {\r\n        super(matches, iFrameTitle);\r\n\r\n        if (matches.length >= 3 && matches[2] !== undefined) {\r\n            this._startTimeIndex = parseInt(matches[2]);\r\n        }\r\n    }\r\n\r\n    async fetchVideoDetails(): Promise<void> {\r\n        this.posterUrl = this.videoId\r\n            ? `https://img.youtube.com/vi/${this.videoId}/maxresdefault.jpg`\r\n            : undefined;\r\n    }\r\n\r\n    getEmbedVideoUrl(): string {\r\n        let url = `https://www.youtube.com/embed/${this.videoId}?autoplay=1`;\r\n\r\n        if (this._startTimeIndex !== undefined) {\r\n            url += `&start=${this._startTimeIndex}`;\r\n        }\r\n\r\n        return url;\r\n    }\r\n}\r\n\r\nexport interface ICustomMediaPlayer {\r\n    urlPatterns: RegExp[];\r\n    createMediaPlayer: (matches: RegExpExecArray) => CustomMediaPlayer;\r\n}\r\n\r\nexport class Media extends CardElement {\r\n    static customMediaPlayers: ICustomMediaPlayer[] = [\r\n        {\r\n            urlPatterns: [\r\n                /^(?:https?:\\/\\/)?(?:www.)?youtube.com\\/watch\\?(?=.*v=([\\w\\d-_]+))(?=(?:.*t=(\\d+))?).*/gi,\r\n                /^(?:https?:\\/\\/)?youtu.be\\/([\\w\\d-_]+)(?:\\?t=(\\d+))?/gi\r\n            ],\r\n            createMediaPlayer: (matches) =>\r\n                new YouTubePlayer(matches, Strings.defaults.youTubeVideoPlayer())\r\n        },\r\n        {\r\n            urlPatterns: [/^(?:https?:\\/\\/)?vimeo.com\\/([\\w\\d-_]+).*/gi],\r\n            createMediaPlayer: (matches) =>\r\n                new VimeoPlayer(matches, Strings.defaults.vimeoVideoPlayer())\r\n        },\r\n        {\r\n            urlPatterns: [/^(?:https?:\\/\\/)?(?:www.)?dailymotion.com\\/video\\/([\\w\\d-_]+).*/gi],\r\n            createMediaPlayer: (matches) =>\r\n                new DailymotionPlayer(matches, Strings.defaults.dailymotionVideoPlayer())\r\n        }\r\n    ];\r\n\r\n    //#region Schema\r\n\r\n    static readonly sourcesProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_1,\r\n        \"sources\",\r\n        MediaSource\r\n    );\r\n    static readonly captionSourcesProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_6,\r\n        \"captionSources\",\r\n        CaptionSource\r\n    );\r\n    static readonly posterProperty = new StringProperty(Versions.v1_1, \"poster\");\r\n    static readonly altTextProperty = new StringProperty(Versions.v1_1, \"altText\");\r\n\r\n    @property(Media.sourcesProperty)\r\n    sources: MediaSource[] = [];\r\n\r\n    @property(Media.captionSourcesProperty)\r\n    captionSources: CaptionSource[] = [];\r\n\r\n    @property(Media.posterProperty)\r\n    poster?: string;\r\n\r\n    @property(Media.altTextProperty)\r\n    altText?: string;\r\n\r\n    //#endregion\r\n\r\n    private _mediaPlayer: MediaPlayer;\r\n\r\n    private createMediaPlayer(): MediaPlayer {\r\n        for (let provider of Media.customMediaPlayers) {\r\n            for (let source of this.sources) {\r\n                if (source.url) {\r\n                    for (let pattern of provider.urlPatterns) {\r\n                        let matches = pattern.exec(source.url);\r\n\r\n                        if (matches !== null) {\r\n                            return provider.createMediaPlayer(matches);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return new HTML5MediaPlayer(this);\r\n    }\r\n\r\n    private handlePlayButtonInvoke(event: UIEvent): void {\r\n        if (this.hostConfig.media.allowInlinePlayback) {\r\n            event.preventDefault();\r\n            event.cancelBubble = true;\r\n\r\n            if (this.renderedElement) {\r\n                const mediaPlayerElement = this._mediaPlayer.render();\r\n                clearElement(this.renderedElement);\r\n                this.renderedElement.appendChild(mediaPlayerElement);\r\n\r\n                this._mediaPlayer.play();\r\n\r\n                mediaPlayerElement.focus();\r\n            }\r\n        } else {\r\n            if (Media.onPlay) {\r\n                event.preventDefault();\r\n                event.cancelBubble = true;\r\n\r\n                Media.onPlay(this);\r\n            }\r\n        }\r\n    }\r\n\r\n    private async displayPoster() {\r\n        if (this.renderedElement) {\r\n            const playButtonArrowWidth = 12;\r\n            const playButtonArrowHeight = 15;\r\n\r\n            const posterRootElement = document.createElement(\"div\");\r\n            posterRootElement.className = this.hostConfig.makeCssClassName(\"ac-media-poster\");\r\n            posterRootElement.setAttribute(\"role\", \"contentinfo\");\r\n            posterRootElement.setAttribute(\r\n                \"aria-label\",\r\n                this.altText ? this.altText : Strings.defaults.mediaPlayerAriaLabel()\r\n            );\r\n            posterRootElement.style.position = \"relative\";\r\n            posterRootElement.style.display = \"flex\";\r\n\r\n            let posterUrl = this.poster ? this.poster : this._mediaPlayer.posterUrl;\r\n\r\n            if (!posterUrl) {\r\n                posterUrl = this.hostConfig.media.defaultPoster;\r\n            }\r\n\r\n            if (posterUrl) {\r\n                const posterImageElement = document.createElement(\"img\");\r\n                posterImageElement.style.width = \"100%\";\r\n                posterImageElement.style.height = \"100%\";\r\n                posterImageElement.setAttribute(\"role\", \"presentation\");\r\n\r\n                posterImageElement.onerror = (_e: Event) => {\r\n                    if (posterImageElement.parentNode) {\r\n                        posterImageElement.parentNode.removeChild(posterImageElement);\r\n                    }\r\n\r\n                    posterRootElement.classList.add(\"empty\");\r\n                    posterRootElement.style.minHeight = \"150px\";\r\n                };\r\n\r\n                posterImageElement.src = posterUrl;\r\n\r\n                posterRootElement.appendChild(posterImageElement);\r\n            } else {\r\n                posterRootElement.classList.add(\"empty\");\r\n                posterRootElement.style.minHeight = \"150px\";\r\n            }\r\n\r\n            if (this.hostConfig.supportsInteractivity && this._mediaPlayer.canPlay()) {\r\n                const playButtonOuterElement = document.createElement(\"div\");\r\n                playButtonOuterElement.tabIndex = 0;\r\n                playButtonOuterElement.setAttribute(\"role\", \"button\");\r\n                playButtonOuterElement.setAttribute(\r\n                    \"aria-label\",\r\n                    Strings.defaults.mediaPlayerPlayMedia()\r\n                );\r\n                playButtonOuterElement.className =\r\n                    this.hostConfig.makeCssClassName(\"ac-media-playButton\");\r\n                playButtonOuterElement.style.display = \"flex\";\r\n                playButtonOuterElement.style.alignItems = \"center\";\r\n                playButtonOuterElement.style.justifyContent = \"center\";\r\n                playButtonOuterElement.onclick = (e) => {\r\n                    this.handlePlayButtonInvoke(e);\r\n                };\r\n\r\n                playButtonOuterElement.onkeypress = (e: KeyboardEvent) => {\r\n                    if (e.code === \"Enter\" || e.code === \"Space\") {\r\n                        // space or enter\r\n                        this.handlePlayButtonInvoke(e);\r\n                    }\r\n                };\r\n\r\n                const playButtonInnerElement = document.createElement(\"div\");\r\n                playButtonInnerElement.className = this.hostConfig.makeCssClassName(\r\n                    \"ac-media-playButton-arrow\"\r\n                );\r\n                playButtonInnerElement.style.width = playButtonArrowWidth + \"px\";\r\n                playButtonInnerElement.style.height = playButtonArrowHeight + \"px\";\r\n                playButtonInnerElement.style.borderTopWidth = playButtonArrowHeight / 2 + \"px\";\r\n                playButtonInnerElement.style.borderBottomWidth = playButtonArrowHeight / 2 + \"px\";\r\n                playButtonInnerElement.style.borderLeftWidth = playButtonArrowWidth + \"px\";\r\n                playButtonInnerElement.style.borderRightWidth = \"0\";\r\n                playButtonInnerElement.style.borderStyle = \"solid\";\r\n                playButtonInnerElement.style.borderTopColor = \"transparent\";\r\n                playButtonInnerElement.style.borderRightColor = \"transparent\";\r\n                playButtonInnerElement.style.borderBottomColor = \"transparent\";\r\n                playButtonInnerElement.style.transform =\r\n                    \"translate(\" + playButtonArrowWidth / 10 + \"px,0px)\";\r\n\r\n                playButtonOuterElement.appendChild(playButtonInnerElement);\r\n\r\n                const playButtonContainer = document.createElement(\"div\");\r\n                playButtonContainer.style.position = \"absolute\";\r\n                playButtonContainer.style.left = \"0\";\r\n                playButtonContainer.style.top = \"0\";\r\n                playButtonContainer.style.width = \"100%\";\r\n                playButtonContainer.style.height = \"100%\";\r\n                playButtonContainer.style.display = \"flex\";\r\n                playButtonContainer.style.justifyContent = \"center\";\r\n                playButtonContainer.style.alignItems = \"center\";\r\n\r\n                playButtonContainer.appendChild(playButtonOuterElement);\r\n                posterRootElement.appendChild(playButtonContainer);\r\n            }\r\n\r\n            clearElement(this.renderedElement);\r\n            this.renderedElement.appendChild(posterRootElement);\r\n        }\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        const element = <HTMLElement>document.createElement(\"div\");\r\n        element.className = this.hostConfig.makeCssClassName(\"ac-media\");\r\n\r\n        return element;\r\n    }\r\n\r\n    static onPlay?: (sender: Media) => void;\r\n\r\n    render(): HTMLElement | undefined {\r\n        let result = super.render();\r\n\r\n        if (result) {\r\n            this._mediaPlayer = this.createMediaPlayer();\r\n\r\n            this._mediaPlayer.fetchVideoDetails().then(() => this.displayPoster());\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    releaseDOMResources() {\r\n        super.releaseDOMResources();\r\n\r\n        this.displayPoster();\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Media\";\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        const result: IResourceInformation[] = [];\r\n\r\n        if (this._mediaPlayer) {\r\n            const posterUrl = this.poster ? this.poster : this.hostConfig.media.defaultPoster;\r\n\r\n            if (posterUrl) {\r\n                result.push({ url: posterUrl, mimeType: \"image\" });\r\n            }\r\n        }\r\n\r\n        for (const mediaSource of this.sources) {\r\n            if (mediaSource.isValid()) {\r\n                result.push({\r\n                    /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion -- `mediaSource.url` is of type `string | undefined`, but is validated by `isValid()` call */\r\n                    url: mediaSource.url!,\r\n                    mimeType: mediaSource.mimeType!\r\n                    /* eslint-enable @typescript-eslint/no-unnecessary-type-assertion */\r\n                });\r\n            }\r\n        }\r\n\r\n        for (const captionSource of this.captionSources) {\r\n            if (captionSource.isValid()) {\r\n                result.push({\r\n                    /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion -- `captionSource.url` is of type `string | undefined`, but is validated by `isValid()` call */\r\n                    url: captionSource.url!,\r\n                    mimeType: captionSource.mimeType!\r\n                    /* eslint-enable @typescript-eslint/no-unnecessary-type-assertion */\r\n                });\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get selectedMediaType(): string | undefined {\r\n        return this._mediaPlayer.selectedMediaType;\r\n    }\r\n}\r\n\r\nenum InputEventType {\r\n    InitialRender,\r\n    MouseEnterOnCard,\r\n    MouseLeaveOnCard,\r\n    FocusLeave\r\n}\r\n\r\nexport abstract class Input extends CardElement implements IInput {\r\n    \r\n    //#region Schema\r\n    static readonly labelProperty = new StringProperty(Versions.v1_3, \"label\", true);\r\n    static readonly isRequiredProperty = new BoolProperty(Versions.v1_3, \"isRequired\", false);\r\n    static readonly errorMessageProperty = new StringProperty(Versions.v1_3, \"errorMessage\", true);\r\n    static readonly inputStyleProperty = new EnumProperty(\r\n        Versions.v1_6,\r\n        \"inputStyle\",\r\n        Enums.InputStyle,\r\n        Enums.InputStyle.Default,\r\n        [\r\n            { value: Enums.InputStyle.RevealOnHover },\r\n            { value: Enums.InputStyle.Default }\r\n        ]\r\n    );\r\n    static readonly labelWidthProperty = new CustomProperty<SizeAndUnit | undefined>(\r\n        Versions.v1_6,\r\n        \"labelWidth\",\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            source: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            let result: SizeAndUnit | undefined = prop.defaultValue;\r\n            const value = source[prop.name];\r\n            let invalidLabelWidth = false;\r\n            \r\n            if (typeof value === \"number\" && !isNaN(value)) {\r\n                result = new SizeAndUnit(value, Enums.SizeUnit.Weight);\r\n                if (result.physicalSize < 0 || result.physicalSize > 100) {\r\n                    invalidLabelWidth = true;\r\n                }\r\n            }\r\n            else if (typeof value === \"string\") {\r\n                try {\r\n                    result = SizeAndUnit.parse(value);\r\n                } catch (e) {\r\n                    invalidLabelWidth = true;\r\n                }\r\n            } else {\r\n                invalidLabelWidth = true;\r\n            }\r\n\r\n            if (invalidLabelWidth) {\r\n                context.logParseEvent(\r\n                    sender,\r\n                    Enums.ValidationEvent.InvalidPropertyValue,\r\n                    Strings.errors.invalidInputLabelWidth()\r\n                );\r\n                result = undefined;\r\n            }\r\n\r\n            return result;\r\n        },\r\n        (\r\n            sender: SerializableObject,\r\n            property: PropertyDefinition,\r\n            target: PropertyBag,\r\n            value: SizeAndUnit | undefined,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            if (value instanceof SizeAndUnit) {\r\n                if (value.unit === Enums.SizeUnit.Pixel) {\r\n                    context.serializeValue(target, \"labelWidth\", value.physicalSize + \"px\");\r\n                } else {\r\n                    context.serializeNumber(target, \"labelWidth\", value.physicalSize);\r\n                }\r\n            }\r\n        },\r\n        undefined\r\n    );\r\n\r\n    static readonly labelPositionProperty = new EnumProperty(\r\n        Versions.v1_6,\r\n        \"labelPosition\",\r\n        Enums.InputLabelPosition,\r\n        Enums.InputLabelPosition.Above,\r\n        [\r\n            { value: Enums.InputLabelPosition.Inline },\r\n            { value: Enums.InputLabelPosition.Above }\r\n        ]\r\n    );\r\n\r\n    @property(Input.labelProperty)\r\n    label?: string;\r\n\r\n    @property(Input.isRequiredProperty)\r\n    isRequired: boolean;\r\n\r\n    @property(Input.errorMessageProperty)\r\n    errorMessage?: string;\r\n\r\n    @property(Input.inputStyleProperty)\r\n    inputStyle: Enums.InputStyle = Enums.InputStyle.Default;\r\n    \r\n    @property(Input.labelWidthProperty)\r\n    labelWidth?: SizeAndUnit;\r\n\r\n    @property(Input.labelPositionProperty)\r\n    labelPosition?: Enums.InputLabelPosition;\r\n\r\n    //#endregion\r\n\r\n    private _outerContainerElement: HTMLElement;\r\n    private _inputControlContainerElement: HTMLElement;\r\n    private _renderedErrorMessageElement?: HTMLElement;\r\n    private _renderedLabelElement?: HTMLElement;\r\n    private _renderedInputControlElement?: HTMLElement;\r\n    private _oldValue: any;\r\n\r\n    protected getAllLabelIds(): string[] {\r\n        const labelIds: string[] = [];\r\n\r\n        if (this.labelledBy) {\r\n            labelIds.push(this.labelledBy);\r\n        }\r\n\r\n        if (this._renderedLabelElement) {\r\n            labelIds.push(this._renderedLabelElement.id);\r\n        }\r\n\r\n        if (this._renderedErrorMessageElement) {\r\n            labelIds.push(this._renderedErrorMessageElement.id);\r\n        }\r\n\r\n        return labelIds;\r\n    }\r\n\r\n    protected updateInputControlAriaLabelledBy() {\r\n        if (this._renderedInputControlElement) {\r\n            const labelIds: string[] = this.getAllLabelIds();\r\n\r\n            if (labelIds.length > 0) {\r\n                this._renderedInputControlElement.setAttribute(\r\n                    \"aria-labelledby\",\r\n                    labelIds.join(\" \")\r\n                );\r\n            } else {\r\n                this._renderedInputControlElement.removeAttribute(\"aria-labelledby\");\r\n            }\r\n        }\r\n    }\r\n\r\n    protected get isNullable(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get renderedInputControlElement(): HTMLElement | undefined {\r\n        return this._renderedInputControlElement;\r\n    }\r\n\r\n    protected get inputControlContainerElement(): HTMLElement {\r\n        return this._inputControlContainerElement;\r\n    }\r\n\r\n    protected overrideInternalRender(): HTMLElement | undefined {\r\n        const hostConfig = this.hostConfig;\r\n\r\n        this._outerContainerElement = document.createElement(\"div\");\r\n        this._outerContainerElement.style.display = \"flex\";\r\n        if (this.labelPosition === Enums.InputLabelPosition.Inline) {\r\n            this._outerContainerElement.style.flexDirection = \"row\";\r\n        } else {\r\n            this._outerContainerElement.style.flexDirection = \"column\";\r\n        }\r\n\r\n        const renderedInputControlId = Utils.generateUniqueId();\r\n\r\n        if (this.label) {\r\n            const labelRichTextBlock = new RichTextBlock();\r\n            labelRichTextBlock.setParent(this);\r\n            labelRichTextBlock.forElementId = renderedInputControlId;\r\n\r\n            const labelInline = new TextRun(this.label);\r\n            labelRichTextBlock.addInline(labelInline);\r\n\r\n            if (this.isRequired) {\r\n                labelInline.init(hostConfig.inputs.label.requiredInputs);\r\n\r\n                const isRequiredCueInline = new TextRun(\r\n                    hostConfig.inputs.label.requiredInputs.suffix\r\n                );\r\n                isRequiredCueInline.color = hostConfig.inputs.label.requiredInputs.suffixColor;\r\n                isRequiredCueInline.ariaHidden = true;\r\n\r\n                labelRichTextBlock.addInline(isRequiredCueInline);\r\n            } else {\r\n                labelInline.init(hostConfig.inputs.label.optionalInputs);\r\n            }\r\n\r\n            this._renderedLabelElement = labelRichTextBlock.render();\r\n\r\n            if (this._renderedLabelElement) {\r\n                this._renderedLabelElement.id = Utils.generateUniqueId();\r\n                if (this.labelPosition === Enums.InputLabelPosition.Inline) {\r\n                    // For inline label position: label should be in center of the div and no extra spacing needed\r\n                    this._renderedLabelElement.style.alignSelf = \"center\";\r\n                } else {\r\n                    this._renderedLabelElement.style.marginBottom =\r\n                        hostConfig.getEffectiveSpacing(hostConfig.inputs.label.inputSpacing) + \"px\";\r\n                }\r\n                this._outerContainerElement.appendChild(this._renderedLabelElement);\r\n            }\r\n        }\r\n\r\n        this._inputControlContainerElement = document.createElement(\"div\");\r\n        this._inputControlContainerElement.className =\r\n            hostConfig.makeCssClassName(\"ac-input-container\");\r\n        this._inputControlContainerElement.style.display = \"flex\";\r\n\r\n        if (this.height === \"stretch\") {\r\n            this._inputControlContainerElement.style.alignItems = \"stretch\";\r\n            this._inputControlContainerElement.style.flex = \"1 1 auto\";\r\n        }\r\n\r\n        this._renderedInputControlElement = this.internalRender();\r\n\r\n        if (this._renderedInputControlElement) {\r\n            this._renderedInputControlElement.id = renderedInputControlId;\r\n            this._renderedInputControlElement.style.minWidth = \"0px\";\r\n\r\n            if (this.isNullable && this.isRequired) {\r\n                this._renderedInputControlElement.setAttribute(\"aria-required\", \"true\");\r\n                this._renderedInputControlElement.classList.add(\r\n                    hostConfig.makeCssClassName(\"ac-input-required\")\r\n                );\r\n            }\r\n\r\n            this._inputControlContainerElement.appendChild(this._renderedInputControlElement);\r\n            this._outerContainerElement.appendChild(this._inputControlContainerElement);\r\n\r\n            if (this._renderedLabelElement && this.labelPosition === Enums.InputLabelPosition.Inline) {\r\n                if (!this.labelWidth) {\r\n                    const defaultLabelWidth = hostConfig.inputs.label.width;\r\n                    this._renderedLabelElement.style.width = defaultLabelWidth.toString() + \"%\";\r\n                    this._inputControlContainerElement.style.width = (100 - defaultLabelWidth) + \"%\";\r\n                }\r\n                else if (this.labelWidth.unit == Enums.SizeUnit.Weight) {\r\n                    const labelWidthInPercent = this.labelWidth.physicalSize;\r\n                    this._renderedLabelElement.style.width = labelWidthInPercent.toString() + \"%\";\r\n                    this._inputControlContainerElement.style.width = (100 - labelWidthInPercent).toString() + \"%\";\r\n                }\r\n                else if (this.labelWidth.unit == Enums.SizeUnit.Pixel) {\r\n                    const labelWidthInPixel = this.labelWidth.physicalSize;\r\n                    this._renderedLabelElement.style.width = labelWidthInPixel.toString() + \"px\";\r\n                }\r\n            }\r\n\r\n            this.updateVisualState(InputEventType.InitialRender);\r\n            if (this._renderedInputControlElement) {\r\n                this._renderedInputControlElement.onblur = (ev: MouseEvent) => {\r\n                    this.updateVisualState(InputEventType.FocusLeave);\r\n                };\r\n            }\r\n            this.updateInputControlAriaLabelledBy();\r\n\r\n            return this._outerContainerElement;\r\n        }\r\n\r\n        this.resetDirtyState();\r\n\r\n        return undefined;\r\n    }\r\n\r\n    protected valueChanged() {\r\n        this.getRootElement().updateActionsEnabledState();\r\n\r\n        if (this.isValid()) {\r\n            this.resetValidationFailureCue();\r\n        }\r\n\r\n        if (this.onValueChanged) {\r\n            this.onValueChanged(this);\r\n        }\r\n\r\n        raiseInputValueChangedEvent(this);\r\n    }\r\n\r\n    protected resetValidationFailureCue() {\r\n        if (this.renderedInputControlElement) {\r\n            if (this instanceof ChoiceSetInput && this.isDynamicTypeahead()) {\r\n                this.removeValidationFailureCue();\r\n            } else {\r\n                this.renderedInputControlElement.classList.remove(\r\n                    this.hostConfig.makeCssClassName(\"ac-input-validation-failed\")\r\n                );\r\n            }\r\n\r\n            this.updateInputControlAriaLabelledBy();\r\n\r\n            if (this._renderedErrorMessageElement) {\r\n                this._outerContainerElement.removeChild(this._renderedErrorMessageElement);\r\n\r\n                this._renderedErrorMessageElement = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    protected showValidationErrorMessage() {\r\n        if (\r\n            this.renderedElement &&\r\n            this.errorMessage &&\r\n            GlobalSettings.displayInputValidationErrors\r\n        ) {\r\n            const errorMessageTextBlock = new TextBlock();\r\n            errorMessageTextBlock.setParent(this);\r\n            errorMessageTextBlock.text = this.errorMessage;\r\n            errorMessageTextBlock.wrap = true;\r\n            errorMessageTextBlock.init(this.hostConfig.inputs.errorMessage);\r\n\r\n            this._renderedErrorMessageElement = errorMessageTextBlock.render();\r\n\r\n            if (this._renderedErrorMessageElement) {\r\n                this._renderedErrorMessageElement.id = Utils.generateUniqueId();\r\n                this._outerContainerElement.appendChild(this._renderedErrorMessageElement);\r\n\r\n                this.updateInputControlAriaLabelledBy();\r\n            }\r\n        }\r\n    }\r\n\r\n    protected get allowRevealOnHoverStyle() {\r\n        return this.hostConfig.inputs && this.hostConfig.inputs.allowRevealOnHoverStyle;\r\n    }\r\n\r\n    protected shouldHideInputAdornersForRevealOnHover(input: HTMLElement, eventType: InputEventType) {\r\n        // show/hide input adorners (date picker, time picker, select dropdown picker) with inputStyle RevealOnHover\r\n        // 1. intial render of card: hide input adorners\r\n        // 2. mouse hover on the card: show input adorners\r\n        // 3. mouse hover outside the card: hide input adorners unless input is still in focus state\r\n        // 4. input loses focus: hide the input adorners unless mouse is still hovering on the card\r\n    \r\n        // check if input still has the focus\r\n        const isInputInFocus = input === document.activeElement;\r\n    \r\n        // check if mouse is still on the card\r\n        const inputHoverClassName = this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onhover\");\r\n        const isMouseOverCard = input.classList.contains(inputHoverClassName);\r\n    \r\n        const hideInputAdorners = (eventType === InputEventType.InitialRender) ||\r\n                                  (eventType === InputEventType.FocusLeave && !isMouseOverCard) ||\r\n                                  (eventType === InputEventType.MouseLeaveOnCard && !isInputInFocus);\r\n        return hideInputAdorners;\r\n    }\r\n\r\n    updateVisualState(eventType: InputEventType): void {\r\n        if (!this.allowRevealOnHoverStyle || \r\n            !this._renderedInputControlElement || \r\n            this.inputStyle !== Enums.InputStyle.RevealOnHover) {\r\n            return;\r\n        }\r\n        if (eventType === InputEventType.InitialRender) {\r\n            // on initial render, we will show input fields as read only view\r\n            this._renderedInputControlElement.classList.add(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onrender\"));\r\n        }\r\n        else if (eventType === InputEventType.MouseEnterOnCard) {\r\n            // on hover on the card, we will reveal the inputs by showing borders etc\r\n            // ac-inputStyle-revealOnHover-onhover class is also used to identify if mouse is hovering on the card\r\n            this._renderedInputControlElement.classList.add(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onhover\"));\r\n        } else if (eventType === InputEventType.MouseLeaveOnCard) {\r\n            this._renderedInputControlElement.classList.remove(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onhover\"));\r\n        }\r\n    }\r\n\r\n    onValueChanged: (sender: Input) => void;\r\n\r\n    labelledBy?: string;\r\n\r\n    abstract isSet(): boolean;\r\n\r\n    focus() {\r\n        if (this._renderedInputControlElement) {\r\n            this._renderedInputControlElement.focus();\r\n        }\r\n    }\r\n\r\n    isValid(): boolean {\r\n        return true;\r\n    }\r\n\r\n    isDirty(): boolean {\r\n        return this.value !== this._oldValue;\r\n    }\r\n\r\n    resetDirtyState() {\r\n        this._oldValue = this.value;\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (!this.id) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.PropertyCantBeNull,\r\n                Strings.errors.inputsMustHaveUniqueId()\r\n            );\r\n        }\r\n\r\n        if (this.isRequired) {\r\n            if (!this.label) {\r\n                context.addFailure(\r\n                    this,\r\n                    Enums.ValidationEvent.RequiredInputsShouldHaveLabel,\r\n                    \"Required inputs should have a label\"\r\n                );\r\n            }\r\n\r\n            if (!this.errorMessage) {\r\n                context.addFailure(\r\n                    this,\r\n                    Enums.ValidationEvent.RequiredInputsShouldHaveErrorMessage,\r\n                    \"Required inputs should have an error message\"\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    validateValue(): boolean {\r\n        this.resetValidationFailureCue();\r\n\r\n        const result = this.isRequired ? this.isSet() && this.isValid() : this.isValid();\r\n\r\n        if (!result && this.renderedInputControlElement) {\r\n            if (this instanceof ChoiceSetInput && this.isDynamicTypeahead()) {\r\n                this.showValidationFailureCue();\r\n            } else {\r\n                this.renderedInputControlElement.classList.add(\r\n                    this.hostConfig.makeCssClassName(\"ac-input-validation-failed\")\r\n                );\r\n            }\r\n            this.showValidationErrorMessage();\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        return [this];\r\n    }\r\n\r\n    render(): HTMLElement | undefined {\r\n        let result = super.render();\r\n\r\n        this.resetDirtyState();\r\n\r\n        return result;\r\n    }\r\n\r\n    abstract get value(): any;\r\n\r\n    get isInteractive(): boolean {\r\n        return true;\r\n    }\r\n}\r\n\r\nexport class TextInput extends Input {\r\n    //#region Schema\r\n\r\n    static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\r\n    static readonly maxLengthProperty = new NumProperty(Versions.v1_0, \"maxLength\");\r\n    static readonly isMultilineProperty = new BoolProperty(Versions.v1_0, \"isMultiline\", false);\r\n    static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\r\n    static readonly styleProperty = new EnumProperty(\r\n        Versions.v1_0,\r\n        \"style\",\r\n        Enums.InputTextStyle,\r\n        Enums.InputTextStyle.Text,\r\n        [\r\n            { value: Enums.InputTextStyle.Text },\r\n            { value: Enums.InputTextStyle.Tel },\r\n            { value: Enums.InputTextStyle.Url },\r\n            { value: Enums.InputTextStyle.Email },\r\n            { value: Enums.InputTextStyle.Password, targetVersion: Versions.v1_5 }\r\n        ]\r\n    );\r\n    static readonly inlineActionProperty = new ActionProperty(Versions.v1_0, \"inlineAction\", [\r\n        \"Action.ShowCard\"\r\n    ]);\r\n    static readonly regexProperty = new StringProperty(Versions.v1_3, \"regex\", true);\r\n\r\n    @property(TextInput.valueProperty)\r\n    defaultValue?: string;\r\n\r\n    @property(TextInput.maxLengthProperty)\r\n    maxLength?: number;\r\n\r\n    @property(TextInput.isMultilineProperty)\r\n    isMultiline: boolean = false;\r\n\r\n    @property(TextInput.placeholderProperty)\r\n    placeholder?: string;\r\n\r\n    @property(TextInput.styleProperty)\r\n    style: Enums.InputTextStyle = Enums.InputTextStyle.Text;\r\n\r\n    @property(TextInput.inlineActionProperty)\r\n    inlineAction?: Action;\r\n\r\n    @property(TextInput.regexProperty)\r\n    regex?: string;\r\n\r\n    //#endregion\r\n\r\n    private setupInput(input: HTMLInputElement | HTMLTextAreaElement) {\r\n        input.style.flex = \"1 1 auto\";\r\n\r\n        input.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        if (this.placeholder) {\r\n            input.placeholder = this.placeholder;\r\n            input.setAttribute(\"aria-label\", this.placeholder);\r\n        }\r\n\r\n        if (this.defaultValue) {\r\n            input.value = this.defaultValue;\r\n        }\r\n\r\n        if (this.maxLength && this.maxLength > 0) {\r\n            input.maxLength = this.maxLength;\r\n        }\r\n\r\n        input.oninput = () => {\r\n            this.valueChanged();\r\n        };\r\n        input.onkeypress = (e: KeyboardEvent) => {\r\n            // Ctrl+Enter pressed\r\n            if (\r\n                e.ctrlKey &&\r\n                e.code === \"Enter\" &&\r\n                this.inlineAction &&\r\n                this.inlineAction.isEffectivelyEnabled()\r\n            ) {\r\n                this.inlineAction.execute();\r\n            }\r\n        };\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        let result: HTMLInputElement | HTMLTextAreaElement;\r\n\r\n        if (this.isMultiline && this.style !== Enums.InputTextStyle.Password) {\r\n            result = document.createElement(\"textarea\");\r\n            result.className = this.hostConfig.makeCssClassName(\r\n                \"ac-input\",\r\n                \"ac-textInput\",\r\n                \"ac-multiline\"\r\n            );\r\n\r\n            if (this.height === \"stretch\") {\r\n                result.style.height = \"initial\";\r\n            }\r\n        } else {\r\n            result = document.createElement(\"input\");\r\n            result.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-textInput\");\r\n            result.type = Enums.InputTextStyle[this.style].toLowerCase();\r\n        }\r\n\r\n        this.setupInput(result);\r\n\r\n        return result;\r\n    }\r\n\r\n    protected overrideInternalRender(): HTMLElement | undefined {\r\n        const renderedInputControl = super.overrideInternalRender();\r\n\r\n        if (this.inlineAction) {\r\n            const button = document.createElement(\"button\");\r\n            button.className = this.hostConfig.makeCssClassName(\r\n                this.inlineAction.isEffectivelyEnabled()\r\n                    ? \"ac-inlineActionButton\"\r\n                    : \"ac-inlineActionButton-disabled\"\r\n            );\r\n\r\n            button.onclick = (e) => {\r\n                if (this.inlineAction && this.inlineAction.isEffectivelyEnabled()) {\r\n                    e.preventDefault();\r\n                    e.cancelBubble = true;\r\n\r\n                    this.inlineAction.execute();\r\n                }\r\n            };\r\n\r\n            if (this.inlineAction.iconUrl) {\r\n                button.classList.add(\"iconOnly\");\r\n\r\n                const icon = document.createElement(\"img\");\r\n                icon.style.height = \"100%\";\r\n                icon.setAttribute(\"role\", \"presentation\");\r\n\r\n                // The below trick is necessary as a workaround in Chrome where the icon is initially displayed\r\n                // at its native size then resized to 100% of the button's height. This cfreates an unpleasant\r\n                // flicker. On top of that, Chrome's flex implementation fails to prperly re-layout the button\r\n                // after the image has loaded and been gicven its final size. The below trick also fixes that.\r\n                icon.style.display = \"none\";\r\n                icon.onload = () => {\r\n                    icon.style.removeProperty(\"display\");\r\n                };\r\n                icon.onerror = () => {\r\n                    button.removeChild(icon);\r\n                    button.classList.remove(\"iconOnly\");\r\n                    button.classList.add(\"textOnly\");\r\n                    button.textContent =\r\n                        this.inlineAction && this.inlineAction.title\r\n                            ? this.inlineAction.title\r\n                            : Strings.defaults.inlineActionTitle();\r\n                };\r\n\r\n                icon.src = this.inlineAction.iconUrl;\r\n\r\n                button.appendChild(icon);\r\n                button.title = this.inlineAction.title\r\n                    ? this.inlineAction.title\r\n                    : Strings.defaults.inlineActionTitle();\r\n            } else {\r\n                button.classList.add(\"textOnly\");\r\n                button.textContent = this.inlineAction.title\r\n                    ? this.inlineAction.title\r\n                    : Strings.defaults.inlineActionTitle();\r\n            }\r\n\r\n            this.inlineAction.setupElementForAccessibility(button, true);\r\n\r\n            button.style.marginLeft = \"8px\";\r\n\r\n            this.inputControlContainerElement.appendChild(button);\r\n        }\r\n\r\n        return renderedInputControl;\r\n    }\r\n\r\n    updateVisualState(eventType: InputEventType): void {\r\n        if (!this.allowRevealOnHoverStyle) {\r\n            return;\r\n        }\r\n\r\n        if (!(this.inlineAction || this.isMultiline)) {\r\n            super.updateVisualState(eventType);\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Input.Text\";\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        if (this.inlineAction) {\r\n            result.push(this.inlineAction);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getActionById(id: string) {\r\n        let result = super.getActionById(id);\r\n\r\n        if (!result && this.inlineAction) {\r\n            result = this.inlineAction.getActionById(id);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    isSet(): boolean {\r\n        return this.value ? true : false;\r\n    }\r\n\r\n    isValid(): boolean {\r\n        if (!this.value) {\r\n            return true;\r\n        }\r\n\r\n        if (this.regex) {\r\n            return new RegExp(this.regex, \"g\").test(this.value);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    get value(): string | undefined {\r\n        if (this.renderedInputControlElement) {\r\n            if (this.isMultiline) {\r\n                return (<HTMLTextAreaElement>this.renderedInputControlElement).value;\r\n            } else {\r\n                return (<HTMLInputElement>this.renderedInputControlElement).value;\r\n            }\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n}\r\n\r\nexport class ToggleInput extends Input {\r\n    //#region Schema\r\n\r\n    static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\r\n    static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\r\n    static readonly valueOnProperty = new StringProperty(\r\n        Versions.v1_0,\r\n        \"valueOn\",\r\n        true,\r\n        undefined,\r\n        \"true\",\r\n        (sender: SerializableObject) => {\r\n            return \"true\";\r\n        }\r\n    );\r\n    static readonly valueOffProperty = new StringProperty(\r\n        Versions.v1_0,\r\n        \"valueOff\",\r\n        true,\r\n        undefined,\r\n        \"false\",\r\n        (sender: SerializableObject) => {\r\n            return \"false\";\r\n        }\r\n    );\r\n    static readonly wrapProperty = new BoolProperty(Versions.v1_2, \"wrap\", false);\r\n\r\n    @property(ToggleInput.valueProperty)\r\n    defaultValue?: string;\r\n\r\n    @property(ToggleInput.titleProperty)\r\n    title?: string;\r\n\r\n    @property(ToggleInput.valueOnProperty)\r\n    valueOn: string = \"true\";\r\n\r\n    @property(ToggleInput.valueOffProperty)\r\n    valueOff: string = \"false\";\r\n\r\n    @property(ToggleInput.wrapProperty)\r\n    wrap: boolean = false;\r\n\r\n    //#endregion\r\n\r\n    private _checkboxInputElement: HTMLInputElement;\r\n    private _checkboxInputLabelElement: HTMLElement | undefined;\r\n    private _oldCheckboxValue: boolean;\r\n\r\n    protected updateInputControlAriaLabelledBy() {\r\n        if (this._checkboxInputElement) {\r\n            let joinedLabelIds = this.getAllLabelIds().join(\" \");\r\n\r\n            if (this._checkboxInputLabelElement && this._checkboxInputLabelElement.id) {\r\n                joinedLabelIds += \" \" + this._checkboxInputLabelElement.id;\r\n            }\r\n\r\n            if (joinedLabelIds) {\r\n                this._checkboxInputElement.setAttribute(\"aria-labelledby\", joinedLabelIds);\r\n            } else {\r\n                this._checkboxInputElement.removeAttribute(\"aria-labelledby\");\r\n            }\r\n        }\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        const element = document.createElement(\"div\");\r\n        element.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-toggleInput\");\r\n        element.style.width = \"100%\";\r\n        element.style.display = \"flex\";\r\n        element.style.alignItems = \"center\";\r\n\r\n        this._checkboxInputElement = document.createElement(\"input\");\r\n        this._checkboxInputElement.id = Utils.generateUniqueId();\r\n        this._checkboxInputElement.type = \"checkbox\";\r\n        this._checkboxInputElement.style.display = \"inline-block\";\r\n        this._checkboxInputElement.style.verticalAlign = \"middle\";\r\n        this._checkboxInputElement.style.margin = \"0\";\r\n        this._checkboxInputElement.style.flex = \"0 0 auto\";\r\n\r\n        if (this.title) {\r\n            this._checkboxInputElement.setAttribute(\"aria-label\", this.title);\r\n        }\r\n\r\n        if (this.isRequired) {\r\n            this._checkboxInputElement.setAttribute(\"aria-required\", \"true\");\r\n        }\r\n\r\n        this._checkboxInputElement.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        if (this.defaultValue === this.valueOn) {\r\n            this._checkboxInputElement.checked = true;\r\n        }\r\n\r\n        this._oldCheckboxValue = this._checkboxInputElement.checked;\r\n\r\n        this._checkboxInputElement.onchange = () => {\r\n            this.valueChanged();\r\n        };\r\n\r\n        Utils.appendChild(element, this._checkboxInputElement);\r\n\r\n        if (this.title || this.isDesignMode()) {\r\n            const label = new TextBlock();\r\n            label.setParent(this);\r\n            label.forElementId = this._checkboxInputElement.id;\r\n            label.hostConfig = this.hostConfig;\r\n            label.text = !this.title ? this.getJsonTypeName() : this.title;\r\n            label.useMarkdown = GlobalSettings.useMarkdownInRadioButtonAndCheckbox;\r\n            label.wrap = this.wrap;\r\n\r\n            this._checkboxInputLabelElement = label.render();\r\n\r\n            if (this._checkboxInputLabelElement) {\r\n                this._checkboxInputLabelElement.id = Utils.generateUniqueId();\r\n                this._checkboxInputLabelElement.style.display = \"inline-block\";\r\n                this._checkboxInputLabelElement.style.flex = \"1 1 auto\";\r\n                this._checkboxInputLabelElement.style.marginLeft = \"6px\";\r\n                this._checkboxInputLabelElement.style.verticalAlign = \"middle\";\r\n\r\n                const spacerElement = document.createElement(\"div\");\r\n                spacerElement.style.width = \"6px\";\r\n\r\n                Utils.appendChild(element, spacerElement);\r\n                Utils.appendChild(element, this._checkboxInputLabelElement);\r\n            }\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    protected get isNullable(): boolean {\r\n        return false;\r\n    }\r\n\r\n    updateVisualState(eventType: InputEventType): void {\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Input.Toggle\";\r\n    }\r\n\r\n    focus() {\r\n        if (this._checkboxInputElement) {\r\n            this._checkboxInputElement.focus();\r\n        }\r\n    }\r\n\r\n    isSet(): boolean {\r\n        if (this.isRequired) {\r\n            return this.value === this.valueOn;\r\n        }\r\n\r\n        return this.value ? true : false;\r\n    }\r\n\r\n    isDirty(): boolean {\r\n        return this._checkboxInputElement\r\n            ? this._checkboxInputElement.checked !== this._oldCheckboxValue\r\n            : false;\r\n    }\r\n\r\n    get value(): string | undefined {\r\n        if (this._checkboxInputElement) {\r\n            return this._checkboxInputElement.checked ? this.valueOn : this.valueOff;\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n}\r\n\r\nexport class Choice extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\r\n    static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\r\n\r\n    @property(Choice.titleProperty)\r\n    title?: string;\r\n\r\n    @property(Choice.valueProperty)\r\n    value?: string;\r\n\r\n    //#endregion\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"Choice\";\r\n    }\r\n\r\n    constructor(title?: string, value?: string) {\r\n        super();\r\n\r\n        this.title = title;\r\n        this.value = value;\r\n    }\r\n}\r\n\r\n/**\r\n * DataQuery class is declared later in the file and derives from subsequent base classes\r\n * Hence, it cannot be used in ChoiceSetInput.\r\n * Refactor is needed to separate elements and actions in separate files.\r\n */\r\nexport class ChoiceSetInputDataQuery extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly typeProperty = new StringProperty(\r\n        Versions.v1_6,\r\n        \"type\",\r\n        true,\r\n        new RegExp(\"^Data.Query$\")\r\n    );\r\n    static readonly datasetProperty = new StringProperty(Versions.v1_6, \"dataset\");\r\n    static readonly countProperty = new NumProperty(Versions.v1_6, \"count\");\r\n    static readonly skipProperty = new NumProperty(Versions.v1_6, \"skip\");\r\n\r\n    @property(ChoiceSetInputDataQuery.typeProperty)\r\n    type: string;\r\n\r\n    @property(ChoiceSetInputDataQuery.datasetProperty)\r\n    dataset: string;\r\n\r\n    @property(ChoiceSetInputDataQuery.countProperty)\r\n    count?: number;\r\n\r\n    @property(ChoiceSetInputDataQuery.skipProperty)\r\n    skip?: number;\r\n\r\n    //#endregion\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"choices.data\";\r\n    }\r\n}\r\n\r\nexport type FetchedChoice = {\r\n    title: string;\r\n    value: string;\r\n};\r\n\r\nexport class ChoiceSetInput extends Input {\r\n    //#region Schema\r\n\r\n    static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\r\n    static readonly choicesProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_0,\r\n        \"choices\",\r\n        Choice\r\n    );\r\n    static readonly choicesDataProperty = new SerializableObjectProperty(\r\n        Versions.v1_6,\r\n        \"choices.data\",\r\n        ChoiceSetInputDataQuery\r\n    );\r\n    static readonly styleProperty = new ValueSetProperty(\r\n        Versions.v1_0,\r\n        \"style\",\r\n        [\r\n            { value: \"compact\" },\r\n            { value: \"expanded\" },\r\n            { value: \"filtered\", targetVersion: Versions.v1_5 }\r\n        ],\r\n        \"compact\"\r\n    );\r\n    static readonly isMultiSelectProperty = new BoolProperty(Versions.v1_0, \"isMultiSelect\", false);\r\n    static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\r\n    static readonly wrapProperty = new BoolProperty(Versions.v1_2, \"wrap\", false);\r\n\r\n    @property(ChoiceSetInput.valueProperty)\r\n    defaultValue?: string;\r\n\r\n    @property(ChoiceSetInput.styleProperty)\r\n    style?: \"compact\" | \"expanded\" | \"filtered\";\r\n\r\n    get isCompact(): boolean {\r\n        return !this.style || this.style === \"compact\";\r\n    }\r\n\r\n    set isCompact(value: boolean) {\r\n        this.style = value ? undefined : \"expanded\";\r\n    }\r\n\r\n    @property(ChoiceSetInput.isMultiSelectProperty)\r\n    isMultiSelect: boolean = false;\r\n\r\n    @property(ChoiceSetInput.placeholderProperty)\r\n    placeholder?: string;\r\n\r\n    @property(ChoiceSetInput.wrapProperty)\r\n    wrap: boolean = false;\r\n\r\n    @property(ChoiceSetInput.choicesProperty)\r\n    choices: Choice[] = [];\r\n\r\n    @property(ChoiceSetInput.choicesDataProperty)\r\n    choicesData?: ChoiceSetInputDataQuery;\r\n\r\n    //#endregion\r\n\r\n    private static _uniqueCategoryCounter = 0;\r\n\r\n    private static getUniqueCategoryName(): string {\r\n        const uniqueCategoryName = \"__ac-category\" + ChoiceSetInput._uniqueCategoryCounter;\r\n\r\n        ChoiceSetInput._uniqueCategoryCounter++;\r\n\r\n        return uniqueCategoryName;\r\n    }\r\n\r\n    private _uniqueCategoryName: string;\r\n    private _selectElement: HTMLSelectElement | undefined;\r\n    private _textInput: HTMLInputElement | undefined;\r\n    private _toggleInputs: HTMLInputElement[] | undefined;\r\n    private _labels: Array<HTMLElement | undefined>;\r\n    private _filteredChoiceSet?: FilteredChoiceSet;\r\n\r\n    isDynamicTypeahead(): boolean {\r\n        return (\r\n            this.hostConfig.inputs.allowDynamicallyFilteredChoiceSet &&\r\n            !!this.choicesData &&\r\n            !!this.choicesData.dataset &&\r\n            this.choicesData.type === \"Data.Query\"\r\n        );\r\n    }\r\n\r\n    getFilterForDynamicSearch(): string | undefined {\r\n        return this._textInput?.value;\r\n    }\r\n\r\n    getDropdownElement() {\r\n        return this._filteredChoiceSet?.dropdown;\r\n    }\r\n\r\n    renderChoices(filter: string, fetchedChoices: FetchedChoice[]) {\r\n        this._filteredChoiceSet?.processResponse(filter, fetchedChoices);\r\n    }\r\n\r\n    showLoadingIndicator() {\r\n        this._filteredChoiceSet?.showLoadingIndicator();\r\n    }\r\n\r\n    removeLoadingIndicator() {\r\n        this._filteredChoiceSet?.removeLoadingIndicator();\r\n    }\r\n\r\n    showErrorIndicator(filter: string, error: string) {\r\n        this._filteredChoiceSet?.showErrorIndicator(filter, error);\r\n    }\r\n\r\n    showValidationFailureCue() {\r\n        this._textInput?.classList.add(\r\n            this.hostConfig.makeCssClassName(\"ac-input-validation-failed\")\r\n        );\r\n    }\r\n\r\n    removeValidationFailureCue() {\r\n        this._textInput?.classList.remove(\r\n            this.hostConfig.makeCssClassName(\"ac-input-validation-failed\")\r\n        );\r\n    }\r\n\r\n    private createPlaceholderOptionWhenValueDoesNotExist(): HTMLElement | undefined {\r\n        if (!this.value) {\r\n            const placeholderOption = document.createElement(\"option\");\r\n            placeholderOption.selected = true;\r\n            placeholderOption.disabled = true;\r\n            placeholderOption.hidden = true;\r\n            placeholderOption.value = \"\";\r\n\r\n            if (this.placeholder) {\r\n                placeholderOption.text = this.placeholder;\r\n            }\r\n            return placeholderOption;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    // Make sure `aria-current` is applied to the currently-selected item\r\n    private internalApplyAriaCurrent(): void {\r\n        if (this._selectElement) {\r\n            const options = this._selectElement.options;\r\n\r\n            if (options) {\r\n                for (const option of Array.from(options)) {\r\n                    if (option.selected) {\r\n                        option.setAttribute(\"aria-current\", \"true\");\r\n                    } else {\r\n                        option.removeAttribute(\"aria-current\");\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private renderCompoundInput(\r\n        cssClassName: string,\r\n        type: \"checkbox\" | \"radio\",\r\n        defaultValues: string[] | undefined\r\n    ): HTMLElement {\r\n        const element = document.createElement(\"div\");\r\n        element.className = this.hostConfig.makeCssClassName(\"ac-input\", cssClassName);\r\n        element.style.width = \"100%\";\r\n\r\n        element.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        this._toggleInputs = [];\r\n        this._labels = [];\r\n\r\n        for (const choice of this.choices) {\r\n            const input = document.createElement(\"input\");\r\n            input.id = Utils.generateUniqueId();\r\n            input.type = type;\r\n            input.style.margin = \"0\";\r\n            input.style.display = \"inline-block\";\r\n            input.style.verticalAlign = \"middle\";\r\n            input.style.flex = \"0 0 auto\";\r\n            input.name = this.id ? this.id : this._uniqueCategoryName;\r\n\r\n            if (this.isRequired) {\r\n                input.setAttribute(\"aria-required\", \"true\");\r\n            }\r\n\r\n            input.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n            if (choice.value) {\r\n                input.value = choice.value;\r\n            }\r\n\r\n            if (choice.title) {\r\n                input.setAttribute(\"aria-label\", choice.title);\r\n            }\r\n\r\n            if (defaultValues && choice.value) {\r\n                if (defaultValues.indexOf(choice.value) >= 0) {\r\n                    input.checked = true;\r\n                }\r\n            }\r\n\r\n            input.onchange = () => {\r\n                this.valueChanged();\r\n            };\r\n\r\n            this._toggleInputs.push(input);\r\n\r\n            const compoundInput = document.createElement(\"div\");\r\n            compoundInput.style.display = \"flex\";\r\n            compoundInput.style.alignItems = \"center\";\r\n\r\n            Utils.appendChild(compoundInput, input);\r\n\r\n            const label = new TextBlock();\r\n            label.setParent(this);\r\n            label.forElementId = input.id;\r\n            label.hostConfig = this.hostConfig;\r\n            label.text = choice.title ? choice.title : \"Choice \" + this._toggleInputs.length;\r\n            label.useMarkdown = GlobalSettings.useMarkdownInRadioButtonAndCheckbox;\r\n            label.wrap = this.wrap;\r\n\r\n            const labelElement = label.render();\r\n\r\n            this._labels.push(labelElement);\r\n\r\n            if (labelElement) {\r\n                labelElement.id = Utils.generateUniqueId();\r\n                labelElement.style.display = \"inline-block\";\r\n                labelElement.style.flex = \"1 1 auto\";\r\n                labelElement.style.marginLeft = \"6px\";\r\n                labelElement.style.verticalAlign = \"middle\";\r\n\r\n                const spacerElement = document.createElement(\"div\");\r\n                spacerElement.style.width = \"6px\";\r\n\r\n                Utils.appendChild(compoundInput, spacerElement);\r\n                Utils.appendChild(compoundInput, labelElement);\r\n            }\r\n\r\n            Utils.appendChild(element, compoundInput);\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    protected updateInputControlAriaLabelledBy() {\r\n        if (\r\n            (this.isMultiSelect || this.style === \"expanded\") &&\r\n            this._toggleInputs &&\r\n            this._labels\r\n        ) {\r\n            const labelIds: string[] = this.getAllLabelIds();\r\n\r\n            for (let i = 0; i < this._toggleInputs.length; i++) {\r\n                let joinedLabelIds = labelIds.join(\" \");\r\n                const label = this._labels[i];\r\n\r\n                if (label && label.id) {\r\n                    joinedLabelIds += \" \" + label.id;\r\n                }\r\n\r\n                if (joinedLabelIds) {\r\n                    this._toggleInputs[i].setAttribute(\"aria-labelledby\", joinedLabelIds);\r\n                } else {\r\n                    this._toggleInputs[i].removeAttribute(\"aria-labelledby\");\r\n                }\r\n            }\r\n        } else {\r\n            super.updateInputControlAriaLabelledBy();\r\n        }\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._uniqueCategoryName = ChoiceSetInput.getUniqueCategoryName();\r\n        if (this.isDynamicTypeahead()) {\r\n            const filteredChoiceSet = new FilteredChoiceSet(\r\n                ChoiceSetInput._uniqueCategoryCounter,\r\n                this.choices,\r\n                this.hostConfig\r\n            );\r\n            filteredChoiceSet.render();\r\n\r\n            if (filteredChoiceSet.textInput) {\r\n                this._textInput = filteredChoiceSet.textInput;\r\n                if (this.defaultValue) {\r\n                    this._textInput.value = this.defaultValue;\r\n                }\r\n                if (this.placeholder && !this._textInput.value) {\r\n                    this._textInput.placeholder = this.placeholder;\r\n                    this._textInput.setAttribute(\"aria-label\", this.placeholder);\r\n                }\r\n                this._textInput.tabIndex = this.isDesignMode() ? -1 : 0;\r\n                const onInputChangeEventHandler = Utils.debounce(() => {\r\n                    filteredChoiceSet.processChoices();\r\n                    this.valueChanged();\r\n                    if (this._textInput) {\r\n                        // Remove aria-label when value is not empty so narration software doesn't\r\n                        // read the placeholder\r\n                        if (this.value) {\r\n                            this._textInput.removeAttribute(\"placeholder\");\r\n                            this._textInput.removeAttribute(\"aria-label\");\r\n                        } else if (this.placeholder) {\r\n                            this._textInput.placeholder = this.placeholder;\r\n                            this._textInput.setAttribute(\"aria-label\", this.placeholder);\r\n                        }\r\n                    }\r\n                }, this.hostConfig.inputs.debounceTimeInMilliSeconds);\r\n                this._textInput.onclick = onInputChangeEventHandler;\r\n                this._textInput.oninput = onInputChangeEventHandler;\r\n            }\r\n            filteredChoiceSet.parent = this;\r\n            this._filteredChoiceSet = filteredChoiceSet;\r\n            return filteredChoiceSet.renderedElement;\r\n        } else if (this.isMultiSelect) {\r\n            // Render as a list of toggle inputs\r\n            return this.renderCompoundInput(\r\n                \"ac-choiceSetInput-multiSelect\",\r\n                \"checkbox\",\r\n                this.defaultValue\r\n                    ? this.defaultValue.split(this.hostConfig.choiceSetInputValueSeparator)\r\n                    : undefined\r\n            );\r\n        } else {\r\n            if (this.style === \"expanded\") {\r\n                // Render as a series of radio buttons\r\n                return this.renderCompoundInput(\r\n                    \"ac-choiceSetInput-expanded\",\r\n                    \"radio\",\r\n                    this.defaultValue ? [this.defaultValue] : undefined\r\n                );\r\n            } else if (this.style === \"filtered\") {\r\n                // Render as a text input coupled with a datalist\r\n                const inputContainer = document.createElement(\"div\");\r\n                inputContainer.style.width = \"100%\";\r\n\r\n                this._textInput = document.createElement(\"input\");\r\n                this._textInput.className = this.hostConfig.makeCssClassName(\r\n                    \"ac-input\",\r\n                    \"ac-multichoiceInput\",\r\n                    \"ac-choiceSetInput-filtered\"\r\n                );\r\n                this._textInput.type = \"text\";\r\n                this._textInput.style.width = \"100%\";\r\n                this._textInput.oninput = () => {\r\n                    this.valueChanged();\r\n\r\n                    if (this._textInput) {\r\n                        // Remove aria-label when value is not empty so narration software doesn't\r\n                        // read the placeholder\r\n                        if (this.value) {\r\n                            this._textInput.removeAttribute(\"placeholder\");\r\n                            this._textInput.removeAttribute(\"aria-label\");\r\n                        } else if (this.placeholder) {\r\n                            this._textInput.placeholder = this.placeholder;\r\n                            this._textInput.setAttribute(\"aria-label\", this.placeholder);\r\n                        }\r\n                    }\r\n                };\r\n\r\n                if (this.defaultValue) {\r\n                    this._textInput.value = this.defaultValue;\r\n                }\r\n\r\n                if (this.placeholder && !this._textInput.value) {\r\n                    this._textInput.placeholder = this.placeholder;\r\n                    this._textInput.setAttribute(\"aria-label\", this.placeholder);\r\n                }\r\n\r\n                this._textInput.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n                const dataList = document.createElement(\"datalist\");\r\n                dataList.id = Utils.generateUniqueId();\r\n\r\n                for (const choice of this.choices) {\r\n                    const option = document.createElement(\"option\");\r\n                    // To fix https://stackoverflow.com/questions/29882361/show-datalist-labels-but-submit-the-actual-value\r\n                    // value is mapped to choice.title other than choice.value\r\n                    if (choice.title) {\r\n                        option.value = choice.title;\r\n                        option.setAttribute(\"aria-label\", choice.title);\r\n                    }\r\n\r\n                    option.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n                    dataList.appendChild(option);\r\n                }\r\n\r\n                this._textInput.setAttribute(\"list\", dataList.id);\r\n\r\n                inputContainer.append(this._textInput, dataList);\r\n\r\n                return inputContainer;\r\n            } else {\r\n                // Render as a combo box\r\n                this._selectElement = document.createElement(\"select\");\r\n                this._selectElement.className = this.hostConfig.makeCssClassName(\r\n                    \"ac-input\",\r\n                    \"ac-multichoiceInput\",\r\n                    \"ac-choiceSetInput-compact\"\r\n                );\r\n                this._selectElement.style.width = \"100%\";\r\n\r\n                this._selectElement.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n                const placeholderOption = this.createPlaceholderOptionWhenValueDoesNotExist();\r\n\r\n                Utils.appendChild(this._selectElement, placeholderOption);\r\n\r\n                for (const choice of this.choices) {\r\n                    const option = document.createElement(\"option\");\r\n                    option.value = choice.value!;\r\n\r\n                    if (choice.title) {\r\n                        option.text = choice.title;\r\n                        option.setAttribute(\"aria-label\", choice.title);\r\n                    }\r\n\r\n                    option.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n                    if (choice.value === this.defaultValue) {\r\n                        option.selected = true;\r\n                    }\r\n\r\n                    Utils.appendChild(this._selectElement, option);\r\n                }\r\n\r\n                this._selectElement.onchange = () => {\r\n                    this.internalApplyAriaCurrent();\r\n                    this.valueChanged();\r\n                };\r\n\r\n                this.internalApplyAriaCurrent();\r\n\r\n                return this._selectElement;\r\n            }\r\n        }\r\n    }\r\n\r\n    updateVisualState(eventType: InputEventType): void {\r\n        if (!this.allowRevealOnHoverStyle) {\r\n            return;\r\n        }\r\n\r\n        if (!this.isMultiSelect && this.isCompact) {\r\n            super.updateVisualState(eventType);\r\n\r\n            if (this._selectElement && this.inputStyle === Enums.InputStyle.RevealOnHover) {\r\n                const hideDropDownPicker = this.shouldHideInputAdornersForRevealOnHover(this._selectElement, eventType);\r\n                \r\n                if (hideDropDownPicker) {\r\n                    this._selectElement.style.appearance = \"none\";\r\n                    this._selectElement.classList.remove(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onfocus\"));\r\n                } else {\r\n                    this._selectElement.style.appearance = \"auto\";\r\n                    this._selectElement.classList.add(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onfocus\"));\r\n                }\t\t\t\r\n            }\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Input.ChoiceSet\";\r\n    }\r\n\r\n    focus() {\r\n        if (this._toggleInputs && (this.isMultiSelect || this.style === \"expanded\")) {\r\n            if (this._toggleInputs.length > 0) {\r\n                this._toggleInputs[0].focus();\r\n            }\r\n        } else if (this._textInput) {\r\n            this._textInput.focus();\r\n        } else {\r\n            super.focus();\r\n        }\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (this.choices.length === 0) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.CollectionCantBeEmpty,\r\n                Strings.errors.choiceSetMustHaveAtLeastOneChoice()\r\n            );\r\n        }\r\n\r\n        for (const choice of this.choices) {\r\n            if (!choice.title || !choice.value) {\r\n                context.addFailure(\r\n                    this,\r\n                    Enums.ValidationEvent.PropertyCantBeNull,\r\n                    Strings.errors.choiceSetChoicesMustHaveTitleAndValue()\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    isSet(): boolean {\r\n        return this.value ? true : false;\r\n    }\r\n\r\n    isValid(): boolean {\r\n        if (this._textInput) {\r\n            if (this.value === \"\" || this.value === this.placeholder) {\r\n                return true;\r\n            }\r\n            for (const choice of this.choices) {\r\n                if (this.value === choice.value) {\r\n                    return true;\r\n                }\r\n            }\r\n            if (this.dynamicChoices) {\r\n                for (const choice of this.dynamicChoices) {\r\n                    if (this.value === choice) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n\r\n        return super.isValid();\r\n    }\r\n\r\n    get value(): string | undefined {\r\n        if (!this.isMultiSelect) {\r\n            if (this._selectElement) {\r\n                return this._selectElement.selectedIndex > 0\r\n                    ? this._selectElement.value\r\n                    : undefined;\r\n            } else if (this._textInput) {\r\n                for (const choice of this.choices) {\r\n                    if (choice.title && this._textInput.value === choice.title) {\r\n                        return choice.value;\r\n                    }\r\n                }\r\n                return this._textInput.value;\r\n            } else if (this._toggleInputs && this._toggleInputs.length > 0) {\r\n                for (const toggleInput of this._toggleInputs) {\r\n                    if (toggleInput.checked) {\r\n                        return toggleInput.value;\r\n                    }\r\n                }\r\n            }\r\n\r\n            return undefined;\r\n        } else {\r\n            if (!this._toggleInputs || this._toggleInputs.length === 0) {\r\n                return undefined;\r\n            }\r\n\r\n            let result: string = \"\";\r\n\r\n            for (const toggleInput of this._toggleInputs) {\r\n                if (toggleInput.checked) {\r\n                    if (result !== \"\") {\r\n                        result += this.hostConfig.choiceSetInputValueSeparator;\r\n                    }\r\n\r\n                    result += toggleInput.value;\r\n                }\r\n            }\r\n\r\n            return result ? result : undefined;\r\n        }\r\n    }\r\n\r\n    get dynamicChoices() {\r\n        return this._filteredChoiceSet?.dynamicChoices;\r\n    }\r\n}\r\n\r\nexport class FilteredChoiceSet {\r\n    private _parent?: CardObject;\r\n    private _choiceSetId: number;\r\n    private _choices: Choice[];\r\n    private _dynamicChoices: FetchedChoice[];\r\n    private _visibleChoiceCount: number;\r\n    private _highlightedChoiceId: number;\r\n    private _textInput?: HTMLInputElement;\r\n    private _dropdown?: HTMLDivElement;\r\n    private _loadingIndicator?: HTMLDivElement;\r\n    private _errorIndicator?: HTMLDivElement;\r\n    private _renderedElement?: HTMLElement;\r\n    private _hostConfig?: HostConfig;\r\n\r\n    constructor(choiceSetId: number, choices: Choice[], hostConfig?: HostConfig) {\r\n        this._choiceSetId = choiceSetId;\r\n        this._choices = choices;\r\n        this._dynamicChoices = [];\r\n        this._visibleChoiceCount = 0;\r\n        this._highlightedChoiceId = -1;\r\n        this._hostConfig = hostConfig;\r\n    }\r\n\r\n    render() {\r\n        const choiceSetContainer = document.createElement(\"div\");\r\n        choiceSetContainer.className = this.hostConfig.makeCssClassName(\r\n            \"ac-input\",\r\n            \"ac-choiceSetInput-filtered-container\"\r\n        );\r\n\r\n        this._textInput = document.createElement(\"input\");\r\n        this._textInput.className = this.hostConfig.makeCssClassName(\r\n            \"ac-input\",\r\n            \"ac-choiceSetInput-filtered-textbox\"\r\n        );\r\n        this._textInput.type = \"text\";\r\n\r\n        this._textInput.onkeydown = (event) => {\r\n            if (event.key === \"ArrowDown\") {\r\n                event.preventDefault();\r\n                this.highlightChoice(this._highlightedChoiceId + 1);\r\n            } else if (event.key === \"ArrowUp\") {\r\n                event.preventDefault();\r\n                this.highlightChoice(this._highlightedChoiceId - 1);\r\n            } else if (event.key === \"Enter\") {\r\n                const choice = document.getElementById(\r\n                    `ac-choiceSetInput-${this._choiceSetId}-choice-${this._highlightedChoiceId}`\r\n                );\r\n                choice?.click();\r\n            }\r\n        };\r\n\r\n        this._dropdown = document.createElement(\"div\");\r\n        this._dropdown.className = this.hostConfig.makeCssClassName(\r\n            \"ac-input\",\r\n            \"ac-choiceSetInput-filtered-dropdown\"\r\n        );\r\n\r\n        choiceSetContainer.append(this._textInput, this._dropdown);\r\n\r\n        this._renderedElement = choiceSetContainer;\r\n    }\r\n\r\n    private createChoice(value: string, filter: string, id: number): HTMLSpanElement {\r\n        const choice = document.createElement(\"span\");\r\n        choice.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-choiceSetInput-choice\");\r\n        choice.id = `ac-choiceSetInput-${this._choiceSetId}-choice-${id}`;\r\n        choice.innerHTML = value.replace(filter, `<b>${filter}</b>`);\r\n        choice.tabIndex = -1;\r\n\r\n        choice.onclick = () => {\r\n            choice.classList.remove(\r\n                this.hostConfig.makeCssClassName(\"ac-choiceSetInput-choice-highlighted\")\r\n            );\r\n            this._highlightedChoiceId = -1;\r\n            if (this._textInput) {\r\n                this._textInput.value = choice.innerText;\r\n                this._textInput.focus();\r\n            }\r\n            if (this._dropdown) {\r\n                this._dropdown.classList.remove(\r\n                    this.hostConfig.makeCssClassName(\"ac-choiceSetInput-filtered-dropdown-open\")\r\n                );\r\n            }\r\n        };\r\n        choice.onmousemove = () => {\r\n            if (this._highlightedChoiceId !== id) {\r\n                this.highlightChoice(id, false);\r\n            }\r\n        };\r\n\r\n        return choice;\r\n    }\r\n\r\n    private highlightChoice(id: number, scrollIntoView: boolean = true) {\r\n        if (this._visibleChoiceCount > 0) {\r\n            const currentHighlightedChoice = document.getElementById(\r\n                `ac-choiceSetInput-${this._choiceSetId}-choice-${this._highlightedChoiceId}`\r\n            );\r\n            const nextHighlightedChoice = document.getElementById(\r\n                `ac-choiceSetInput-${this._choiceSetId}-choice-${id}`\r\n            );\r\n            if (nextHighlightedChoice) {\r\n                currentHighlightedChoice?.classList.remove(\r\n                    this.hostConfig.makeCssClassName(\"ac-choiceSetInput-choice-highlighted\")\r\n                );\r\n                nextHighlightedChoice.classList.add(\r\n                    this.hostConfig.makeCssClassName(\"ac-choiceSetInput-choice-highlighted\")\r\n                );\r\n                if (scrollIntoView) {\r\n                    nextHighlightedChoice.scrollIntoView();\r\n                }\r\n                this._highlightedChoiceId = id;\r\n            } else if (currentHighlightedChoice && this._highlightedChoiceId !== 0) {\r\n                this.highlightChoice(0);\r\n            } else {\r\n                this.highlightChoice(this._visibleChoiceCount - 1);\r\n            }\r\n        }\r\n    }\r\n\r\n    private filterChoices() {\r\n        const filter = this._textInput?.value.toLowerCase().trim() || \"\";\r\n        const choices = [...this._choices, ...this._dynamicChoices];\r\n        for (const choice of choices) {\r\n            if (choice.title) {\r\n                const matchIndex = choice.title.toLowerCase().indexOf(filter);\r\n                if (matchIndex !== -1) {\r\n                    const matchedText = choice.title.substring(\r\n                        matchIndex,\r\n                        matchIndex + filter.length\r\n                    );\r\n                    const choiceContainer = this.createChoice(\r\n                        choice.title,\r\n                        matchedText,\r\n                        this._visibleChoiceCount++\r\n                    );\r\n                    this._dropdown?.appendChild(choiceContainer);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private getStatusIndicator(error?: string): HTMLDivElement {\r\n        if (error) {\r\n            if (!this._errorIndicator) {\r\n                const errorIndicator = document.createElement(\"div\");\r\n                errorIndicator.className = this.hostConfig.makeCssClassName(\r\n                    \"ac-input\",\r\n                    \"ac-choiceSetInput-statusIndicator\",\r\n                    \"ac-choiceSetInput-errorIndicator\"\r\n                );\r\n                this._errorIndicator = errorIndicator;\r\n            }\r\n            this._errorIndicator.innerText = error;\r\n            return this._errorIndicator;\r\n        } else {\r\n            if (!this._loadingIndicator) {\r\n                const loadingIndicator = document.createElement(\"div\");\r\n                loadingIndicator.className = this.hostConfig.makeCssClassName(\r\n                    \"ac-input\",\r\n                    \"ac-choiceSetInput-statusIndicator\"\r\n                );\r\n                this._loadingIndicator = loadingIndicator;\r\n            }\r\n            this._loadingIndicator.innerText =\r\n                this._visibleChoiceCount === 0 ? \"Loading...\" : \"Loading more...\";\r\n            return this._loadingIndicator;\r\n        }\r\n    }\r\n\r\n    private resetDropdown() {\r\n        if (this._dropdown) {\r\n            Utils.clearElementChildren(this._dropdown);\r\n            this._visibleChoiceCount = 0;\r\n            this._highlightedChoiceId = -1;\r\n        }\r\n    }\r\n\r\n    private showDropdown() {\r\n        if (this._dropdown?.hasChildNodes()) {\r\n            this._dropdown.classList.add(\r\n                this.hostConfig.makeCssClassName(\"ac-choiceSetInput-filtered-dropdown-open\")\r\n            );\r\n        }\r\n    }\r\n\r\n    processChoices() {\r\n        this.resetDropdown();\r\n        this.filterChoices();\r\n        this.showDropdown();\r\n    }\r\n\r\n    processResponse(filter: string, fetchedChoices: FetchedChoice[]) {\r\n        if (filter === this._textInput?.value) {\r\n            this.resetDropdown();\r\n            this._dynamicChoices = fetchedChoices;\r\n            this.filterChoices();\r\n            if (this._visibleChoiceCount === 0) {\r\n                this.showErrorIndicator(filter, \"No results found\");\r\n            }\r\n        }\r\n    }\r\n\r\n    showLoadingIndicator() {\r\n        const loadingIndicator = this.getStatusIndicator();\r\n        this._dropdown?.appendChild(loadingIndicator);\r\n        this.showDropdown();\r\n    }\r\n\r\n    removeLoadingIndicator() {\r\n        if (this._loadingIndicator && this._dropdown?.contains(this._loadingIndicator)) {\r\n            this._dropdown?.removeChild(this._loadingIndicator);\r\n        }\r\n    }\r\n\r\n    showErrorIndicator(filter: string, error: string) {\r\n        if (filter === this._textInput?.value) {\r\n            this.processChoices();\r\n            const errorIndicator = this.getStatusIndicator(error);\r\n            this._dropdown?.appendChild(errorIndicator);\r\n            errorIndicator.scrollIntoView();\r\n        }\r\n    }\r\n\r\n    get dynamicChoices() {\r\n        return this._dynamicChoices?.map((choice) => choice.title);\r\n    }\r\n\r\n    get hostConfig(): HostConfig {\r\n        if (this._hostConfig) {\r\n            return this._hostConfig;\r\n        } else {\r\n            if (this.parent) {\r\n                return this.parent.hostConfig;\r\n            } else {\r\n                return defaultHostConfig;\r\n            }\r\n        }\r\n    }\r\n\r\n    set parent(value: CardObject | undefined) {\r\n        this._parent = value;\r\n    }\r\n\r\n    get parent() {\r\n        return this._parent;\r\n    }\r\n\r\n    get renderedElement() {\r\n        return this._renderedElement;\r\n    }\r\n\r\n    get textInput() {\r\n        return this._textInput;\r\n    }\r\n\r\n    get dropdown() {\r\n        return this._dropdown;\r\n    }\r\n}\r\n\r\nexport class NumberInput extends Input {\r\n    //#region Schema\r\n\r\n    static readonly valueProperty = new NumProperty(Versions.v1_0, \"value\");\r\n    static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\r\n    static readonly minProperty = new NumProperty(Versions.v1_0, \"min\");\r\n    static readonly maxProperty = new NumProperty(Versions.v1_0, \"max\");\r\n\r\n    @property(NumberInput.valueProperty)\r\n    defaultValue?: number;\r\n\r\n    @property(NumberInput.minProperty)\r\n    min?: number;\r\n\r\n    @property(NumberInput.maxProperty)\r\n    max?: number;\r\n\r\n    @property(NumberInput.placeholderProperty)\r\n    placeholder?: string;\r\n\r\n    //#endregion\r\n\r\n    private _numberInputElement: HTMLInputElement;\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._numberInputElement = document.createElement(\"input\");\r\n        this._numberInputElement.setAttribute(\"type\", \"number\");\r\n\r\n        if (this.min !== undefined) {\r\n            this._numberInputElement.setAttribute(\"min\", this.min.toString());\r\n        }\r\n\r\n        if (this.max !== undefined) {\r\n            this._numberInputElement.setAttribute(\"max\", this.max.toString());\r\n        }\r\n\r\n        this._numberInputElement.className = this.hostConfig.makeCssClassName(\r\n            \"ac-input\",\r\n            \"ac-numberInput\"\r\n        );\r\n        this._numberInputElement.style.width = \"100%\";\r\n\r\n        this._numberInputElement.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        if (this.defaultValue !== undefined) {\r\n            this._numberInputElement.valueAsNumber = this.defaultValue;\r\n        }\r\n\r\n        if (this.placeholder) {\r\n            this._numberInputElement.placeholder = this.placeholder;\r\n            this._numberInputElement.setAttribute(\"aria-label\", this.placeholder);\r\n        }\r\n\r\n        this._numberInputElement.oninput = () => {\r\n            this.valueChanged();\r\n        };\r\n\r\n        return this._numberInputElement;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Input.Number\";\r\n    }\r\n\r\n    isSet(): boolean {\r\n        return this.value !== undefined && !isNaN(this.value);\r\n    }\r\n\r\n    isValid(): boolean {\r\n        if (this.value === undefined) {\r\n            return !this.isRequired;\r\n        }\r\n\r\n        let result = true;\r\n\r\n        if (this.min !== undefined) {\r\n            result = result && this.value >= this.min;\r\n        }\r\n\r\n        if (this.max !== undefined) {\r\n            result = result && this.value <= this.max;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get value(): number | undefined {\r\n        return this._numberInputElement ? this._numberInputElement.valueAsNumber : undefined;\r\n    }\r\n\r\n    set value(value: number | undefined) {\r\n        if (value && this._numberInputElement) {\r\n            this._numberInputElement.value = value.toString();\r\n        }\r\n    }\r\n}\r\n\r\nexport class DateInput extends Input {\r\n    //#region Schema\r\n\r\n    static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\r\n    static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\r\n    static readonly minProperty = new StringProperty(Versions.v1_0, \"min\");\r\n    static readonly maxProperty = new StringProperty(Versions.v1_0, \"max\");\r\n\r\n    @property(DateInput.valueProperty)\r\n    defaultValue?: string;\r\n\r\n    @property(DateInput.minProperty)\r\n    min?: string;\r\n\r\n    @property(DateInput.maxProperty)\r\n    max?: string;\r\n\r\n    @property(DateInput.placeholderProperty)\r\n    placeholder?: string;\r\n\r\n    //#endregion\r\n\r\n    private _dateInputElement: HTMLInputElement;\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._dateInputElement = document.createElement(\"input\");\r\n        this._dateInputElement.setAttribute(\"type\", \"date\");\r\n\r\n        if (this.min) {\r\n            this._dateInputElement.setAttribute(\"min\", this.min);\r\n        }\r\n\r\n        if (this.max) {\r\n            this._dateInputElement.setAttribute(\"max\", this.max);\r\n        }\r\n\r\n        if (this.placeholder) {\r\n            this._dateInputElement.placeholder = this.placeholder;\r\n            this._dateInputElement.setAttribute(\"aria-label\", this.placeholder);\r\n        }\r\n\r\n        this._dateInputElement.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        this._dateInputElement.className = this.hostConfig.makeCssClassName(\r\n            \"ac-input\",\r\n            \"ac-dateInput\"\r\n        );\r\n        this._dateInputElement.style.width = \"100%\";\r\n\r\n        this._dateInputElement.oninput = () => {\r\n            this.valueChanged();\r\n        };\r\n\r\n        if (this.defaultValue) {\r\n            this._dateInputElement.value = this.defaultValue;\r\n        }\r\n\r\n        return this._dateInputElement;\r\n    }\r\n\r\n    updateVisualState(eventType: InputEventType): void {\r\n        if (!this.allowRevealOnHoverStyle) {\r\n            return;\r\n        }\r\n\r\n        super.updateVisualState(eventType);\r\n\r\n        if (this._dateInputElement && this.inputStyle === Enums.InputStyle.RevealOnHover) {\r\n            const hideDatePicker = this.shouldHideInputAdornersForRevealOnHover(this._dateInputElement, eventType);\r\n\r\n            if (hideDatePicker) {\r\n                this._dateInputElement.classList.remove(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onfocus\"));\r\n            } else {\r\n                this._dateInputElement.classList.add(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onfocus\"));\r\n            }\r\n\r\n            updateInputAdornersVisibility(this._dateInputElement, hideDatePicker  /*hide*/);\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Input.Date\";\r\n    }\r\n\r\n    isSet(): boolean {\r\n        return this.value ? true : false;\r\n    }\r\n\r\n    isValid(): boolean {\r\n        if (!this.value) {\r\n            return !this.isRequired;\r\n        }\r\n\r\n        const valueAsDate = new Date(this.value);\r\n\r\n        let result = true;\r\n\r\n        if (this.min) {\r\n            const minDate = new Date(this.min);\r\n\r\n            result = result && valueAsDate >= minDate;\r\n        }\r\n\r\n        if (this.max) {\r\n            const maxDate = new Date(this.max);\r\n\r\n            result = result && valueAsDate <= maxDate;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get value(): string | undefined {\r\n        return this._dateInputElement ? this._dateInputElement.value : undefined;\r\n    }\r\n}\r\n\r\nexport class TimeProperty extends CustomProperty<string | undefined> {\r\n    constructor(readonly targetVersion: Version, readonly name: string) {\r\n        super(\r\n            targetVersion,\r\n            name,\r\n            (\r\n                sender: SerializableObject,\r\n                prop: PropertyDefinition,\r\n                source: PropertyBag,\r\n                context: BaseSerializationContext\r\n            ) => {\r\n                const value = source[prop.name];\r\n\r\n                if (typeof value === \"string\" && value && /^[0-9]{2}:[0-9]{2}$/.test(value)) {\r\n                    return value;\r\n                }\r\n\r\n                return undefined;\r\n            },\r\n            (\r\n                sender: SerializableObject,\r\n                prop: PropertyDefinition,\r\n                target: PropertyBag,\r\n                value: string | undefined,\r\n                context: BaseSerializationContext\r\n            ) => {\r\n                context.serializeValue(target, prop.name, value);\r\n            }\r\n        );\r\n    }\r\n}\r\n\r\nexport class TimeInput extends Input {\r\n    private static convertTimeStringToDate(timeString: string): Date {\r\n        return new Date(\"1973-09-04T\" + timeString + \":00Z\");\r\n    }\r\n\r\n    //#region Schema\r\n\r\n    static readonly valueProperty = new TimeProperty(Versions.v1_0, \"value\");\r\n    static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\r\n    static readonly minProperty = new TimeProperty(Versions.v1_0, \"min\");\r\n    static readonly maxProperty = new TimeProperty(Versions.v1_0, \"max\");\r\n\r\n    @property(TimeInput.valueProperty)\r\n    defaultValue?: string;\r\n\r\n    @property(TimeInput.minProperty)\r\n    min?: string;\r\n\r\n    @property(TimeInput.maxProperty)\r\n    max?: string;\r\n\r\n    @property(TimeInput.placeholderProperty)\r\n    placeholder?: string;\r\n\r\n    //#endregion\r\n\r\n    private _timeInputElement: HTMLInputElement;\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._timeInputElement = document.createElement(\"input\");\r\n        this._timeInputElement.setAttribute(\"type\", \"time\");\r\n\r\n        if (this.min) {\r\n            this._timeInputElement.setAttribute(\"min\", this.min);\r\n        }\r\n\r\n        if (this.max) {\r\n            this._timeInputElement.setAttribute(\"max\", this.max);\r\n        }\r\n\r\n        this._timeInputElement.className = this.hostConfig.makeCssClassName(\r\n            \"ac-input\",\r\n            \"ac-timeInput\"\r\n        );\r\n        this._timeInputElement.style.width = \"100%\";\r\n        this._timeInputElement.oninput = () => {\r\n            this.valueChanged();\r\n        };\r\n\r\n        if (this.placeholder) {\r\n            this._timeInputElement.placeholder = this.placeholder;\r\n            this._timeInputElement.setAttribute(\"aria-label\", this.placeholder);\r\n        }\r\n\r\n        this._timeInputElement.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        if (this.defaultValue) {\r\n            this._timeInputElement.value = this.defaultValue;\r\n        }\r\n\r\n        return this._timeInputElement;\r\n    }\r\n\r\n    updateVisualState(eventType: InputEventType): void {\r\n        if (!this.allowRevealOnHoverStyle) {\r\n            return;\r\n        }\r\n        \r\n        super.updateVisualState(eventType);\r\n\r\n        if (this._timeInputElement && this.inputStyle === Enums.InputStyle.RevealOnHover) {\r\n            const hideTimePicker = this.shouldHideInputAdornersForRevealOnHover(this._timeInputElement, eventType);\r\n\r\n            if (hideTimePicker) {\r\n                this._timeInputElement.classList.remove(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onfocus\"));\r\n            } else {\r\n                this._timeInputElement.classList.add(this.hostConfig.makeCssClassName(\"ac-inputStyle-revealOnHover-onfocus\"));\r\n            }\r\n\r\n            updateInputAdornersVisibility(this._timeInputElement, hideTimePicker /*hide*/);\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Input.Time\";\r\n    }\r\n\r\n    isSet(): boolean {\r\n        return this.value ? true : false;\r\n    }\r\n\r\n    isValid(): boolean {\r\n        if (!this.value) {\r\n            return !this.isRequired;\r\n        }\r\n\r\n        const valueAsDate = TimeInput.convertTimeStringToDate(this.value);\r\n\r\n        let result = true;\r\n\r\n        if (this.min) {\r\n            const minDate = TimeInput.convertTimeStringToDate(this.min);\r\n\r\n            result = result && valueAsDate >= minDate;\r\n        }\r\n\r\n        if (this.max) {\r\n            const maxDate = TimeInput.convertTimeStringToDate(this.max);\r\n\r\n            result = result && valueAsDate <= maxDate;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get value(): string | undefined {\r\n        return this._timeInputElement ? this._timeInputElement.value : undefined;\r\n    }\r\n}\r\n\r\nexport const enum ActionButtonState {\r\n    Normal,\r\n    Expanded,\r\n    Subdued\r\n}\r\n\r\nexport type ActionType = { new (): Action };\r\n\r\nexport abstract class Action extends CardObject {\r\n    //#region Schema\r\n\r\n    static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\r\n    static readonly iconUrlProperty = new StringProperty(Versions.v1_1, \"iconUrl\");\r\n    static readonly styleProperty = new ValueSetProperty(\r\n        Versions.v1_2,\r\n        \"style\",\r\n        [\r\n            { value: Enums.ActionStyle.Default },\r\n            { value: Enums.ActionStyle.Positive },\r\n            { value: Enums.ActionStyle.Destructive }\r\n        ],\r\n        Enums.ActionStyle.Default\r\n    );\r\n    static readonly modeProperty = new ValueSetProperty(\r\n        Versions.v1_5,\r\n        \"mode\",\r\n        [{ value: Enums.ActionMode.Primary }, { value: Enums.ActionMode.Secondary }],\r\n        Enums.ActionMode.Primary\r\n    );\r\n    static readonly tooltipProperty = new StringProperty(Versions.v1_5, \"tooltip\");\r\n    static readonly isEnabledProperty = new BoolProperty(Versions.v1_5, \"isEnabled\", true);\r\n    static readonly roleProperty = new EnumProperty(Versions.v1_6, \"role\", Enums.ActionRole);\r\n\r\n    @property(Action.titleProperty)\r\n    title?: string;\r\n\r\n    @property(Action.iconUrlProperty)\r\n    iconUrl?: string;\r\n\r\n    @property(Action.styleProperty)\r\n    style: string = Enums.ActionStyle.Default;\r\n\r\n    @property(Action.modeProperty)\r\n    mode: string = Enums.ActionMode.Primary;\r\n\r\n    @property(Action.tooltipProperty)\r\n    tooltip?: string;\r\n\r\n    @property(Action.isEnabledProperty)\r\n    isEnabled: boolean;\r\n    \r\n    @property(Action.roleProperty)\r\n    role?: Enums.ActionRole;\r\n\r\n    //#endregion\r\n\r\n    private renderButtonContent() {\r\n        if (this.renderedElement) {\r\n            // Cache hostConfig for perf\r\n            const hostConfig = this.hostConfig;\r\n\r\n            const titleElement = document.createElement(\"div\");\r\n            titleElement.style.overflow = \"hidden\";\r\n            titleElement.style.textOverflow = \"ellipsis\";\r\n\r\n            if (\r\n                !(\r\n                    hostConfig.actions.iconPlacement === Enums.ActionIconPlacement.AboveTitle ||\r\n                    hostConfig.actions.allowTitleToWrap\r\n                )\r\n            ) {\r\n                titleElement.style.whiteSpace = \"nowrap\";\r\n            }\r\n\r\n            if (this.title) {\r\n                titleElement.innerText = this.title;\r\n            }\r\n\r\n            if (!this.iconUrl) {\r\n                this.renderedElement.classList.add(\"noIcon\");\r\n                this.renderedElement.appendChild(titleElement);\r\n            } else {\r\n                const iconElement = document.createElement(\"img\");\r\n                iconElement.src = this.iconUrl;\r\n                iconElement.style.width = hostConfig.actions.iconSize + \"px\";\r\n                iconElement.style.height = hostConfig.actions.iconSize + \"px\";\r\n                iconElement.style.flex = \"0 0 auto\";\r\n\r\n                if (hostConfig.actions.iconPlacement === Enums.ActionIconPlacement.AboveTitle) {\r\n                    this.renderedElement.classList.add(\"iconAbove\");\r\n                    this.renderedElement.style.flexDirection = \"column\";\r\n\r\n                    if (this.title) {\r\n                        iconElement.style.marginBottom = \"6px\";\r\n                    }\r\n                } else {\r\n                    this.renderedElement.classList.add(\"iconLeft\");\r\n\r\n                    iconElement.style.maxHeight = \"100%\";\r\n\r\n                    if (this.title) {\r\n                        iconElement.style.marginRight = \"6px\";\r\n                    }\r\n                }\r\n\r\n                this.renderedElement.appendChild(iconElement);\r\n                this.renderedElement.appendChild(titleElement);\r\n            }\r\n        }\r\n    }\r\n\r\n    private getParentContainer(): Container | undefined {\r\n        if (this.parent instanceof Container) {\r\n            return this.parent;\r\n        }\r\n\r\n        return this.parent ? this.parent.getParentContainer() : undefined;\r\n    }\r\n\r\n    private _state: ActionButtonState = ActionButtonState.Normal;\r\n    private _actionCollection?: ActionCollection; // hold the reference to its action collection\r\n    private _isFocusable: boolean = true;\r\n\r\n    isDesignMode(): boolean {\r\n        const rootElement = this.getRootObject();\r\n\r\n        return rootElement instanceof CardElement && rootElement.isDesignMode();\r\n    }\r\n\r\n    protected updateCssClasses() {\r\n        if (this.parent && this.renderedElement) {\r\n            const hostConfig = this.parent.hostConfig;\r\n\r\n            this.renderedElement.className = hostConfig.makeCssClassName(\r\n                this.isEffectivelyEnabled() ? \"ac-pushButton\" : \"ac-pushButton-disabled\"\r\n            );\r\n\r\n            const parentContainer = this.getParentContainer();\r\n\r\n            if (parentContainer) {\r\n                const parentContainerStyle = parentContainer.getEffectiveStyle();\r\n\r\n                if (parentContainerStyle) {\r\n                    this.renderedElement.classList.add(\"style-\" + parentContainerStyle);\r\n                }\r\n            }\r\n\r\n            this.renderedElement.tabIndex = !this.isDesignMode() && this.isFocusable ? 0 : -1;\r\n\r\n            switch (this._state) {\r\n                case ActionButtonState.Normal:\r\n                    // No additional classes needed\r\n                    break;\r\n\r\n                case ActionButtonState.Expanded:\r\n                    this.renderedElement.classList.add(hostConfig.makeCssClassName(\"expanded\"));\r\n                    break;\r\n                case ActionButtonState.Subdued:\r\n                    this.renderedElement.classList.add(hostConfig.makeCssClassName(\"subdued\"));\r\n                    break;\r\n            }\r\n\r\n            if (this.style && this.isEffectivelyEnabled()) {\r\n                if (this.style === Enums.ActionStyle.Positive) {\r\n                    this.renderedElement.classList.add(\r\n                        ...hostConfig.makeCssClassNames(\"primary\", \"style-positive\")\r\n                    );\r\n                } else {\r\n                    this.renderedElement.classList.add(\r\n                        ...hostConfig.makeCssClassNames(\"style-\" + this.style.toLowerCase())\r\n                    );\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    protected getDefaultSerializationContext(): BaseSerializationContext {\r\n        return new SerializationContext();\r\n    }\r\n\r\n    protected internalGetReferencedInputs(): Dictionary<Input> {\r\n        return {};\r\n    }\r\n\r\n    protected internalPrepareForExecution(_inputs: Dictionary<Input> | undefined) {\r\n        // Do nothing in base implementation\r\n    }\r\n\r\n    protected internalValidateInputs(referencedInputs: Dictionary<Input> | undefined): Input[] {\r\n        const result: Input[] = [];\r\n\r\n        if (referencedInputs) {\r\n            for (const key of Object.keys(referencedInputs)) {\r\n                const input = referencedInputs[key];\r\n\r\n                if (!input.validateValue()) {\r\n                    result.push(input);\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    protected shouldSerialize(context: SerializationContext): boolean {\r\n        return context.actionRegistry.findByName(this.getJsonTypeName()) !== undefined;\r\n    }\r\n\r\n    protected raiseExecuteActionEvent() {\r\n        if (this.onExecute) {\r\n            this.onExecute(this);\r\n        }\r\n\r\n        raiseExecuteActionEvent(this);\r\n    }\r\n\r\n    protected internalAfterExecute() {\r\n        let rootObject = this.getRootObject();\r\n\r\n        if (rootObject instanceof CardElement) {\r\n            rootObject.updateActionsEnabledState();\r\n        }\r\n    }\r\n\r\n    onExecute: (sender: Action) => void;\r\n\r\n    getHref(): string | undefined {\r\n        return \"\";\r\n    }\r\n\r\n    getAriaRole(): string {\r\n        let ariaRole = this.getAriaRoleFromEnum();\r\n        return ariaRole ?? \"button\";\r\n    }\r\n    \r\n    getAriaRoleFromEnum(): string | undefined {\r\n        switch (this.role) {\r\n            case Enums.ActionRole.Button:\r\n                return \"button\";\r\n            case Enums.ActionRole.Link:\r\n                return \"link\";\r\n            case Enums.ActionRole.Menu:\r\n                return \"menu\";\r\n            case Enums.ActionRole.MenuItem:\r\n                return \"menuitem\";\r\n            case Enums.ActionRole.Tab:\r\n                return \"tab\";\r\n            default:\r\n                return undefined;\r\n        }\r\n    }\r\n\r\n    setupElementForAccessibility(element: HTMLElement, promoteTooltipToLabel: boolean = false) {\r\n        element.tabIndex = this.isEffectivelyEnabled() && !this.isDesignMode() ? 0 : -1;\r\n\r\n        element.setAttribute(\"role\", this.getAriaRole());\r\n\r\n        if (element instanceof HTMLButtonElement) {\r\n            element.disabled = !this.isEffectivelyEnabled();\r\n        }\r\n\r\n        if (!this.isEffectivelyEnabled()) {\r\n            element.setAttribute(\"aria-disabled\", \"true\");\r\n        } else {\r\n            element.removeAttribute(\"aria-disabled\");\r\n            element.classList.add(this.hostConfig.makeCssClassName(\"ac-selectable\"));\r\n        }\r\n\r\n        if (this.title) {\r\n            element.setAttribute(\"aria-label\", this.title);\r\n            element.title = this.title;\r\n        } else {\r\n            element.removeAttribute(\"aria-label\");\r\n            element.removeAttribute(\"title\");\r\n        }\r\n\r\n        if (this.tooltip) {\t\t\t\r\n            if (promoteTooltipToLabel && !this.title) {\r\n                element.setAttribute(\"aria-label\", this.tooltip);\r\n            }\r\n            element.title = this.tooltip;\r\n        }\r\n    }\r\n\r\n    parse(source: any, context?: SerializationContext) {\r\n        return super.parse(source, context ? context : new SerializationContext());\r\n    }\r\n\r\n    render() {\r\n        const buttonElement = document.createElement(\"button\");\r\n        buttonElement.type = \"button\";\r\n        buttonElement.style.display = \"flex\";\r\n        buttonElement.style.alignItems = \"center\";\r\n        buttonElement.style.justifyContent = \"center\";\r\n        buttonElement.onclick = (e) => {\r\n            if (this.isEffectivelyEnabled()) {\r\n                e.preventDefault();\r\n                e.cancelBubble = true;\r\n\r\n                this.execute();\r\n            }\r\n        };\r\n\r\n        this._renderedElement = buttonElement;\r\n\r\n        this.renderButtonContent();\r\n        this.updateCssClasses();\r\n        this.setupElementForAccessibility(buttonElement);\r\n    }\r\n\r\n    execute() {\r\n        if (this._actionCollection) {\r\n            this._actionCollection.actionExecuted(this);\r\n        }\r\n\r\n        this.raiseExecuteActionEvent();\r\n        this.internalAfterExecute();\r\n    }\r\n\r\n    prepareForExecution(): boolean {\r\n        const referencedInputs = this.getReferencedInputs();\r\n        const invalidInputs = this.internalValidateInputs(referencedInputs);\r\n\r\n        if (invalidInputs.length > 0) {\r\n            invalidInputs[0].focus();\r\n\r\n            return false;\r\n        }\r\n\r\n        this.internalPrepareForExecution(referencedInputs);\r\n\r\n        return true;\r\n    }\r\n\r\n    remove(): boolean {\r\n        if (this._actionCollection) {\r\n            return this._actionCollection.removeAction(this);\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        return [];\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        return [this];\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        return this.iconUrl ? [{ url: this.iconUrl, mimeType: \"image\" }] : [];\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        return this.id === id ? this : undefined;\r\n    }\r\n\r\n    getReferencedInputs(): Dictionary<Input> | undefined {\r\n        return this.internalGetReferencedInputs();\r\n    }\r\n\r\n    /**\r\n     * Validates the inputs associated with this action.\r\n     *\r\n     * @returns A list of inputs that failed validation, or an empty array if no input failed validation.\r\n     */\r\n    validateInputs(): Input[] {\r\n        return this.internalValidateInputs(this.getReferencedInputs());\r\n    }\r\n\r\n    updateEnabledState() {\r\n        // Do nothing in base implementation\r\n    }\r\n\r\n    isEffectivelyEnabled(): boolean {\r\n        return this.isEnabled;\r\n    }\r\n\r\n    get isPrimary(): boolean {\r\n        return this.style === Enums.ActionStyle.Positive;\r\n    }\r\n\r\n    set isPrimary(value: boolean) {\r\n        if (value) {\r\n            this.style = Enums.ActionStyle.Positive;\r\n        } else {\r\n            if (this.style === Enums.ActionStyle.Positive) {\r\n                this.style = Enums.ActionStyle.Default;\r\n            }\r\n        }\r\n    }\r\n\r\n    get hostConfig(): HostConfig {\r\n        return this.parent ? this.parent.hostConfig : defaultHostConfig;\r\n    }\r\n\r\n    get parent(): CardElement | undefined {\r\n        return <CardElement>this._parent;\r\n    }\r\n\r\n    get state(): ActionButtonState {\r\n        return this._state;\r\n    }\r\n\r\n    set state(value: ActionButtonState) {\r\n        if (this._state !== value) {\r\n            this._state = value;\r\n\r\n            this.updateCssClasses();\r\n        }\r\n    }\r\n\r\n    get isFocusable(): boolean {\r\n        return this._isFocusable;\r\n    }\r\n\r\n    set isFocusable(value: boolean) {\r\n        if (this._isFocusable !== value) {\r\n            this._isFocusable = value;\r\n\r\n            this.updateCssClasses();\r\n        }\r\n    }\r\n}\r\n\r\nexport abstract class SubmitActionBase extends Action {\r\n    //#region Schema\r\n\r\n    static readonly dataProperty = new PropertyDefinition(Versions.v1_0, \"data\");\r\n    static readonly associatedInputsProperty = new CustomProperty(\r\n        Versions.v1_3,\r\n        \"associatedInputs\",\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            source: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            const value = source[prop.name];\r\n\r\n            if (value !== undefined && typeof value === \"string\") {\r\n                return value.toLowerCase() === \"none\" ? \"none\" : \"auto\";\r\n            }\r\n\r\n            return undefined;\r\n        },\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            target: PropertyBag,\r\n            value: string | undefined,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            context.serializeValue(target, prop.name, value);\r\n        }\r\n    );\r\n    static readonly disabledUnlessAssociatedInputsChangeProperty = new BoolProperty(\r\n        Versions.v1_6,\r\n        \"disabledUnlessAssociatedInputsChange\",\r\n        false\r\n    );\r\n\r\n    @property(SubmitActionBase.dataProperty)\r\n    private _originalData?: PropertyBag;\r\n\r\n    @property(SubmitActionBase.associatedInputsProperty)\r\n    associatedInputs?: \"auto\" | \"none\";\r\n\r\n    @property(SubmitActionBase.disabledUnlessAssociatedInputsChangeProperty)\r\n    disabledUnlessAssociatedInputsChange: boolean = false;\r\n\r\n    //#endregion\r\n\r\n    private _isPrepared: boolean = false;\r\n    private _processedData?: PropertyBag;\r\n    private _areReferencedInputsDirty: boolean = false;\r\n\r\n    protected internalGetReferencedInputs(): Dictionary<Input> {\r\n        const result: Dictionary<Input> = {};\r\n\r\n        if (this.associatedInputs !== \"none\") {\r\n            let current: CardElement | undefined = this.parent;\r\n            let inputs: Input[] = [];\r\n\r\n            while (current) {\r\n                inputs.push(...current.getAllInputs(false));\r\n\r\n                current = current.parent;\r\n            }\r\n\r\n            for (const input of inputs) {\r\n                if (input.id) {\r\n                    result[input.id] = input;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    protected internalPrepareForExecution(inputs: Dictionary<Input> | undefined) {\r\n        if (this._originalData) {\r\n            this._processedData = JSON.parse(JSON.stringify(this._originalData));\r\n        } else {\r\n            this._processedData = {};\r\n        }\r\n\r\n        if (this._processedData && inputs) {\r\n            for (const key of Object.keys(inputs)) {\r\n                const input = inputs[key];\r\n\r\n                if (input.id && input.isSet()) {\r\n                    this._processedData[input.id] =\r\n                        typeof input.value === \"string\" ? input.value : input.value.toString();\r\n                }\r\n            }\r\n        }\r\n\r\n        this._isPrepared = true;\r\n    }\r\n\r\n    protected internalAfterExecute() {\r\n        if (GlobalSettings.resetInputsDirtyStateAfterActionExecution) {\r\n            this.resetReferencedInputsDirtyState();\r\n        }\r\n    }\r\n\r\n    resetReferencedInputsDirtyState() {\r\n        let referencedInputs = this.getReferencedInputs();\r\n\r\n        this._areReferencedInputsDirty = false;\r\n\r\n        if (referencedInputs) {\r\n            for (const key of Object.keys(referencedInputs)) {\r\n                const input = referencedInputs[key];\r\n\r\n                input.resetDirtyState();\r\n            }\r\n        }\r\n    }\r\n\r\n    updateEnabledState() {\r\n        this._areReferencedInputsDirty = false;\r\n\r\n        let referencedInputs = this.getReferencedInputs();\r\n\r\n        if (referencedInputs) {\r\n            for (const key of Object.keys(referencedInputs)) {\r\n                const input = referencedInputs[key];\r\n\r\n                if (input.isDirty()) {\r\n                    this._areReferencedInputsDirty = true;\r\n\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n\r\n        this.updateCssClasses();\r\n\r\n        if (this._renderedElement) {\r\n            this.setupElementForAccessibility(this._renderedElement);\r\n        }\r\n    }\r\n\r\n    isEffectivelyEnabled(): boolean {\r\n        let result = super.isEffectivelyEnabled();\r\n\r\n        return this.disabledUnlessAssociatedInputsChange\r\n            ? result && this._areReferencedInputsDirty\r\n            : result;\r\n    }\r\n\r\n    get data(): object | undefined {\r\n        return this._isPrepared ? this._processedData : this._originalData;\r\n    }\r\n\r\n    set data(value: object | undefined) {\r\n        this._originalData = value;\r\n        this._isPrepared = false;\r\n    }\r\n}\r\n\r\nexport class SubmitAction extends SubmitActionBase {\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Action.Submit\" = \"Action.Submit\";\r\n\r\n    getJsonTypeName(): string {\r\n        return SubmitAction.JsonTypeName;\r\n    }\r\n}\r\n\r\nexport abstract class UniversalAction extends SubmitActionBase {\r\n    // This is the base class for all actions that can be executed via the\r\n    // adaptiveCards/action activity\r\n}\r\n\r\nexport class ExecuteAction extends UniversalAction {\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Action.Execute\" = \"Action.Execute\";\r\n\r\n    //#region Schema\r\n\r\n    static readonly verbProperty = new StringProperty(Versions.v1_4, \"verb\");\r\n\r\n    @property(ExecuteAction.verbProperty)\r\n    verb: string;\r\n\r\n    //#endregion\r\n\r\n    getJsonTypeName(): string {\r\n        return ExecuteAction.JsonTypeName;\r\n    }\r\n}\r\n\r\nexport class DataQuery extends UniversalAction {\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Data.Query\" = \"Data.Query\";\r\n\r\n    //#region Schema\r\n\r\n    static readonly datasetProperty = new StringProperty(Versions.v1_6, \"dataset\");\r\n    static readonly filterProperty = new StringProperty(Versions.v1_6, \"filter\");\r\n    static readonly countProperty = new NumProperty(Versions.v1_6, \"count\");\r\n    static readonly skipProperty = new NumProperty(Versions.v1_6, \"skip\");\r\n\r\n    @property(DataQuery.datasetProperty)\r\n    dataset: string;\r\n\r\n    @property(DataQuery.filterProperty)\r\n    filter: string;\r\n\r\n    @property(DataQuery.countProperty)\r\n    count?: number;\r\n\r\n    @property(DataQuery.skipProperty)\r\n    skip?: number;\r\n\r\n    //#endregion\r\n\r\n    getJsonTypeName(): string {\r\n        return DataQuery.JsonTypeName;\r\n    }\r\n\r\n    get isStandalone(): boolean {\r\n        return false;\r\n    }\r\n}\r\n\r\nexport class OpenUrlAction extends Action {\r\n    //#region Schema\r\n\r\n    static readonly urlProperty = new StringProperty(Versions.v1_0, \"url\");\r\n\r\n    @property(OpenUrlAction.urlProperty)\r\n    url?: string;\r\n\r\n    //#endregion\r\n\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Action.OpenUrl\" = \"Action.OpenUrl\";\r\n\r\n    getJsonTypeName(): string {\r\n        return OpenUrlAction.JsonTypeName;\r\n    }\r\n\r\n    getAriaRole(): string {\r\n        let ariaRole = this.getAriaRoleFromEnum();\r\n        return ariaRole ?? \"link\";\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (!this.url) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.PropertyCantBeNull,\r\n                Strings.errors.propertyMustBeSet(\"url\")\r\n            );\r\n        }\r\n    }\r\n\r\n    getHref(): string | undefined {\r\n        return this.url;\r\n    }\r\n}\r\n\r\nexport class ToggleVisibilityAction extends Action {\r\n    //#region Schema\r\n\r\n    static readonly targetElementsProperty = new CustomProperty<PropertyBag>(\r\n        Versions.v1_2,\r\n        \"targetElements\",\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            source: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            const result: PropertyBag = {};\r\n\r\n            if (Array.isArray(source[prop.name])) {\r\n                for (const item of source[prop.name]) {\r\n                    if (typeof item === \"string\") {\r\n                        result[item] = undefined;\r\n                    } else if (typeof item === \"object\") {\r\n                        const elementId = item[\"elementId\"];\r\n\r\n                        if (typeof elementId === \"string\") {\r\n                            result[elementId] = Utils.parseBool(item[\"isVisible\"]);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            return result;\r\n        },\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            target: PropertyBag,\r\n            value: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            const targetElements: any[] = [];\r\n\r\n            for (const id of Object.keys(value)) {\r\n                if (typeof value[id] === \"boolean\") {\r\n                    targetElements.push({\r\n                        elementId: id,\r\n                        isVisible: value[id]\r\n                    });\r\n                } else {\r\n                    targetElements.push(id);\r\n                }\r\n            }\r\n\r\n            context.serializeArray(target, prop.name, targetElements);\r\n        },\r\n        {},\r\n        (sender: SerializableObject) => {\r\n            return {};\r\n        }\r\n    );\r\n\r\n    @property(ToggleVisibilityAction.targetElementsProperty)\r\n    targetElements: { [key: string]: any } = {};\r\n\r\n    //#endregion\r\n\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Action.ToggleVisibility\" = \"Action.ToggleVisibility\";\r\n\r\n    private updateAriaControlsAttribute() {\r\n        // apply aria labels to make it clear which elements this action will toggle\r\n        if (this.targetElements) {\r\n            const elementIds = Object.keys(this.targetElements);\r\n\r\n            if (this._renderedElement) {\r\n                if (elementIds.length > 0) {\r\n                    this._renderedElement.setAttribute(\"aria-controls\", elementIds.join(\" \"));\r\n                } else {\r\n                    this._renderedElement.removeAttribute(\"aria-controls\");\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (!this.targetElements) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.PropertyCantBeNull,\r\n                Strings.errors.propertyMustBeSet(\"targetElements\")\r\n            );\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return ToggleVisibilityAction.JsonTypeName;\r\n    }\r\n\r\n    render() {\r\n        super.render();\r\n\r\n        this.updateAriaControlsAttribute();\r\n    }\r\n\r\n    execute() {\r\n        super.execute();\r\n        if (this.parent) {\r\n            for (const elementId of Object.keys(this.targetElements)) {\r\n                const targetElement = this.parent.getRootElement().getElementById(elementId);\r\n\r\n                if (targetElement) {\r\n                    if (typeof this.targetElements[elementId] === \"boolean\") {\r\n                        targetElement.isVisible = this.targetElements[elementId];\r\n                    } else {\r\n                        targetElement.isVisible = !targetElement.isVisible;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    addTargetElement(elementId: string, isVisible: boolean | undefined = undefined) {\r\n        this.targetElements[elementId] = isVisible;\r\n        this.updateAriaControlsAttribute();\r\n    }\r\n\r\n    removeTargetElement(elementId: string) {\r\n        delete this.targetElements[elementId];\r\n        this.updateAriaControlsAttribute();\r\n    }\r\n}\r\n\r\nclass StringWithSubstitutionProperty extends PropertyDefinition {\r\n    parse(\r\n        sender: SerializableObject,\r\n        source: PropertyBag,\r\n        context: BaseSerializationContext\r\n    ): StringWithSubstitutions {\r\n        const result = new StringWithSubstitutions();\r\n        result.set(Utils.parseString(source[this.name]));\r\n\r\n        return result;\r\n    }\r\n\r\n    toJSON(\r\n        sender: SerializableObject,\r\n        target: PropertyBag,\r\n        value: StringWithSubstitutions,\r\n        context: BaseSerializationContext\r\n    ): void {\r\n        context.serializeValue(target, this.name, value.getOriginal());\r\n    }\r\n\r\n    constructor(readonly targetVersion: Version, readonly name: string) {\r\n        super(targetVersion, name, undefined, () => {\r\n            return new StringWithSubstitutions();\r\n        });\r\n    }\r\n}\r\n\r\nexport class HttpHeader extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly nameProperty = new StringProperty(Versions.v1_0, \"name\");\r\n    static readonly valueProperty = new StringWithSubstitutionProperty(Versions.v1_0, \"value\");\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"HttpHeader\";\r\n    }\r\n\r\n    @property(HttpHeader.nameProperty)\r\n    name: string;\r\n\r\n    @property(HttpHeader.valueProperty)\r\n    private _value: StringWithSubstitutions;\r\n\r\n    //#endregion\r\n\r\n    constructor(name: string = \"\", value: string = \"\") {\r\n        super();\r\n\r\n        this.name = name;\r\n        this.value = value;\r\n    }\r\n\r\n    getReferencedInputs(inputs: Input[], referencedInputs: Dictionary<Input>) {\r\n        this._value.getReferencedInputs(inputs, referencedInputs);\r\n    }\r\n\r\n    prepareForExecution(inputs: Dictionary<Input>) {\r\n        this._value.substituteInputValues(inputs, ContentTypes.applicationXWwwFormUrlencoded);\r\n    }\r\n\r\n    get value(): string | undefined {\r\n        return this._value.get();\r\n    }\r\n\r\n    set value(newValue: string | undefined) {\r\n        this._value.set(newValue);\r\n    }\r\n}\r\n\r\nexport class HttpAction extends Action {\r\n    //#region Schema\r\n\r\n    static readonly urlProperty = new StringWithSubstitutionProperty(Versions.v1_0, \"url\");\r\n    static readonly bodyProperty = new StringWithSubstitutionProperty(Versions.v1_0, \"body\");\r\n    static readonly methodProperty = new StringProperty(Versions.v1_0, \"method\");\r\n    static readonly headersProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_0,\r\n        \"headers\",\r\n        HttpHeader\r\n    );\r\n    static readonly ignoreInputValidationProperty = new BoolProperty(\r\n        Versions.v1_3,\r\n        \"ignoreInputValidation\",\r\n        false\r\n    );\r\n\r\n    @property(HttpAction.urlProperty)\r\n    private _url: StringWithSubstitutions;\r\n\r\n    @property(HttpAction.bodyProperty)\r\n    private _body: StringWithSubstitutions;\r\n\r\n    @property(HttpAction.methodProperty)\r\n    method?: string;\r\n\r\n    @property(HttpAction.headersProperty)\r\n    headers: HttpHeader[];\r\n\r\n    @property(HttpAction.ignoreInputValidationProperty)\r\n    private _ignoreInputValidation: boolean = false;\r\n\r\n    //#endregion\r\n\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Action.Http\" = \"Action.Http\";\r\n\r\n    protected internalGetReferencedInputs(): Dictionary<Input> {\r\n        const allInputs = this.parent ? this.parent.getRootElement().getAllInputs() : [];\r\n        const result: Dictionary<Input> = {};\r\n\r\n        this._url.getReferencedInputs(allInputs, result);\r\n\r\n        for (const header of this.headers) {\r\n            header.getReferencedInputs(allInputs, result);\r\n        }\r\n\r\n        this._body.getReferencedInputs(allInputs, result);\r\n\r\n        return result;\r\n    }\r\n\r\n    protected internalPrepareForExecution(inputs: Dictionary<Input> | undefined) {\r\n        if (inputs) {\r\n            this._url.substituteInputValues(inputs, ContentTypes.applicationXWwwFormUrlencoded);\r\n\r\n            let contentType = ContentTypes.applicationJson;\r\n\r\n            for (const header of this.headers) {\r\n                header.prepareForExecution(inputs);\r\n\r\n                if (header.name && header.name.toLowerCase() === \"content-type\") {\r\n                    contentType = header.value!;\r\n                }\r\n            }\r\n\r\n            this._body.substituteInputValues(inputs, contentType);\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return HttpAction.JsonTypeName;\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (!this.url) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.PropertyCantBeNull,\r\n                Strings.errors.propertyMustBeSet(\"url\")\r\n            );\r\n        }\r\n\r\n        if (this.headers.length > 0) {\r\n            for (const header of this.headers) {\r\n                if (!header.name) {\r\n                    context.addFailure(\r\n                        this,\r\n                        Enums.ValidationEvent.PropertyCantBeNull,\r\n                        Strings.errors.actionHttpHeadersMustHaveNameAndValue()\r\n                    );\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    get ignoreInputValidation(): boolean {\r\n        return this._ignoreInputValidation;\r\n    }\r\n\r\n    set ignoreInputValidation(value: boolean) {\r\n        this._ignoreInputValidation = value;\r\n    }\r\n\r\n    get url(): string | undefined {\r\n        return this._url.get();\r\n    }\r\n\r\n    set url(value: string | undefined) {\r\n        this._url.set(value);\r\n    }\r\n\r\n    get body(): string | undefined {\r\n        return this._body.get();\r\n    }\r\n\r\n    set body(value: string | undefined) {\r\n        this._body.set(value);\r\n    }\r\n}\r\n\r\nexport class ShowCardAction extends Action {\r\n    // Note the \"weird\" way this field is declared is to work around a breaking\r\n    // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    static readonly JsonTypeName: \"Action.ShowCard\" = \"Action.ShowCard\";\r\n\r\n    protected updateCssClasses() {\r\n        super.updateCssClasses();\r\n\r\n        if (this.renderedElement) {\r\n            const effectiveHostConfig = this.parent ? this.parent.hostConfig : defaultHostConfig;\r\n\r\n            this.renderedElement.classList.add(effectiveHostConfig.makeCssClassName(\"expandable\"));\r\n            this.renderedElement.setAttribute(\r\n                \"aria-expanded\",\r\n                (this.state === ActionButtonState.Expanded).toString()\r\n            );\r\n        }\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        const jsonCard = source[\"card\"];\r\n\r\n        if (jsonCard) {\r\n            this.card.parse(jsonCard, context);\r\n        } else {\r\n            context.logParseEvent(\r\n                this,\r\n                Enums.ValidationEvent.PropertyCantBeNull,\r\n                Strings.errors.showCardMustHaveCard()\r\n            );\r\n        }\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        if (this.card) {\r\n            context.serializeValue(target, \"card\", this.card.toJSON(context));\r\n        }\r\n    }\r\n\r\n    protected raiseExecuteActionEvent() {\r\n        if (this.hostConfig.actions.showCard.actionMode === Enums.ShowCardActionMode.Popup) {\r\n            // Only raise the event in Popup mode.\r\n            super.raiseExecuteActionEvent();\r\n        }\r\n    }\r\n\r\n    readonly card: AdaptiveCard = new InlineAdaptiveCard();\r\n\r\n    releaseDOMResources() {\r\n        super.releaseDOMResources();\r\n\r\n        this.card.releaseDOMResources();\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return ShowCardAction.JsonTypeName;\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        this.card.internalValidateProperties(context);\r\n    }\r\n\r\n    setParent(value: CardElement) {\r\n        super.setParent(value);\r\n\r\n        this.card.setParent(value);\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        return this.card.getAllInputs(processActions);\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        result.push(...this.card.getAllActions());\r\n\r\n        return result;\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        let result = super.getResourceInformation();\r\n\r\n        result.push(...this.card.getResourceInformation());\r\n\r\n        return result;\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        let result = super.getActionById(id);\r\n\r\n        if (!result) {\r\n            result = this.card.getActionById(id);\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\nclass OverflowAction extends Action {\r\n    static readonly JsonTypeName: \"Action.Overflow\" = \"Action.Overflow\";\r\n    private _actions: Action[];\r\n\r\n    constructor(actions: Action[]) {\r\n        super();\r\n        this._actions = actions;\r\n\r\n        this.title = Strings.defaults.overflowButtonText();\r\n        this.tooltip = Strings.defaults.overflowButtonTooltip();\r\n    }\r\n\r\n    getActions(): readonly Action[] {\r\n        return this._actions;\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        result.push(...this._actions);\r\n\r\n        return result;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return ShowCardAction.JsonTypeName;\r\n    }\r\n\r\n    execute() {\r\n        const shouldDisplayPopupMenu = !raiseDisplayOverflowActionMenuEvent(\r\n            this,\r\n            this.renderedElement\r\n        );\r\n\r\n        if (shouldDisplayPopupMenu && this.renderedElement) {\r\n            const contextMenu = new PopupMenu();\r\n            contextMenu.hostConfig = this.hostConfig;\r\n\r\n            for (let i = 0; i < this._actions.length; i++) {\r\n                const menuItem = new MenuItem(i.toString(), this._actions[i].title ?? \"\");\r\n                menuItem.isEnabled = this._actions[i].isEnabled;\r\n                menuItem.onClick = () => {\r\n                    const actionToExecute = this._actions[i];\r\n\r\n                    contextMenu.closePopup(false);\r\n\r\n                    if (actionToExecute.isEnabled) {\r\n                        actionToExecute.execute();\r\n                    }\r\n                };\r\n\r\n                contextMenu.items.add(menuItem);\r\n            }\r\n\r\n            contextMenu.onClose = () => {\r\n                this.renderedElement?.focus();\r\n                this.renderedElement?.setAttribute(\"aria-expanded\", \"false\");\r\n            }\r\n\r\n            this.renderedElement.setAttribute(\"aria-expanded\", \"true\");\r\n            contextMenu.popup(this.renderedElement);\r\n            contextMenu.selectedIndex = 0;\r\n        }\r\n    }\r\n    \r\n    setupElementForAccessibility(element: HTMLElement, promoteTooltipToLabel: boolean = false) {\r\n        super.setupElementForAccessibility(element, promoteTooltipToLabel);\r\n\r\n        element.setAttribute(\"aria-label\", Strings.defaults.overflowButtonTooltip());\r\n        element.setAttribute(\"aria-expanded\", \"false\");\r\n    }\r\n}\r\n\r\nclass ActionCollection {\r\n    private _owner: CardElement;\r\n    private _actionCardContainer: HTMLDivElement;\r\n    private _expandedAction?: ShowCardAction;\r\n    private _actionCard?: HTMLElement;\r\n\r\n    private isActionAllowed(action: Action): boolean {\r\n        const forbiddenTypes = this._owner.getForbiddenActionTypes();\r\n\r\n        if (forbiddenTypes) {\r\n            for (const forbiddenType of forbiddenTypes) {\r\n                if (action.constructor === forbiddenType) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    private refreshContainer() {\r\n        clearElement(this._actionCardContainer);\r\n\r\n        if (!this._actionCard) {\r\n            this._actionCardContainer.style.marginTop = \"0px\";\r\n\r\n            return;\r\n        }\r\n\r\n        this._actionCardContainer.style.marginTop =\r\n            this.renderedActionCount > 0\r\n                ? this._owner.hostConfig.actions.showCard.inlineTopMargin + \"px\"\r\n                : \"0px\";\r\n\r\n        const padding = this._owner.getEffectivePadding();\r\n\r\n        this._owner.getImmediateSurroundingPadding(padding);\r\n\r\n        const physicalPadding =\r\n            this._owner.hostConfig.paddingDefinitionToSpacingDefinition(padding);\r\n\r\n        if (this._actionCard) {\r\n            this._actionCard.style.paddingLeft = physicalPadding.left + \"px\";\r\n            this._actionCard.style.paddingRight = physicalPadding.right + \"px\";\r\n\r\n            this._actionCard.style.marginLeft = \"-\" + physicalPadding.left + \"px\";\r\n            this._actionCard.style.marginRight = \"-\" + physicalPadding.right + \"px\";\r\n\r\n            if (physicalPadding.bottom !== 0 && !this._owner.isDesignMode()) {\r\n                this._actionCard.style.paddingBottom = physicalPadding.bottom + \"px\";\r\n                this._actionCard.style.marginBottom = \"-\" + physicalPadding.bottom + \"px\";\r\n            }\r\n\r\n            Utils.appendChild(this._actionCardContainer, this._actionCard);\r\n        }\r\n    }\r\n\r\n    private layoutChanged() {\r\n        this._owner.getRootElement().updateLayout();\r\n    }\r\n\r\n    private showActionCard(\r\n        action: ShowCardAction,\r\n        suppressStyle: boolean = false,\r\n        raiseEvent: boolean = true\r\n    ) {\r\n        (<InlineAdaptiveCard>action.card).suppressStyle = suppressStyle;\r\n\r\n        // Always re-render a ShowCard action in design mode; reuse already rendered ShowCard (if available) otherwise\r\n        const renderedCard =\r\n            action.card.renderedElement && !this._owner.isDesignMode()\r\n                ? action.card.renderedElement\r\n                : action.card.render();\r\n\r\n        this._actionCard = renderedCard;\r\n        this._expandedAction = action;\r\n\r\n        this.refreshContainer();\r\n\r\n        if (raiseEvent) {\r\n            this.layoutChanged();\r\n\r\n            raiseInlineCardExpandedEvent(action, true);\r\n        }\r\n    }\r\n\r\n    private collapseExpandedAction() {\r\n        for (const action of this._renderedActions) {\r\n            action.state = ActionButtonState.Normal;\r\n        }\r\n\r\n        const previouslyExpandedAction = this._expandedAction;\r\n\r\n        this._expandedAction = undefined;\r\n        this._actionCard = undefined;\r\n\r\n        this.refreshContainer();\r\n\r\n        if (previouslyExpandedAction) {\r\n            this.layoutChanged();\r\n\r\n            raiseInlineCardExpandedEvent(previouslyExpandedAction, false);\r\n        }\r\n    }\r\n\r\n    private expandShowCardAction(action: ShowCardAction, raiseEvent: boolean) {\r\n        let afterSelectedAction = false;\r\n\r\n        for (const renderedAction of this._renderedActions) {\r\n            // Remove actions after selected action from tabOrder if the actions are oriented horizontally, to skip focus directly to expanded card\r\n            if (\r\n                this._owner.hostConfig.actions.actionsOrientation == Enums.Orientation.Horizontal &&\r\n                afterSelectedAction\r\n            ) {\r\n                renderedAction.isFocusable = false;\r\n            }\r\n\r\n            if (renderedAction !== action) {\r\n                renderedAction.state = ActionButtonState.Subdued;\r\n            } else {\r\n                renderedAction.state = ActionButtonState.Expanded;\r\n\r\n                afterSelectedAction = true;\r\n\r\n                if (renderedAction.renderedElement) {\r\n                    renderedAction.renderedElement.onblur = (_e) => {\r\n                        for (const ra of this._renderedActions) {\r\n                            ra.isFocusable = true;\r\n                        }\r\n                    };\r\n                }\r\n            }\r\n        }\r\n\r\n        this.showActionCard(\r\n            action,\r\n            !(this._owner.isAtTheVeryLeft() && this._owner.isAtTheVeryRight()),\r\n            raiseEvent\r\n        );\r\n    }\r\n\r\n    private _items: Action[] = [];\r\n    private _overflowAction?: OverflowAction;\r\n    private _renderedActions: Action[] = [];\r\n\r\n    constructor(owner: CardElement) {\r\n        this._owner = owner;\r\n    }\r\n\r\n    releaseDOMResources() {\r\n        for (let action of this._renderedActions) {\r\n            action.releaseDOMResources();\r\n        }\r\n    }\r\n\r\n    actionExecuted(action: Action) {\r\n        if (!(action instanceof ShowCardAction)) {\r\n            this.collapseExpandedAction();\r\n        } else {\r\n            if (action === this._expandedAction) {\r\n                this.collapseExpandedAction();\r\n            } else if (\r\n                this._owner.hostConfig.actions.showCard.actionMode ===\r\n                Enums.ShowCardActionMode.Inline\r\n            ) {\r\n                this.expandShowCardAction(action, true);\r\n            }\r\n        }\r\n    }\r\n\r\n    parse(source: any, context: SerializationContext) {\r\n        this.clear();\r\n\r\n        if (Array.isArray(source)) {\r\n            for (const jsonAction of source) {\r\n                let forbiddenActions: string[] = [];\r\n\r\n                // If the action owner is a ContainerWithActions, we should check for forbidden actions\r\n                if (this._owner instanceof ContainerWithActions) {\r\n                    forbiddenActions = this._owner.getForbiddenActionNames();\r\n                }\r\n\r\n                const action = context.parseAction(\r\n                    this._owner,\r\n                    jsonAction,\r\n                    forbiddenActions,\r\n                    !this._owner.isDesignMode()\r\n                );\r\n\r\n                if (action) {\r\n                    this.addAction(action);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    toJSON(target: PropertyBag, propertyName: string, context: SerializationContext): any {\r\n        context.serializeArray(target, propertyName, this._items);\r\n    }\r\n\r\n    getActionAt(id: number): Action | undefined {\r\n        return this._items[id];\r\n    }\r\n\r\n    getActionCount(): number {\r\n        return this._items.length;\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        let result: Action | undefined = undefined;\r\n\r\n        for (const item of this._items) {\r\n            result = item.getActionById(id);\r\n\r\n            if (result) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    validateProperties(context: ValidationResults) {\r\n        if (\r\n            this._owner.hostConfig.actions.maxActions &&\r\n            this._items.length > this._owner.hostConfig.actions.maxActions\r\n        ) {\r\n            context.addFailure(\r\n                this._owner,\r\n                Enums.ValidationEvent.TooManyActions,\r\n                Strings.errors.tooManyActions(this._owner.hostConfig.actions.maxActions)\r\n            );\r\n        }\r\n\r\n        if (this._items.length > 0 && !this._owner.hostConfig.supportsInteractivity) {\r\n            context.addFailure(\r\n                this._owner,\r\n                Enums.ValidationEvent.InteractivityNotAllowed,\r\n                Strings.errors.interactivityNotAllowed()\r\n            );\r\n        }\r\n\r\n        for (const item of this._items) {\r\n            if (!this.isActionAllowed(item)) {\r\n                context.addFailure(\r\n                    this._owner,\r\n                    Enums.ValidationEvent.ActionTypeNotAllowed,\r\n                    Strings.errors.actionTypeNotAllowed(item.getJsonTypeName())\r\n                );\r\n            }\r\n\r\n            item.internalValidateProperties(context);\r\n        }\r\n    }\r\n\r\n    render(orientation: Enums.Orientation): HTMLElement | undefined {\r\n        // Cache hostConfig for better perf\r\n        const hostConfig = this._owner.hostConfig;\r\n\r\n        if (!hostConfig.supportsInteractivity) {\r\n            return undefined;\r\n        }\r\n\r\n        const element = document.createElement(\"div\");\r\n        const maxActions = hostConfig.actions.maxActions\r\n            ? Math.min(hostConfig.actions.maxActions, this._items.length)\r\n            : this._items.length;\r\n\r\n        this._actionCardContainer = document.createElement(\"div\");\r\n        this._renderedActions = [];\r\n\r\n        if (\r\n            hostConfig.actions.preExpandSingleShowCardAction &&\r\n            maxActions === 1 &&\r\n            this._items[0] instanceof ShowCardAction &&\r\n            this.isActionAllowed(this._items[0])\r\n        ) {\r\n            this.showActionCard(this._items[0], true);\r\n            this._renderedActions.push(this._items[0]);\r\n        } else {\r\n            const buttonStrip = document.createElement(\"div\");\r\n            buttonStrip.className = hostConfig.makeCssClassName(\"ac-actionSet\");\r\n            buttonStrip.style.display = \"flex\";\r\n\r\n            if (orientation === Enums.Orientation.Horizontal) {\r\n                buttonStrip.style.flexDirection = \"row\";\r\n\r\n                if (\r\n                    this._owner.horizontalAlignment &&\r\n                    hostConfig.actions.actionAlignment !== Enums.ActionAlignment.Stretch\r\n                ) {\r\n                    switch (this._owner.horizontalAlignment) {\r\n                        case Enums.HorizontalAlignment.Center:\r\n                            buttonStrip.style.justifyContent = \"center\";\r\n                            break;\r\n                        case Enums.HorizontalAlignment.Right:\r\n                            buttonStrip.style.justifyContent = \"flex-end\";\r\n                            break;\r\n                        default:\r\n                            buttonStrip.style.justifyContent = \"flex-start\";\r\n                            break;\r\n                    }\r\n                } else {\r\n                    switch (hostConfig.actions.actionAlignment) {\r\n                        case Enums.ActionAlignment.Center:\r\n                            buttonStrip.style.justifyContent = \"center\";\r\n                            break;\r\n                        case Enums.ActionAlignment.Right:\r\n                            buttonStrip.style.justifyContent = \"flex-end\";\r\n                            break;\r\n                        default:\r\n                            buttonStrip.style.justifyContent = \"flex-start\";\r\n                            break;\r\n                    }\r\n                }\r\n            } else {\r\n                buttonStrip.style.flexDirection = \"column\";\r\n\r\n                if (\r\n                    this._owner.horizontalAlignment &&\r\n                    hostConfig.actions.actionAlignment !== Enums.ActionAlignment.Stretch\r\n                ) {\r\n                    switch (this._owner.horizontalAlignment) {\r\n                        case Enums.HorizontalAlignment.Center:\r\n                            buttonStrip.style.alignItems = \"center\";\r\n                            break;\r\n                        case Enums.HorizontalAlignment.Right:\r\n                            buttonStrip.style.alignItems = \"flex-end\";\r\n                            break;\r\n                        default:\r\n                            buttonStrip.style.alignItems = \"flex-start\";\r\n                            break;\r\n                    }\r\n                } else {\r\n                    switch (hostConfig.actions.actionAlignment) {\r\n                        case Enums.ActionAlignment.Center:\r\n                            buttonStrip.style.alignItems = \"center\";\r\n                            break;\r\n                        case Enums.ActionAlignment.Right:\r\n                            buttonStrip.style.alignItems = \"flex-end\";\r\n                            break;\r\n                        case Enums.ActionAlignment.Stretch:\r\n                            buttonStrip.style.alignItems = \"stretch\";\r\n                            break;\r\n                        default:\r\n                            buttonStrip.style.alignItems = \"flex-start\";\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            const allowedActions = this._items.filter(this.isActionAllowed.bind(this));\r\n\r\n            let primaryActions: Action[] = [];\r\n            const secondaryActions: Action[] = [];\r\n\r\n            if (!this._owner.isDesignMode()) {\r\n                allowedActions.forEach((action) =>\r\n                    action.mode === Enums.ActionMode.Secondary\r\n                        ? secondaryActions.push(action)\r\n                        : primaryActions.push(action)\r\n                );\r\n\r\n                // If primaryActions.length > maxActions, extra actions are moved to overflow\r\n                const overflowPrimaryActions = primaryActions.splice(hostConfig.actions.maxActions);\r\n\r\n                if (GlobalSettings.allowMoreThanMaxActionsInOverflowMenu) {\r\n                    secondaryActions.push(...overflowPrimaryActions);\r\n                }\r\n\r\n                let shouldRenderOverflowActionButton = true;\r\n\r\n                if (secondaryActions.length > 0) {\r\n                    if (!this._overflowAction) {\r\n                        this._overflowAction = new OverflowAction(secondaryActions);\r\n                        this._overflowAction.setParent(this._owner);\r\n                        this._overflowAction[\"_actionCollection\"] = this;\r\n                    }\r\n\r\n                    const isRootAction = this._owner instanceof AdaptiveCard && !this._owner.parent;\r\n                    shouldRenderOverflowActionButton = !raiseRenderOverflowActionsEvent(\r\n                        this._overflowAction,\r\n                        isRootAction\r\n                    );\r\n                }\r\n\r\n                if (this._overflowAction && shouldRenderOverflowActionButton) {\r\n                    primaryActions.push(this._overflowAction);\r\n                }\r\n            } else {\r\n                primaryActions = allowedActions;\r\n            }\r\n\r\n            for (let i = 0; i < primaryActions.length; i++) {\r\n                const action = primaryActions[i];\r\n                action.render();\r\n\r\n                if (action.renderedElement) {\r\n                    if (\r\n                        hostConfig.actions.actionsOrientation === Enums.Orientation.Horizontal &&\r\n                        hostConfig.actions.actionAlignment === Enums.ActionAlignment.Stretch\r\n                    ) {\r\n                        action.renderedElement.style.flex = \"0 1 100%\";\r\n                    } else {\r\n                        action.renderedElement.style.flex = \"0 1 auto\";\r\n                    }\r\n\r\n                    buttonStrip.appendChild(action.renderedElement);\r\n\r\n                    this._renderedActions.push(action);\r\n\r\n                    if (i < primaryActions.length - 1 && hostConfig.actions.buttonSpacing > 0) {\r\n                        const spacer = document.createElement(\"div\");\r\n\r\n                        if (orientation === Enums.Orientation.Horizontal) {\r\n                            spacer.style.flex = \"0 0 auto\";\r\n                            spacer.style.width = hostConfig.actions.buttonSpacing + \"px\";\r\n                        } else {\r\n                            spacer.style.height = hostConfig.actions.buttonSpacing + \"px\";\r\n                        }\r\n\r\n                        Utils.appendChild(buttonStrip, spacer);\r\n                    }\r\n                }\r\n            }\r\n\r\n            const buttonStripContainer = document.createElement(\"div\");\r\n            buttonStripContainer.style.overflow = \"hidden\";\r\n            buttonStripContainer.appendChild(buttonStrip);\r\n\r\n            Utils.appendChild(element, buttonStripContainer);\r\n        }\r\n\r\n        Utils.appendChild(element, this._actionCardContainer);\r\n\r\n        for (const renderedAction of this._renderedActions) {\r\n            if (renderedAction.state === ActionButtonState.Expanded) {\r\n                this.expandShowCardAction(<ShowCardAction>renderedAction, false);\r\n\r\n                break;\r\n            }\r\n        }\r\n\r\n        return this._renderedActions.length > 0 ? element : undefined;\r\n    }\r\n\r\n    addAction(action: Action) {\r\n        if (!action) {\r\n            throw new Error(\"The action parameter cannot be null.\");\r\n        }\r\n\r\n        if ((!action.parent || action.parent === this._owner) && this._items.indexOf(action) < 0) {\r\n            this._items.push(action);\r\n\r\n            if (!action.parent) {\r\n                action.setParent(this._owner);\r\n            }\r\n\r\n            action[\"_actionCollection\"] = this;\r\n        } else {\r\n            throw new Error(Strings.errors.actionAlreadyParented());\r\n        }\r\n    }\r\n\r\n    removeAction(action: Action): boolean {\r\n        if (this.expandedAction && this._expandedAction === action) {\r\n            this.collapseExpandedAction();\r\n        }\r\n\r\n        const actionIndex = this._items.indexOf(action);\r\n\r\n        if (actionIndex >= 0) {\r\n            this._items.splice(actionIndex, 1);\r\n\r\n            action.setParent(undefined);\r\n\r\n            action[\"_actionCollection\"] = undefined;\r\n\r\n            for (let i = 0; i < this._renderedActions.length; i++) {\r\n                if (this._renderedActions[i] === action) {\r\n                    this._renderedActions.splice(i, 1);\r\n\r\n                    break;\r\n                }\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    clear() {\r\n        this._items = [];\r\n        this._renderedActions = [];\r\n        this._expandedAction = undefined;\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        let result: Input[] = [];\r\n\r\n        if (processActions) {\r\n            for (const action of this._items) {\r\n                result.push(...action.getAllInputs());\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        let result: IResourceInformation[] = [];\r\n\r\n        for (const action of this._items) {\r\n            result.push(...action.getResourceInformation());\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get renderedActionCount(): number {\r\n        return this._renderedActions.length;\r\n    }\r\n\r\n    get expandedAction(): ShowCardAction | undefined {\r\n        return this._expandedAction;\r\n    }\r\n}\r\n\r\nexport class ActionSet extends CardElement {\r\n    //#region Schema\r\n\r\n    static readonly orientationProperty = new EnumProperty(\r\n        Versions.v1_1,\r\n        \"orientation\",\r\n        Enums.Orientation\r\n    );\r\n\r\n    @property(ActionSet.orientationProperty)\r\n    orientation?: Enums.Orientation;\r\n\r\n    //#endregion\r\n\r\n    private _actionCollection: ActionCollection;\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this._actionCollection.parse(source[\"actions\"], context);\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        this._actionCollection.toJSON(target, \"actions\", context);\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        return this._actionCollection.render(\r\n            this.orientation !== undefined\r\n                ? this.orientation\r\n                : this.hostConfig.actions.actionsOrientation\r\n        );\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n\r\n        this._actionCollection = new ActionCollection(this);\r\n    }\r\n\r\n    releaseDOMResources() {\r\n        super.releaseDOMResources();\r\n\r\n        this._actionCollection.releaseDOMResources();\r\n    }\r\n\r\n    isBleedingAtBottom(): boolean {\r\n        if (this._actionCollection.renderedActionCount === 0) {\r\n            return super.isBleedingAtBottom();\r\n        } else {\r\n            if (this._actionCollection.getActionCount() === 1) {\r\n                return (\r\n                    this._actionCollection.expandedAction !== undefined &&\r\n                    !this.hostConfig.actions.preExpandSingleShowCardAction\r\n                );\r\n            } else {\r\n                return this._actionCollection.expandedAction !== undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"ActionSet\";\r\n    }\r\n\r\n    getActionCount(): number {\r\n        return this._actionCollection.getActionCount();\r\n    }\r\n\r\n    getActionAt(index: number): Action | undefined {\r\n        if (index >= 0 && index < this.getActionCount()) {\r\n            return this._actionCollection.getActionAt(index);\r\n        } else {\r\n            return super.getActionAt(index);\r\n        }\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        const result: Action | undefined = this._actionCollection.getActionById(id);\r\n\r\n        return result ? result : super.getActionById(id);\r\n    }\r\n\r\n    getAllActions(): Action[] {\r\n        const result = super.getAllActions();\r\n\r\n        for (let i = 0; i < this.getActionCount(); i++) {\r\n            let action = this.getActionAt(i);\r\n\r\n            if (action) {\r\n                result.push(action);\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        this._actionCollection.validateProperties(context);\r\n    }\r\n\r\n    addAction(action: Action) {\r\n        this._actionCollection.addAction(action);\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        return processActions ? this._actionCollection.getAllInputs() : [];\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        return this._actionCollection.getResourceInformation();\r\n    }\r\n\r\n    /**\r\n     * @inheritdoc\r\n     */\r\n    findDOMNodeOwner(node: Node): CardObject | undefined {\r\n        let target: CardObject | undefined = undefined;\r\n\r\n        for (let i = 0; i < this.getActionCount(); i++) {\r\n            const action = this.getActionAt(i);\r\n\r\n            if (action) {\r\n                // recur through each Action\r\n                target = action.findDOMNodeOwner(node);\r\n\r\n                if (target) {\r\n                    return target;\r\n                }\r\n            }\r\n        }\r\n\r\n        // if not found in any Action, defer to parent implementation\r\n        return super.findDOMNodeOwner(node);\r\n    }\r\n\r\n    getElementById(id: string): CardElement | undefined {\r\n        let result = super.getElementById(id);\r\n\r\n        if (!result) {\r\n            result = this.getElementByIdFromAction(id);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get isInteractive(): boolean {\r\n        return true;\r\n    }\r\n}\r\n\r\nexport class ContainerStyleProperty extends ValueSetProperty {\r\n    constructor(\r\n        readonly targetVersion: Version,\r\n        readonly name: string,\r\n        readonly defaultValue?: string,\r\n        readonly onGetInitialValue?: (sender: SerializableObject) => string\r\n    ) {\r\n        super(\r\n            targetVersion,\r\n            name,\r\n            [\r\n                { value: Enums.ContainerStyle.Default },\r\n                { value: Enums.ContainerStyle.Emphasis },\r\n                { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Accent },\r\n                { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Good },\r\n                { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Attention },\r\n                { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Warning }\r\n            ],\r\n            defaultValue,\r\n            onGetInitialValue\r\n        );\r\n    }\r\n}\r\n\r\nexport abstract class StylableCardElementContainer extends CardElementContainer {\r\n    //#region Schema\r\n\r\n    static readonly styleProperty = new ContainerStyleProperty(Versions.v1_0, \"style\");\r\n\r\n    @property(StylableCardElementContainer.styleProperty)\r\n    get style(): string | undefined {\r\n        if (this.allowCustomStyle) {\r\n            const style = this.getValue(StylableCardElementContainer.styleProperty);\r\n\r\n            if (style && this.hostConfig.containerStyles.getStyleByName(style)) {\r\n                return style;\r\n            }\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n\r\n    set style(value: string | undefined) {\r\n        this.setValue(StylableCardElementContainer.styleProperty, value);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    protected get allowCustomStyle(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get hasExplicitStyle(): boolean {\r\n        return this.getValue(StylableCardElementContainer.styleProperty) !== undefined;\r\n    }\r\n\r\n    protected applyBorder() {\r\n        // No border in base implementation\r\n    }\r\n\r\n    protected applyBackground() {\r\n        if (this.renderedElement) {\r\n            const styleDefinition = this.hostConfig.containerStyles.getStyleByName(\r\n                this.style,\r\n                this.hostConfig.containerStyles.getStyleByName(this.defaultStyle)\r\n            );\r\n\r\n            if (styleDefinition.backgroundColor) {\r\n                const bgColor = Utils.stringToCssColor(styleDefinition.backgroundColor);\r\n                if (bgColor) {\r\n                    this.renderedElement.style.backgroundColor = bgColor;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    protected applyPadding() {\r\n        super.applyPadding();\r\n\r\n        if (!this.renderedElement) {\r\n            return;\r\n        }\r\n\r\n        let physicalPadding = new SpacingDefinition();\r\n\r\n        if (this.getEffectivePadding()) {\r\n            physicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(\r\n                this.getEffectivePadding()\r\n            );\r\n        }\r\n\r\n        this.renderedElement.style.paddingTop = physicalPadding.top + \"px\";\r\n        this.renderedElement.style.paddingRight = physicalPadding.right + \"px\";\r\n        this.renderedElement.style.paddingBottom = physicalPadding.bottom + \"px\";\r\n        this.renderedElement.style.paddingLeft = physicalPadding.left + \"px\";\r\n\r\n        if (this.isBleeding()) {\r\n            // Bleed into the first parent that does have padding\r\n            const padding = new PaddingDefinition();\r\n\r\n            this.getImmediateSurroundingPadding(padding);\r\n\r\n            const surroundingPadding =\r\n                this.hostConfig.paddingDefinitionToSpacingDefinition(padding);\r\n\r\n            this.renderedElement.style.marginRight = \"-\" + surroundingPadding.right + \"px\";\r\n            this.renderedElement.style.marginLeft = \"-\" + surroundingPadding.left + \"px\";\r\n\r\n            if (!this.isDesignMode()) {\r\n                this.renderedElement.style.marginTop = \"-\" + surroundingPadding.top + \"px\";\r\n                this.renderedElement.style.marginBottom = \"-\" + surroundingPadding.bottom + \"px\";\r\n            }\r\n\r\n            if (\r\n                this.separatorElement &&\r\n                this.separatorOrientation === Enums.Orientation.Horizontal\r\n            ) {\r\n                this.separatorElement.style.marginLeft = \"-\" + surroundingPadding.left + \"px\";\r\n                this.separatorElement.style.marginRight = \"-\" + surroundingPadding.right + \"px\";\r\n            }\r\n        } else {\r\n            this.renderedElement.style.marginRight = \"0\";\r\n            this.renderedElement.style.marginLeft = \"0\";\r\n            this.renderedElement.style.marginTop = \"0\";\r\n            this.renderedElement.style.marginBottom = \"0\";\r\n\r\n            if (\r\n                this.separatorElement &&\r\n                this.separatorOrientation === Enums.Orientation.Horizontal\r\n            ) {\r\n                this.separatorElement.style.marginRight = \"0\";\r\n                this.separatorElement.style.marginLeft = \"0\";\r\n            }\r\n        }\r\n    }\r\n\r\n    protected getHasBackground(ignoreBackgroundImages: boolean = false): boolean {\r\n        let currentElement: CardElement | undefined = this.parent;\r\n\r\n        while (currentElement) {\r\n            let currentElementHasBackgroundImage: boolean = false;\r\n\r\n            if (ignoreBackgroundImages) {\r\n                currentElementHasBackgroundImage = false;\r\n            } else {\r\n                currentElementHasBackgroundImage =\r\n                    currentElement instanceof Container\r\n                        ? currentElement.backgroundImage.isValid()\r\n                        : false;\r\n            }\r\n\r\n            if (currentElement instanceof StylableCardElementContainer) {\r\n                if (\r\n                    this.hasExplicitStyle &&\r\n                    (currentElement.getEffectiveStyle() !== this.getEffectiveStyle() ||\r\n                        currentElementHasBackgroundImage)\r\n                ) {\r\n                    return true;\r\n                }\r\n            }\r\n\r\n            currentElement = currentElement.parent;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    protected getDefaultPadding(): PaddingDefinition {\r\n        return this.getHasBackground() || this.getHasBorder()\r\n            ? new PaddingDefinition(\r\n                  Enums.Spacing.Padding,\r\n                  Enums.Spacing.Padding,\r\n                  Enums.Spacing.Padding,\r\n                  Enums.Spacing.Padding\r\n              )\r\n            : super.getDefaultPadding();\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        const explicitStyle = this.getValue(StylableCardElementContainer.styleProperty);\r\n\r\n        if (explicitStyle !== undefined) {\r\n            const styleDefinition = this.hostConfig.containerStyles.getStyleByName(explicitStyle);\r\n\r\n            if (!styleDefinition) {\r\n                context.addFailure(\r\n                    this,\r\n                    Enums.ValidationEvent.InvalidPropertyValue,\r\n                    Strings.errors.invalidPropertyValue(explicitStyle, \"style\")\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    render(): HTMLElement | undefined {\r\n        const renderedElement = super.render();\r\n\r\n        if (renderedElement && this.getHasBackground()) {\r\n            this.applyBackground();\r\n        }\r\n\r\n        this.applyBorder();\r\n\r\n        return renderedElement;\r\n    }\r\n\r\n    getEffectiveStyle(): string {\r\n        const effectiveStyle = this.style;\r\n\r\n        return effectiveStyle ? effectiveStyle : super.getEffectiveStyle();\r\n    }\r\n}\r\n\r\nexport abstract class ContainerBase extends StylableCardElementContainer {\r\n    //#region Schema\r\n\r\n    static readonly bleedProperty = new BoolProperty(Versions.v1_2, \"bleed\", false);\r\n    static readonly minHeightProperty = new PixelSizeProperty(Versions.v1_2, \"minHeight\");\r\n\r\n    @property(ContainerBase.bleedProperty)\r\n    private _bleed: boolean = false;\r\n\r\n    @property(ContainerBase.minHeightProperty)\r\n    minPixelHeight?: number;\r\n\r\n    //#endregion\r\n\r\n    protected adjustRenderedElementSize(renderedElement: HTMLElement) {\r\n        super.adjustRenderedElementSize(renderedElement);\r\n\r\n        if (this.minPixelHeight) {\r\n            renderedElement.style.minHeight = this.minPixelHeight + \"px\";\r\n        }\r\n    }\r\n\r\n    protected getHasExpandedAction(): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected getBleed(): boolean {\r\n        return this._bleed;\r\n    }\r\n\r\n    protected setBleed(value: boolean) {\r\n        this._bleed = value;\r\n    }\r\n\r\n    protected get renderedActionCount(): number {\r\n        return 0;\r\n    }\r\n\r\n    isBleeding(): boolean {\r\n        return (this.getHasBackground() || this.hostConfig.alwaysAllowBleed) && this.getBleed();\r\n    }\r\n}\r\n\r\nexport class BackgroundImage extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly urlProperty = new StringProperty(Versions.v1_0, \"url\");\r\n    static readonly fillModeProperty = new EnumProperty(\r\n        Versions.v1_2,\r\n        \"fillMode\",\r\n        Enums.FillMode,\r\n        Enums.FillMode.Cover\r\n    );\r\n    static readonly horizontalAlignmentProperty = new EnumProperty(\r\n        Versions.v1_2,\r\n        \"horizontalAlignment\",\r\n        Enums.HorizontalAlignment,\r\n        Enums.HorizontalAlignment.Left\r\n    );\r\n    static readonly verticalAlignmentProperty = new EnumProperty(\r\n        Versions.v1_2,\r\n        \"verticalAlignment\",\r\n        Enums.VerticalAlignment,\r\n        Enums.VerticalAlignment.Top\r\n    );\r\n\r\n    @property(BackgroundImage.urlProperty)\r\n    url?: string;\r\n\r\n    @property(BackgroundImage.fillModeProperty)\r\n    fillMode: Enums.FillMode;\r\n\r\n    @property(BackgroundImage.horizontalAlignmentProperty)\r\n    horizontalAlignment: Enums.HorizontalAlignment;\r\n\r\n    @property(BackgroundImage.verticalAlignmentProperty)\r\n    verticalAlignment: Enums.VerticalAlignment;\r\n\r\n    //#endregion\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"BackgroundImage\";\r\n    }\r\n\r\n    protected internalParse(source: any, context: BaseSerializationContext) {\r\n        if (typeof source === \"string\") {\r\n            this.resetDefaultValues();\r\n            this.url = source;\r\n        } else {\r\n            return super.internalParse(source, context);\r\n        }\r\n    }\r\n\r\n    apply(element: CardElement) {\r\n        if (this.url && element.renderedElement) {\r\n            element.renderedElement.style.backgroundImage =\r\n                \"url('\" +\r\n                element.preProcessPropertyValue(BackgroundImage.urlProperty, this.url) +\r\n                \"')\";\r\n\r\n            switch (this.fillMode) {\r\n                case Enums.FillMode.Repeat:\r\n                    element.renderedElement.style.backgroundRepeat = \"repeat\";\r\n                    break;\r\n                case Enums.FillMode.RepeatHorizontally:\r\n                    element.renderedElement.style.backgroundRepeat = \"repeat-x\";\r\n                    break;\r\n                case Enums.FillMode.RepeatVertically:\r\n                    element.renderedElement.style.backgroundRepeat = \"repeat-y\";\r\n                    break;\r\n                case Enums.FillMode.Cover:\r\n                default:\r\n                    element.renderedElement.style.backgroundRepeat = \"no-repeat\";\r\n                    element.renderedElement.style.backgroundSize = \"cover\";\r\n                    break;\r\n            }\r\n\r\n            switch (this.horizontalAlignment) {\r\n                case Enums.HorizontalAlignment.Left:\r\n                    break;\r\n                case Enums.HorizontalAlignment.Center:\r\n                    element.renderedElement.style.backgroundPositionX = \"center\";\r\n                    break;\r\n                case Enums.HorizontalAlignment.Right:\r\n                    element.renderedElement.style.backgroundPositionX = \"right\";\r\n                    break;\r\n            }\r\n\r\n            switch (this.verticalAlignment) {\r\n                case Enums.VerticalAlignment.Top:\r\n                    break;\r\n                case Enums.VerticalAlignment.Center:\r\n                    element.renderedElement.style.backgroundPositionY = \"center\";\r\n                    break;\r\n                case Enums.VerticalAlignment.Bottom:\r\n                    element.renderedElement.style.backgroundPositionY = \"bottom\";\r\n                    break;\r\n            }\r\n        }\r\n    }\r\n\r\n    isValid(): boolean {\r\n        return this.url ? true : false;\r\n    }\r\n}\r\n\r\nexport class Container extends ContainerBase {\r\n    //#region Schema\r\n    static readonly backgroundImageProperty = new SerializableObjectProperty(\r\n        Versions.v1_0,\r\n        \"backgroundImage\",\r\n        BackgroundImage\r\n    );\r\n    static readonly verticalContentAlignmentProperty = new EnumProperty(\r\n        Versions.v1_1,\r\n        \"verticalContentAlignment\",\r\n        Enums.VerticalAlignment\r\n    );\r\n    static readonly rtlProperty = new BoolProperty(Versions.v1_0, \"rtl\");\r\n\r\n    @property(Container.backgroundImageProperty)\r\n    get backgroundImage(): BackgroundImage {\r\n        return this.getValue(Container.backgroundImageProperty);\r\n    }\r\n\r\n    @property(Container.verticalContentAlignmentProperty)\r\n    verticalContentAlignment?: Enums.VerticalAlignment;\r\n\r\n    @property(Container.rtlProperty)\r\n    rtl?: boolean;\r\n\r\n    //#endregion\r\n\r\n    private _items: CardElement[] = [];\r\n    private _renderedItems: CardElement[] = [];\r\n\r\n    protected insertItemAt(item: CardElement, index: number, forceInsert: boolean) {\r\n        if (!item.parent || forceInsert) {\r\n            if (item.isStandalone) {\r\n                if (index < 0 || index >= this._items.length) {\r\n                    this._items.push(item);\r\n                } else {\r\n                    this._items.splice(index, 0, item);\r\n                }\r\n\r\n                item.setParent(this);\r\n            } else {\r\n                throw new Error(Strings.errors.elementTypeNotStandalone(item.getJsonTypeName()));\r\n            }\r\n        } else {\r\n            throw new Error(Strings.errors.elementAlreadyParented());\r\n        }\r\n    }\r\n\r\n    protected getItemsCollectionPropertyName(): string {\r\n        return \"items\";\r\n    }\r\n\r\n    protected applyBackground() {\r\n        if (this.backgroundImage.isValid() && this.renderedElement) {\r\n            this.backgroundImage.apply(this);\r\n        }\r\n\r\n        super.applyBackground();\r\n    }\r\n\r\n    protected applyRTL(element: HTMLElement) {\r\n        if (this.rtl !== undefined) {\r\n            element.dir = this.rtl ? \"rtl\" : \"ltr\";\r\n        }\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._renderedItems = [];\r\n\r\n        // Cache hostConfig to avoid walking the parent hierarchy several times\r\n        const hostConfig = this.hostConfig;\r\n\r\n        const element = document.createElement(\"div\");\r\n\r\n        this.applyRTL(element);\r\n\r\n        element.classList.add(hostConfig.makeCssClassName(\"ac-container\"));\r\n        element.style.display = \"flex\";\r\n        element.style.flexDirection = \"column\";\r\n\r\n        if (GlobalSettings.useAdvancedCardBottomTruncation) {\r\n            // Forces the container to be at least as tall as its content.\r\n            //\r\n            // Fixes a quirk in Chrome where, for nested flex elements, the\r\n            // inner element's height would never exceed the outer element's\r\n            // height. This caused overflow truncation to break -- containers\r\n            // would always be measured as not overflowing, since their heights\r\n            // were constrained by their parents as opposed to truly reflecting\r\n            // the height of their content.\r\n            //\r\n            // See the \"Browser Rendering Notes\" section of this answer:\r\n            // https://stackoverflow.com/questions/36247140/why-doesnt-flex-item-shrink-past-content-size\r\n            element.style.minHeight = \"-webkit-min-content\";\r\n        }\r\n\r\n        switch (this.getEffectiveVerticalContentAlignment()) {\r\n            case Enums.VerticalAlignment.Center:\r\n                element.style.justifyContent = \"center\";\r\n                break;\r\n            case Enums.VerticalAlignment.Bottom:\r\n                element.style.justifyContent = \"flex-end\";\r\n                break;\r\n            default:\r\n                element.style.justifyContent = \"flex-start\";\r\n                break;\r\n        }\r\n\r\n        if (this._items.length > 0) {\r\n            for (const item of this._items) {\r\n                const renderedItem = this.isElementAllowed(item) ? item.render() : undefined;\r\n\r\n                if (renderedItem) {\r\n                    if (this._renderedItems.length > 0 && item.separatorElement) {\r\n                        item.separatorElement.style.flex = \"0 0 auto\";\r\n\r\n                        Utils.appendChild(element, item.separatorElement);\r\n                    }\r\n\r\n                    Utils.appendChild(element, renderedItem);\r\n\r\n                    this._renderedItems.push(item);\r\n                }\r\n            }\r\n        } else {\r\n            if (this.isDesignMode()) {\r\n                const placeholderElement = this.createPlaceholderElement();\r\n                placeholderElement.style.width = \"100%\";\r\n                placeholderElement.style.height = \"100%\";\r\n\r\n                element.appendChild(placeholderElement);\r\n            }\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    protected truncateOverflow(maxHeight: number): boolean {\r\n        if (this.renderedElement) {\r\n            // Add 1 to account for rounding differences between browsers\r\n            const boundary = this.renderedElement.offsetTop + maxHeight + 1;\r\n\r\n            const handleElement = (cardElement: CardElement) => {\r\n                const elt = cardElement.renderedElement;\r\n\r\n                if (elt) {\r\n                    switch (Utils.getFitStatus(elt, boundary)) {\r\n                        case Enums.ContainerFitStatus.FullyInContainer:\r\n                            const sizeChanged = cardElement[\"resetOverflow\"]();\r\n                            // If the element's size changed after resetting content,\r\n                            // we have to check if it still fits fully in the card\r\n                            if (sizeChanged) {\r\n                                handleElement(cardElement);\r\n                            }\r\n                            break;\r\n                        case Enums.ContainerFitStatus.Overflowing:\r\n                            const containerMaxHeight = boundary - elt.offsetTop;\r\n                            cardElement[\"handleOverflow\"](containerMaxHeight);\r\n                            break;\r\n                        case Enums.ContainerFitStatus.FullyOutOfContainer:\r\n                            cardElement[\"handleOverflow\"](0);\r\n                            break;\r\n                    }\r\n                }\r\n            };\r\n\r\n            for (const item of this._items) {\r\n                handleElement(item);\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    protected undoOverflowTruncation() {\r\n        for (const item of this._items) {\r\n            item[\"resetOverflow\"]();\r\n        }\r\n    }\r\n\r\n    protected getHasBackground(ignoreBackgroundImages: boolean = false): boolean {\r\n        let result = ignoreBackgroundImages ? false : this.backgroundImage.isValid();\r\n\r\n        return result || super.getHasBackground(ignoreBackgroundImages);\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this.clear();\r\n        this.setShouldFallback(false);\r\n\r\n        let jsonItems = source[this.getItemsCollectionPropertyName()];\r\n\r\n        if (Array.isArray(jsonItems)) {\r\n            for (const item of jsonItems) {\r\n                const element = context.parseElement(\r\n                    this,\r\n                    item,\r\n                    this.forbiddenChildElements(),\r\n                    !this.isDesignMode()\r\n                );\r\n\r\n                if (element) {\r\n                    this.insertItemAt(element, -1, true);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        const collectionPropertyName = this.getItemsCollectionPropertyName();\r\n\r\n        context.serializeArray(target, collectionPropertyName, this._items);\r\n    }\r\n\r\n    protected get isSelectable(): boolean {\r\n        return true;\r\n    }\r\n\r\n    getEffectivePadding(): PaddingDefinition {\r\n        if (\r\n            GlobalSettings.removePaddingFromContainersWithBackgroundImage &&\r\n            !this.getHasBackground(true)\r\n        ) {\r\n            return new PaddingDefinition();\r\n        }\r\n\r\n        return super.getEffectivePadding();\r\n    }\r\n\r\n    getEffectiveVerticalContentAlignment(): Enums.VerticalAlignment {\r\n        if (this.verticalContentAlignment !== undefined) {\r\n            return this.verticalContentAlignment;\r\n        }\r\n\r\n        const parentContainer = this.getParentContainer();\r\n\r\n        return parentContainer\r\n            ? parentContainer.getEffectiveVerticalContentAlignment()\r\n            : Enums.VerticalAlignment.Top;\r\n    }\r\n\r\n    getItemCount(): number {\r\n        return this._items.length;\r\n    }\r\n\r\n    getItemAt(index: number): CardElement {\r\n        return this._items[index];\r\n    }\r\n\r\n    getFirstVisibleRenderedItem(): CardElement | undefined {\r\n        if (this.renderedElement && this._renderedItems && this._renderedItems.length > 0) {\r\n            for (const item of this._renderedItems) {\r\n                if (item.isVisible) {\r\n                    return item;\r\n                }\r\n            }\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n\r\n    getLastVisibleRenderedItem(): CardElement | undefined {\r\n        if (this.renderedElement && this._renderedItems && this._renderedItems.length > 0) {\r\n            for (let i = this._renderedItems.length - 1; i >= 0; i--) {\r\n                if (this._renderedItems[i].isVisible) {\r\n                    return this._renderedItems[i];\r\n                }\r\n            }\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Container\";\r\n    }\r\n\r\n    isFirstElement(element: CardElement): boolean {\r\n        const designMode = this.isDesignMode();\r\n\r\n        for (const item of this._items) {\r\n            if (item.isVisible || designMode) {\r\n                return item === element;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    isLastElement(element: CardElement): boolean {\r\n        const designMode = this.isDesignMode();\r\n\r\n        for (let i = this._items.length - 1; i >= 0; i--) {\r\n            if (this._items[i].isVisible || designMode) {\r\n                return this._items[i] === element;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    isRtl(): boolean {\r\n        if (this.rtl !== undefined) {\r\n            return this.rtl;\r\n        } else {\r\n            const parentContainer = this.getParentContainer();\r\n\r\n            return parentContainer ? parentContainer.isRtl() : false;\r\n        }\r\n    }\r\n\r\n    isBleedingAtTop(): boolean {\r\n        const firstRenderedItem = this.getFirstVisibleRenderedItem();\r\n\r\n        return (\r\n            this.isBleeding() || (firstRenderedItem ? firstRenderedItem.isBleedingAtTop() : false)\r\n        );\r\n    }\r\n\r\n    isBleedingAtBottom(): boolean {\r\n        const lastRenderedItem = this.getLastVisibleRenderedItem();\r\n\r\n        return (\r\n            this.isBleeding() ||\r\n            (lastRenderedItem\r\n                ? lastRenderedItem.isBleedingAtBottom() &&\r\n                  lastRenderedItem.getEffectiveStyle() === this.getEffectiveStyle()\r\n                : false)\r\n        );\r\n    }\r\n\r\n    indexOf(cardElement: CardElement): number {\r\n        return this._items.indexOf(cardElement);\r\n    }\r\n\r\n    addItem(item: CardElement) {\r\n        this.insertItemAt(item, -1, false);\r\n    }\r\n\r\n    insertItemBefore(item: CardElement, insertBefore: CardElement) {\r\n        this.insertItemAt(item, this._items.indexOf(insertBefore), false);\r\n    }\r\n\r\n    insertItemAfter(item: CardElement, insertAfter: CardElement) {\r\n        this.insertItemAt(item, this._items.indexOf(insertAfter) + 1, false);\r\n    }\r\n\r\n    removeItem(item: CardElement): boolean {\r\n        const itemIndex = this._items.indexOf(item);\r\n\r\n        if (itemIndex >= 0) {\r\n            this._items.splice(itemIndex, 1);\r\n\r\n            item.setParent(undefined);\r\n\r\n            this.updateLayout();\r\n\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    clear() {\r\n        this._items = [];\r\n        this._renderedItems = [];\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        const result = super.getResourceInformation();\r\n\r\n        if (this.backgroundImage.isValid()) {\r\n            result.push({\r\n                // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- validated by `isValid()`\r\n                url: this.backgroundImage.url!,\r\n                mimeType: \"image\"\r\n            });\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        let result: Action | undefined = super.getActionById(id);\r\n\r\n        if (!result) {\r\n            if (this.selectAction) {\r\n                result = this.selectAction.getActionById(id);\r\n            }\r\n\r\n            if (!result) {\r\n                for (const item of this._items) {\r\n                    result = item.getActionById(id);\r\n\r\n                    if (result) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get padding(): PaddingDefinition | undefined {\r\n        return this.getPadding();\r\n    }\r\n\r\n    set padding(value: PaddingDefinition | undefined) {\r\n        this.setPadding(value);\r\n    }\r\n\r\n    get selectAction(): Action | undefined {\r\n        return this._selectAction;\r\n    }\r\n\r\n    set selectAction(value: Action | undefined) {\r\n        this._selectAction = value;\r\n    }\r\n\r\n    get bleed(): boolean {\r\n        return this.getBleed();\r\n    }\r\n\r\n    set bleed(value: boolean) {\r\n        this.setBleed(value);\r\n    }\r\n}\r\n\r\nexport type ColumnWidth = SizeAndUnit | \"auto\" | \"stretch\";\r\n\r\nexport class Column extends Container {\r\n    //#region Schema\r\n\r\n    static readonly widthProperty = new CustomProperty<ColumnWidth>(\r\n        Versions.v1_0,\r\n        \"width\",\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            source: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            let result: ColumnWidth = prop.defaultValue;\r\n            const value = source[prop.name];\r\n            let invalidWidth = false;\r\n\r\n            if (typeof value === \"number\" && !isNaN(value)) {\r\n                result = new SizeAndUnit(value, Enums.SizeUnit.Weight);\r\n            } else if (value === \"auto\" || value === \"stretch\") {\r\n                result = value;\r\n            } else if (typeof value === \"string\") {\r\n                try {\r\n                    result = SizeAndUnit.parse(value);\r\n\r\n                    if (\r\n                        result.unit === Enums.SizeUnit.Pixel &&\r\n                        prop.targetVersion.compareTo(context.targetVersion) > 0\r\n                    ) {\r\n                        invalidWidth = true;\r\n                    }\r\n                } catch (e) {\r\n                    invalidWidth = true;\r\n                }\r\n            } else {\r\n                invalidWidth = true;\r\n            }\r\n\r\n            if (invalidWidth) {\r\n                context.logParseEvent(\r\n                    sender,\r\n                    Enums.ValidationEvent.InvalidPropertyValue,\r\n                    Strings.errors.invalidColumnWidth(value)\r\n                );\r\n\r\n                result = \"auto\";\r\n            }\r\n\r\n            return result;\r\n        },\r\n        (\r\n            sender: SerializableObject,\r\n            property: PropertyDefinition,\r\n            target: PropertyBag,\r\n            value: ColumnWidth,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            if (value instanceof SizeAndUnit) {\r\n                if (value.unit === Enums.SizeUnit.Pixel) {\r\n                    context.serializeValue(target, \"width\", value.physicalSize + \"px\");\r\n                } else {\r\n                    context.serializeNumber(target, \"width\", value.physicalSize);\r\n                }\r\n            } else {\r\n                context.serializeValue(target, \"width\", value);\r\n            }\r\n        },\r\n        \"stretch\"\r\n    );\r\n\r\n    @property(Column.widthProperty)\r\n    width: ColumnWidth = \"stretch\";\r\n\r\n    //#endregion\r\n\r\n    private _computedWeight: number = 0;\r\n\r\n    protected adjustRenderedElementSize(renderedElement: HTMLElement) {\r\n        const minDesignTimeColumnHeight = 20;\r\n\r\n        if (this.isDesignMode()) {\r\n            renderedElement.style.minWidth = \"20px\";\r\n            renderedElement.style.minHeight =\r\n                (!this.minPixelHeight\r\n                    ? minDesignTimeColumnHeight\r\n                    : Math.max(this.minPixelHeight, minDesignTimeColumnHeight)) + \"px\";\r\n        } else {\r\n            renderedElement.style.minWidth = \"0\";\r\n\r\n            if (this.minPixelHeight) {\r\n                renderedElement.style.minHeight = this.minPixelHeight + \"px\";\r\n            }\r\n        }\r\n\r\n        if (this.width === \"auto\") {\r\n            renderedElement.style.flex = \"0 1 auto\";\r\n        } else if (this.width === \"stretch\") {\r\n            renderedElement.style.flex = \"1 1 50px\";\r\n        } else if (this.width instanceof SizeAndUnit) {\r\n            if (this.width.unit === Enums.SizeUnit.Pixel) {\r\n                renderedElement.style.flex = \"0 0 auto\";\r\n                renderedElement.style.width = this.width.physicalSize + \"px\";\r\n            } else {\r\n                renderedElement.style.flex =\r\n                    \"1 1 \" +\r\n                    (this._computedWeight > 0 ? this._computedWeight : this.width.physicalSize) +\r\n                    \"%\";\r\n            }\r\n        }\r\n    }\r\n\r\n    protected shouldSerialize(_context: SerializationContext): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get separatorOrientation(): Enums.Orientation {\r\n        return Enums.Orientation.Vertical;\r\n    }\r\n\r\n    constructor(width: ColumnWidth = \"stretch\") {\r\n        super();\r\n\r\n        this.width = width;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Column\";\r\n    }\r\n\r\n    get hasVisibleSeparator(): boolean {\r\n        if (this.parent && this.parent instanceof ColumnSet) {\r\n            return this.separatorElement !== undefined && !this.parent.isLeftMostElement(this);\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    get isStandalone(): boolean {\r\n        return false;\r\n    }\r\n}\r\n\r\nexport class ColumnSet extends ContainerBase {\r\n    private _columns: Column[] = [];\r\n    private _renderedColumns: Column[];\r\n\r\n    private createColumnInstance(source: any, context: SerializationContext): Column | undefined {\r\n        return context.parseCardObject<Column>(\r\n            this,\r\n            source,\r\n            [],\r\n            !this.isDesignMode(),\r\n            (typeName: string) => {\r\n                return !typeName || typeName === \"Column\" ? new Column() : undefined;\r\n            },\r\n            (typeName: string, _errorType: Enums.TypeErrorType) => {\r\n                context.logParseEvent(\r\n                    undefined,\r\n                    Enums.ValidationEvent.ElementTypeNotAllowed,\r\n                    Strings.errors.elementTypeNotAllowed(typeName)\r\n                );\r\n            }\r\n        );\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._renderedColumns = [];\r\n\r\n        if (this._columns.length > 0) {\r\n            // Cache hostConfig to avoid walking the parent hierarchy several times\r\n            const hostConfig = this.hostConfig;\r\n\r\n            const element = document.createElement(\"div\");\r\n            element.className = hostConfig.makeCssClassName(\"ac-columnSet\");\r\n            element.style.display = \"flex\";\r\n\r\n            if (GlobalSettings.useAdvancedCardBottomTruncation) {\r\n                // See comment in Container.internalRender()\r\n                element.style.minHeight = \"-webkit-min-content\";\r\n            }\r\n\r\n            switch (this.getEffectiveHorizontalAlignment()) {\r\n                case Enums.HorizontalAlignment.Center:\r\n                    element.style.justifyContent = \"center\";\r\n                    break;\r\n                case Enums.HorizontalAlignment.Right:\r\n                    element.style.justifyContent = \"flex-end\";\r\n                    break;\r\n                default:\r\n                    element.style.justifyContent = \"flex-start\";\r\n                    break;\r\n            }\r\n\r\n            let totalWeight: number = 0;\r\n\r\n            for (const column of this._columns) {\r\n                if (\r\n                    column.width instanceof SizeAndUnit &&\r\n                    column.width.unit === Enums.SizeUnit.Weight\r\n                ) {\r\n                    totalWeight += column.width.physicalSize;\r\n                }\r\n            }\r\n\r\n            for (const column of this._columns) {\r\n                if (\r\n                    column.width instanceof SizeAndUnit &&\r\n                    column.width.unit === Enums.SizeUnit.Weight &&\r\n                    totalWeight > 0\r\n                ) {\r\n                    const computedWeight = (100 / totalWeight) * column.width.physicalSize;\r\n\r\n                    // Best way to emulate \"internal\" access I know of\r\n                    column[\"_computedWeight\"] = computedWeight;\r\n                }\r\n\r\n                const renderedColumn = column.render();\r\n\r\n                if (renderedColumn) {\r\n                    if (this._renderedColumns.length > 0 && column.separatorElement) {\r\n                        column.separatorElement.style.flex = \"0 0 auto\";\r\n\r\n                        Utils.appendChild(element, column.separatorElement);\r\n                    }\r\n\r\n                    Utils.appendChild(element, renderedColumn);\r\n\r\n                    this._renderedColumns.push(column);\r\n                }\r\n            }\r\n\r\n            return this._renderedColumns.length > 0 ? element : undefined;\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    protected truncateOverflow(maxHeight: number): boolean {\r\n        for (const column of this._columns) {\r\n            column[\"handleOverflow\"](maxHeight);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    protected undoOverflowTruncation() {\r\n        for (const column of this._columns) {\r\n            column[\"resetOverflow\"]();\r\n        }\r\n    }\r\n\r\n    protected get isSelectable(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this._columns = [];\r\n        this._renderedColumns = [];\r\n\r\n        const jsonColumns = source[\"columns\"];\r\n\r\n        if (Array.isArray(jsonColumns)) {\r\n            for (const item of jsonColumns) {\r\n                const column = this.createColumnInstance(item, context);\r\n\r\n                if (column) {\r\n                    this._columns.push(column);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        context.serializeArray(target, \"columns\", this._columns);\r\n    }\r\n\r\n    isFirstElement(element: CardElement): boolean {\r\n        for (const column of this._columns) {\r\n            if (column.isVisible) {\r\n                return column === element;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    isBleedingAtTop(): boolean {\r\n        if (this.isBleeding()) {\r\n            return true;\r\n        }\r\n\r\n        if (this._renderedColumns && this._renderedColumns.length > 0) {\r\n            for (const column of this._columns) {\r\n                if (column.isBleedingAtTop()) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    isBleedingAtBottom(): boolean {\r\n        if (this.isBleeding()) {\r\n            return true;\r\n        }\r\n\r\n        if (this._renderedColumns && this._renderedColumns.length > 0) {\r\n            for (const column of this._columns) {\r\n                if (column.isBleedingAtBottom()) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    getItemCount(): number {\r\n        return this._columns.length;\r\n    }\r\n\r\n    getFirstVisibleRenderedItem(): CardElement | undefined {\r\n        if (this.renderedElement && this._renderedColumns && this._renderedColumns.length > 0) {\r\n            return this._renderedColumns[0];\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    getLastVisibleRenderedItem(): CardElement | undefined {\r\n        if (this.renderedElement && this._renderedColumns && this._renderedColumns.length > 0) {\r\n            return this._renderedColumns[this._renderedColumns.length - 1];\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    getColumnAt(index: number): Column {\r\n        return this._columns[index];\r\n    }\r\n\r\n    getItemAt(index: number): CardElement {\r\n        return this.getColumnAt(index);\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"ColumnSet\";\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        let weightedColumns: number = 0;\r\n        let stretchedColumns: number = 0;\r\n\r\n        for (const column of this._columns) {\r\n            if (typeof column.width === \"number\") {\r\n                weightedColumns++;\r\n            } else if (column.width === \"stretch\") {\r\n                stretchedColumns++;\r\n            }\r\n        }\r\n\r\n        if (weightedColumns > 0 && stretchedColumns > 0) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.Hint,\r\n                Strings.hints.dontUseWeightedAndStrecthedColumnsInSameSet()\r\n            );\r\n        }\r\n    }\r\n\r\n    addColumn(column: Column) {\r\n        if (!column.parent) {\r\n            this._columns.push(column);\r\n\r\n            column.setParent(this);\r\n        } else {\r\n            throw new Error(Strings.errors.columnAlreadyBelongsToAnotherSet());\r\n        }\r\n    }\r\n\r\n    removeItem(item: CardElement): boolean {\r\n        if (item instanceof Column) {\r\n            const itemIndex = this._columns.indexOf(item);\r\n\r\n            if (itemIndex >= 0) {\r\n                this._columns.splice(itemIndex, 1);\r\n\r\n                item.setParent(undefined);\r\n\r\n                this.updateLayout();\r\n\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    indexOf(cardElement: CardElement): number {\r\n        return cardElement instanceof Column ? this._columns.indexOf(cardElement) : -1;\r\n    }\r\n\r\n    isLeftMostElement(element: CardElement): boolean {\r\n        return this._columns.indexOf(<Column>element) === 0;\r\n    }\r\n\r\n    isRightMostElement(element: CardElement): boolean {\r\n        return this._columns.indexOf(<Column>element) === this._columns.length - 1;\r\n    }\r\n\r\n    isTopElement(element: CardElement): boolean {\r\n        return this._columns.indexOf(<Column>element) >= 0;\r\n    }\r\n\r\n    isBottomElement(element: CardElement): boolean {\r\n        return this._columns.indexOf(<Column>element) >= 0;\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        let result: Action | undefined = undefined;\r\n\r\n        for (const column of this._columns) {\r\n            result = column.getActionById(id);\r\n\r\n            if (result) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get bleed(): boolean {\r\n        return this.getBleed();\r\n    }\r\n\r\n    set bleed(value: boolean) {\r\n        this.setBleed(value);\r\n    }\r\n\r\n    get padding(): PaddingDefinition | undefined {\r\n        return this.getPadding();\r\n    }\r\n\r\n    set padding(value: PaddingDefinition | undefined) {\r\n        this.setPadding(value);\r\n    }\r\n\r\n    get selectAction(): Action | undefined {\r\n        return this._selectAction;\r\n    }\r\n\r\n    set selectAction(value: Action | undefined) {\r\n        this._selectAction = value;\r\n    }\r\n}\r\n\r\nfunction raiseImageLoadedEvent(image: Image) {\r\n    const card = image.getRootElement() as AdaptiveCard;\r\n    const onImageLoadedHandler =\r\n        card && card.onImageLoaded ? card.onImageLoaded : AdaptiveCard.onImageLoaded;\r\n\r\n    if (onImageLoadedHandler) {\r\n        onImageLoadedHandler(image);\r\n    }\r\n}\r\n\r\nfunction raiseAnchorClickedEvent(\r\n    element: CardElement,\r\n    anchor: HTMLAnchorElement,\r\n    ev?: MouseEvent\r\n): boolean {\r\n    const card = element.getRootElement() as AdaptiveCard;\r\n    const onAnchorClickedHandler =\r\n        card && card.onAnchorClicked ? card.onAnchorClicked : AdaptiveCard.onAnchorClicked;\r\n\r\n    return onAnchorClickedHandler !== undefined\r\n        ? onAnchorClickedHandler(element, anchor, ev)\r\n        : false;\r\n}\r\n\r\nfunction raiseExecuteActionEvent(action: Action) {\r\n    const card = action.parent ? (action.parent.getRootElement() as AdaptiveCard) : undefined;\r\n    const onExecuteActionHandler =\r\n        card && card.onExecuteAction ? card.onExecuteAction : AdaptiveCard.onExecuteAction;\r\n\r\n    if (action.prepareForExecution() && onExecuteActionHandler) {\r\n        onExecuteActionHandler(action);\r\n    }\r\n}\r\n\r\nfunction raiseInlineCardExpandedEvent(action: ShowCardAction, isExpanded: boolean) {\r\n    const card = action.parent ? (action.parent.getRootElement() as AdaptiveCard) : undefined;\r\n    const onInlineCardExpandedHandler =\r\n        card && card.onInlineCardExpanded\r\n            ? card.onInlineCardExpanded\r\n            : AdaptiveCard.onInlineCardExpanded;\r\n\r\n    if (onInlineCardExpandedHandler) {\r\n        onInlineCardExpandedHandler(action, isExpanded);\r\n    }\r\n}\r\n\r\nfunction raiseInputValueChangedEvent(input: Input) {\r\n    const card = input.getRootElement() as AdaptiveCard;\r\n    const onInputValueChangedHandler =\r\n        card && card.onInputValueChanged\r\n            ? card.onInputValueChanged\r\n            : AdaptiveCard.onInputValueChanged;\r\n\r\n    if (onInputValueChangedHandler) {\r\n        onInputValueChangedHandler(input);\r\n    }\r\n}\r\n\r\nfunction raiseElementVisibilityChangedEvent(\r\n    element: CardElement,\r\n    shouldUpdateLayout: boolean = true\r\n) {\r\n    const rootElement = element.getRootElement();\r\n\r\n    if (shouldUpdateLayout) {\r\n        rootElement.updateLayout();\r\n    }\r\n\r\n    const card = rootElement as AdaptiveCard;\r\n    const onElementVisibilityChangedHandler =\r\n        card && card.onElementVisibilityChanged\r\n            ? card.onElementVisibilityChanged\r\n            : AdaptiveCard.onElementVisibilityChanged;\r\n\r\n    if (onElementVisibilityChangedHandler !== undefined) {\r\n        onElementVisibilityChangedHandler(element);\r\n    }\r\n}\r\n\r\nfunction updateInputAdornersVisibility(input: HTMLInputElement, hide: boolean) {\r\n    if (!!hide) {\r\n        // hides the time/date picker icon\r\n        input.readOnly = true;\r\n        // hides the cross button icon\r\n        input.required = true;\r\n    } else {\r\n         // shows the time/date picker icon\r\n         input.readOnly = false;\r\n         // shows the cross button icon\r\n         input.required = false;\r\n    }\r\n    \r\n}\r\n\r\n/**\r\n * @returns return false to continue with default context menu; return true to skip SDK default context menu\r\n */\r\nfunction raiseDisplayOverflowActionMenuEvent(\r\n    action: OverflowAction,\r\n    target?: HTMLElement\r\n): boolean {\r\n    const card = action.parent ? (action.parent.getRootElement() as AdaptiveCard) : undefined;\r\n    const onDisplayOverflowActionMenuHandler =\r\n        card && card.onDisplayOverflowActionMenu\r\n            ? card.onDisplayOverflowActionMenu\r\n            : AdaptiveCard.onDisplayOverflowActionMenu;\r\n\r\n    return onDisplayOverflowActionMenuHandler !== undefined\r\n        ? onDisplayOverflowActionMenuHandler(action.getActions(), target)\r\n        : false;\r\n}\r\n\r\n/**\r\n * @returns return false to continue with default action button; return true to skip SDK default action button\r\n */\r\nfunction raiseRenderOverflowActionsEvent(\r\n    action: OverflowAction,\r\n    isAtRootLevelActions: boolean\r\n): boolean {\r\n    const card = action.parent ? (action.parent.getRootElement() as AdaptiveCard) : undefined;\r\n    const onRenderOverflowActionsHandler =\r\n        card && card.onRenderOverflowActions\r\n            ? card.onRenderOverflowActions\r\n            : AdaptiveCard.onRenderOverflowActions;\r\n\r\n    return onRenderOverflowActionsHandler !== undefined\r\n        ? onRenderOverflowActionsHandler(action.getActions(), isAtRootLevelActions)\r\n        : false;\r\n}\r\n\r\nexport abstract class ContainerWithActions extends Container {\r\n    private _actionCollection: ActionCollection;\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this.parseActions(source, context);\r\n    }\r\n\r\n    protected parseActions(source: any, context: SerializationContext) {\r\n        this._actionCollection.parse(source[\"actions\"], context);\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        this._actionCollection.toJSON(target, \"actions\", context);\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        const element = super.internalRender();\r\n\r\n        if (element) {\r\n            const renderedActions = this._actionCollection.render(\r\n                this.hostConfig.actions.actionsOrientation\r\n            );\r\n\r\n            if (renderedActions) {\r\n                Utils.appendChild(\r\n                    element,\r\n                    renderSeparation(\r\n                        this.hostConfig,\r\n                        {\r\n                            spacing: this.hostConfig.getEffectiveSpacing(\r\n                                this.hostConfig.actions.spacing\r\n                            )\r\n                        },\r\n                        Enums.Orientation.Horizontal\r\n                    )\r\n                );\r\n                Utils.appendChild(element, renderedActions);\r\n            }\r\n\r\n            if (this.renderIfEmpty) {\r\n                return element;\r\n            } else {\r\n                return element.children.length > 0 ? element : undefined;\r\n            }\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    protected getHasExpandedAction(): boolean {\r\n        if (this.renderedActionCount === 0) {\r\n            return false;\r\n        } else if (this.renderedActionCount === 1) {\r\n            return (\r\n                this._actionCollection.expandedAction !== undefined &&\r\n                !this.hostConfig.actions.preExpandSingleShowCardAction\r\n            );\r\n        } else {\r\n            return this._actionCollection.expandedAction !== undefined;\r\n        }\r\n    }\r\n\r\n    protected get renderedActionCount(): number {\r\n        return this._actionCollection.renderedActionCount;\r\n    }\r\n\r\n    protected get renderIfEmpty(): boolean {\r\n        return false;\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n\r\n        this._actionCollection = new ActionCollection(this);\r\n    }\r\n\r\n    releaseDOMResources() {\r\n        super.releaseDOMResources();\r\n\r\n        this._actionCollection.releaseDOMResources();\r\n    }\r\n\r\n    getActionCount(): number {\r\n        return this._actionCollection.getActionCount();\r\n    }\r\n\r\n    getActionAt(index: number): Action | undefined {\r\n        if (index >= 0 && index < this.getActionCount()) {\r\n            return this._actionCollection.getActionAt(index);\r\n        } else {\r\n            return super.getActionAt(index);\r\n        }\r\n    }\r\n\r\n    getActionById(id: string): Action | undefined {\r\n        const result: Action | undefined = this._actionCollection.getActionById(id);\r\n\r\n        return result ? result : super.getActionById(id);\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (this._actionCollection) {\r\n            this._actionCollection.validateProperties(context);\r\n        }\r\n    }\r\n\r\n    isLastElement(element: CardElement): boolean {\r\n        return super.isLastElement(element) && this._actionCollection.getActionCount() === 0;\r\n    }\r\n\r\n    addAction(action: Action) {\r\n        this._actionCollection.addAction(action);\r\n    }\r\n\r\n    clear() {\r\n        super.clear();\r\n\r\n        this._actionCollection.clear();\r\n    }\r\n\r\n    getAllInputs(processActions: boolean = true): Input[] {\r\n        let result = super.getAllInputs(processActions);\r\n\r\n        if (processActions) {\r\n            result.push(...this._actionCollection.getAllInputs(processActions));\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getResourceInformation(): IResourceInformation[] {\r\n        let result = super.getResourceInformation();\r\n\r\n        result.push(...this._actionCollection.getResourceInformation());\r\n\r\n        return result;\r\n    }\r\n\r\n    isBleedingAtBottom(): boolean {\r\n        if (this._actionCollection.renderedActionCount === 0) {\r\n            return super.isBleedingAtBottom();\r\n        } else {\r\n            if (this._actionCollection.getActionCount() === 1) {\r\n                return (\r\n                    this._actionCollection.expandedAction !== undefined &&\r\n                    !this.hostConfig.actions.preExpandSingleShowCardAction\r\n                );\r\n            } else {\r\n                return this._actionCollection.expandedAction !== undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    getForbiddenActionNames(): string[] {\r\n        return [];\r\n    }\r\n    \r\n    getElementById(id: string): CardElement | undefined {\r\n        let result = super.getElementById(id);\r\n\r\n        if (!result) {\r\n            result = this.getElementByIdFromAction(id);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    get isStandalone(): boolean {\r\n        return false;\r\n    }\r\n}\r\n\r\nexport interface IMarkdownProcessingResult {\r\n    didProcess: boolean;\r\n    outputHtml?: any;\r\n}\r\n\r\nexport class RefreshActionProperty extends PropertyDefinition {\r\n    parse(\r\n        sender: RefreshDefinition,\r\n        source: PropertyBag,\r\n        context: SerializationContext\r\n    ): ExecuteAction | undefined {\r\n        const action = context.parseAction(sender.parent, source[this.name], [], false);\r\n\r\n        if (action !== undefined) {\r\n            if (action instanceof ExecuteAction) {\r\n                return action;\r\n            }\r\n\r\n            context.logParseEvent(\r\n                sender,\r\n                Enums.ValidationEvent.ActionTypeNotAllowed,\r\n                Strings.errors.actionTypeNotAllowed(action.getJsonTypeName())\r\n            );\r\n        }\r\n\r\n        context.logParseEvent(\r\n            sender,\r\n            Enums.ValidationEvent.PropertyCantBeNull,\r\n            Strings.errors.propertyMustBeSet(\"action\")\r\n        );\r\n\r\n        return undefined;\r\n    }\r\n\r\n    toJSON(\r\n        sender: SerializableObject,\r\n        target: PropertyBag,\r\n        value: ExecuteAction | undefined,\r\n        context: SerializationContext\r\n    ) {\r\n        context.serializeValue(\r\n            target,\r\n            this.name,\r\n            value ? value.toJSON(context) : undefined,\r\n            undefined,\r\n            true\r\n        );\r\n    }\r\n\r\n    constructor(readonly targetVersion: Version, readonly name: string) {\r\n        super(targetVersion, name, undefined);\r\n    }\r\n}\r\n\r\nexport class RefreshDefinition extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly actionProperty = new RefreshActionProperty(Versions.v1_4, \"action\");\r\n    static readonly userIdsProperty = new StringArrayProperty(Versions.v1_4, \"userIds\");\r\n\r\n    @property(RefreshDefinition.actionProperty)\r\n    get action(): ExecuteAction {\r\n        return this.getValue(RefreshDefinition.actionProperty);\r\n    }\r\n\r\n    set action(value: ExecuteAction) {\r\n        this.setValue(RefreshDefinition.actionProperty, value);\r\n\r\n        if (value) {\r\n            value.setParent(this.parent);\r\n        }\r\n    }\r\n\r\n    @property(RefreshDefinition.userIdsProperty)\r\n    userIds?: string[];\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"RefreshDefinition\";\r\n    }\r\n\r\n    //#endregion\r\n\r\n    parent: CardElement;\r\n}\r\n\r\nexport class AuthCardButton extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly typeProperty = new StringProperty(Versions.v1_4, \"type\");\r\n    static readonly titleProperty = new StringProperty(Versions.v1_4, \"title\");\r\n    static readonly imageProperty = new StringProperty(Versions.v1_4, \"image\");\r\n    static readonly valueProperty = new StringProperty(Versions.v1_4, \"value\");\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"AuthCardButton\";\r\n    }\r\n\r\n    //#endregion\r\n\r\n    @property(AuthCardButton.typeProperty)\r\n    type: string;\r\n\r\n    @property(AuthCardButton.titleProperty)\r\n    title?: string;\r\n\r\n    @property(AuthCardButton.imageProperty)\r\n    image?: string;\r\n\r\n    @property(AuthCardButton.valueProperty)\r\n    value: string;\r\n}\r\n\r\nexport class TokenExchangeResource extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly idProperty = new StringProperty(Versions.v1_4, \"id\");\r\n    static readonly uriProperty = new StringProperty(Versions.v1_4, \"uri\");\r\n    static readonly providerIdProperty = new StringProperty(Versions.v1_4, \"providerId\");\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"TokenExchangeResource\";\r\n    }\r\n\r\n    //#endregion\r\n\r\n    @property(TokenExchangeResource.idProperty)\r\n    id?: string;\r\n\r\n    @property(TokenExchangeResource.uriProperty)\r\n    uri?: string;\r\n\r\n    @property(TokenExchangeResource.providerIdProperty)\r\n    providerId?: string;\r\n}\r\n\r\nexport class Authentication extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly textProperty = new StringProperty(Versions.v1_4, \"text\");\r\n    static readonly connectionNameProperty = new StringProperty(Versions.v1_4, \"connectionName\");\r\n    static readonly buttonsProperty = new SerializableObjectCollectionProperty(\r\n        Versions.v1_4,\r\n        \"buttons\",\r\n        AuthCardButton\r\n    );\r\n    static readonly tokenExchangeResourceProperty = new SerializableObjectProperty(\r\n        Versions.v1_4,\r\n        \"tokenExchangeResource\",\r\n        TokenExchangeResource,\r\n        true\r\n    );\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"Authentication\";\r\n    }\r\n\r\n    //#endregion\r\n\r\n    @property(Authentication.textProperty)\r\n    text?: string;\r\n\r\n    @property(Authentication.connectionNameProperty)\r\n    connectionName?: string;\r\n\r\n    @property(Authentication.buttonsProperty)\r\n    buttons: AuthCardButton[];\r\n\r\n    @property(Authentication.tokenExchangeResourceProperty)\r\n    tokenExchangeResource?: TokenExchangeResource;\r\n}\r\n\r\n// @dynamic\r\nexport class AdaptiveCard extends ContainerWithActions {\r\n    static readonly schemaUrl = \"http://adaptivecards.io/schemas/adaptive-card.json\";\r\n\r\n    //#region Schema\r\n\r\n    // eslint-disable-next-line @typescript-eslint/naming-convention\r\n    protected static readonly $schemaProperty = new CustomProperty<string>(\r\n        Versions.v1_0,\r\n        \"$schema\",\r\n        (\r\n            sender: SerializableObject,\r\n            property: PropertyDefinition,\r\n            source: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            return AdaptiveCard.schemaUrl;\r\n        },\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            target: PropertyBag,\r\n            value: Versions | undefined,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            context.serializeValue(target, prop.name, AdaptiveCard.schemaUrl);\r\n        }\r\n    );\r\n\r\n    static readonly versionProperty = new CustomProperty<Version | undefined>(\r\n        Versions.v1_0,\r\n        \"version\",\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            source: PropertyBag,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            let version = Version.parse(source[prop.name], context);\r\n\r\n            if (version === undefined) {\r\n                version = Versions.latest;\r\n\r\n                context.logParseEvent(\r\n                    sender,\r\n                    Enums.ValidationEvent.InvalidPropertyValue,\r\n                    Strings.errors.invalidCardVersion(version.toString())\r\n                );\r\n            }\r\n\r\n            return version;\r\n        },\r\n        (\r\n            sender: SerializableObject,\r\n            prop: PropertyDefinition,\r\n            target: PropertyBag,\r\n            value: Version | undefined,\r\n            context: BaseSerializationContext\r\n        ) => {\r\n            if (value !== undefined) {\r\n                context.serializeValue(target, prop.name, value.toString());\r\n            }\r\n        },\r\n        Versions.v1_0\r\n    );\r\n\r\n    static readonly fallbackTextProperty = new StringProperty(Versions.v1_0, \"fallbackText\");\r\n    static readonly speakProperty = new StringProperty(Versions.v1_0, \"speak\");\r\n    static readonly refreshProperty = new SerializableObjectProperty(\r\n        Versions.v1_4,\r\n        \"refresh\",\r\n        RefreshDefinition,\r\n        true\r\n    );\r\n    static readonly authenticationProperty = new SerializableObjectProperty(\r\n        Versions.v1_4,\r\n        \"authentication\",\r\n        Authentication,\r\n        true\r\n    );\r\n\r\n    @property(AdaptiveCard.versionProperty)\r\n    version: Version;\r\n\r\n    @property(AdaptiveCard.fallbackTextProperty)\r\n    fallbackText?: string;\r\n\r\n    @property(AdaptiveCard.speakProperty)\r\n    speak?: string;\r\n\r\n    @property(AdaptiveCard.refreshProperty)\r\n    get refresh(): RefreshDefinition | undefined {\r\n        return this.getValue(AdaptiveCard.refreshProperty);\r\n    }\r\n\r\n    set refresh(value: RefreshDefinition | undefined) {\r\n        this.setValue(AdaptiveCard.refreshProperty, value);\r\n\r\n        if (value) {\r\n            value.parent = this;\r\n        }\r\n    }\r\n\r\n    @property(AdaptiveCard.authenticationProperty)\r\n    authentication?: Authentication;\r\n\r\n    //#endregion\r\n\r\n    private static _haveWarnedAboutNoMarkdownProcessing = false;\r\n\r\n    static onAnchorClicked?: (\r\n        element: CardElement,\r\n        anchor: HTMLAnchorElement,\r\n        ev?: MouseEvent\r\n    ) => boolean;\r\n    static onExecuteAction?: (action: Action) => void;\r\n    static onElementVisibilityChanged?: (element: CardElement) => void;\r\n    static onImageLoaded?: (image: Image) => void;\r\n    static onInlineCardExpanded?: (action: ShowCardAction, isExpanded: boolean) => void;\r\n    static onInputValueChanged?: (input: Input) => void;\r\n    static onCarouselEvent?: (carouselEvent: CarouselEvent) => void;\r\n    static onProcessMarkdown?: (text: string, result: IMarkdownProcessingResult) => void;\r\n    static onDisplayOverflowActionMenu?: (\r\n        actions: readonly Action[],\r\n        target?: HTMLElement\r\n    ) => boolean;\r\n    static onRenderOverflowActions?: (\r\n        actions: readonly Action[],\r\n        isRootLevelActions: boolean\r\n    ) => boolean;\r\n\r\n    static get processMarkdown(): (text: string) => string {\r\n        throw new Error(Strings.errors.processMarkdownEventRemoved());\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/naming-convention\r\n    static set processMarkdown(_value: (text: string) => string) {\r\n        throw new Error(Strings.errors.processMarkdownEventRemoved());\r\n    }\r\n\r\n    static applyMarkdown(text: string): IMarkdownProcessingResult {\r\n        const result: IMarkdownProcessingResult = {\r\n            didProcess: false\r\n        };\r\n\r\n        if (AdaptiveCard.onProcessMarkdown) {\r\n            AdaptiveCard.onProcessMarkdown(text, result);\r\n        } else if ((<any>window).markdownit) {\r\n            // Check for markdownit\r\n            const markdownIt: any = (<any>window).markdownit;\r\n            result.outputHtml = markdownIt().render(text);\r\n            result.didProcess = true;\r\n        } else if (!AdaptiveCard._haveWarnedAboutNoMarkdownProcessing) {\r\n            // eslint-disable-next-line no-console\r\n            console.warn(Strings.errors.markdownProcessingNotEnabled);\r\n            AdaptiveCard._haveWarnedAboutNoMarkdownProcessing = true;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private _fallbackCard?: AdaptiveCard;\r\n\r\n    private isVersionSupported(): boolean {\r\n        if (this.bypassVersionCheck) {\r\n            return true;\r\n        } else {\r\n            const unsupportedVersion: boolean =\r\n                !this.version ||\r\n                !this.version.isValid ||\r\n                this.maxVersion.major < this.version.major ||\r\n                (this.maxVersion.major === this.version.major &&\r\n                    this.maxVersion.minor < this.version.minor);\r\n\r\n            return !unsupportedVersion;\r\n        }\r\n    }\r\n\r\n    protected getDefaultSerializationContext(): BaseSerializationContext {\r\n        return new SerializationContext(this.version);\r\n    }\r\n\r\n    protected getItemsCollectionPropertyName(): string {\r\n        return \"body\";\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        this._fallbackCard = undefined;\r\n\r\n        const fallbackElement = context.parseElement(\r\n            undefined,\r\n            source[\"fallback\"],\r\n            this.forbiddenChildElements(),\r\n            !this.isDesignMode()\r\n        );\r\n\r\n        if (fallbackElement) {\r\n            this._fallbackCard = new AdaptiveCard();\r\n            this._fallbackCard.addItem(fallbackElement);\r\n        }\r\n\r\n        super.internalParse(source, context);\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        this.setValue(AdaptiveCard.versionProperty, context.targetVersion);\r\n\r\n        super.internalToJSON(target, context);\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        const renderedElement = super.internalRender();\r\n\r\n        if (GlobalSettings.useAdvancedCardBottomTruncation && renderedElement) {\r\n            // Unlike containers, the root card element should be allowed to\r\n            // be shorter than its content (otherwise the overflow truncation\r\n            // logic would never get triggered)\r\n            renderedElement.style.removeProperty(\"minHeight\");\r\n        }\r\n\r\n        return renderedElement;\r\n    }\r\n\r\n    protected getHasBackground(ignoreBackgroundImages: boolean = false): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected getDefaultPadding(): PaddingDefinition {\r\n        return new PaddingDefinition(\r\n            Enums.Spacing.Padding,\r\n            Enums.Spacing.Padding,\r\n            Enums.Spacing.Padding,\r\n            Enums.Spacing.Padding\r\n        );\r\n    }\r\n\r\n    protected shouldSerialize(_context: SerializationContext): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get renderIfEmpty(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get bypassVersionCheck(): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected get allowCustomStyle() {\r\n        return this.hostConfig.adaptiveCard && this.hostConfig.adaptiveCard.allowCustomStyle;\r\n    }\r\n\r\n    protected get hasBackground(): boolean {\r\n        return true;\r\n    }\r\n\r\n    onAnchorClicked?: (element: CardElement, anchor: HTMLAnchorElement, ev?: MouseEvent) => boolean;\r\n    onExecuteAction?: (action: Action) => void;\r\n    onElementVisibilityChanged?: (element: CardElement) => void;\r\n    onImageLoaded?: (image: Image) => void;\r\n    onInlineCardExpanded?: (action: ShowCardAction, isExpanded: boolean) => void;\r\n    onInputValueChanged?: (input: Input) => void;\r\n    onCarouselEvent?: (carouselEvent: CarouselEvent) => void;\r\n    onDisplayOverflowActionMenu?: (actions: readonly Action[], target?: HTMLElement) => boolean;\r\n    onRenderOverflowActions?: (actions: readonly Action[], isRootLevelActions: boolean) => boolean;\r\n\r\n    designMode: boolean = false;\r\n\r\n    getJsonTypeName(): string {\r\n        return \"AdaptiveCard\";\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        super.internalValidateProperties(context);\r\n\r\n        if (this.getValue(CardElement.typeNameProperty) !== \"AdaptiveCard\") {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.MissingCardType,\r\n                Strings.errors.invalidCardType()\r\n            );\r\n        }\r\n\r\n        if (!this.bypassVersionCheck && !this.version) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.PropertyCantBeNull,\r\n                Strings.errors.propertyMustBeSet(\"version\")\r\n            );\r\n        } else if (!this.isVersionSupported()) {\r\n            context.addFailure(\r\n                this,\r\n                Enums.ValidationEvent.UnsupportedCardVersion,\r\n                Strings.errors.unsupportedCardVersion(\r\n                    this.version.toString(),\r\n                    this.maxVersion.toString()\r\n                )\r\n            );\r\n        }\r\n    }\r\n\r\n    render(target?: HTMLElement): HTMLElement | undefined {\r\n        let renderedCard: HTMLElement | undefined;\r\n\r\n        if (this.shouldFallback() && this._fallbackCard) {\r\n            this._fallbackCard.hostConfig = this.hostConfig;\r\n\r\n            renderedCard = this._fallbackCard.render();\r\n        } else {\r\n            renderedCard = super.render();\r\n\r\n            if (renderedCard) {\r\n                renderedCard.classList.add(this.hostConfig.makeCssClassName(\"ac-adaptiveCard\"));\r\n\r\n                // Having a tabIndex on the root container for a card can mess up accessibility in some scenarios.\r\n                // However, we've shipped this behavior before, and so can't just turn it off in a point release. For\r\n                // now, to unblock accessibility scenarios for our customers, we've got an option to turn it off. In a\r\n                // future release, we should strongly consider flipping the default such that we *don't* emit a tabIndex\r\n                // by default.\r\n                if (GlobalSettings.setTabIndexAtCardRoot) {\r\n                    renderedCard.tabIndex = 0;\r\n                }\r\n\r\n                if (this.speak) {\r\n                    renderedCard.setAttribute(\"aria-label\", this.speak);\r\n                }\r\n\r\n                renderedCard.onmouseenter = (ev: MouseEvent) => {\r\n                    this.updateInputsVisualState(true /* hover */);\r\n                };\r\n\r\n                renderedCard.onmouseleave = (ev: MouseEvent) => {\r\n                    this.updateInputsVisualState(false /* hover */);\r\n                };\r\n\r\n                this.getRootElement().updateActionsEnabledState();\r\n            }\r\n        }\r\n\r\n        if (target) {\r\n            Utils.appendChild(target, renderedCard);\r\n\r\n            this.updateLayout();\r\n        }\r\n\r\n        const inputElements = this.getAllInputs();\r\n        document.onclick = (event) => {\r\n            inputElements.forEach((input) => {\r\n                if (\r\n                    input instanceof ChoiceSetInput &&\r\n                    !input.renderedElement?.contains(event.target as Node)\r\n                ) {\r\n                    input\r\n                        .getDropdownElement()\r\n                        ?.classList.remove(\r\n                            this.hostConfig.makeCssClassName(\r\n                                \"ac-choiceSetInput-filtered-dropdown-open\"\r\n                            )\r\n                        );\r\n                }\r\n            });\r\n        };\r\n\r\n        return renderedCard;\r\n    }\r\n\r\n    updateLayout(processChildren: boolean = true) {\r\n        super.updateLayout(processChildren);\r\n\r\n        if (GlobalSettings.useAdvancedCardBottomTruncation && this.isDisplayed()) {\r\n            const padding = this.hostConfig.getEffectiveSpacing(Enums.Spacing.Default);\r\n\r\n            // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n            this[\"handleOverflow\"](this.renderedElement!.offsetHeight - padding);\r\n        }\r\n    }\r\n\r\n    shouldFallback(): boolean {\r\n        return super.shouldFallback() || !this.isVersionSupported();\r\n    }\r\n\r\n    get hasVisibleSeparator(): boolean {\r\n        return false;\r\n    }\r\n}\r\n\r\nclass InlineAdaptiveCard extends AdaptiveCard {\r\n    //#region Schema\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"InlineAdaptiveCard\";\r\n    }\r\n\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        schema.remove(AdaptiveCard.$schemaProperty, AdaptiveCard.versionProperty);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    protected getDefaultPadding(): PaddingDefinition {\r\n        return new PaddingDefinition(\r\n            this.suppressStyle ? Enums.Spacing.None : Enums.Spacing.Padding,\r\n            Enums.Spacing.Padding,\r\n            this.suppressStyle ? Enums.Spacing.None : Enums.Spacing.Padding,\r\n            Enums.Spacing.Padding\r\n        );\r\n    }\r\n\r\n    protected get bypassVersionCheck(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected get defaultStyle(): string {\r\n        if (this.suppressStyle) {\r\n            return Enums.ContainerStyle.Default;\r\n        } else {\r\n            return this.hostConfig.actions.showCard.style\r\n                ? this.hostConfig.actions.showCard.style\r\n                : Enums.ContainerStyle.Emphasis;\r\n        }\r\n    }\r\n\r\n    suppressStyle: boolean = false;\r\n\r\n    render(target?: HTMLElement): HTMLElement | undefined {\r\n        const renderedCard = super.render(target);\r\n\r\n        if (renderedCard) {\r\n            renderedCard.setAttribute(\"aria-live\", \"polite\");\r\n            renderedCard.removeAttribute(\"tabindex\");\r\n        }\r\n\r\n        return renderedCard;\r\n    }\r\n}\r\n\r\nexport class SerializationContext extends BaseSerializationContext {\r\n    private _elementRegistry?: CardObjectRegistry<CardElement>;\r\n    private _actionRegistry?: CardObjectRegistry<Action>;\r\n\r\n    private _forbiddenTypes: Set<string> = new Set<string>();\r\n    private internalParseCardObject<T extends CardObject>(\r\n        parent: CardElement | undefined,\r\n        source: any,\r\n        forbiddenTypes: Set<string>,\r\n        allowFallback: boolean,\r\n        createInstanceCallback: (typeName: string | undefined) => T | undefined,\r\n        logParseEvent: (typeName: string | undefined, errorType: Enums.TypeErrorType) => void\r\n    ): T | undefined {\r\n        let result: T | undefined = undefined;\r\n\r\n        if (source && typeof source === \"object\") {\r\n            const oldForbiddenTypes = new Set<string>();\r\n            this._forbiddenTypes.forEach((type) => {\r\n                oldForbiddenTypes.add(type);\r\n            });\r\n            forbiddenTypes.forEach((type) => {\r\n                this._forbiddenTypes.add(type);\r\n            });\r\n\r\n            const typeName = Utils.parseString(source[\"type\"]);\r\n\r\n            if (typeName && this._forbiddenTypes.has(typeName)) {\r\n                logParseEvent(typeName, Enums.TypeErrorType.ForbiddenType);\r\n            } else {\r\n                let tryToFallback = false;\r\n\r\n                result = createInstanceCallback(typeName);\r\n\r\n                if (!result) {\r\n                    tryToFallback = GlobalSettings.enableFallback && allowFallback;\r\n\r\n                    logParseEvent(typeName, Enums.TypeErrorType.UnknownType);\r\n                } else {\r\n                    result.setParent(parent);\r\n                    result.parse(source, this);\r\n\r\n                    tryToFallback =\r\n                        GlobalSettings.enableFallback && allowFallback && result.shouldFallback();\r\n                }\r\n\r\n                if (tryToFallback) {\r\n                    const fallback = source[\"fallback\"];\r\n\r\n                    if (!fallback && parent) {\r\n                        parent.setShouldFallback(true);\r\n                    }\r\n                    if (typeof fallback === \"string\" && fallback.toLowerCase() === \"drop\") {\r\n                        result = undefined;\r\n                    } else if (typeof fallback === \"object\") {\r\n                        result = this.internalParseCardObject<T>(\r\n                            parent,\r\n                            fallback,\r\n                            forbiddenTypes,\r\n                            true,\r\n                            createInstanceCallback,\r\n                            logParseEvent\r\n                        );\r\n                    }\r\n                }\r\n            }\r\n\r\n            this._forbiddenTypes = oldForbiddenTypes;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    protected cardObjectParsed(o: SerializableObject, source: any) {\r\n        if (o instanceof Action && this.onParseAction) {\r\n            this.onParseAction(o, source, this);\r\n        } else if (o instanceof CardElement && this.onParseElement) {\r\n            this.onParseElement(o, source, this);\r\n        }\r\n    }\r\n\r\n    onParseAction?: (action: Action, source: any, context: SerializationContext) => void;\r\n    onParseElement?: (element: CardElement, source: any, context: SerializationContext) => void;\r\n\r\n    shouldSerialize(o: SerializableObject): boolean {\r\n        if (o instanceof Action) {\r\n            return this.actionRegistry.findByName(o.getJsonTypeName()) !== undefined;\r\n        } else if (o instanceof CardElement) {\r\n            return this.elementRegistry.findByName(o.getJsonTypeName()) !== undefined;\r\n        } else {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    parseCardObject<T extends CardObject>(\r\n        parent: CardElement | undefined,\r\n        source: any,\r\n        forbiddenTypeNames: string[],\r\n        allowFallback: boolean,\r\n        createInstanceCallback: (typeName: string) => T | undefined,\r\n        logParseEvent: (typeName: string, errorType: Enums.TypeErrorType) => void\r\n    ): T | undefined {\r\n        const forbiddenTypes = new Set<string>(forbiddenTypeNames);\r\n        const result = this.internalParseCardObject(\r\n            parent,\r\n            source,\r\n            forbiddenTypes,\r\n            allowFallback,\r\n            createInstanceCallback,\r\n            logParseEvent\r\n        );\r\n\r\n        if (result !== undefined) {\r\n            this.cardObjectParsed(result, source);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    parseElement(\r\n        parent: CardElement | undefined,\r\n        source: any,\r\n        forbiddenTypes: string[],\r\n        allowFallback: boolean\r\n    ): CardElement | undefined {\r\n        return this.parseCardObject<CardElement>(\r\n            parent,\r\n            source,\r\n            forbiddenTypes,\r\n            allowFallback,\r\n            (typeName: string) => {\r\n                return this.elementRegistry.createInstance(typeName, this.targetVersion);\r\n            },\r\n            (typeName: string, errorType: Enums.TypeErrorType) => {\r\n                if (errorType === Enums.TypeErrorType.UnknownType) {\r\n                    this.logParseEvent(\r\n                        undefined,\r\n                        Enums.ValidationEvent.UnknownElementType,\r\n                        Strings.errors.unknownElementType(typeName)\r\n                    );\r\n                } else {\r\n                    this.logParseEvent(\r\n                        undefined,\r\n                        Enums.ValidationEvent.ElementTypeNotAllowed,\r\n                        Strings.errors.elementTypeNotAllowed(typeName)\r\n                    );\r\n                }\r\n            }\r\n        );\r\n    }\r\n\r\n    parseAction(\r\n        parent: CardElement,\r\n        source: any,\r\n        forbiddenActionTypes: string[],\r\n        allowFallback: boolean\r\n    ): Action | undefined {\r\n        return this.parseCardObject<Action>(\r\n            parent,\r\n            source,\r\n            forbiddenActionTypes,\r\n            allowFallback,\r\n            (typeName: string) => {\r\n                return this.actionRegistry.createInstance(typeName, this.targetVersion);\r\n            },\r\n            (typeName: string, errorType: Enums.TypeErrorType) => {\r\n                if (errorType === Enums.TypeErrorType.UnknownType) {\r\n                    this.logParseEvent(\r\n                        undefined,\r\n                        Enums.ValidationEvent.UnknownActionType,\r\n                        Strings.errors.unknownActionType(typeName)\r\n                    );\r\n                } else {\r\n                    this.logParseEvent(\r\n                        undefined,\r\n                        Enums.ValidationEvent.ActionTypeNotAllowed,\r\n                        Strings.errors.actionTypeNotAllowed(typeName)\r\n                    );\r\n                }\r\n            }\r\n        );\r\n    }\r\n\r\n    get elementRegistry(): CardObjectRegistry<CardElement> {\r\n        return this._elementRegistry ?? GlobalRegistry.elements;\r\n    }\r\n\r\n    // Not using a property setter here because the setter should accept \"undefined\"\r\n    // whereas the getter should never return undefined.\r\n    setElementRegistry(value: CardObjectRegistry<CardElement> | undefined) {\r\n        this._elementRegistry = value;\r\n    }\r\n\r\n    get actionRegistry(): CardObjectRegistry<Action> {\r\n        return this._actionRegistry ?? GlobalRegistry.actions;\r\n    }\r\n\r\n    // Not using a property setter here because the setter should accept \"undefined\"\r\n    // whereas the getter should never return undefined.\r\n    setActionRegistry(value: CardObjectRegistry<Action> | undefined) {\r\n        this._actionRegistry = value;\r\n    }\r\n}\r\n\r\nGlobalRegistry.defaultElements.register(\"Container\", Container);\r\nGlobalRegistry.defaultElements.register(\"TextBlock\", TextBlock);\r\nGlobalRegistry.defaultElements.register(\"RichTextBlock\", RichTextBlock, Versions.v1_2);\r\nGlobalRegistry.defaultElements.register(\"TextRun\", TextRun, Versions.v1_2);\r\nGlobalRegistry.defaultElements.register(\"Image\", Image);\r\nGlobalRegistry.defaultElements.register(\"ImageSet\", ImageSet);\r\nGlobalRegistry.defaultElements.register(\"Media\", Media, Versions.v1_1);\r\nGlobalRegistry.defaultElements.register(\"FactSet\", FactSet);\r\nGlobalRegistry.defaultElements.register(\"ColumnSet\", ColumnSet);\r\nGlobalRegistry.defaultElements.register(\"ActionSet\", ActionSet, Versions.v1_2);\r\nGlobalRegistry.defaultElements.register(\"Input.Text\", TextInput);\r\nGlobalRegistry.defaultElements.register(\"Input.Date\", DateInput);\r\nGlobalRegistry.defaultElements.register(\"Input.Time\", TimeInput);\r\nGlobalRegistry.defaultElements.register(\"Input.Number\", NumberInput);\r\nGlobalRegistry.defaultElements.register(\"Input.ChoiceSet\", ChoiceSetInput);\r\nGlobalRegistry.defaultElements.register(\"Input.Toggle\", ToggleInput);\r\n\r\nGlobalRegistry.defaultActions.register(OpenUrlAction.JsonTypeName, OpenUrlAction);\r\nGlobalRegistry.defaultActions.register(SubmitAction.JsonTypeName, SubmitAction);\r\nGlobalRegistry.defaultActions.register(ShowCardAction.JsonTypeName, ShowCardAction);\r\nGlobalRegistry.defaultActions.register(\r\n    ToggleVisibilityAction.JsonTypeName,\r\n    ToggleVisibilityAction,\r\n    Versions.v1_2\r\n);\r\nGlobalRegistry.defaultActions.register(ExecuteAction.JsonTypeName, ExecuteAction, Versions.v1_4);\r\n"],"sourceRoot":"","x_microsoft_symbol_client_key":"360b0c4988bd9ea83de5d6e3ff0d462ed634b07e71243a1908d1d794a8a57148"}