diff --git a/.gitignore b/.gitignore
index c3ff0734ed..f1431f8117 100644
--- a/.gitignore
+++ b/.gitignore
@@ -303,6 +303,22 @@ twp.json
# Android
**/.cxx/*
+### CMake ###
+CMakeLists.txt.user
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+_deps
+
+### CMake Patch ###
+# External projects
+*-prefix/
# Image folder
source/qml/Samples/QmlVisualizer/Images
diff --git a/.pipelines/android-release.yml b/.pipelines/android-release.yml
index 97fbcdd1a8..0860159021 100644
--- a/.pipelines/android-release.yml
+++ b/.pipelines/android-release.yml
@@ -21,6 +21,7 @@ parameters:
type: string
default: beta.1
+
variables:
- group: AdaptiveCards-KVLink
- name: AC_FULL_VERSION_SPECIFIED
diff --git a/.pipelines/clang-format-ci.yml b/.pipelines/clang-format-ci.yml
index ce02de6555..7c4e6cb52c 100644
--- a/.pipelines/clang-format-ci.yml
+++ b/.pipelines/clang-format-ci.yml
@@ -11,7 +11,7 @@ pool:
steps:
- task: NodeTool@0
inputs:
- versionSpec: '14.x'
+ versionSpec: '18.x'
displayName: 'Install Node.js'
- script: |
diff --git a/.pipelines/js-ci.yml b/.pipelines/js-ci.yml
index 5c922a67d9..cd3c187d78 100644
--- a/.pipelines/js-ci.yml
+++ b/.pipelines/js-ci.yml
@@ -41,6 +41,17 @@ parameters:
- unit-tests
steps:
+- task: NodeTool@0
+ name: NodeTool1
+ displayName: Use Node 14.x
+ inputs:
+ versionSpec: 14.x
+
+- bash: |
+ npm install -g npm@8.11.0
+ workingDirectory: source/nodejs
+ displayName: 'Bash - npm install -g npm 8.11.0'
+
- bash: |
npm ci
npx lerna bootstrap --ci
diff --git a/.pipelines/templates/ios-build-template.yml b/.pipelines/templates/ios-build-template.yml
index 8ae3f24c10..b3274896a5 100644
--- a/.pipelines/templates/ios-build-template.yml
+++ b/.pipelines/templates/ios-build-template.yml
@@ -28,10 +28,11 @@ steps:
actions: 'build'
xcWorkspacePath: 'source/ios/AdaptiveCards/AdaptiveCards.xcworkspace'
scheme: 'ADCIOSVisualizer'
- xcodeVersion: '12'
+ xcodeVersion: 'default'
packageApp: ${{ parameters.packageApp }}
signingOption: ${{ parameters.signingOption }}
sdk: ${{ parameters.sdk }}
configuration: ${{ parameters.configuration }}
destinationPlatformOption: 'iOS'
destinationSimulators: 'iPhone 12'
+ useXcpretty: false
diff --git a/.pipelines/templates/ios-install-cert-template.yml b/.pipelines/templates/ios-install-cert-template.yml
index 1e5aa0e6dc..9dad8022e4 100644
--- a/.pipelines/templates/ios-install-cert-template.yml
+++ b/.pipelines/templates/ios-install-cert-template.yml
@@ -10,7 +10,7 @@ steps:
displayName: 'Install Provisioning Profile'
inputs:
provisioningProfileLocation: 'secureFiles'
- provProfileSecureFile: '025544d3-4a64-49d0-8e76-29f3ddd185ae.mobileprovision'
+ provProfileSecureFile: '983e1796-30e0-48a7-9453-c305e1b94259.mobileprovision'
- template: ios-build-template.yml
parameters:
diff --git a/.pipelines/templates/uwp-download-secure-files.yml b/.pipelines/templates/uwp-download-secure-files.yml
new file mode 100644
index 0000000000..53cb772f73
--- /dev/null
+++ b/.pipelines/templates/uwp-download-secure-files.yml
@@ -0,0 +1,40 @@
+steps:
+ - task: DownloadSecureFile@1
+ name: acTestAppTempKey
+ displayName: 'Download TestApp Temporary Key'
+ inputs:
+ secureFile: 'AdaptiveCardTestApp_TemporaryKey.pfx'
+
+ - task: DownloadSecureFile@1
+ name: perfAppTempKey
+ displayName: 'Download PerfApp Temporary Key'
+ inputs:
+ secureFile: 'PerfApp_TemporaryKey.pfx'
+
+ - task: DownloadSecureFile@1
+ name: uwpUiTestAppTempKey
+ displayName: 'Download UWPUITestApp Temporary Key'
+ inputs:
+ secureFile: 'UWPUITestApp_TemporaryKey.pfx'
+
+ - task: DownloadSecureFile@1
+ name: uwpUnitTestsTempKey
+ displayName: 'Download UWPUnitTests Temporary Key'
+ inputs:
+ secureFile: 'UWPUnitTests_TemporaryKey.pfx'
+
+ - task: DownloadSecureFile@1
+ name: acVisualizerTempKey
+ displayName: 'Download AdaptiveCardVisualizer Temporary Key'
+ inputs:
+ secureFile: 'AdaptiveCardVisualizer_TemporaryKey.pfx'
+
+ - task: PowerShell@2
+ inputs:
+ targetType: 'inline'
+ script: |
+ Move-Item -Path $(acTestAppTempKey.secureFilePath) -Destination '$(Build.SourcesDirectory)/source/uwp/AdaptiveCardTestApp/AdaptiveCardTestApp_TemporaryKey.pfx'
+ Move-Item -Path $(perfAppTempKey.secureFilePath) -Destination '$(Build.SourcesDirectory)/source/uwp/PerfApp/PerfApp_TemporaryKey.pfx'
+ Move-Item -Path $(uwpUiTestAppTempKey.secureFilePath) -Destination '$(Build.SourcesDirectory)/source/uwp/UWPUITestApp/UWPUITestApp_TemporaryKey.pfx'
+ Move-Item -Path $(uwpUnitTestsTempKey.secureFilePath) -Destination '$(Build.SourcesDirectory)/source/uwp/UWPUnitTests/UWPUnitTests_TemporaryKey.pfx'
+ Move-Item -Path $(acVisualizerTempKey.secureFilePath) -Destination '$(Build.SourcesDirectory)/source/uwp/Visualizer/AdaptiveCardVisualizer_TemporaryKey.pfx'
\ No newline at end of file
diff --git a/.pipelines/uwp-ci.yml b/.pipelines/uwp-ci.yml
index 086a4a2662..367a7d6b76 100644
--- a/.pipelines/uwp-ci.yml
+++ b/.pipelines/uwp-ci.yml
@@ -25,6 +25,8 @@ pool:
vmImage: windows-2019
steps:
+- template: templates/uwp-download-secure-files.yml
+
- task: NuGetToolInstaller@0
name: NuGetToolInstaller1
displayName: Use NuGet 5.x
@@ -37,6 +39,7 @@ steps:
inputs:
solution: $(solution)
selectOrConfig: config
+ nugetConfigPath: source/nuget.config
verbosity: '-'
- task: VSBuild@1
diff --git a/.pipelines/winui3-ci.yml b/.pipelines/winui3-ci.yml
new file mode 100644
index 0000000000..cfd40e4969
--- /dev/null
+++ b/.pipelines/winui3-ci.yml
@@ -0,0 +1,57 @@
+name: $(Year:yy).$(Month).$(DayOfMonth).$(rev:r)
+
+pr:
+ branches:
+ include:
+ - main
+ - feature/*
+ - release/*
+
+trigger:
+ branches:
+ include:
+ - main
+ - feature/*
+ - release/*
+ batch: True
+
+variables:
+ solution: source/uwp/winui3/AdaptiveCards.sln
+ buildConfiguration: Release
+ buildPlatform: x64
+
+pool:
+ name: Azure Pipelines
+ vmImage: windows-2019
+
+steps:
+- task: NuGetToolInstaller@1
+ name: NuGetToolInstaller1
+ displayName: Use NuGet 6.4.x
+ inputs:
+ versionSpec: 6.4.x
+
+- task: NuGetAuthenticate@1
+ name: NuGetAuthenticate2
+
+- task: NuGetRestore@1
+ name: NuGetCommand3
+ displayName: NuGet restore
+ inputs:
+ solution: $(solution)
+ selectOrConfig: config
+ nugetConfigPath: source/uwp/winui3/nuget.config
+ verbosity: '-'
+
+- task: VSBuild@1
+ name: VSBuild4
+ displayName: Build solution
+ inputs:
+ solution: $(solution)
+ vsVersion: 16.0
+ platform: $(buildPlatform)
+ configuration: $(buildConfiguration)
+ maximumCpuCount: true
+ createLogFile: true
+ logFileVerbosity: detailed
+
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3597a2695d..acae131dc2 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -11,5 +11,77 @@
"runningStatusMessage": "Updating specs...",
"finishStatusMessage": "Updated specs!"
}
- ]
+ ],
+ "files.associations": {
+ "__debug": "cpp",
+ "__locale": "cpp",
+ "atomic": "cpp",
+ "bitset": "cpp",
+ "functional": "cpp",
+ "iterator": "cpp",
+ "memory_resource": "cpp",
+ "string": "cpp",
+ "initializer_list": "cpp",
+ "ios": "cpp",
+ "iosfwd": "cpp",
+ "istream": "cpp",
+ "limits": "cpp",
+ "locale": "cpp",
+ "new": "cpp",
+ "ostream": "cpp",
+ "sstream": "cpp",
+ "streambuf": "cpp",
+ "typeinfo": "cpp",
+ "vector": "cpp",
+ "__bit_reference": "cpp",
+ "__config": "cpp",
+ "__errc": "cpp",
+ "__hash_table": "cpp",
+ "__mutex_base": "cpp",
+ "__node_handle": "cpp",
+ "__split_buffer": "cpp",
+ "__threading_support": "cpp",
+ "__tree": "cpp",
+ "__verbose_abort": "cpp",
+ "array": "cpp",
+ "cctype": "cpp",
+ "charconv": "cpp",
+ "clocale": "cpp",
+ "cmath": "cpp",
+ "codecvt": "cpp",
+ "complex": "cpp",
+ "cstdarg": "cpp",
+ "cstddef": "cpp",
+ "cstdint": "cpp",
+ "cstdio": "cpp",
+ "cstdlib": "cpp",
+ "cstring": "cpp",
+ "ctime": "cpp",
+ "cwchar": "cpp",
+ "cwctype": "cpp",
+ "deque": "cpp",
+ "exception": "cpp",
+ "fstream": "cpp",
+ "iomanip": "cpp",
+ "iostream": "cpp",
+ "list": "cpp",
+ "map": "cpp",
+ "mutex": "cpp",
+ "optional": "cpp",
+ "ratio": "cpp",
+ "regex": "cpp",
+ "set": "cpp",
+ "stack": "cpp",
+ "stdexcept": "cpp",
+ "string_view": "cpp",
+ "system_error": "cpp",
+ "thread": "cpp",
+ "tuple": "cpp",
+ "typeindex": "cpp",
+ "unordered_map": "cpp",
+ "unordered_set": "cpp",
+ "variant": "cpp",
+ "algorithm": "cpp",
+ "__memory": "cpp"
+ }
}
diff --git a/README.md b/README.md
index f796c53cd9..4b733217fe 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,26 @@ PS: Latest Build Status is against `main` branch.
| iOS | [![CocoaPods](https://img.shields.io/cocoapods/v/AdaptiveCards.svg)](https://cocoapods.org/pods/AdaptiveCards) | [Source](https://github.com/Microsoft/AdaptiveCards/tree/main/source/ios) | [Docs](https://docs.microsoft.com/en-us/adaptive-cards/display/libraries/ios) | ![Build status](https://img.shields.io/azure-devops/build/Microsoft/56cf629e-8f3a-4412-acbc-bf69366c552c/37917/main.svg) |
| Card Designer | [![npm install](https://img.shields.io/npm/v/adaptivecards-designer.svg)](https://www.npmjs.com/package/adaptivecards-designer) | [Source](https://github.com/Microsoft/AdaptiveCards/tree/main/source/nodejs/adaptivecards-designer)| [Docs](https://www.npmjs.com/package/adaptivecards-designer) | ![Build Status](https://img.shields.io/azure-devops/build/Microsoft/56cf629e-8f3a-4412-acbc-bf69366c552c/20564/main.svg) |
+## Release schedule
+
+We release the Adaptive Cards products on the third week of each month, assuming there are updates. Please see the table below for the most recent and upcoming release dates.
+
+|Product|Last Release Date|Next Release Date|
+|---|---|---|
+|Website|4/21/2023|7/17/2023|
+|Designer|1/31/2023|7/17/2023|
+|JavaScript Renderer|6/23/2023|7/17/2023|
+|JavaScript Renderer Beta|4/9/2023|7/17/2023|
+|JavaScript Templating|9/16/2022|7/17/2023|
+|XAML Renderer|3/23/2023|7/17/2023|
+|XAML Object Model|3/22/2023|7/17/2023|
+|WinUI 3 Renderer|6/29/2023|7/17/2023|
+|WinUI 3 Object Model|5/12/2023|7/17/2023|
+|.NET Renderer|12/1/2022|7/17/2023|
+|.NET Templating|3/7/2023|7/17/2023|
+
+**Note:** These release dates are subject to change based on availability and active development of each product.
+
## Code format
We require the C++ code inside this project to follow the clang-format. If you change them, please make sure your changed files are formatted correctly.
diff --git a/custom.props b/custom.props
index a24ca7b33c..5ecc64a300 100644
--- a/custom.props
+++ b/custom.props
@@ -2,9 +2,9 @@
1
- 1
+ 2
- 1.1.0
+ 1.2.0
AdaptiveCards
diff --git a/samples/ConsolidatedElementSamples/Input.Toggle.json b/samples/ConsolidatedElementSamples/Input.Toggle.json
index 13516a2784..2a39d3d32c 100644
--- a/samples/ConsolidatedElementSamples/Input.Toggle.json
+++ b/samples/ConsolidatedElementSamples/Input.Toggle.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Toggle",
diff --git a/samples/Templates/Scenarios/ActivityUpdate.template.json b/samples/Templates/Scenarios/ActivityUpdate.template.json
index c76644bded..76c857a910 100644
--- a/samples/Templates/Scenarios/ActivityUpdate.template.json
+++ b/samples/Templates/Scenarios/ActivityUpdate.template.json
@@ -93,7 +93,8 @@
{
"type": "Action.OpenUrl",
"title": "View",
- "url": "${viewUrl}"
+ "url": "${viewUrl}",
+ "role": "button"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
diff --git a/samples/Templates/Scenarios/FlightDetails.template.json b/samples/Templates/Scenarios/FlightDetails.template.json
index 0fa14ed6d8..0b96a7b89d 100644
--- a/samples/Templates/Scenarios/FlightDetails.template.json
+++ b/samples/Templates/Scenarios/FlightDetails.template.json
@@ -86,20 +86,7 @@
"wrap": true
}
],
- "width": "auto"
- },
- {
- "type": "Column",
- "verticalContentAlignment": "center",
- "items": [
- {
- "type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/graydot2x2.png",
- "width": "10000px",
- "height": "2px"
- }
- ],
- "width": "stretch"
+ "width": "1"
},
{
"type": "Column",
@@ -109,7 +96,8 @@
{
"type": "Image",
"url": "https://messagecardplayground.azurewebsites.net/assets/smallairplane.png",
- "height": "16px"
+ "height": "16px",
+ "altText": "Flight to"
}
],
"width": "auto"
@@ -126,7 +114,7 @@
"wrap": true
}
],
- "width": "auto"
+ "width": "1"
}
]
},
diff --git a/samples/Templates/Scenarios/FlightUpdateTable.template.json b/samples/Templates/Scenarios/FlightUpdateTable.template.json
index 4d770b502b..cb5e367510 100644
--- a/samples/Templates/Scenarios/FlightUpdateTable.template.json
+++ b/samples/Templates/Scenarios/FlightUpdateTable.template.json
@@ -71,64 +71,58 @@
"items": [
{
"type": "TextBlock",
- "text": "Passengers",
+ "text": "Flight",
"isSubtle": true,
"weight": "bolder",
- "wrap": true,
- "spacing": "none"
- },
- {
- "type": "TextBlock",
- "text": "${underName.name}",
- "spacing": "small",
"wrap": true
},
{
"type": "TextBlock",
- "text": "Jeremy Goldberg",
- "spacing": "small",
- "wrap": true
- },
- {
- "type": "TextBlock",
- "text": "Evan Litvak",
+ "text": "${reservationFor.flightNumber}",
"spacing": "small",
"wrap": true
}
]
},
- {
- "type": "TableCell"
- },
{
"type": "TableCell",
"items": [
{
"type": "TextBlock",
- "text": "Seat",
- "horizontalAlignment": "right",
+ "text": "Departs",
"isSubtle": true,
+ "horizontalAlignment": "center",
"weight": "bolder",
"wrap": true
},
{
"type": "TextBlock",
- "text": "14A",
- "horizontalAlignment": "right",
+ "text": "{{TIME(${string(reservationFor.departureTime)})}}",
+ "color": "attention",
+ "weight": "bolder",
+ "horizontalAlignment": "center",
"spacing": "small",
"wrap": true
- },
+ }
+ ]
+ },
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "14B",
+ "text": "Arrives",
+ "isSubtle": true,
"horizontalAlignment": "right",
- "spacing": "small",
+ "weight": "bolder",
"wrap": true
},
{
"type": "TextBlock",
- "text": "14C",
+ "text": "{{TIME(${string(reservationFor.arrivalTime)})}}",
+ "color": "attention",
"horizontalAlignment": "right",
+ "weight": "bolder",
"spacing": "small",
"wrap": true
}
@@ -144,58 +138,118 @@
"items": [
{
"type": "TextBlock",
- "text": "Flight",
+ "text": "Passengers",
+ "isSubtle": true,
+ "weight": "bolder",
+ "wrap": true,
+ "spacing": "none"
+ }
+ ]
+ },
+ {
+ "type": "TableCell"
+ },
+ {
+ "type": "TableCell",
+ "items": [
+ {
+ "type": "TextBlock",
+ "text": "Seat",
+ "horizontalAlignment": "right",
"isSubtle": true,
"weight": "bolder",
"wrap": true
- },
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "TableRow",
+ "cells": [
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "${reservationFor.flightNumber}",
+ "text": "${underName.name}",
"spacing": "small",
"wrap": true
}
]
},
+ {
+ "type": "TableCell"
+ },
{
"type": "TableCell",
"items": [
{
"type": "TextBlock",
- "text": "Departs",
- "isSubtle": true,
- "horizontalAlignment": "center",
- "weight": "bolder",
+ "text": "14A",
+ "horizontalAlignment": "right",
+ "spacing": "small",
"wrap": true
- },
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "TableRow",
+ "cells": [
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "{{TIME(${string(reservationFor.departureTime)})}}",
- "color": "attention",
- "weight": "bolder",
- "horizontalAlignment": "center",
+ "text": "Jeremy Goldberg",
"spacing": "small",
"wrap": true
}
]
},
+ {
+ "type": "TableCell"
+ },
{
"type": "TableCell",
"items": [
{
"type": "TextBlock",
- "text": "Arrives",
- "isSubtle": true,
+ "text": "14B",
"horizontalAlignment": "right",
- "weight": "bolder",
+ "spacing": "small",
"wrap": true
- },
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "TableRow",
+ "cells": [
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "{{TIME(${string(reservationFor.arrivalTime)})}}",
- "color": "attention",
+ "text": "Evan Litvak",
+ "spacing": "small",
+ "wrap": true
+ }
+ ]
+ },
+ {
+ "type": "TableCell"
+ },
+ {
+ "type": "TableCell",
+ "items": [
+ {
+ "type": "TextBlock",
+ "text": "14C",
"horizontalAlignment": "right",
- "weight": "bolder",
"spacing": "small",
"wrap": true
}
diff --git a/samples/Templates/Scenarios/InputsWithValidation.template.json b/samples/Templates/Scenarios/InputsWithValidation.template.json
index dafd589523..bbd59bdcb8 100644
--- a/samples/Templates/Scenarios/InputsWithValidation.template.json
+++ b/samples/Templates/Scenarios/InputsWithValidation.template.json
@@ -18,36 +18,41 @@
"style": "text",
"id": "SimpleVal",
"isRequired": true,
- "errorMessage": "Name is required"
+ "errorMessage": "Name is required",
+ "placeholder": "Enter your name"
},
{
"type": "Input.Text",
"label": "Homepage",
"style": "url",
- "id": "UrlVal"
+ "id": "UrlVal",
+ "placeholder": "Enter your homepage url"
},
{
"type": "Input.Text",
"label": "Email",
"style": "email",
- "id": "EmailVal"
+ "id": "EmailVal",
+ "placeholder": "Enter your email"
},
{
"type": "Input.Text",
"label": "Phone",
"style": "tel",
- "id": "TelVal"
+ "id": "TelVal",
+ "placeholder": "Enter your phone number"
},
{
"type": "Input.Text",
"label": "Comments",
"style": "text",
"isMultiline": true,
- "id": "MultiLineVal"
+ "id": "MultiLineVal",
+ "placeholder": "Enter any comments"
},
{
"type": "Input.Number",
- "label": "Quantity",
+ "label": "Quantity (Minimum -5, Maximum 5)",
"min": -5,
"max": 5,
"value": 1,
diff --git a/samples/Templates/Scenarios/WeatherLarge.template.json b/samples/Templates/Scenarios/WeatherLarge.template.json
index ba73ad1500..2df9c3d40c 100644
--- a/samples/Templates/Scenarios/WeatherLarge.template.json
+++ b/samples/Templates/Scenarios/WeatherLarge.template.json
@@ -99,7 +99,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
- "title": "View ${formatEpoch(sunrise_ts, 'dddd')}",
+ "title": "View ${formatEpoch(sunrise_ts, 'dddd')}, ${weather.description}. Highest temperature ${formatNumber(app_max_temp / 5 * 9 + 32, 0)} degrees. Lowest temperature ${formatNumber(app_min_temp / 5 * 9 + 32, 0)} degrees.",
"url": "https://www.microsoft.com"
}
}
diff --git a/samples/v1.0/Elements/Input.Time.json b/samples/v1.0/Elements/Input.Time.json
index 0a6c11f5f8..a77ad27e4d 100644
--- a/samples/v1.0/Elements/Input.Time.json
+++ b/samples/v1.0/Elements/Input.Time.json
@@ -3,12 +3,9 @@
"type": "AdaptiveCard",
"version": "1.0",
"body": [
- {
- "type": "TextBlock",
- "text": "What time do you want to meet?"
- },
{
"type": "Input.Time",
+ "label": "What time do you want to meet?",
"id": "time",
"min": "09:00",
"max": "17:00",
diff --git a/samples/v1.1/Elements/Column.SelectAction.json b/samples/v1.1/Elements/Column.SelectAction.json
index a393862b27..a9e5072807 100644
--- a/samples/v1.1/Elements/Column.SelectAction.json
+++ b/samples/v1.1/Elements/Column.SelectAction.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.1",
+ "version": "1.5",
"body": [
{
"type": "TextBlock",
diff --git a/samples/v1.1/Elements/ColumnSet.SelectAction.json b/samples/v1.1/Elements/ColumnSet.SelectAction.json
index cb0481b3e0..0e0efd5c9b 100644
--- a/samples/v1.1/Elements/ColumnSet.SelectAction.json
+++ b/samples/v1.1/Elements/ColumnSet.SelectAction.json
@@ -1,6 +1,6 @@
{
"type": "AdaptiveCard",
- "version": "1.1",
+ "version": "1.5",
"body": [
{
"type": "TextBlock",
diff --git a/samples/v1.1/Elements/Container.SelectAction.json b/samples/v1.1/Elements/Container.SelectAction.json
index ba8653bf15..fc1252e0c4 100644
--- a/samples/v1.1/Elements/Container.SelectAction.json
+++ b/samples/v1.1/Elements/Container.SelectAction.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.1",
+ "version": "1.5",
"body": [
{
"type": "Container",
diff --git a/samples/v1.2/Tests/RichTextBlock.TextRun.SelectActions.json b/samples/v1.2/Tests/RichTextBlock.TextRun.SelectActions.json
index 5602fee0df..68a892a2e6 100644
--- a/samples/v1.2/Tests/RichTextBlock.TextRun.SelectActions.json
+++ b/samples/v1.2/Tests/RichTextBlock.TextRun.SelectActions.json
@@ -1,6 +1,6 @@
{
"type": "AdaptiveCard",
- "version": "1.2",
+ "version": "1.5",
"body": [
{
"type": "TextBlock",
diff --git a/samples/v1.0/Elements/Action.Submit.json b/samples/v1.3/Elements/Action.Submit.json
similarity index 96%
rename from samples/v1.0/Elements/Action.Submit.json
rename to samples/v1.3/Elements/Action.Submit.json
index b746aae493..7fbf67b9e2 100644
--- a/samples/v1.0/Elements/Action.Submit.json
+++ b/samples/v1.3/Elements/Action.Submit.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "TextBlock",
diff --git a/samples/v1.3/Elements/Input.ChoiceSet.ErrorMessage.json b/samples/v1.3/Elements/Input.ChoiceSet.ErrorMessage.json
index b412524279..4d3c3d2e9a 100644
--- a/samples/v1.3/Elements/Input.ChoiceSet.ErrorMessage.json
+++ b/samples/v1.3/Elements/Input.ChoiceSet.ErrorMessage.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.ChoiceSet",
diff --git a/samples/v1.3/Elements/Input.ChoiceSet.Label.json b/samples/v1.3/Elements/Input.ChoiceSet.Label.json
index 8500e75d4f..05404002cd 100644
--- a/samples/v1.3/Elements/Input.ChoiceSet.Label.json
+++ b/samples/v1.3/Elements/Input.ChoiceSet.Label.json
@@ -1 +1,121 @@
-{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "Input.ChoiceSet",
"id": "input1",
"style": "compact",
"isMultiSelect": false,
"label": "Default Input.ChoiceSet label (compact)",
"choices": [
{
"title": "Option 1",
"value": "1"
},
{
"title": "Option 2",
"value": "2"
}
]
},
{
"type": "Input.ChoiceSet",
"id": "input2",
"style": "compact",
"isMultiSelect": false,
"label": "Required Input.ChoiceSet label (compact)",
"isRequired": true,
"errorMessage": "Required input",
"choices": [
{
"title": "Option 1",
"value": "1"
},
{
"title": "Option 2",
"value": "2"
}
]
},
{
"type": "Input.ChoiceSet",
"id": "input3",
"style": "expanded",
"isMultiSelect": false,
"label": "Default Input.ChoiceSet label (expanded)",
"choices": [
{
"title": "Option 1",
"value": "1"
},
{
"title": "Option 2",
"value": "2"
}
]
},
{
"type": "Input.ChoiceSet",
"id": "input4",
"style": "expanded",
"isMultiSelect": false,
"label": "Required Input.ChoiceSet label (expanded)",
"isRequired": true,
"errorMessage": "Required input",
"choices": [
{
"title": "Option 1",
"value": "1"
},
{
"title": "Option 2",
"value": "2"
}
]
},
{
"type": "Input.ChoiceSet",
"id": "input5",
"style": "expanded",
"isMultiSelect": true,
"label": "Default Input.ChoiceSet label (expanded, multiselect)",
"choices": [
{
"title": "Option 1",
"value": "1"
},
{
"title": "Option 2",
"value": "2"
}
]
},
{
"type": "Input.ChoiceSet",
"id": "input6",
"style": "expanded",
"isMultiSelect": true,
"isRequired": true,
"label": "Required Input.ChoiceSet label (expanded, multiselect)",
"errorMessage": "Required input",
"choices": [
{
"title": "Option 1",
"value": "1"
},
{
"title": "Option 2",
"value": "2"
}
]
}
],
"actions": [
{
"type": "Action.Submit",
"title": "OK"
}
]
}
\ No newline at end of file
+{
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.3",
+ "body": [
+ {
+ "type": "Input.ChoiceSet",
+ "id": "input1",
+ "style": "compact",
+ "isMultiSelect": false,
+ "label": "Default Input.ChoiceSet label (compact)",
+ "choices": [
+ {
+ "title": "Option 1",
+ "value": "1"
+ },
+ {
+ "title": "Option 2",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "type": "Input.ChoiceSet",
+ "id": "input2",
+ "style": "compact",
+ "isMultiSelect": false,
+ "label": "Required Input.ChoiceSet label (compact)",
+ "isRequired": true,
+ "errorMessage": "Required input",
+ "choices": [
+ {
+ "title": "Option 1",
+ "value": "1"
+ },
+ {
+ "title": "Option 2",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "type": "Input.ChoiceSet",
+ "id": "input3",
+ "style": "expanded",
+ "isMultiSelect": false,
+ "label": "Default Input.ChoiceSet label (expanded)",
+ "choices": [
+ {
+ "title": "Option 1",
+ "value": "1"
+ },
+ {
+ "title": "Option 2",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "type": "Input.ChoiceSet",
+ "id": "input4",
+ "style": "expanded",
+ "isMultiSelect": false,
+ "label": "Required Input.ChoiceSet label (expanded)",
+ "isRequired": true,
+ "errorMessage": "Required input",
+ "choices": [
+ {
+ "title": "Option 1",
+ "value": "1"
+ },
+ {
+ "title": "Option 2",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "type": "Input.ChoiceSet",
+ "id": "input5",
+ "style": "expanded",
+ "isMultiSelect": true,
+ "label": "Default Input.ChoiceSet label (expanded, multiselect)",
+ "choices": [
+ {
+ "title": "Option 1",
+ "value": "1"
+ },
+ {
+ "title": "Option 2",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "type": "Input.ChoiceSet",
+ "id": "input6",
+ "style": "expanded",
+ "isMultiSelect": true,
+ "isRequired": true,
+ "label": "Required Input.ChoiceSet label (expanded, multiselect)",
+ "errorMessage": "Required input",
+ "choices": [
+ {
+ "title": "Option 1",
+ "value": "1"
+ },
+ {
+ "title": "Option 2",
+ "value": "2"
+ }
+ ]
+ }
+ ],
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "OK"
+ }
+ ]
+}
diff --git a/samples/v1.0/Elements/Input.ChoiceSet.json b/samples/v1.3/Elements/Input.ChoiceSet.json
similarity index 98%
rename from samples/v1.0/Elements/Input.ChoiceSet.json
rename to samples/v1.3/Elements/Input.ChoiceSet.json
index 1b56256380..1064570496 100644
--- a/samples/v1.0/Elements/Input.ChoiceSet.json
+++ b/samples/v1.3/Elements/Input.ChoiceSet.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.ChoiceSet",
diff --git a/samples/v1.3/Elements/Input.Date.ErrorMessage.json b/samples/v1.3/Elements/Input.Date.ErrorMessage.json
index 7ebca0c382..3013066ed9 100644
--- a/samples/v1.3/Elements/Input.Date.ErrorMessage.json
+++ b/samples/v1.3/Elements/Input.Date.ErrorMessage.json
@@ -1 +1,43 @@
-{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "Input.Date",
"id": "input1",
"label": "This is a required Input.Date",
"isRequired": true,
"errorMessage": "This date is required"
},
{
"type": "Input.Date",
"id": "input2",
"label": "Input.Date with valid min date of February 1st, 2012",
"min": "2012-02-01",
"errorMessage": "This date must be on or after February 1st, 2012"
},
{
"type": "Input.Date",
"id": "input3",
"label": "Input.Date with valid max date of November 2nd, 2021",
"max": "2021-11-02",
"errorMessage": "This date must be on or before November 2nd, 2021"
},
{
"type": "Input.Date",
"id": "input4",
"label": "Required Input.Date with valid value between April 1st, 2012 and January 7th, 2025",
"min": "2012-04-01",
"max": "2025-01-07",
"isRequired": true,
"errorMessage": "This date is required and must be between April 1st, 2012 and January 7th, 2025"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "OK"
}
]
}
\ No newline at end of file
+{
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.3",
+ "body": [
+ {
+ "type": "Input.Date",
+ "id": "input1",
+ "label": "This is a required Input.Date",
+ "isRequired": true,
+ "errorMessage": "This date is required"
+ },
+ {
+ "type": "Input.Date",
+ "id": "input2",
+ "label": "Input.Date with valid min date of February 1st, 2012",
+ "min": "2012-02-01",
+ "errorMessage": "This date must be on or after February 1st, 2012"
+ },
+ {
+ "type": "Input.Date",
+ "id": "input3",
+ "label": "Input.Date with valid max date of November 2nd, 2021",
+ "max": "2021-11-02",
+ "errorMessage": "This date must be on or before November 2nd, 2021"
+ },
+ {
+ "type": "Input.Date",
+ "id": "input4",
+ "label": "Required Input.Date with valid value between April 1st, 2012 and January 7th, 2025",
+ "min": "2012-04-01",
+ "max": "2025-01-07",
+ "isRequired": true,
+ "errorMessage": "This date is required and must be between April 1st, 2012 and January 7th, 2025"
+ }
+ ],
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "OK"
+ }
+ ]
+}
diff --git a/samples/v1.3/Elements/Input.Date.Label.json b/samples/v1.3/Elements/Input.Date.Label.json
index eef443d280..ea1660164f 100644
--- a/samples/v1.3/Elements/Input.Date.Label.json
+++ b/samples/v1.3/Elements/Input.Date.Label.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Date",
diff --git a/samples/v1.3/Elements/Input.Number.ErrorMessage.json b/samples/v1.3/Elements/Input.Number.ErrorMessage.json
index fd3e541104..900e3e1eca 100644
--- a/samples/v1.3/Elements/Input.Number.ErrorMessage.json
+++ b/samples/v1.3/Elements/Input.Number.ErrorMessage.json
@@ -1 +1,43 @@
-{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "Input.Number",
"id": "input1",
"label": "Required Input.Number",
"isRequired": true,
"errorMessage": "This number is required"
},
{
"type": "Input.Number",
"id": "input2",
"label": "Input.Number with valid min of 5",
"min": 5,
"errorMessage": "This number must be greater than 5"
},
{
"type": "Input.Number",
"id": "input3",
"label": "Input.Number with valid max of 10",
"max": 10,
"errorMessage": "This number must be smaller than 10"
},
{
"type": "Input.Number",
"id": "input4",
"label": "Required Input.Number with valid range between 0 and 100",
"isRequired": true,
"min": 0,
"max": 100,
"errorMessage": "This number is required and must be between 0 and 100"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Submit"
}
]
}
\ No newline at end of file
+{
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.3",
+ "body": [
+ {
+ "type": "Input.Number",
+ "id": "input1",
+ "label": "Required Input.Number",
+ "isRequired": true,
+ "errorMessage": "This number is required"
+ },
+ {
+ "type": "Input.Number",
+ "id": "input2",
+ "label": "Input.Number with valid min of 5",
+ "min": 5,
+ "errorMessage": "This number must be greater than 5"
+ },
+ {
+ "type": "Input.Number",
+ "id": "input3",
+ "label": "Input.Number with valid max of 10",
+ "max": 10,
+ "errorMessage": "This number must be smaller than 10"
+ },
+ {
+ "type": "Input.Number",
+ "id": "input4",
+ "label": "Required Input.Number with valid range between 0 and 100",
+ "isRequired": true,
+ "min": 0,
+ "max": 100,
+ "errorMessage": "This number is required and must be between 0 and 100"
+ }
+ ],
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "Submit"
+ }
+ ]
+}
diff --git a/samples/v1.3/Elements/Input.Number.Label.json b/samples/v1.3/Elements/Input.Number.Label.json
index f25d264f9b..9fb2a00bc8 100644
--- a/samples/v1.3/Elements/Input.Number.Label.json
+++ b/samples/v1.3/Elements/Input.Number.Label.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Number",
diff --git a/samples/v1.0/Elements/Input.Number.json b/samples/v1.3/Elements/Input.Number.json
similarity index 94%
rename from samples/v1.0/Elements/Input.Number.json
rename to samples/v1.3/Elements/Input.Number.json
index bfc5aa1a08..4b20c61add 100644
--- a/samples/v1.0/Elements/Input.Number.json
+++ b/samples/v1.3/Elements/Input.Number.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Number",
diff --git a/samples/v1.2/Elements/Input.Text.InlineAction.json b/samples/v1.3/Elements/Input.Text.InlineAction.json
similarity index 97%
rename from samples/v1.2/Elements/Input.Text.InlineAction.json
rename to samples/v1.3/Elements/Input.Text.InlineAction.json
index 2ad2a63d74..792805d7c4 100644
--- a/samples/v1.2/Elements/Input.Text.InlineAction.json
+++ b/samples/v1.3/Elements/Input.Text.InlineAction.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.2",
+ "version": "1.5",
"body": [
{
"type": "Input.Text",
diff --git a/samples/v1.3/Elements/Input.Text.Label.json b/samples/v1.3/Elements/Input.Text.Label.json
index b573b9f38f..a494f7e62f 100644
--- a/samples/v1.3/Elements/Input.Text.Label.json
+++ b/samples/v1.3/Elements/Input.Text.Label.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Text",
diff --git a/samples/v1.0/Elements/Input.Text.Style.json b/samples/v1.3/Elements/Input.Text.Style.json
similarity index 97%
rename from samples/v1.0/Elements/Input.Text.Style.json
rename to samples/v1.3/Elements/Input.Text.Style.json
index 5da4ffb9cf..68bd758995 100644
--- a/samples/v1.0/Elements/Input.Text.Style.json
+++ b/samples/v1.3/Elements/Input.Text.Style.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "TextBlock",
diff --git a/samples/v1.3/Elements/Input.Time.ErrorMessage.json b/samples/v1.3/Elements/Input.Time.ErrorMessage.json
index 5dd60a7de1..217258c0cd 100644
--- a/samples/v1.3/Elements/Input.Time.ErrorMessage.json
+++ b/samples/v1.3/Elements/Input.Time.ErrorMessage.json
@@ -1 +1,43 @@
-{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "Input.Time",
"id": "input1",
"label": "Required Input.Time",
"isRequired": true,
"errorMessage": "This time is required"
},
{
"type": "Input.Time",
"id": "input2",
"label": "Input.Time with valid min time of 6:00 am",
"min": "06:00",
"errorMessage": "This time must be after 6:00 am"
},
{
"type": "Input.Time",
"id": "input3",
"label": "Input.Time with valid max time of 8:00 pm",
"max": "20:00",
"errorMessage": "This time must be before 8:00 pm"
},
{
"type": "Input.Time",
"id": "input4",
"label": "Required Input.Time with valid value between 9:00 am and 5:00 pm",
"min": "09:00",
"max": "17:00",
"isRequired": true,
"errorMessage": "This time is required and must be between 9:00 am and 5:00 pm"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "OK"
}
]
}
\ No newline at end of file
+{
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.3",
+ "body": [
+ {
+ "type": "Input.Time",
+ "id": "input1",
+ "label": "Required Input.Time",
+ "isRequired": true,
+ "errorMessage": "This time is required"
+ },
+ {
+ "type": "Input.Time",
+ "id": "input2",
+ "label": "Input.Time with valid min time of 6:00 am",
+ "min": "06:00",
+ "errorMessage": "This time must be after 6:00 am"
+ },
+ {
+ "type": "Input.Time",
+ "id": "input3",
+ "label": "Input.Time with valid max time of 8:00 pm",
+ "max": "20:00",
+ "errorMessage": "This time must be before 8:00 pm"
+ },
+ {
+ "type": "Input.Time",
+ "id": "input4",
+ "label": "Required Input.Time with valid value between 9:00 am and 5:00 pm",
+ "min": "09:00",
+ "max": "17:00",
+ "isRequired": true,
+ "errorMessage": "This time is required and must be between 9:00 am and 5:00 pm"
+ }
+ ],
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "OK"
+ }
+ ]
+}
diff --git a/samples/v1.3/Elements/Input.Time.Label.json b/samples/v1.3/Elements/Input.Time.Label.json
index 3932364b05..2f88615397 100644
--- a/samples/v1.3/Elements/Input.Time.Label.json
+++ b/samples/v1.3/Elements/Input.Time.Label.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Time",
diff --git a/samples/v1.3/Elements/Input.Toggle.ErrorMessage.json b/samples/v1.3/Elements/Input.Toggle.ErrorMessage.json
index a5204b76ca..fbde22a610 100644
--- a/samples/v1.3/Elements/Input.Toggle.ErrorMessage.json
+++ b/samples/v1.3/Elements/Input.Toggle.ErrorMessage.json
@@ -1 +1,24 @@
-{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "Input.Toggle",
"id": "input2",
"title": "I accept the terms and agreements",
"value": "false",
"valueOn": "true",
"valueOff": "false",
"label": "Required Input.Toggle",
"isRequired": true,
"errorMessage": "You must accept the terms and conditions"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "OK"
}
]
}
\ No newline at end of file
+{
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.3",
+ "body": [
+ {
+ "type": "Input.Toggle",
+ "id": "input2",
+ "title": "I accept the terms and agreements",
+ "value": "false",
+ "valueOn": "true",
+ "valueOff": "false",
+ "label": "Required Input.Toggle",
+ "isRequired": true,
+ "errorMessage": "You must accept the terms and conditions"
+ }
+ ],
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "OK"
+ }
+ ]
+}
diff --git a/samples/v1.3/Elements/Input.Toggle.Label.json b/samples/v1.3/Elements/Input.Toggle.Label.json
index a0225d84a6..b972d87952 100644
--- a/samples/v1.3/Elements/Input.Toggle.Label.json
+++ b/samples/v1.3/Elements/Input.Toggle.Label.json
@@ -1,7 +1,7 @@
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
- "version": "1.0",
+ "version": "1.3",
"body": [
{
"type": "Input.Toggle",
diff --git a/samples/v1.5/Elements/Input.ChoiceSet.Filtered.json b/samples/v1.5/Elements/Input.ChoiceSet.Filtered.json
index 49b5fb9d2a..524f424211 100644
--- a/samples/v1.5/Elements/Input.ChoiceSet.Filtered.json
+++ b/samples/v1.5/Elements/Input.ChoiceSet.Filtered.json
@@ -249,10 +249,6 @@
"value": "Barredtail corydoras",
"title": "Barredtail corydoras"
},
- {
- "value": "Bastard margaret",
- "title": "Bastard margaret"
- },
{
"value": "Beacon tetra",
"title": "Beacon tetra"
@@ -589,10 +585,6 @@
"value": "Brown-banded moon jelly",
"title": "Brown-banded moon jelly"
},
- {
- "value": "Browneye skate",
- "title": "Browneye skate"
- },
{
"value": "Brownstripe snapper",
"title": "Brownstripe snapper"
@@ -713,10 +705,6 @@
"value": "Chilean Slender Snake",
"title": "Chilean Slender Snake"
},
- {
- "value": "Chinaman fish",
- "title": "Chinaman fish"
- },
{
"value": "Chinese Hill Warbler",
"title": "Chinese Hill Warbler"
@@ -1485,10 +1473,6 @@
"value": "Green Labeo",
"title": "Green Labeo"
},
- {
- "value": "Green-backed Tit",
- "title": "Green-backed Tit"
- },
{
"value": "Greenback grey mullet",
"title": "Greenback grey mullet"
@@ -1645,10 +1629,6 @@
"value": "horseman anemone",
"title": "horseman anemone"
},
- {
- "value": "Humpback hairfin anchovy",
- "title": "Humpback hairfin anchovy"
- },
{
"value": "Immaculate dottyback",
"title": "Immaculate dottyback"
@@ -1905,10 +1885,6 @@
"value": "Life plant",
"title": "Life plant"
},
- {
- "value": "Linder fairy shrimp",
- "title": "Linder fairy shrimp"
- },
{
"value": "Lipstick goby",
"title": "Lipstick goby"
@@ -2425,10 +2401,6 @@
"value": "Pale-spotted triplefin",
"title": "Pale-spotted triplefin"
},
- {
- "value": "Palestine Mole Rat",
- "title": "Palestine Mole Rat"
- },
{
"value": "Pallid Honeyguide",
"title": "Pallid Honeyguide"
@@ -3881,10 +3853,6 @@
"value": "White-headed Petrel",
"title": "White-headed Petrel"
},
- {
- "value": "white-knobbed sea cucumber",
- "title": "white-knobbed sea cucumber"
- },
{
"value": "White-mottled Flowerpecker",
"title": "White-mottled Flowerpecker"
diff --git a/samples/v1.5/Scenarios/Agenda.json b/samples/v1.5/Scenarios/Agenda.json
index 85eabe9bb1..6645229b00 100644
--- a/samples/v1.5/Scenarios/Agenda.json
+++ b/samples/v1.5/Scenarios/Agenda.json
@@ -217,7 +217,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/location_gray.png",
+ "url": "https://adaptivecardsblob.blob.core.windows.net/assets/location_gray.png",
"altText": "Location"
}
],
@@ -331,7 +331,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/car.png",
+ "url": "https://adaptivecardsblob.blob.core.windows.net/assets/car.png",
"altText": "Travel by car"
}
],
@@ -414,7 +414,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/location_gray.png",
+ "url": "https://adaptivecardsblob.blob.core.windows.net/assets/location_gray.png",
"altText": "Location"
}
],
diff --git a/samples/v1.5/Scenarios/FlightDetails.json b/samples/v1.5/Scenarios/FlightDetails.json
index 96d7b14ff2..4707865a20 100644
--- a/samples/v1.5/Scenarios/FlightDetails.json
+++ b/samples/v1.5/Scenarios/FlightDetails.json
@@ -86,25 +86,11 @@
"wrap": true
}
],
- "width": "auto"
+ "width": "1"
},
{
"type": "Column",
"verticalContentAlignment": "center",
- "items": [
- {
- "type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/graydot2x2.png",
- "width": "10000px",
- "height": "2px"
- }
- ],
- "width": "stretch"
- },
- {
- "type": "Column",
- "spacing": "small",
- "verticalContentAlignment": "center",
"items": [
{
"type": "Image",
@@ -127,7 +113,7 @@
"wrap": true
}
],
- "width": "auto"
+ "width": "1"
}
]
},
diff --git a/samples/v1.5/Scenarios/FlightUpdateTable.json b/samples/v1.5/Scenarios/FlightUpdateTable.json
index 15b9f6cd40..551100ee90 100644
--- a/samples/v1.5/Scenarios/FlightUpdateTable.json
+++ b/samples/v1.5/Scenarios/FlightUpdateTable.json
@@ -31,7 +31,7 @@
"items": [
{
"type": "Image",
- "size": "small",
+ "size": "Small",
"url": "https://adaptivecards.io/content/airplane.png",
"altText": "Airplane"
}
@@ -46,17 +46,17 @@
{
"type": "TextBlock",
"text": "Flight Status",
- "horizontalAlignment": "right",
+ "horizontalAlignment": "Right",
"isSubtle": true,
"wrap": true
},
{
"type": "TextBlock",
"text": "DELAYED",
- "horizontalAlignment": "right",
- "spacing": "none",
- "size": "large",
- "color": "attention",
+ "horizontalAlignment": "Right",
+ "spacing": "None",
+ "size": "Large",
+ "color": "Attention",
"wrap": true
}
]
@@ -73,26 +73,40 @@
"type": "TextBlock",
"text": "Passengers",
"isSubtle": true,
- "weight": "bolder",
+ "weight": "Bolder",
"wrap": true,
- "spacing": "none"
- },
- {
- "type": "TextBlock",
- "text": "Sarah Hum",
- "spacing": "small",
- "wrap": true
- },
+ "spacing": "None"
+ }
+ ]
+ },
+ {
+ "type": "TableCell"
+ },
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "Jeremy Goldberg",
- "spacing": "small",
+ "text": "Seat",
+ "horizontalAlignment": "Right",
+ "isSubtle": true,
+ "weight": "Bolder",
"wrap": true
- },
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "TableRow",
+ "cells": [
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "Evan Litvak",
- "spacing": "small",
+ "text": "Sarah Hum",
+ "spacing": "Small",
"wrap": true
}
]
@@ -105,31 +119,71 @@
"items": [
{
"type": "TextBlock",
- "text": "Seat",
- "horizontalAlignment": "right",
- "isSubtle": true,
- "weight": "bolder",
+ "text": "14A",
+ "horizontalAlignment": "Right",
+ "spacing": "Small",
"wrap": true
- },
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "TableRow",
+ "cells": [
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
- "text": "14A",
- "horizontalAlignment": "right",
- "spacing": "small",
+ "text": "Jeremy Goldberg",
+ "spacing": "Small",
"wrap": true
- },
+ }
+ ]
+ },
+ {
+ "type": "TableCell"
+ },
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
"text": "14B",
- "horizontalAlignment": "right",
- "spacing": "small",
+ "horizontalAlignment": "Right",
+ "spacing": "Small",
"wrap": true
- },
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "TableRow",
+ "cells": [
+ {
+ "type": "TableCell",
+ "items": [
+ {
+ "type": "TextBlock",
+ "text": "Evan Litvak",
+ "spacing": "Small",
+ "wrap": true
+ }
+ ]
+ },
+ {
+ "type": "TableCell"
+ },
+ {
+ "type": "TableCell",
+ "items": [
{
"type": "TextBlock",
"text": "14C",
- "horizontalAlignment": "right",
- "spacing": "small",
+ "horizontalAlignment": "Right",
+ "spacing": "Small",
"wrap": true
}
]
@@ -146,13 +200,13 @@
"type": "TextBlock",
"text": "Flight",
"isSubtle": true,
- "weight": "bolder",
+ "weight": "Bolder",
"wrap": true
},
{
"type": "TextBlock",
"text": "KL605",
- "spacing": "small",
+ "spacing": "Small",
"wrap": true
}
]
@@ -164,17 +218,17 @@
"type": "TextBlock",
"text": "Departs",
"isSubtle": true,
- "horizontalAlignment": "center",
- "weight": "bolder",
+ "horizontalAlignment": "Center",
+ "weight": "Bolder",
"wrap": true
},
{
"type": "TextBlock",
"text": "2:20 AM",
- "color": "attention",
- "weight": "bolder",
- "horizontalAlignment": "center",
- "spacing": "small",
+ "color": "Attention",
+ "weight": "Bolder",
+ "horizontalAlignment": "Center",
+ "spacing": "Small",
"wrap": true
}
]
@@ -186,17 +240,17 @@
"type": "TextBlock",
"text": "Arrives",
"isSubtle": true,
- "horizontalAlignment": "right",
- "weight": "bolder",
+ "horizontalAlignment": "Right",
+ "weight": "Bolder",
"wrap": true
},
{
"type": "TextBlock",
"text": "8:20 PM",
- "color": "attention",
- "horizontalAlignment": "right",
- "weight": "bolder",
- "spacing": "small",
+ "color": "Attention",
+ "horizontalAlignment": "Right",
+ "weight": "Bolder",
+ "spacing": "Small",
"wrap": true
}
]
@@ -218,9 +272,9 @@
{
"type": "TextBlock",
"text": "AMS",
- "size": "extraLarge",
- "color": "accent",
- "spacing": "none",
+ "size": "ExtraLarge",
+ "color": "Accent",
+ "spacing": "None",
"wrap": true
}
]
@@ -232,11 +286,11 @@
"type": "Image",
"url": "https://adaptivecards.io/content/airplane.png",
"altText": "Airplane",
- "horizontalAlignment": "center",
- "size": "small"
+ "horizontalAlignment": "Center",
+ "size": "Small"
}
],
- "verticalContentAlignment": "center"
+ "verticalContentAlignment": "Center"
},
{
"type": "TableCell",
@@ -245,22 +299,22 @@
"type": "TextBlock",
"text": "San Francisco Airport",
"isSubtle": true,
- "horizontalAlignment": "right",
+ "horizontalAlignment": "Right",
"wrap": true
},
{
"type": "TextBlock",
"text": "SFO",
- "horizontalAlignment": "right",
- "size": "extraLarge",
- "color": "accent",
- "spacing": "none",
+ "horizontalAlignment": "Right",
+ "size": "ExtraLarge",
+ "color": "Accent",
+ "spacing": "None",
"wrap": true
}
]
}
],
- "spacing": "none"
+ "spacing": "None"
}
],
"showGridLines": false
diff --git a/samples/v1.5/Scenarios/InputsWithValidation.json b/samples/v1.5/Scenarios/InputsWithValidation.json
index 0f4a749130..48979b4883 100644
--- a/samples/v1.5/Scenarios/InputsWithValidation.json
+++ b/samples/v1.5/Scenarios/InputsWithValidation.json
@@ -18,32 +18,59 @@
"style": "text",
"id": "SimpleVal",
"isRequired": true,
- "errorMessage": "Name is required"
+ "errorMessage": "Name is required",
+ "placeholder": "Enter your name"
},
{
"type": "Input.Text",
"label": "Homepage",
"style": "url",
- "id": "UrlVal"
+ "id": "UrlVal",
+ "placeholder": "Enter your homepage url"
},
{
"type": "Input.Text",
"label": "Email",
"style": "email",
- "id": "EmailVal"
+ "id": "EmailVal",
+ "placeholder": "Enter your email"
},
{
"type": "Input.Text",
"label": "Phone",
"style": "tel",
- "id": "TelVal"
+ "id": "TelVal",
+ "placeholder": "Enter your phone number"
},
{
"type": "Input.Text",
"label": "Comments",
"style": "text",
"isMultiline": true,
- "id": "MultiLineVal"
+ "id": "MultiLineVal",
+ "placeholder": "Enter any comments"
+ },
+ {
+ "type": "TextBlock",
+ "size": "medium",
+ "weight": "bolder",
+ "text": "Input.Text InlineAction",
+ "horizontalAlignment": "center",
+ "wrap": true,
+ "style": "heading"
+ },
+ {
+ "type": "Input.Text",
+ "label": "Text input with an inline action with no icon",
+ "id": "textInlineActionId",
+ "placeholder": "Enter text",
+ "inlineAction": {
+ "type": "Action.OpenUrl",
+ "title": "Reply",
+ "tooltip": "Reply to this message",
+ "url": "https://adaptivecards.io",
+ "role": "button"
+ }
},
{
"type": "TextBlock",
@@ -67,7 +94,7 @@
},
{
"type": "Input.Number",
- "label": "Quantity",
+ "label": "Quantity (Minimum -5, Maximum 5)",
"min": -5,
"max": 5,
"value": 1,
diff --git a/samples/v1.5/Scenarios/WeatherLarge.json b/samples/v1.5/Scenarios/WeatherLarge.json
index 5cf5c7f530..ef54a5b403 100644
--- a/samples/v1.5/Scenarios/WeatherLarge.json
+++ b/samples/v1.5/Scenarios/WeatherLarge.json
@@ -97,7 +97,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
- "title": "View Wednesday",
+ "title": "View Wednesday, Drizzly weather. Highest temperature 50 degrees. Lowest temperature 32 degrees.",
"url": "https://www.microsoft.com"
}
},
@@ -136,7 +136,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
- "title": "View Thursday",
+ "title": "View Thursday, Mostly cloudy weather. Highest temperature 50 degrees. Lowest temperature 32 degrees.",
"url": "https://www.microsoft.com"
}
},
@@ -175,7 +175,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
- "title": "View Friday",
+ "title": "View Friday, Mostly cloudy weather. Highest temperature 59 degrees. Lowest temperature 32 degrees.",
"url": "https://www.microsoft.com"
}
},
@@ -214,7 +214,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
- "title": "View Saturday",
+ "title": "View Saturday, Mostly cloudy weather. Highest temperature 50 degrees. Lowest temperature 32 degrees.",
"url": "https://www.microsoft.com"
}
}
diff --git a/samples/v1.5/Tests/Image.SelectAction.IsEnabled.json b/samples/v1.5/Tests/Image.SelectAction.IsEnabled.json
index 4d5d12c7d5..b23e2d7191 100644
--- a/samples/v1.5/Tests/Image.SelectAction.IsEnabled.json
+++ b/samples/v1.5/Tests/Image.SelectAction.IsEnabled.json
@@ -1,7 +1,7 @@
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "version": "1.3",
+ "version": "1.5",
"body": [
{
"type": "Image",
diff --git a/samples/v1.5/Tests/Image.Svg.json b/samples/v1.5/Tests/Image.Svg.json
new file mode 100644
index 0000000000..2b79c89ff4
--- /dev/null
+++ b/samples/v1.5/Tests/Image.Svg.json
@@ -0,0 +1,65 @@
+{
+ "type": "AdaptiveCard",
+ "version": "1.5",
+ "body": [
+ {
+ "type": "Image",
+ "url": "https://adaptivecards.io/content/adaptive-card.svg",
+ "size": "small"
+ },
+ {
+ "type": "Image",
+ "url": "https://adaptivecards.io/content/adaptive-card.svg",
+ "height": "70px",
+ "width": "40px"
+ },
+ {
+ "type": "Image",
+ "url": "symbol:adaptive-card-fixed-height.svg",
+ "backgroundColor": "#000000",
+ "horizontalAlignment": "right",
+ "width": "50px",
+ "style": "person"
+ },
+ {
+ "type": "Image",
+ "url": "symbol:adaptive-card-fixed-height.svg",
+ "backgroundColor": "#000000",
+ "horizontalAlignment": "right",
+ "size": "medium"
+ },
+ {
+ "type": "Image",
+ "url": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDAiICBoZWlnaHQ9IjI5NC40IiB2aWV3Qm94PSIwIDAgNzAwLjAwMDAxIDI5NC40MjI1OCI+IAo8c3R5bGU+CiAgCiAgLnRlc3QgewogICAgYW5pbWF0aW9uOiBmYWRlIDNzIGluZmluaXRlIGFsdGVybmF0ZTsgCiAgICAKICB9CiAgCiAgQGtleWZyYW1lcyBmYWRlIHsKICAgIAogICAgZnJvbSB7CiAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIAogICAgdG8gewogICAgICAKICAgICAgb3BhY2l0eToxCiAgICB9CiAgICAKICB9CiAgCiAgPC9zdHlsZT4KICAKICA8cGF0aCBjbGFzcz0idGVzdCIgZD0iTTYwMi4yIDEyOC42Yy0xMS43IDIuNy00Mi42IDQuMi00Mi42IDQuMmwtMy44IDEyLjJzMTUuMy0xLjMgMjYuNS0uMmMwIDAgMy42LS4zIDQgNCAuMiA0LjQtLjMgOS0uMyA5cy0uMyAyLjctNCAzLjRjLTQuMy43LTMzLjMgMi0zMy4zIDJMNTQ0IDE3OXMtMS43IDMuNiAyLjIgMi42YzMuNi0xIDM0LTYuOCAzOC02IDQuMiAxIDkgNi44IDcuNiAxMi0xLjYgNi4zLTMyIDI1LjctNTAuNCAyNC40IDAgMC05LjcuNi0xNy44LTEyLjUtNy44LTEyLjUgMi43LTM2IDIuNy0zNnMtNC43LTExLTEuMi0xNWMwIDAgMi0xLjcgOC0yLjJsNy41LTE1LjRzLTguNS41LTEzLjUtNS43Yy00LjYtNi01LTguNi0xLjQtMTAuMiAzLjgtMiAzOS04LjMgNjMuMi03LjUgMCAwIDguNS0xIDE2IDEzLjcgMCAwIDMuNCA2LTIuNiA3LjRNNTExIDE4Ny44Yy0zIDcuMy0xMS4zIDE1LTIxLjMgMTAuMy0xMC4yLTQuOC0yNi4zLTM3LjYtMjYuMy0zNy42cy02LTEyLjItNy4yLTExLjhjMCAwLTEuMy0yLjQtMiAxMS0xIDEzLjMuMiAzOS4yLTUuMyA0My4zLTUgNC0xMSAyLjMtMTQuNC0yLjQtMi44LTQuNy00LTE2LTIuNC0zNS43IDEuOC0xOS43IDYuMy00MC43IDEyLTQ3LjIgNi02LjYgMTAuOC0xLjggMTIuNiAwIDAgMCA3LjcgNyAyMC43IDI3LjdsMi4yIDMuOHMxMS44IDE5LjcgMTMgMTkuNmMwIDAgMSAxIDEuOC4yIDEuMi0uMy44LTYuNy44LTYuN1M0OTMgMTQxIDQ4MiAxMDVjMCAwLTEuNi00LjYtLjUtOSAxLTQgNS4zLTIgNS4zLTJzMTYuNiA4IDI0LjcgMzVjOCAyNyAyLjYgNTEuNS0uNCA1OC44TTQyOS42IDExOC41Yy0xLjYgMi44LTIuMyA2LjctOS4yIDcuOCAwIDAtNjcgNC43LTcwLjMgOS40IDAgMC0yLjIgMi44IDEuNCAzLjUgMy44LjggMTkgMi44IDI2LjIgMy4yIDcuOCAwIDM0IC4yIDQzLjYgMTIgMCAwIDUuNSA1LjYgNS4zIDE4LjMtLjIgMTMtMi41IDE3LjYtNy42IDIyLjMtNS4zIDQuNC01MC43IDI0LjgtODAtNi40IDAgMC0xMy40LTE1IDQuNy0yNi40IDAgMCAxMy04IDQ2LjMgMS4zIDAgMCAxMCAzLjYgOS42IDcuMy0uNiA0LTguMyA4LTE5LjUgNy44LTEwLjgtLjMtMTguOC01LjUtMTcuMi00LjYgMS41LjUtMTEuNy02LjQtMTUuOC0xLjctNCA0LjQtMyA3IDEgOS43IDEwIDUuOCA0OS4zIDMuNyA2MS05LjQgMCAwIDQuNy01LjMtMi40LTkuNi03LTQtMjcuNC02LjUtMzUuMy02LjgtNy41LS40LTM1LjYgMC0zOS44LTcuMyAwIDAtNC01LjIuNC0xOS40IDQuNi0xNSAzNy4zLTIwLjggNTEuNS0yMiAwIDAgMzktMS42IDQ2LjMgNi40IDAgMCAxIDEuOC0uMiA0LjVNMzE5IDIwNi40Yy00LjcgMy41LTE0LjcgMi0xNy42LTItMi44LTMuNS0zLjgtMTcuMy0zLjMtMzkgLjctMjIuMiAxLTQ5LjQgNi01My44IDUtNC4zIDgtLjUgMTAgMi40IDIgMyA0LjYgNi4zIDUgMTMuMi42IDcgMi4zIDQzIDIuMyA0M3MyLjIgMzIuOC0yLjMgMzYuMk0zMjkgODkuNGMtMTMuOCA0LjctMjMuMiAzLjItMzEuMi0uMy0zLjUgNi4zLTUuNiA4LjItOC4yIDguNi00IC40LTcuNS02LTgtOC0uOC0xLjUtMi43LTQuMi0uNC0xMC4zLTcuOC03LTguNC0xNi40LTctMjIuNyAxLjgtNy40IDE1LTM1LjIgNTUtMzguNSAwIDAgMTkuNi0xLjQgMjMgOWguNnMxOSAwIDE4LjYgMTdjMCAxNy0yMSAzOC4yLTQyLjQgNDUuNW0xNy44LTQ4LjdjLTEyLjYgMi0zMiAxOC44LTQxLjMgMzIuNyAxNC4zIDIuNiAzOS4zIDEuNiA1MC41LTIxIDAgMCA1LjMtMTQuMi05LjItMTEuN20tNTUuMyAxMWMtNCA2LjUtNC4yIDEwLjQtMi4zIDEzIDQuNy03IDEzLTE4IDI1LjUtMjYuNi05LjYgMS0xNy43IDUtMjMuMiAxMy42TTYzMi4yIDIwNS43Yy05LjIgMjIuNi0xNyA0NS41LTIxLjUgNzkuOCAwIDAtMSA2LjctNi41IDQuNS01LjUtMi0xNC41LTExLTE2LjUtMjMuNy0yLTE2LjYgNS40LTQ0LjYgMjAuNS03Ni44LTQuNC03LTcuNS0xNy40LTUtMzIgMCAwIDQtMjcgMzEtNTEuNCAwIDAgMy4yLTIuNyA1LTEuOCAyLjIgMSAxLjMgOS42LS41IDE0LTEuNiA0LjItMTMuNiAyNS0xMy42IDI1cy03LjUgMTQuMi01LjQgMjUuM2MxNC4yLTIxLjggNDYuNS02NiA2Ni41LTUyIDEyLjcgOSAxMi43IDM4IDMuMiA1NC44LTcuNSAxMy4zLTI4LjcgNDAuOC01NyAzNC40bTQxLjYtNjhjLTcuNCA4LTIwLjYgMjMuMi0zMSA0My44IDExLTEuMiAyMS43LTcuMyAyNS0xMC40IDUuMy00LjcgMTcuNS0xNy40IDE1LjYtMzQuMiAwIDAtMS4yLTguOC05LjYuOE0yMjYgMjE3LjVjLTM1LjQgMTAuOC02OC44IDUuOC04NyAxLS41IDcuNC0xLjMgMTAuNS0yLjUgMTEuNy0xLjQgMS42LTEzIDguMi0xOS40LTEuMi0yLjgtNC41LTQuMi0xMi42LTUtMjAtNDEtMTguNi02MC00Ni02MC42LTQ3LTEtMS0xMC4zLTEwLjctMS0yMi43IDguNy0xMC44IDM3LjUtMjEuNyA2My4zLTI2IDEtMjIgMy40LTM5IDYuNS00Ni41IDMuNy05IDguNC0xIDEyLjYgNSAzLjQgNC41IDUuNSAyMy44IDUuNyAzOS4yIDE2LjgtLjggMjcgLjQgNDUuNyA0IDI0LjYgNC4yIDQxIDE2LjggMzkuNyAzMS0xLjIgMTQtMTQgMTkuOC0xOSAyMC4yLTUgLjQtMTMtMy4zLTEzLTMuMy01LjYtMi42LS41LTUgNi03LjggNy4yLTMuNSA1LjYtNyA1LjYtNy0yLjYtOC0zNC41LTEzLjMtNjYuMi0xMy4zIDAgMTcuNS43IDQ2LjUgMS4yIDYzLjQgMjIuMiA0LjIgMzguOCAzLjMgMzguOCAzLjNzODEtMi4zIDgzLjMtNTRjMi41LTUxLjgtODEtMTAxLjQtMTQyLjUtMTE3QzU2LjggMTQuNCAyMiAyNS44IDE5IDI3LjNjLTMuMyAxLjYtLjMgMi4yLS4zIDIuMlMyMiAzMCAyOCAzMmM2IDIgMS4yIDUgMS4yIDVDMTguNyA0MC42IDcgMzguNSA0LjcgMzMuN2MtMi4zLTQuNyAxLjUtOSA2LTE1LjMgNC4yLTYuNSA5LTYuMyA5LTYuMyA3Ni0yNi41IDE2OC44IDIxIDE2OC44IDIxIDg2LjggNDMuOCAxMDEuNiA5NS4zIDEwMCAxMTUuMy0xLjQgMTkuNy05IDUzLTYyLjUgNjkuMk01OSAxNDZjLTguNiA0LTIuNiAxMC40LTIuNiAxMC40IDE2LjIgMTcuMyAzNiAyOC4yIDU1IDM1IDIuMi0zMCAyLTQwLjcgMi01NS44Qzg0IDEzNy42IDY3IDE0Mi40IDU5IDE0NiIvPiA8L3N2Zz4=",
+ "size": "medium"
+ },
+ {
+ "type": "Image",
+ "url": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDAiICBoZWlnaHQ9IjI5NC40IiB2aWV3Qm94PSIwIDAgNzAwLjAwMDAxIDI5NC40MjI1OCI+IAo8c3R5bGU+CiAgCiAgLnRlc3QgewogICAgYW5pbWF0aW9uOiBmYWRlIDNzIGluZmluaXRlIGFsdGVybmF0ZTsgCiAgICAKICB9CiAgCiAgQGtleWZyYW1lcyBmYWRlIHsKICAgIAogICAgZnJvbSB7CiAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIAogICAgdG8gewogICAgICAKICAgICAgb3BhY2l0eToxCiAgICB9CiAgICAKICB9CiAgCiAgPC9zdHlsZT4KICAKICA8cGF0aCBjbGFzcz0idGVzdCIgZD0iTTYwMi4yIDEyOC42Yy0xMS43IDIuNy00Mi42IDQuMi00Mi42IDQuMmwtMy44IDEyLjJzMTUuMy0xLjMgMjYuNS0uMmMwIDAgMy42LS4zIDQgNCAuMiA0LjQtLjMgOS0uMyA5cy0uMyAyLjctNCAzLjRjLTQuMy43LTMzLjMgMi0zMy4zIDJMNTQ0IDE3OXMtMS43IDMuNiAyLjIgMi42YzMuNi0xIDM0LTYuOCAzOC02IDQuMiAxIDkgNi44IDcuNiAxMi0xLjYgNi4zLTMyIDI1LjctNTAuNCAyNC40IDAgMC05LjcuNi0xNy44LTEyLjUtNy44LTEyLjUgMi43LTM2IDIuNy0zNnMtNC43LTExLTEuMi0xNWMwIDAgMi0xLjcgOC0yLjJsNy41LTE1LjRzLTguNS41LTEzLjUtNS43Yy00LjYtNi01LTguNi0xLjQtMTAuMiAzLjgtMiAzOS04LjMgNjMuMi03LjUgMCAwIDguNS0xIDE2IDEzLjcgMCAwIDMuNCA2LTIuNiA3LjRNNTExIDE4Ny44Yy0zIDcuMy0xMS4zIDE1LTIxLjMgMTAuMy0xMC4yLTQuOC0yNi4zLTM3LjYtMjYuMy0zNy42cy02LTEyLjItNy4yLTExLjhjMCAwLTEuMy0yLjQtMiAxMS0xIDEzLjMuMiAzOS4yLTUuMyA0My4zLTUgNC0xMSAyLjMtMTQuNC0yLjQtMi44LTQuNy00LTE2LTIuNC0zNS43IDEuOC0xOS43IDYuMy00MC43IDEyLTQ3LjIgNi02LjYgMTAuOC0xLjggMTIuNiAwIDAgMCA3LjcgNyAyMC43IDI3LjdsMi4yIDMuOHMxMS44IDE5LjcgMTMgMTkuNmMwIDAgMSAxIDEuOC4yIDEuMi0uMy44LTYuNy44LTYuN1M0OTMgMTQxIDQ4MiAxMDVjMCAwLTEuNi00LjYtLjUtOSAxLTQgNS4zLTIgNS4zLTJzMTYuNiA4IDI0LjcgMzVjOCAyNyAyLjYgNTEuNS0uNCA1OC44TTQyOS42IDExOC41Yy0xLjYgMi44LTIuMyA2LjctOS4yIDcuOCAwIDAtNjcgNC43LTcwLjMgOS40IDAgMC0yLjIgMi44IDEuNCAzLjUgMy44LjggMTkgMi44IDI2LjIgMy4yIDcuOCAwIDM0IC4yIDQzLjYgMTIgMCAwIDUuNSA1LjYgNS4zIDE4LjMtLjIgMTMtMi41IDE3LjYtNy42IDIyLjMtNS4zIDQuNC01MC43IDI0LjgtODAtNi40IDAgMC0xMy40LTE1IDQuNy0yNi40IDAgMCAxMy04IDQ2LjMgMS4zIDAgMCAxMCAzLjYgOS42IDcuMy0uNiA0LTguMyA4LTE5LjUgNy44LTEwLjgtLjMtMTguOC01LjUtMTcuMi00LjYgMS41LjUtMTEuNy02LjQtMTUuOC0xLjctNCA0LjQtMyA3IDEgOS43IDEwIDUuOCA0OS4zIDMuNyA2MS05LjQgMCAwIDQuNy01LjMtMi40LTkuNi03LTQtMjcuNC02LjUtMzUuMy02LjgtNy41LS40LTM1LjYgMC0zOS44LTcuMyAwIDAtNC01LjIuNC0xOS40IDQuNi0xNSAzNy4zLTIwLjggNTEuNS0yMiAwIDAgMzktMS42IDQ2LjMgNi40IDAgMCAxIDEuOC0uMiA0LjVNMzE5IDIwNi40Yy00LjcgMy41LTE0LjcgMi0xNy42LTItMi44LTMuNS0zLjgtMTcuMy0zLjMtMzkgLjctMjIuMiAxLTQ5LjQgNi01My44IDUtNC4zIDgtLjUgMTAgMi40IDIgMyA0LjYgNi4zIDUgMTMuMi42IDcgMi4zIDQzIDIuMyA0M3MyLjIgMzIuOC0yLjMgMzYuMk0zMjkgODkuNGMtMTMuOCA0LjctMjMuMiAzLjItMzEuMi0uMy0zLjUgNi4zLTUuNiA4LjItOC4yIDguNi00IC40LTcuNS02LTgtOC0uOC0xLjUtMi43LTQuMi0uNC0xMC4zLTcuOC03LTguNC0xNi40LTctMjIuNyAxLjgtNy40IDE1LTM1LjIgNTUtMzguNSAwIDAgMTkuNi0xLjQgMjMgOWguNnMxOSAwIDE4LjYgMTdjMCAxNy0yMSAzOC4yLTQyLjQgNDUuNW0xNy44LTQ4LjdjLTEyLjYgMi0zMiAxOC44LTQxLjMgMzIuNyAxNC4zIDIuNiAzOS4zIDEuNiA1MC41LTIxIDAgMCA1LjMtMTQuMi05LjItMTEuN20tNTUuMyAxMWMtNCA2LjUtNC4yIDEwLjQtMi4zIDEzIDQuNy03IDEzLTE4IDI1LjUtMjYuNi05LjYgMS0xNy43IDUtMjMuMiAxMy42TTYzMi4yIDIwNS43Yy05LjIgMjIuNi0xNyA0NS41LTIxLjUgNzkuOCAwIDAtMSA2LjctNi41IDQuNS01LjUtMi0xNC41LTExLTE2LjUtMjMuNy0yLTE2LjYgNS40LTQ0LjYgMjAuNS03Ni44LTQuNC03LTcuNS0xNy40LTUtMzIgMCAwIDQtMjcgMzEtNTEuNCAwIDAgMy4yLTIuNyA1LTEuOCAyLjIgMSAxLjMgOS42LS41IDE0LTEuNiA0LjItMTMuNiAyNS0xMy42IDI1cy03LjUgMTQuMi01LjQgMjUuM2MxNC4yLTIxLjggNDYuNS02NiA2Ni41LTUyIDEyLjcgOSAxMi43IDM4IDMuMiA1NC44LTcuNSAxMy4zLTI4LjcgNDAuOC01NyAzNC40bTQxLjYtNjhjLTcuNCA4LTIwLjYgMjMuMi0zMSA0My44IDExLTEuMiAyMS43LTcuMyAyNS0xMC40IDUuMy00LjcgMTcuNS0xNy40IDE1LjYtMzQuMiAwIDAtMS4yLTguOC05LjYuOE0yMjYgMjE3LjVjLTM1LjQgMTAuOC02OC44IDUuOC04NyAxLS41IDcuNC0xLjMgMTAuNS0yLjUgMTEuNy0xLjQgMS42LTEzIDguMi0xOS40LTEuMi0yLjgtNC41LTQuMi0xMi42LTUtMjAtNDEtMTguNi02MC00Ni02MC42LTQ3LTEtMS0xMC4zLTEwLjctMS0yMi43IDguNy0xMC44IDM3LjUtMjEuNyA2My4zLTI2IDEtMjIgMy40LTM5IDYuNS00Ni41IDMuNy05IDguNC0xIDEyLjYgNSAzLjQgNC41IDUuNSAyMy44IDUuNyAzOS4yIDE2LjgtLjggMjcgLjQgNDUuNyA0IDI0LjYgNC4yIDQxIDE2LjggMzkuNyAzMS0xLjIgMTQtMTQgMTkuOC0xOSAyMC4yLTUgLjQtMTMtMy4zLTEzLTMuMy01LjYtMi42LS41LTUgNi03LjggNy4yLTMuNSA1LjYtNyA1LjYtNy0yLjYtOC0zNC41LTEzLjMtNjYuMi0xMy4zIDAgMTcuNS43IDQ2LjUgMS4yIDYzLjQgMjIuMiA0LjIgMzguOCAzLjMgMzguOCAzLjNzODEtMi4zIDgzLjMtNTRjMi41LTUxLjgtODEtMTAxLjQtMTQyLjUtMTE3QzU2LjggMTQuNCAyMiAyNS44IDE5IDI3LjNjLTMuMyAxLjYtLjMgMi4yLS4zIDIuMlMyMiAzMCAyOCAzMmM2IDIgMS4yIDUgMS4yIDVDMTguNyA0MC42IDcgMzguNSA0LjcgMzMuN2MtMi4zLTQuNyAxLjUtOSA2LTE1LjMgNC4yLTYuNSA5LTYuMyA5LTYuMyA3Ni0yNi41IDE2OC44IDIxIDE2OC44IDIxIDg2LjggNDMuOCAxMDEuNiA5NS4zIDEwMCAxMTUuMy0xLjQgMTkuNy05IDUzLTYyLjUgNjkuMk01OSAxNDZjLTguNiA0LTIuNiAxMC40LTIuNiAxMC40IDE2LjIgMTcuMyAzNiAyOC4yIDU1IDM1IDIuMi0zMCAyLTQwLjcgMi01NS44Qzg0IDEzNy42IDY3IDE0Mi40IDU5IDE0NiIvPiA8L3N2Zz4=",
+ "height": "300px",
+ "width": "300px"
+ },
+ {
+ "type": "Image",
+ "url": "symbol:adaptive-card.svg",
+ "backgroundColor": "#000000",
+ "horizontalAlignment": "right",
+ "width": "100px"
+ },
+ {
+ "type": "Image",
+ "size": "medium",
+ "url": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSJhdXRvIiAgaGVpZ2h0PSJhdXRvIiB2aWV3Qm94PSIwIDAgNzAwLjAwMDAxIDI5NC40MjI1OCI+IAo8c3R5bGU+CiAgCiAgLnRlc3QgewogICAgYW5pbWF0aW9uOiBmYWRlIDNzIGluZmluaXRlIGFsdGVybmF0ZTsgCiAgICAKICB9CiAgCiAgQGtleWZyYW1lcyBmYWRlIHsKICAgIAogICAgZnJvbSB7CiAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIAogICAgdG8gewogICAgICAKICAgICAgb3BhY2l0eToxCiAgICB9CiAgICAKICB9CiAgCiAgPC9zdHlsZT4KICAKICA8cGF0aCBjbGFzcz0idGVzdCIgZD0iTTYwMi4yIDEyOC42Yy0xMS43IDIuNy00Mi42IDQuMi00Mi42IDQuMmwtMy44IDEyLjJzMTUuMy0xLjMgMjYuNS0uMmMwIDAgMy42LS4zIDQgNCAuMiA0LjQtLjMgOS0uMyA5cy0uMyAyLjctNCAzLjRjLTQuMy43LTMzLjMgMi0zMy4zIDJMNTQ0IDE3OXMtMS43IDMuNiAyLjIgMi42YzMuNi0xIDM0LTYuOCAzOC02IDQuMiAxIDkgNi44IDcuNiAxMi0xLjYgNi4zLTMyIDI1LjctNTAuNCAyNC40IDAgMC05LjcuNi0xNy44LTEyLjUtNy44LTEyLjUgMi43LTM2IDIuNy0zNnMtNC43LTExLTEuMi0xNWMwIDAgMi0xLjcgOC0yLjJsNy41LTE1LjRzLTguNS41LTEzLjUtNS43Yy00LjYtNi01LTguNi0xLjQtMTAuMiAzLjgtMiAzOS04LjMgNjMuMi03LjUgMCAwIDguNS0xIDE2IDEzLjcgMCAwIDMuNCA2LTIuNiA3LjRNNTExIDE4Ny44Yy0zIDcuMy0xMS4zIDE1LTIxLjMgMTAuMy0xMC4yLTQuOC0yNi4zLTM3LjYtMjYuMy0zNy42cy02LTEyLjItNy4yLTExLjhjMCAwLTEuMy0yLjQtMiAxMS0xIDEzLjMuMiAzOS4yLTUuMyA0My4zLTUgNC0xMSAyLjMtMTQuNC0yLjQtMi44LTQuNy00LTE2LTIuNC0zNS43IDEuOC0xOS43IDYuMy00MC43IDEyLTQ3LjIgNi02LjYgMTAuOC0xLjggMTIuNiAwIDAgMCA3LjcgNyAyMC43IDI3LjdsMi4yIDMuOHMxMS44IDE5LjcgMTMgMTkuNmMwIDAgMSAxIDEuOC4yIDEuMi0uMy44LTYuNy44LTYuN1M0OTMgMTQxIDQ4MiAxMDVjMCAwLTEuNi00LjYtLjUtOSAxLTQgNS4zLTIgNS4zLTJzMTYuNiA4IDI0LjcgMzVjOCAyNyAyLjYgNTEuNS0uNCA1OC44TTQyOS42IDExOC41Yy0xLjYgMi44LTIuMyA2LjctOS4yIDcuOCAwIDAtNjcgNC43LTcwLjMgOS40IDAgMC0yLjIgMi44IDEuNCAzLjUgMy44LjggMTkgMi44IDI2LjIgMy4yIDcuOCAwIDM0IC4yIDQzLjYgMTIgMCAwIDUuNSA1LjYgNS4zIDE4LjMtLjIgMTMtMi41IDE3LjYtNy42IDIyLjMtNS4zIDQuNC01MC43IDI0LjgtODAtNi40IDAgMC0xMy40LTE1IDQuNy0yNi40IDAgMCAxMy04IDQ2LjMgMS4zIDAgMCAxMCAzLjYgOS42IDcuMy0uNiA0LTguMyA4LTE5LjUgNy44LTEwLjgtLjMtMTguOC01LjUtMTcuMi00LjYgMS41LjUtMTEuNy02LjQtMTUuOC0xLjctNCA0LjQtMyA3IDEgOS43IDEwIDUuOCA0OS4zIDMuNyA2MS05LjQgMCAwIDQuNy01LjMtMi40LTkuNi03LTQtMjcuNC02LjUtMzUuMy02LjgtNy41LS40LTM1LjYgMC0zOS44LTcuMyAwIDAtNC01LjIuNC0xOS40IDQuNi0xNSAzNy4zLTIwLjggNTEuNS0yMiAwIDAgMzktMS42IDQ2LjMgNi40IDAgMCAxIDEuOC0uMiA0LjVNMzE5IDIwNi40Yy00LjcgMy41LTE0LjcgMi0xNy42LTItMi44LTMuNS0zLjgtMTcuMy0zLjMtMzkgLjctMjIuMiAxLTQ5LjQgNi01My44IDUtNC4zIDgtLjUgMTAgMi40IDIgMyA0LjYgNi4zIDUgMTMuMi42IDcgMi4zIDQzIDIuMyA0M3MyLjIgMzIuOC0yLjMgMzYuMk0zMjkgODkuNGMtMTMuOCA0LjctMjMuMiAzLjItMzEuMi0uMy0zLjUgNi4zLTUuNiA4LjItOC4yIDguNi00IC40LTcuNS02LTgtOC0uOC0xLjUtMi43LTQuMi0uNC0xMC4zLTcuOC03LTguNC0xNi40LTctMjIuNyAxLjgtNy40IDE1LTM1LjIgNTUtMzguNSAwIDAgMTkuNi0xLjQgMjMgOWguNnMxOSAwIDE4LjYgMTdjMCAxNy0yMSAzOC4yLTQyLjQgNDUuNW0xNy44LTQ4LjdjLTEyLjYgMi0zMiAxOC44LTQxLjMgMzIuNyAxNC4zIDIuNiAzOS4zIDEuNiA1MC41LTIxIDAgMCA1LjMtMTQuMi05LjItMTEuN20tNTUuMyAxMWMtNCA2LjUtNC4yIDEwLjQtMi4zIDEzIDQuNy03IDEzLTE4IDI1LjUtMjYuNi05LjYgMS0xNy43IDUtMjMuMiAxMy42TTYzMi4yIDIwNS43Yy05LjIgMjIuNi0xNyA0NS41LTIxLjUgNzkuOCAwIDAtMSA2LjctNi41IDQuNS01LjUtMi0xNC41LTExLTE2LjUtMjMuNy0yLTE2LjYgNS40LTQ0LjYgMjAuNS03Ni44LTQuNC03LTcuNS0xNy40LTUtMzIgMCAwIDQtMjcgMzEtNTEuNCAwIDAgMy4yLTIuNyA1LTEuOCAyLjIgMSAxLjMgOS42LS41IDE0LTEuNiA0LjItMTMuNiAyNS0xMy42IDI1cy03LjUgMTQuMi01LjQgMjUuM2MxNC4yLTIxLjggNDYuNS02NiA2Ni41LTUyIDEyLjcgOSAxMi43IDM4IDMuMiA1NC44LTcuNSAxMy4zLTI4LjcgNDAuOC01NyAzNC40bTQxLjYtNjhjLTcuNCA4LTIwLjYgMjMuMi0zMSA0My44IDExLTEuMiAyMS43LTcuMyAyNS0xMC40IDUuMy00LjcgMTcuNS0xNy40IDE1LjYtMzQuMiAwIDAtMS4yLTguOC05LjYuOE0yMjYgMjE3LjVjLTM1LjQgMTAuOC02OC44IDUuOC04NyAxLS41IDcuNC0xLjMgMTAuNS0yLjUgMTEuNy0xLjQgMS42LTEzIDguMi0xOS40LTEuMi0yLjgtNC41LTQuMi0xMi42LTUtMjAtNDEtMTguNi02MC00Ni02MC42LTQ3LTEtMS0xMC4zLTEwLjctMS0yMi43IDguNy0xMC44IDM3LjUtMjEuNyA2My4zLTI2IDEtMjIgMy40LTM5IDYuNS00Ni41IDMuNy05IDguNC0xIDEyLjYgNSAzLjQgNC41IDUuNSAyMy44IDUuNyAzOS4yIDE2LjgtLjggMjcgLjQgNDUuNyA0IDI0LjYgNC4yIDQxIDE2LjggMzkuNyAzMS0xLjIgMTQtMTQgMTkuOC0xOSAyMC4yLTUgLjQtMTMtMy4zLTEzLTMuMy01LjYtMi42LS41LTUgNi03LjggNy4yLTMuNSA1LjYtNyA1LjYtNy0yLjYtOC0zNC41LTEzLjMtNjYuMi0xMy4zIDAgMTcuNS43IDQ2LjUgMS4yIDYzLjQgMjIuMiA0LjIgMzguOCAzLjMgMzguOCAzLjNzODEtMi4zIDgzLjMtNTRjMi41LTUxLjgtODEtMTAxLjQtMTQyLjUtMTE3QzU2LjggMTQuNCAyMiAyNS44IDE5IDI3LjNjLTMuMyAxLjYtLjMgMi4yLS4zIDIuMlMyMiAzMCAyOCAzMmM2IDIgMS4yIDUgMS4yIDVDMTguNyA0MC42IDcgMzguNSA0LjcgMzMuN2MtMi4zLTQuNyAxLjUtOSA2LTE1LjMgNC4yLTYuNSA5LTYuMyA5LTYuMyA3Ni0yNi41IDE2OC44IDIxIDE2OC44IDIxIDg2LjggNDMuOCAxMDEuNiA5NS4zIDEwMCAxMTUuMy0xLjQgMTkuNy05IDUzLTYyLjUgNjkuMk01OSAxNDZjLTguNiA0LTIuNiAxMC40LTIuNiAxMC40IDE2LjIgMTcuMyAzNiAyOC4yIDU1IDM1IDIuMi0zMCAyLTQwLjcgMi01NS44Qzg0IDEzNy42IDY3IDE0Mi40IDU5IDE0NiIvPiA8L3N2Zz4="
+ },
+ {
+ "type": "Image",
+ "url": "https://adaptivecards.io/content/adaptive-card.svg"
+ },
+ {
+ "type": "Image",
+ "backgroundColor": "#eeeeee",
+ "style": "person",
+ "url": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSJhdXRvIiAgaGVpZ2h0PSJhdXRvIiB2aWV3Qm94PSIwIDAgNzAwLjAwMDAxIDI5NC40MjI1OCI+IAo8c3R5bGU+CiAgCiAgLnRlc3QgewogICAgYW5pbWF0aW9uOiBmYWRlIDNzIGluZmluaXRlIGFsdGVybmF0ZTsgCiAgICAKICB9CiAgCiAgQGtleWZyYW1lcyBmYWRlIHsKICAgIAogICAgZnJvbSB7CiAgICAgIG9wYWNpdHk6IDAKICAgIH0KICAgIAogICAgdG8gewogICAgICAKICAgICAgb3BhY2l0eToxCiAgICB9CiAgICAKICB9CiAgCiAgPC9zdHlsZT4KICAKICA8cGF0aCBjbGFzcz0idGVzdCIgZD0iTTYwMi4yIDEyOC42Yy0xMS43IDIuNy00Mi42IDQuMi00Mi42IDQuMmwtMy44IDEyLjJzMTUuMy0xLjMgMjYuNS0uMmMwIDAgMy42LS4zIDQgNCAuMiA0LjQtLjMgOS0uMyA5cy0uMyAyLjctNCAzLjRjLTQuMy43LTMzLjMgMi0zMy4zIDJMNTQ0IDE3OXMtMS43IDMuNiAyLjIgMi42YzMuNi0xIDM0LTYuOCAzOC02IDQuMiAxIDkgNi44IDcuNiAxMi0xLjYgNi4zLTMyIDI1LjctNTAuNCAyNC40IDAgMC05LjcuNi0xNy44LTEyLjUtNy44LTEyLjUgMi43LTM2IDIuNy0zNnMtNC43LTExLTEuMi0xNWMwIDAgMi0xLjcgOC0yLjJsNy41LTE1LjRzLTguNS41LTEzLjUtNS43Yy00LjYtNi01LTguNi0xLjQtMTAuMiAzLjgtMiAzOS04LjMgNjMuMi03LjUgMCAwIDguNS0xIDE2IDEzLjcgMCAwIDMuNCA2LTIuNiA3LjRNNTExIDE4Ny44Yy0zIDcuMy0xMS4zIDE1LTIxLjMgMTAuMy0xMC4yLTQuOC0yNi4zLTM3LjYtMjYuMy0zNy42cy02LTEyLjItNy4yLTExLjhjMCAwLTEuMy0yLjQtMiAxMS0xIDEzLjMuMiAzOS4yLTUuMyA0My4zLTUgNC0xMSAyLjMtMTQuNC0yLjQtMi44LTQuNy00LTE2LTIuNC0zNS43IDEuOC0xOS43IDYuMy00MC43IDEyLTQ3LjIgNi02LjYgMTAuOC0xLjggMTIuNiAwIDAgMCA3LjcgNyAyMC43IDI3LjdsMi4yIDMuOHMxMS44IDE5LjcgMTMgMTkuNmMwIDAgMSAxIDEuOC4yIDEuMi0uMy44LTYuNy44LTYuN1M0OTMgMTQxIDQ4MiAxMDVjMCAwLTEuNi00LjYtLjUtOSAxLTQgNS4zLTIgNS4zLTJzMTYuNiA4IDI0LjcgMzVjOCAyNyAyLjYgNTEuNS0uNCA1OC44TTQyOS42IDExOC41Yy0xLjYgMi44LTIuMyA2LjctOS4yIDcuOCAwIDAtNjcgNC43LTcwLjMgOS40IDAgMC0yLjIgMi44IDEuNCAzLjUgMy44LjggMTkgMi44IDI2LjIgMy4yIDcuOCAwIDM0IC4yIDQzLjYgMTIgMCAwIDUuNSA1LjYgNS4zIDE4LjMtLjIgMTMtMi41IDE3LjYtNy42IDIyLjMtNS4zIDQuNC01MC43IDI0LjgtODAtNi40IDAgMC0xMy40LTE1IDQuNy0yNi40IDAgMCAxMy04IDQ2LjMgMS4zIDAgMCAxMCAzLjYgOS42IDcuMy0uNiA0LTguMyA4LTE5LjUgNy44LTEwLjgtLjMtMTguOC01LjUtMTcuMi00LjYgMS41LjUtMTEuNy02LjQtMTUuOC0xLjctNCA0LjQtMyA3IDEgOS43IDEwIDUuOCA0OS4zIDMuNyA2MS05LjQgMCAwIDQuNy01LjMtMi40LTkuNi03LTQtMjcuNC02LjUtMzUuMy02LjgtNy41LS40LTM1LjYgMC0zOS44LTcuMyAwIDAtNC01LjIuNC0xOS40IDQuNi0xNSAzNy4zLTIwLjggNTEuNS0yMiAwIDAgMzktMS42IDQ2LjMgNi40IDAgMCAxIDEuOC0uMiA0LjVNMzE5IDIwNi40Yy00LjcgMy41LTE0LjcgMi0xNy42LTItMi44LTMuNS0zLjgtMTcuMy0zLjMtMzkgLjctMjIuMiAxLTQ5LjQgNi01My44IDUtNC4zIDgtLjUgMTAgMi40IDIgMyA0LjYgNi4zIDUgMTMuMi42IDcgMi4zIDQzIDIuMyA0M3MyLjIgMzIuOC0yLjMgMzYuMk0zMjkgODkuNGMtMTMuOCA0LjctMjMuMiAzLjItMzEuMi0uMy0zLjUgNi4zLTUuNiA4LjItOC4yIDguNi00IC40LTcuNS02LTgtOC0uOC0xLjUtMi43LTQuMi0uNC0xMC4zLTcuOC03LTguNC0xNi40LTctMjIuNyAxLjgtNy40IDE1LTM1LjIgNTUtMzguNSAwIDAgMTkuNi0xLjQgMjMgOWguNnMxOSAwIDE4LjYgMTdjMCAxNy0yMSAzOC4yLTQyLjQgNDUuNW0xNy44LTQ4LjdjLTEyLjYgMi0zMiAxOC44LTQxLjMgMzIuNyAxNC4zIDIuNiAzOS4zIDEuNiA1MC41LTIxIDAgMCA1LjMtMTQuMi05LjItMTEuN20tNTUuMyAxMWMtNCA2LjUtNC4yIDEwLjQtMi4zIDEzIDQuNy03IDEzLTE4IDI1LjUtMjYuNi05LjYgMS0xNy43IDUtMjMuMiAxMy42TTYzMi4yIDIwNS43Yy05LjIgMjIuNi0xNyA0NS41LTIxLjUgNzkuOCAwIDAtMSA2LjctNi41IDQuNS01LjUtMi0xNC41LTExLTE2LjUtMjMuNy0yLTE2LjYgNS40LTQ0LjYgMjAuNS03Ni44LTQuNC03LTcuNS0xNy40LTUtMzIgMCAwIDQtMjcgMzEtNTEuNCAwIDAgMy4yLTIuNyA1LTEuOCAyLjIgMSAxLjMgOS42LS41IDE0LTEuNiA0LjItMTMuNiAyNS0xMy42IDI1cy03LjUgMTQuMi01LjQgMjUuM2MxNC4yLTIxLjggNDYuNS02NiA2Ni41LTUyIDEyLjcgOSAxMi43IDM4IDMuMiA1NC44LTcuNSAxMy4zLTI4LjcgNDAuOC01NyAzNC40bTQxLjYtNjhjLTcuNCA4LTIwLjYgMjMuMi0zMSA0My44IDExLTEuMiAyMS43LTcuMyAyNS0xMC40IDUuMy00LjcgMTcuNS0xNy40IDE1LjYtMzQuMiAwIDAtMS4yLTguOC05LjYuOE0yMjYgMjE3LjVjLTM1LjQgMTAuOC02OC44IDUuOC04NyAxLS41IDcuNC0xLjMgMTAuNS0yLjUgMTEuNy0xLjQgMS42LTEzIDguMi0xOS40LTEuMi0yLjgtNC41LTQuMi0xMi42LTUtMjAtNDEtMTguNi02MC00Ni02MC42LTQ3LTEtMS0xMC4zLTEwLjctMS0yMi43IDguNy0xMC44IDM3LjUtMjEuNyA2My4zLTI2IDEtMjIgMy40LTM5IDYuNS00Ni41IDMuNy05IDguNC0xIDEyLjYgNSAzLjQgNC41IDUuNSAyMy44IDUuNyAzOS4yIDE2LjgtLjggMjcgLjQgNDUuNyA0IDI0LjYgNC4yIDQxIDE2LjggMzkuNyAzMS0xLjIgMTQtMTQgMTkuOC0xOSAyMC4yLTUgLjQtMTMtMy4zLTEzLTMuMy01LjYtMi42LS41LTUgNi03LjggNy4yLTMuNSA1LjYtNyA1LjYtNy0yLjYtOC0zNC41LTEzLjMtNjYuMi0xMy4zIDAgMTcuNS43IDQ2LjUgMS4yIDYzLjQgMjIuMiA0LjIgMzguOCAzLjMgMzguOCAzLjNzODEtMi4zIDgzLjMtNTRjMi41LTUxLjgtODEtMTAxLjQtMTQyLjUtMTE3QzU2LjggMTQuNCAyMiAyNS44IDE5IDI3LjNjLTMuMyAxLjYtLjMgMi4yLS4zIDIuMlMyMiAzMCAyOCAzMmM2IDIgMS4yIDUgMS4yIDVDMTguNyA0MC42IDcgMzguNSA0LjcgMzMuN2MtMi4zLTQuNyAxLjUtOSA2LTE1LjMgNC4yLTYuNSA5LTYuMyA5LTYuMyA3Ni0yNi41IDE2OC44IDIxIDE2OC44IDIxIDg2LjggNDMuOCAxMDEuNiA5NS4zIDEwMCAxMTUuMy0xLjQgMTkuNy05IDUzLTYyLjUgNjkuMk01OSAxNDZjLTguNiA0LTIuNiAxMC40LTIuNiAxMC40IDE2LjIgMTcuMyAzNiAyOC4yIDU1IDM1IDIuMi0zMCAyLTQwLjcgMi01NS44Qzg0IDEzNy42IDY3IDE0Mi40IDU5IDE0NiIvPiA8L3N2Zz4="
+ }
+ ]
+}
diff --git a/samples/v1.6/Elements/Action.Role.json b/samples/v1.6/Elements/Action.Role.json
new file mode 100644
index 0000000000..f635234454
--- /dev/null
+++ b/samples/v1.6/Elements/Action.Role.json
@@ -0,0 +1,86 @@
+{
+ "type": "AdaptiveCard",
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "version": "1.6",
+ "body": [
+ {
+ "type": "TextBlock",
+ "text": "The actions below should use the enum role values",
+ "wrap": true
+ },
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.OpenUrl",
+ "title": "Action.OpenUrl",
+ "role": "button",
+ "url": "https://adaptivecards.io"
+ },
+ {
+ "type": "Action.Submit",
+ "title": "Action.Submit",
+ "role": "tab"
+ },
+ {
+ "type": "Action.ShowCard",
+ "title": "Action.ShowCard",
+ "card": {
+ "type": "AdaptiveCard"
+ },
+ "role": "menu"
+ },
+ {
+ "type": "Action.Submit",
+ "title": "Action.Submit",
+ "role": "menuItem"
+ },
+ {
+ "type": "Action.Execute",
+ "title": "Action.Execute",
+ "role": "link"
+ }
+ ]
+ },
+ {
+ "type": "TextBlock",
+ "text": "The actions below have invalid role values and should default to link and button",
+ "wrap": true
+ },
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.OpenUrl",
+ "title": "Action.OpenUrl",
+ "role": "invalidrole",
+ "url": "https://adaptivecards.io"
+ },
+ {
+ "type": "Action.Submit",
+ "title": "Action.Submit",
+ "role": "invalidrole"
+ }
+ ]
+ },
+ {
+ "type": "TextBlock",
+ "text": "The actions below do not have role values and should be link and button",
+ "wrap": true
+ },
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.OpenUrl",
+ "title": "Action.OpenUrl",
+ "url": "https://adaptivecards.io"
+ },
+ {
+ "type": "Action.Submit",
+ "title": "Action.Submit"
+ }
+ ]
+ }
+ ]
+}
diff --git a/samples/v1.6/Elements/ImageSet.Stacked.Style.json b/samples/v1.6/Elements/ImageSet.Stacked.Style.json
index e67e406c38..19f48750b2 100644
--- a/samples/v1.6/Elements/ImageSet.Stacked.Style.json
+++ b/samples/v1.6/Elements/ImageSet.Stacked.Style.json
@@ -50,6 +50,7 @@
}
],
"backgroundImage": {
+ "url": "https://adaptivecards.io/content/cats/1.png",
"verticalAlignment": "Center",
"horizontalAlignment": "Center"
},
diff --git a/samples/v1.6/Elements/Input.ChoiceSet.DynamicTypeahead.json b/samples/v1.6/Elements/Input.ChoiceSet.DynamicTypeahead.json
new file mode 100644
index 0000000000..7075431963
--- /dev/null
+++ b/samples/v1.6/Elements/Input.ChoiceSet.DynamicTypeahead.json
@@ -0,0 +1,34 @@
+{
+ "type": "AdaptiveCard",
+ "version": "1.6",
+ "body": [
+ {
+ "type": "Input.ChoiceSet",
+ "id": "dynamicChoiceSet",
+ "label": "Enter the name of your team",
+ "placeholder": "AdaptiveCards",
+ "isRequired": true,
+ "errorMessage": "You must select a valid team",
+ "choices": [
+ {
+ "title": "Office",
+ "value": "1"
+ },
+ {
+ "title": "Teams",
+ "value": "2"
+ },
+ {
+ "title": "Outlook",
+ "value": "3"
+ }
+ ],
+ "choices.data": {
+ "type": "Data.Query",
+ "dataset": "teamScopeInOrg",
+ "count": 15,
+ "skip": 0
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/samples/v1.6/Tests/Carousel.SelectAction.In.ParentContainer.json b/samples/v1.6/Tests/Carousel.SelectAction.In.ParentContainer.json
index e66475fb61..e73beb5416 100644
--- a/samples/v1.6/Tests/Carousel.SelectAction.In.ParentContainer.json
+++ b/samples/v1.6/Tests/Carousel.SelectAction.In.ParentContainer.json
@@ -40,6 +40,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
+ "url": "https://adaptivecards.io",
"title": "Container Level 2 Select Action"
}
}
diff --git a/samples/v1.6/Tests/Carousel.ShowCard.json b/samples/v1.6/Tests/Carousel.ShowCard.json
index 907a7db266..eedd0d095e 100644
--- a/samples/v1.6/Tests/Carousel.ShowCard.json
+++ b/samples/v1.6/Tests/Carousel.ShowCard.json
@@ -57,6 +57,7 @@
],
"selectAction": {
"type": "Action.OpenUrl",
+ "url": "https://adaptivecards.io",
"title": "Container Level 2 Select Action"
}
}
diff --git a/samples/v1.6/Tests/Input.ChoiceSet.DynamicTypeahead.json b/samples/v1.6/Tests/Input.ChoiceSet.DynamicTypeahead.json
new file mode 100644
index 0000000000..7ee8256d23
--- /dev/null
+++ b/samples/v1.6/Tests/Input.ChoiceSet.DynamicTypeahead.json
@@ -0,0 +1,29 @@
+{
+ "version": "1.6",
+ "type": "AdaptiveCard",
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "body": [
+ {
+ "type": "Input.ChoiceSet",
+ "isMultiSelect": false,
+ "label": "Please select a package",
+ "style": "filtered",
+ "id": "chosenPackage",
+ "isRequired": true,
+ "errorMessage": "Please select a package",
+ "choices.data":
+ {
+ "type": "Data.Query",
+ "dataset": "packagesInScope",
+ "count": 1,
+ "skip": 2
+ }
+ }
+ ],
+ "actions": [
+ {
+ "title": "OK",
+ "type": "Action.Submit"
+ }
+ ]
+}
diff --git a/samples/v1.6/Tests/Input.ChoiceSet.Static&DynamicTypeahead.json b/samples/v1.6/Tests/Input.ChoiceSet.Static&DynamicTypeahead.json
new file mode 100644
index 0000000000..95cbba03bb
--- /dev/null
+++ b/samples/v1.6/Tests/Input.ChoiceSet.Static&DynamicTypeahead.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.6",
+ "body": [
+ {
+ "type": "TextBlock",
+ "text": "Select package"
+ },
+ {
+ "type": "Input.ChoiceSet",
+ "id": "choiceset1",
+ "value": "4",
+ "choices": [
+ {
+ "title": "Microsoft.IdentityModel.Tokens.static",
+ "value": "1"
+ },
+ {
+ "title": "Microsoft.IdentityModel.Logging.static",
+ "value": "2"
+ },
+ {
+ "title": "Microsoft.IdentityModel.Auth.static",
+ "value": "3"
+ },
+ {
+ "title": "Ms.IdentityModel.static",
+ "value": "4"
+ },
+ {
+ "title": "Ms.IdentityModel.tokens.static",
+ "value": "5"
+ }
+ ],
+ "choices.data":
+ {
+ "type": "Data.Query",
+ "dataset": "graph.microsoft.com/users",
+ "count": 1,
+ "skip": 2
+ }
+ }
+ ],
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "Submit"
+ }
+ ]
+}
diff --git a/schemas/1.6.0/adaptive-card.json b/schemas/1.6.0/adaptive-card.json
index 1d4ffb949d..390fb585cf 100644
--- a/schemas/1.6.0/adaptive-card.json
+++ b/schemas/1.6.0/adaptive-card.json
@@ -1071,6 +1071,37 @@
}
]
},
+ "Data.Query": {
+ "description": "The data populated in the event payload for fetching dynamic choices, sent to the card-author to help identify the dataset from which choices might be fetched to be displayed in the dropdown. It might contain auxillary data to limit the maximum number of choices that can be sent and to support pagination.",
+ "properties": {
+ "type": {
+ "enum": [
+ "Data.Query"
+ ],
+ "description": "Must be `Data.Query`"
+ },
+ "dataset": {
+ "type": "string",
+ "description": "The dataset to be queried to get the choices.",
+ "version": "1.6"
+ },
+ "count": {
+ "type": "number",
+ "description": "The maximum number of choices that should be returned by the query. It can be ignored if the card-author wants to send a different number.",
+ "version": "1.6"
+ },
+ "skip": {
+ "type": "number",
+ "description": "The number of choices to be skipped in the list of choices returned by the query. It can be ignored if the card-author does not want pagination.",
+ "version": "1.6"
+ }
+ },
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "dataset"
+ ]
+ },
"Input.Choice": {
"description": "Describes a choice for use in a ChoiceSet.",
"properties": {
@@ -1112,6 +1143,11 @@
},
"description": "`Choice` options."
},
+ "choices.data": {
+ "$ref": "#/definitions/Data.Query",
+ "description": "Allows dynamic fetching of choices from the bot to be displayed as suggestions in the dropdown when the user types in the input field.",
+ "version": "1.6"
+ },
"isMultiSelect": {
"type": "boolean",
"description": "Allow multiple choices to be selected.",
@@ -1137,6 +1173,9 @@
"errorMessage": {},
"isRequired": {},
"label": {},
+ "labelPosition": {},
+ "labelWidth": {},
+ "inputStyle": {},
"fallback": {},
"height": {},
"separator": {},
@@ -1181,6 +1220,9 @@
"errorMessage": {},
"isRequired": {},
"label": {},
+ "labelPosition": {},
+ "labelWidth": {},
+ "inputStyle": {},
"fallback": {},
"height": {},
"separator": {},
@@ -1225,6 +1267,9 @@
"errorMessage": {},
"isRequired": {},
"label": {},
+ "labelPosition": {},
+ "labelWidth": {},
+ "inputStyle": {},
"fallback": {},
"height": {},
"separator": {},
@@ -1284,6 +1329,9 @@
"errorMessage": {},
"isRequired": {},
"label": {},
+ "labelPosition": {},
+ "labelWidth": {},
+ "inputStyle": {},
"fallback": {},
"height": {},
"separator": {},
@@ -1328,6 +1376,9 @@
"errorMessage": {},
"isRequired": {},
"label": {},
+ "labelPosition": {},
+ "labelWidth": {},
+ "inputStyle": {},
"fallback": {},
"height": {},
"separator": {},
@@ -1380,6 +1431,9 @@
"errorMessage": {},
"isRequired": {},
"label": {},
+ "labelPosition": {},
+ "labelWidth": {},
+ "inputStyle": {},
"fallback": {},
"height": {},
"separator": {},
@@ -2168,6 +2222,34 @@
}
]
},
+ "InputLabelPosition": {
+ "description": "Specifies position of the label with respect to input.",
+ "anyOf": [
+ {
+ "enum": [
+ "inline",
+ "above"
+ ]
+ },
+ {
+ "pattern": "^([i|I][n|N][l|L][i|I][n|N][e|E])|([a|A][b|B][o|O][v|V][e|E])$"
+ }
+ ]
+ },
+ "InputStyle": {
+ "description": "`revealOnHover`: Show input fields in read only view unless user takes any action. `default`: Show the default editable state for input controls",
+ "anyOf": [
+ {
+ "enum": [
+ "revealOnHover",
+ "default"
+ ]
+ },
+ {
+ "pattern": "^([r|R][e|E][v|V][e|E][a|A][l|L][o|O][n|N][h|H][o|O][v|V][e|E][r|R])|([d|D][e|E][f|F][a|A][u|U][l|L][t|T])$"
+ }
+ ]
+ },
"Spacing": {
"description": "Specifies how much spacing. Hosts pick the exact pixel amounts for each of these.",
"anyOf": [
@@ -3279,6 +3361,28 @@
"description": "Label for this input",
"version": "1.3"
},
+ "labelPosition": {
+ "$ref": "#/definitions/InputLabelPosition",
+ "description": "[SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the position of the label. It can take 'inline' and 'above' values. By default, the label is placed 'above' when label position is not specified.",
+ "version": "1.6"
+ },
+ "labelWidth": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ }
+ ],
+ "description": "[SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the width of the label in percent like 40 or a specific pixel width like '40px' when label is placed inline with the input. labelWidth would be ignored when the label is displayed above the input.",
+ "version": "1.6"
+ },
+ "inputStyle": {
+ "$ref": "#/definitions/InputStyle",
+ "description": "[SUPPORTED ONLY IN JAVASCRIPT SDK] Style hint for input fields. Allows input fields to appear as read-only but when user clicks/focuses on the field, it allows them to update those fields.",
+ "version": "1.6"
+ },
"fallback": {
"anyOf": [
{
diff --git a/schemas/src/elements/inputs/Data.Query.json b/schemas/src/elements/inputs/Data.Query.json
new file mode 100644
index 0000000000..71aba46ab6
--- /dev/null
+++ b/schemas/src/elements/inputs/Data.Query.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://raw.githubusercontent.com/microsoft/AdaptiveCards/6f39aedce45864ae1067ed44a5551dc973790bb5/source/nodejs/typed-schema/schema/lib/Type.json",
+ "description": "The data populated in the event payload for fetching dynamic choices, sent to the card-author to help identify the dataset from which choices might be fetched to be displayed in the dropdown. It might contain auxillary data to limit the maximum number of choices that can be sent and to support pagination.",
+ "properties": {
+ "dataset": {
+ "type": "string",
+ "description": "The dataset to be queried to get the choices.",
+ "required": true,
+ "version": "1.6"
+ },
+ "count": {
+ "type": "number",
+ "description": "The maximum number of choices that should be returned by the query. It can be ignored if the card-author wants to send a different number.",
+ "version": "1.6"
+ },
+ "skip": {
+ "type": "number",
+ "description": "The number of choices to be skipped in the list of choices returned by the query. It can be ignored if the card-author does not want pagination.",
+ "version": "1.6"
+ }
+ }
+}
diff --git a/schemas/src/elements/inputs/Input.ChoiceSet.json b/schemas/src/elements/inputs/Input.ChoiceSet.json
index 76aaf94e83..07c306e7c3 100644
--- a/schemas/src/elements/inputs/Input.ChoiceSet.json
+++ b/schemas/src/elements/inputs/Input.ChoiceSet.json
@@ -7,6 +7,11 @@
"type": "Input.Choice[]",
"description": "`Choice` options."
},
+ "choices.data": {
+ "type": "Data.Query",
+ "description": "Allows dynamic fetching of choices from the bot to be displayed as suggestions in the dropdown when the user types in the input field.",
+ "version": "1.6"
+ },
"isMultiSelect": {
"type": "boolean",
"description": "Allow multiple choices to be selected.",
diff --git a/schemas/src/elements/inputs/Input.json b/schemas/src/elements/inputs/Input.json
index 89eaacb903..b0d441d6e4 100644
--- a/schemas/src/elements/inputs/Input.json
+++ b/schemas/src/elements/inputs/Input.json
@@ -24,6 +24,21 @@
"type": "string",
"description": "Label for this input",
"version": "1.3"
+ },
+ "labelPosition": {
+ "type": "InputLabelPosition",
+ "description": "[SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the position of the label. It can take 'inline' and 'above' values. By default, the label is placed 'above' when label position is not specified.",
+ "version": "1.6"
+ },
+ "labelWidth": {
+ "type": "string|number",
+ "description": "[SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the width of the label in percent like 40 or a specific pixel width like '40px' when label is placed inline with the input. labelWidth would be ignored when the label is displayed above the input.",
+ "version": "1.6"
+ },
+ "inputStyle": {
+ "type": "InputStyle",
+ "description": "[SUPPORTED ONLY IN JAVASCRIPT SDK] Style hint for input fields. Allows input fields to appear as read-only but when user clicks/focuses on the field, it allows them to update those fields.",
+ "version": "1.6"
}
}
}
diff --git a/schemas/src/enums/InputLabelPosition.json b/schemas/src/enums/InputLabelPosition.json
new file mode 100644
index 0000000000..c3af3ed306
--- /dev/null
+++ b/schemas/src/enums/InputLabelPosition.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "https://raw.githubusercontent.com/microsoft/AdaptiveCards/6f39aedce45864ae1067ed44a5551dc973790bb5/source/nodejs/typed-schema/schema/lib/Type.json",
+ "classType": "Enum",
+ "description": "Specifies position of the label with respect to input.",
+ "values": [
+ "inline",
+ "above"
+ ]
+}
diff --git a/schemas/src/enums/InputStyle.json b/schemas/src/enums/InputStyle.json
new file mode 100644
index 0000000000..5321ba3327
--- /dev/null
+++ b/schemas/src/enums/InputStyle.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "https://raw.githubusercontent.com/microsoft/AdaptiveCards/6f39aedce45864ae1067ed44a5551dc973790bb5/source/nodejs/typed-schema/schema/lib/Type.json",
+ "classType": "Enum",
+ "description": "`revealOnHover`: Show input fields in read only view unless user takes any action. `default`: Show the default editable state for input controls",
+ "values": [
+ "revealOnHover",
+ "default"
+ ]
+}
diff --git a/source/NuGet.config b/source/NuGet.config
index bc826a7412..04b4b6ac94 100644
--- a/source/NuGet.config
+++ b/source/NuGet.config
@@ -3,7 +3,7 @@
-
+
diff --git a/source/android/adaptivecards/build.gradle b/source/android/adaptivecards/build.gradle
index 448a159698..adb19b1d51 100644
--- a/source/android/adaptivecards/build.gradle
+++ b/source/android/adaptivecards/build.gradle
@@ -6,7 +6,7 @@ plugins {
apply from: '../constants.gradle'
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
-apply plugin: 'maven'
+apply plugin: 'kotlin-kapt'
apply plugin: 'maven-publish'
android {
@@ -15,8 +15,6 @@ android {
defaultConfig {
minSdkVersion project.ext.minSdkVersion
targetSdkVersion project.ext.targetSdkVersion
- versionCode 1
- versionName "1.0"
multiDexEnabled true
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
externalNativeBuild {
@@ -41,7 +39,11 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- ndkVersion '24.0.8215888'
+ ndkVersion '23.1.7779620'
+
+ lintOptions {
+ abortOnError false
+ }
}
task sourceJar(type: Jar) {
diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/AdaptiveCardSchemaKey.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/AdaptiveCardSchemaKey.java
index 897c9d8358..e9f26da7eb 100644
--- a/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/AdaptiveCardSchemaKey.java
+++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/AdaptiveCardSchemaKey.java
@@ -130,6 +130,7 @@ public enum AdaptiveCardSchemaKey {
MaxWidth,
Media,
Medium,
+ MetaData,
Method,
MimeType,
Min,
@@ -204,6 +205,7 @@ public enum AdaptiveCardSchemaKey {
VerticalCellContentAlignment,
VerticalContentAlignment,
Warning,
+ WebUrl,
Weight,
Width,
Wrap;
diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/RichTextElementProperties.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/RichTextElementProperties.java
index 53e72d27fe..921340679a 100644
--- a/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/RichTextElementProperties.java
+++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/objectmodel/RichTextElementProperties.java
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------------
- * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 4.0.2
+ * This file was automatically generated by SWIG (https://www.swig.org).
+ * Version 4.1.1
*
- * Do not make changes to this file unless you know what you are doing--modify
+ * Do not make changes to this file unless you know what you are doing - modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/AdaptiveCardRenderer.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/AdaptiveCardRenderer.java
index 93bd9112ae..e531d660a0 100644
--- a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/AdaptiveCardRenderer.java
+++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/AdaptiveCardRenderer.java
@@ -24,7 +24,7 @@
public class AdaptiveCardRenderer
{
- public static final String VERSION = "1.5";
+ public static final String VERSION = "1.6";
protected AdaptiveCardRenderer()
{
diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/InputUtil.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/InputUtil.java
index aefa8cf85b..174d0309f1 100644
--- a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/InputUtil.java
+++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/InputUtil.java
@@ -27,6 +27,8 @@ public static TextView RenderInputLabel(String label, boolean isRequired, Contex
CharSequence text = RendererUtil.handleSpecialText(label);
paragraph.append(text);
+ CharSequence labelContentDescription = text;
+
InputLabelConfig inputLabelConfig;
if (isRequired)
{
@@ -46,6 +48,13 @@ public static TextView RenderInputLabel(String label, boolean isRequired, Contex
if (requiredLabelSuffix == null || requiredLabelSuffix.isEmpty())
{
requiredLabelSuffix = " *";
+
+ // TalkBack should read "required" instead of "asterisk"
+ labelContentDescription += " required";
+ }
+ else
+ {
+ labelContentDescription += requiredLabelSuffix;
}
paragraph.append(requiredLabelSuffix);
@@ -55,6 +64,7 @@ public static TextView RenderInputLabel(String label, boolean isRequired, Contex
TextView labelView = new TextView(context);
labelView.setText(paragraph);
labelView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+ labelView.setContentDescription(labelContentDescription);
TextBlockRenderer.applyTextFormat(labelView, hostConfig, TextStyle.Default, FontType.Default, inputLabelConfig.getWeight(), renderArgs);
TextBlockRenderer.applyTextSize(labelView, hostConfig, TextStyle.Default, FontType.Default, inputLabelConfig.getSize(), renderArgs);
diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/readonly/RichTextBlockRenderer.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/readonly/RichTextBlockRenderer.java
index 7f65fa9731..7322689087 100644
--- a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/readonly/RichTextBlockRenderer.java
+++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/readonly/RichTextBlockRenderer.java
@@ -24,6 +24,8 @@
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentManager;
+import java.util.Locale;
+
import io.adaptivecards.objectmodel.BaseActionElement;
import io.adaptivecards.objectmodel.BaseCardElement;
import io.adaptivecards.objectmodel.FontType;
@@ -131,7 +133,10 @@ else if ((textRun = TextRun.dynamic_cast(inline)) == null)
TextWeight textWeight = TextRendererUtil.computeTextWeight(hostConfig, TextStyle.Default, textRun.GetTextWeight(), renderArgs);
boolean isSubtle = TextRendererUtil.computeIsSubtle(hostConfig, TextStyle.Default, textRun.GetIsSubtle(), renderArgs);
FontType fontType = TextRendererUtil.computeFontType(hostConfig, TextStyle.Default, textRun.GetFontType(), renderArgs);
-
+ if (textRun.GetLanguage() == null || textRun.GetLanguage().isEmpty())
+ {
+ textRun.SetLanguage(Locale.getDefault().getLanguage());
+ }
DateTimeParser parser = new DateTimeParser(textRun.GetLanguage());
String formattedText = parser.GenerateString(textRun.GetTextForDateParsing());
diff --git a/source/android/build.gradle b/source/android/build.gradle
index 2eb546fb63..7b62a5d36d 100644
--- a/source/android/build.gradle
+++ b/source/android/build.gradle
@@ -1,14 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.5.10'
+ ext.kotlin_version = '1.6.21'
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.3'
+ classpath 'com.android.tools.build:gradle:7.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
diff --git a/source/android/constants.gradle b/source/android/constants.gradle
index fd5ddfd243..0858d45d0f 100644
--- a/source/android/constants.gradle
+++ b/source/android/constants.gradle
@@ -16,7 +16,7 @@ project.ext {
// Packages versions
androidxMultidexVersion = '2.0.1'
- kotlinAnnotationsVersion = '1.5.31'
+ kotlinAnnotationsVersion = '1.6.21'
androidxAnnotationVersion = '1.3.0'
androidxAppCompatVersion = '1.3.1'
androidxCollectionVersion = '1.1.0'
diff --git a/source/android/gradle/wrapper/gradle-wrapper.properties b/source/android/gradle/wrapper/gradle-wrapper.properties
index 117aaef648..ffd053e7a6 100644
--- a/source/android/gradle/wrapper/gradle-wrapper.properties
+++ b/source/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/source/android/mobile/build.gradle b/source/android/mobile/build.gradle
index 77199deb5e..6eb24ac10c 100644
--- a/source/android/mobile/build.gradle
+++ b/source/android/mobile/build.gradle
@@ -36,6 +36,9 @@ android {
}
}
}
+ lintOptions {
+ abortOnError false
+ }
}
dependencies {
@@ -53,5 +56,6 @@ dependencies {
implementation 'org.webrtc:google-webrtc:1.0.27306'
implementation 'androidx.core:core-ktx:1.6.0'
testImplementation 'junit:junit:4.12'
+ implementation 'com.android.support.constraint:constraint-layout:2.0.4'
implementation project(':adaptivecards')
}
diff --git a/source/android/mobile/src/main/res/raw/importer_card.json b/source/android/mobile/src/main/res/raw/importer_card.json
index 78574d8285..2bd200367f 100644
--- a/source/android/mobile/src/main/res/raw/importer_card.json
+++ b/source/android/mobile/src/main/res/raw/importer_card.json
@@ -1,203 +1,205 @@
{
- "type": "AdaptiveCard",
- "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "version": "1.2",
- "body": [
- {
- "type": "ActionSet",
- "actions": [
- {
- "type": "Action.ShowCard",
- "title": "Sample Cards",
- "card": {
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "Input.ChoiceSet",
- "choices": [
- {
- "title": "ActivityUpdate",
- "value": "v1.5/Scenarios/ActivityUpdate.json"
- },
- {
- "title": "CalendarReminder",
- "value": "v1.5/Scenarios/CalendarReminder.json"
- },
- {
- "title": "FlightItinerary",
- "value": "v1.5/Scenarios/FlightItinerary.json"
- },
- {
- "title": "FlightUpdate",
- "value": "v1.5/Scenarios/FlightUpdate.json"
- },
- {
- "title": "FoodOrder",
- "value": "v1.5/Scenarios/FoodOrder.json"
- },
- {
- "title": "ImageGallery",
- "value": "v1.5/Scenarios/ImageGallery.json"
- },
- {
- "title": "InputForm",
- "value": "v1.5/Scenarios/InputForm.json"
- },
- {
- "title": "Inputs",
- "value": "v1.5/Scenarios/InputsWithValidation.json"
- },
- {
- "title": "Restaurant",
- "value": "v1.5/Scenarios/Restaurant.json"
- },
- {
- "title": "SportingEvent",
- "value": "v1.5/Scenarios/SportingEvent.json"
- },
- {
- "title": "StockUpdate",
- "value": "v1.5/Scenarios/StockUpdate.json"
- },
- {
- "title": "WeatherCompact",
- "value": "v1.5/Scenarios/WeatherCompact.json"
- },
- {
- "title": "WeatherLarge",
- "value": "v1.5/Scenarios/WeatherLarge.json"
- },
- {
- "title": "Agenda",
- "value": "v1.5/Scenarios/Agenda.json"
- },
- {
- "title": "ExpenseReport",
- "value": "v1.5/Scenarios/ExpenseReport.json"
- },
- {
- "title": "FlightDetails",
- "value": "v1.5/Scenarios/FlightDetails.json"
- }
- ],
- "placeholder": "(choose sample)",
- "id": "sampleCardName"
- }
- ]
- }
- },
- {
- "type": "Action.ShowCard",
- "title": "Import Card",
- "card": {
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "ActionSet",
- "actions": [
- {
- "type": "Action.Submit",
- "title": "Choose File",
- "id": "cardFileAction"
- }
- ]
- }
- ]
- }
- }
- ]
- },
- {
- "type": "ActionSet",
- "actions": [
- {
- "type": "Action.ShowCard",
- "title": "Sample Configs",
- "card": {
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "Input.ChoiceSet",
- "choices": [
- {
- "title": "cortana-skills-classic",
- "value": "HostConfig/cortana-skills-classic.json"
- },
- {
- "title": "cortana-skills-dark",
- "value": "HostConfig/cortana-skills-dark.json"
- },
- {
- "title": "cortana-skills-light",
- "value": "HostConfig/cortana-skills-light.json"
- },
- {
- "title": "microsoft-teams-dark",
- "value": "HostConfig/microsoft-teams-dark.json"
- },
- {
- "title": "microsoft-teams-light",
- "value": "HostConfig/microsoft-teams-light.json"
- },
- {
- "title": "outlook-desktop",
- "value": "HostConfig/outlook-desktop.json"
- },
- {
- "title": "render-to-image",
- "value": "HostConfig/render-to-image.json"
- },
- {
- "title": "sample",
- "value": "HostConfig/sample.json"
- },
- {
- "title": "skype",
- "value": "HostConfig/skype.json"
- },
- {
- "title": "testVariantHostConfig",
- "value": "HostConfig/testVariantHostConfig.json"
- },
- {
- "title": "webchat",
- "value": "HostConfig/webchat.json"
- },
- {
- "title": "windows-notification",
- "value": "HostConfig/windows-notification.json"
- },
- {
- "title": "windows-timeline",
- "value": "HostConfig/windows-timeline.json"
- }
- ],
- "placeholder": "(default)",
- "id": "sampleHostConfigName"
- }
- ]
- }
- },
- {
- "type": "Action.ShowCard",
- "title": "Import Config",
- "card": {
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "ActionSet",
- "actions": [
- {
- "type": "Action.Submit",
- "title": "Choose File",
- "id": "hostConfigFileAction"
- }
- ]
- }
- ]
- }
- }
- ]
- }
- ]
+ "type": "AdaptiveCard",
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "version": "1.5",
+ "body": [
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.ShowCard",
+ "title": "Sample Cards",
+ "card": {
+ "type": "AdaptiveCard",
+ "body": [
+ {
+ "type": "Input.ChoiceSet",
+ "choices": [
+ {
+ "title": "ActivityUpdate",
+ "value": "v1.5/Scenarios/ActivityUpdate.json"
+ },
+ {
+ "title": "CalendarReminder",
+ "value": "v1.5/Scenarios/CalendarReminder.json"
+ },
+ {
+ "title": "FlightItinerary",
+ "value": "v1.5/Scenarios/FlightItinerary.json"
+ },
+ {
+ "title": "FlightUpdate",
+ "value": "v1.5/Scenarios/FlightUpdate.json"
+ },
+ {
+ "title": "FoodOrder",
+ "value": "v1.5/Scenarios/FoodOrder.json"
+ },
+ {
+ "title": "ImageGallery",
+ "value": "v1.5/Scenarios/ImageGallery.json"
+ },
+ {
+ "title": "InputForm",
+ "value": "v1.5/Scenarios/InputForm.json"
+ },
+ {
+ "title": "Inputs",
+ "value": "v1.5/Scenarios/InputsWithValidation.json"
+ },
+ {
+ "title": "Restaurant",
+ "value": "v1.5/Scenarios/Restaurant.json"
+ },
+ {
+ "title": "SportingEvent",
+ "value": "v1.5/Scenarios/SportingEvent.json"
+ },
+ {
+ "title": "StockUpdate",
+ "value": "v1.5/Scenarios/StockUpdate.json"
+ },
+ {
+ "title": "WeatherCompact",
+ "value": "v1.5/Scenarios/WeatherCompact.json"
+ },
+ {
+ "title": "WeatherLarge",
+ "value": "v1.5/Scenarios/WeatherLarge.json"
+ },
+ {
+ "title": "Agenda",
+ "value": "v1.5/Scenarios/Agenda.json"
+ },
+ {
+ "title": "ExpenseReport",
+ "value": "v1.5/Scenarios/ExpenseReport.json"
+ },
+ {
+ "title": "FlightDetails",
+ "value": "v1.5/Scenarios/FlightDetails.json"
+ }
+ ],
+ "placeholder": "(choose sample)",
+ "id": "sampleCardName"
+ }
+ ]
+ }
+ },
+ {
+ "type": "Action.ShowCard",
+ "title": "Import Card",
+ "card": {
+ "type": "AdaptiveCard",
+ "body": [
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "Choose File",
+ "id": "cardFileAction"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.ShowCard",
+ "title": "Sample Configs",
+ "card": {
+ "type": "AdaptiveCard",
+ "body": [
+ {
+ "type": "Input.ChoiceSet",
+ "choices": [
+ {
+ "title": "cortana-skills-classic",
+ "value": "HostConfig/cortana-skills-classic.json"
+ },
+ {
+ "title": "cortana-skills-dark",
+ "value": "HostConfig/cortana-skills-dark.json"
+ },
+ {
+ "title": "cortana-skills-light",
+ "value": "HostConfig/cortana-skills-light.json"
+ },
+ {
+ "title": "microsoft-teams-dark",
+ "value": "HostConfig/microsoft-teams-dark.json"
+ },
+ {
+ "title": "microsoft-teams-light",
+ "value": "HostConfig/microsoft-teams-light.json"
+ },
+ {
+ "title": "outlook-desktop",
+ "value": "HostConfig/outlook-desktop.json"
+ },
+ {
+ "title": "render-to-image",
+ "value": "HostConfig/render-to-image.json"
+ },
+ {
+ "title": "sample",
+ "value": "HostConfig/sample.json"
+ },
+ {
+ "title": "skype",
+ "value": "HostConfig/skype.json"
+ },
+ {
+ "title": "testVariantHostConfig",
+ "value": "HostConfig/testVariantHostConfig.json"
+ },
+ {
+ "title": "webchat",
+ "value": "HostConfig/webchat.json"
+ },
+ {
+ "title": "windows-notification",
+ "value": "HostConfig/windows-notification.json"
+ },
+ {
+ "title": "windows-timeline",
+ "value": "HostConfig/windows-timeline.json"
+ }
+ ],
+ "placeholder": "(default)",
+ "id": "sampleHostConfigName"
+ }
+ ]
+ },
+ "isEnabled": false
+ },
+ {
+ "type": "Action.ShowCard",
+ "title": "Import Config",
+ "card": {
+ "type": "AdaptiveCard",
+ "body": [
+ {
+ "type": "ActionSet",
+ "actions": [
+ {
+ "type": "Action.Submit",
+ "title": "Choose File",
+ "id": "hostConfigFileAction"
+ }
+ ]
+ }
+ ]
+ },
+ "isEnabled": false
+ }
+ ]
+ }
+ ]
}
diff --git a/source/android/mobilechatapp/build.gradle b/source/android/mobilechatapp/build.gradle
index b559df4598..609698fa55 100644
--- a/source/android/mobilechatapp/build.gradle
+++ b/source/android/mobilechatapp/build.gradle
@@ -28,6 +28,9 @@ android {
sourceCompatibility 1.8
targetCompatibility 1.8
}
+ lintOptions {
+ abortOnError false
+ }
}
@@ -45,7 +48,7 @@ dependencies {
implementation project(path: ':adaptivecards')
}
-task copyTestFiles(type: Copy)
+task copyTestFiles(type: Copy) { duplicatesStrategy = DuplicatesStrategy.INCLUDE }
copyTestFiles {
description = 'Copies test files to the assets folder'
diff --git a/source/android/uitestapp/build.gradle b/source/android/uitestapp/build.gradle
index 59eef8279a..32075d820d 100644
--- a/source/android/uitestapp/build.gradle
+++ b/source/android/uitestapp/build.gradle
@@ -3,6 +3,7 @@
apply from: '../constants.gradle'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
android {
compileSdkVersion project.ext.compileSdkVersion
diff --git a/source/community/reactnative/android/app/debug.keystore b/source/community/reactnative/android/app/debug.keystore
deleted file mode 100644
index a3ba7c9c19..0000000000
Binary files a/source/community/reactnative/android/app/debug.keystore and /dev/null differ
diff --git a/source/dotnet/AdaptiveCards.sln b/source/dotnet/AdaptiveCards.sln
index c1aef475aa..33051cff66 100644
--- a/source/dotnet/AdaptiveCards.sln
+++ b/source/dotnet/AdaptiveCards.sln
@@ -17,8 +17,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Rendering.Wpf
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Rendering.Wpf.Xceed", "Library\AdaptiveCards.Rendering.Wpf.Xceed\AdaptiveCards.Rendering.Wpf.Xceed.csproj", "{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Sample.Html", "Samples\AdaptiveCards.Sample.Html\AdaptiveCards.Sample.Html.csproj", "{C015DC5F-E523-4828-8E46-118A8242B51A}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Test", "Test\AdaptiveCards.Test\AdaptiveCards.Test.csproj", "{4DB2C1D1-630A-4445-95F3-4E342ABD9342}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Sample.ImageRender", "samples\AdaptiveCards.Sample.ImageRender\AdaptiveCards.Sample.ImageRender.csproj", "{BCFC1329-903B-4440-ABE1-160C22A3AE23}"
diff --git a/source/dotnet/AdaptiveCardsNet6.sln b/source/dotnet/AdaptiveCardsNet6.sln
new file mode 100644
index 0000000000..d09b11cd76
--- /dev/null
+++ b/source/dotnet/AdaptiveCardsNet6.sln
@@ -0,0 +1,306 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33815.320
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{C443BF0A-C616-4E98-8994-C5BAE76AE556}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Library", "Library", "{C7727147-4AD9-4005-A8D0-EEEED82347D3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Net6", "Library\AdaptiveCards.Net6\AdaptiveCards.csproj", "{FC4A3527-05A2-4297-98D3-CB1CB512FFDA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Rendering.Wpf.Net6", "Library\AdaptiveCards.Rendering.Wpf.Net6\AdaptiveCards.Rendering.Wpf.Net6.csproj", "{34F849F9-E349-4237-B7CB-A63884DAB39D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Net6.Sample.ImageRender", "Samples\AdaptiveCards.Net6.Sample.ImageRender\AdaptiveCards.Net6.Sample.ImageRender.csproj", "{925EA86A-0B9F-4277-B05C-A3586DA3CA4D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {34F849F9-E349-4237-B7CB-A63884DAB39D} = {34F849F9-E349-4237-B7CB-A63884DAB39D}
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA} = {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Sample.WPFVisualizer.Net6", "Samples\WPFVisualizerNet6\AdaptiveCards.Sample.WPFVisualizer.Net6.csproj", "{96144C6C-2E37-4A84-95AB-7F01D9222F2F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Templating.Net6", "Library\AdaptiveCards.Templating.Net6\AdaptiveCards.Templating.Net6.csproj", "{615381C8-0ADC-4CBE-B827-2E71497B1970}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
+ Ad-Hoc|ARM = Ad-Hoc|ARM
+ Ad-Hoc|iPhone = Ad-Hoc|iPhone
+ Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
+ Ad-Hoc|x64 = Ad-Hoc|x64
+ Ad-Hoc|x86 = Ad-Hoc|x86
+ AppStore|Any CPU = AppStore|Any CPU
+ AppStore|ARM = AppStore|ARM
+ AppStore|iPhone = AppStore|iPhone
+ AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
+ AppStore|x64 = AppStore|x64
+ AppStore|x86 = AppStore|x86
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|iPhone = Debug|iPhone
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|iPhone = Release|iPhone
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|x64.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|x86.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|ARM.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|x64.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|x86.Build.0 = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|ARM.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|ARM.Build.0 = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|iPhone.Build.0 = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|x64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|x64.Build.0 = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|x86.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|x86.Build.0 = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|x64.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|x86.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|ARM.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|x64.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|x86.Build.0 = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|ARM.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|ARM.Build.0 = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|iPhone.Build.0 = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|x64.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|x64.Build.0 = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|x86.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|x86.Build.0 = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|x64.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|x86.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|ARM.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|x64.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|x86.Build.0 = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|ARM.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|ARM.Build.0 = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|iPhone.Build.0 = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|x64.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|x64.Build.0 = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|x86.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|x86.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|x64.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|x86.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|ARM.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|x64.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|x86.Build.0 = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|ARM.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|ARM.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|iPhone.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|x64.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|x64.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|x86.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|x86.Build.0 = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|x64.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|x86.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|ARM.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|x64.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|x86.Build.0 = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|Any CPU.Build.0 = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|ARM.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|ARM.Build.0 = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|iPhone.Build.0 = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|x64.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|x64.Build.0 = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|x86.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA} = {C7727147-4AD9-4005-A8D0-EEEED82347D3}
+ {34F849F9-E349-4237-B7CB-A63884DAB39D} = {C7727147-4AD9-4005-A8D0-EEEED82347D3}
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D} = {C443BF0A-C616-4E98-8994-C5BAE76AE556}
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F} = {C443BF0A-C616-4E98-8994-C5BAE76AE556}
+ {615381C8-0ADC-4CBE-B827-2E71497B1970} = {C7727147-4AD9-4005-A8D0-EEEED82347D3}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {252F0196-794B-4F99-967E-81962ADF58DD}
+ EndGlobalSection
+EndGlobal
diff --git a/source/dotnet/Library/AdaptiveCards.Net6/AdaptiveCards.csproj b/source/dotnet/Library/AdaptiveCards.Net6/AdaptiveCards.csproj
new file mode 100644
index 0000000000..69fd38d1f2
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Net6/AdaptiveCards.csproj
@@ -0,0 +1,66 @@
+
+
+ net6.0
+ Microsoft
+ Adaptive Card object model for .NET 6.0
+ This library implements classes for building and serializing adaptive card objects
+ AdaptiveCards.Net6
+ false
+ adaptivecards;adaptive-cards
+ https://adaptivecards.io
+ https://adaptivecards.io/content/icons_blue/blue-48.png
+ https://github.com/Microsoft/AdaptiveCards
+ EULA-Windows.txt
+ true
+ $(DefineConstants);$(AdditionalConstants)
+ © Microsoft Corporation. All rights reserved.
+ $(MSBuildProjectDirectory)/docs/AdaptiveCards.xml
+ True
+ false
+
+
+
+
+
+
+
+ false
+ UAP,Version=v10.0
+ UAP
+ 10.0.17763.0
+ 10.0.15063.0
+ .NETCore
+ v5.0
+ en-US
+ $(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ full
+ True
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/AdaptiveCards.Net6/docs/.gitignore b/source/dotnet/Library/AdaptiveCards.Net6/docs/.gitignore
new file mode 100644
index 0000000000..b81c7954b7
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Net6/docs/.gitignore
@@ -0,0 +1 @@
+*.xml
\ No newline at end of file
diff --git a/source/dotnet/Library/AdaptiveCards.Net6/docs/AdaptiveCards.md b/source/dotnet/Library/AdaptiveCards.Net6/docs/AdaptiveCards.md
new file mode 100644
index 0000000000..af7a618ce9
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Net6/docs/AdaptiveCards.md
@@ -0,0 +1,7679 @@
+
+# AdaptiveCards
+
+## Contents
+
+- [ActionsConfig](#T-AdaptiveCards-Rendering-ActionsConfig 'AdaptiveCards.Rendering.ActionsConfig')
+ - [ActionAlignment](#P-AdaptiveCards-Rendering-ActionsConfig-ActionAlignment 'AdaptiveCards.Rendering.ActionsConfig.ActionAlignment')
+ - [ActionsOrientation](#P-AdaptiveCards-Rendering-ActionsConfig-ActionsOrientation 'AdaptiveCards.Rendering.ActionsConfig.ActionsOrientation')
+ - [ButtonSpacing](#P-AdaptiveCards-Rendering-ActionsConfig-ButtonSpacing 'AdaptiveCards.Rendering.ActionsConfig.ButtonSpacing')
+ - [IconPlacement](#P-AdaptiveCards-Rendering-ActionsConfig-IconPlacement 'AdaptiveCards.Rendering.ActionsConfig.IconPlacement')
+ - [IconSize](#P-AdaptiveCards-Rendering-ActionsConfig-IconSize 'AdaptiveCards.Rendering.ActionsConfig.IconSize')
+ - [MaxActions](#P-AdaptiveCards-Rendering-ActionsConfig-MaxActions 'AdaptiveCards.Rendering.ActionsConfig.MaxActions')
+ - [ShowCard](#P-AdaptiveCards-Rendering-ActionsConfig-ShowCard 'AdaptiveCards.Rendering.ActionsConfig.ShowCard')
+ - [Spacing](#P-AdaptiveCards-Rendering-ActionsConfig-Spacing 'AdaptiveCards.Rendering.ActionsConfig.Spacing')
+- [ActionsOrientation](#T-AdaptiveCards-Rendering-ActionsOrientation 'AdaptiveCards.Rendering.ActionsOrientation')
+ - [Horizontal](#F-AdaptiveCards-Rendering-ActionsOrientation-Horizontal 'AdaptiveCards.Rendering.ActionsOrientation.Horizontal')
+ - [Vertical](#F-AdaptiveCards-Rendering-ActionsOrientation-Vertical 'AdaptiveCards.Rendering.ActionsOrientation.Vertical')
+- [AdaptiveAction](#T-AdaptiveCards-AdaptiveAction 'AdaptiveCards.AdaptiveAction')
+ - [IconUrl](#P-AdaptiveCards-AdaptiveAction-IconUrl 'AdaptiveCards.AdaptiveAction.IconUrl')
+ - [IsEnabled](#P-AdaptiveCards-AdaptiveAction-IsEnabled 'AdaptiveCards.AdaptiveAction.IsEnabled')
+ - [Mode](#P-AdaptiveCards-AdaptiveAction-Mode 'AdaptiveCards.AdaptiveAction.Mode')
+ - [Speak](#P-AdaptiveCards-AdaptiveAction-Speak 'AdaptiveCards.AdaptiveAction.Speak')
+ - [Style](#P-AdaptiveCards-AdaptiveAction-Style 'AdaptiveCards.AdaptiveAction.Style')
+ - [Title](#P-AdaptiveCards-AdaptiveAction-Title 'AdaptiveCards.AdaptiveAction.Title')
+ - [Tooltip](#P-AdaptiveCards-AdaptiveAction-Tooltip 'AdaptiveCards.AdaptiveAction.Tooltip')
+- [AdaptiveActionHandlers](#T-AdaptiveCards-Rendering-AdaptiveActionHandlers 'AdaptiveCards.Rendering.AdaptiveActionHandlers')
+ - [AddSupportedAction\`\`1()](#M-AdaptiveCards-Rendering-AdaptiveActionHandlers-AddSupportedAction``1 'AdaptiveCards.Rendering.AdaptiveActionHandlers.AddSupportedAction``1')
+ - [IsSupported(type)](#M-AdaptiveCards-Rendering-AdaptiveActionHandlers-IsSupported-System-Type- 'AdaptiveCards.Rendering.AdaptiveActionHandlers.IsSupported(System.Type)')
+ - [RemoveSupportedAction\`\`1()](#M-AdaptiveCards-Rendering-AdaptiveActionHandlers-RemoveSupportedAction``1 'AdaptiveCards.Rendering.AdaptiveActionHandlers.RemoveSupportedAction``1')
+- [AdaptiveActionMode](#T-AdaptiveCards-AdaptiveActionMode 'AdaptiveCards.AdaptiveActionMode')
+ - [Primary](#F-AdaptiveCards-AdaptiveActionMode-Primary 'AdaptiveCards.AdaptiveActionMode.Primary')
+ - [Secondary](#F-AdaptiveCards-AdaptiveActionMode-Secondary 'AdaptiveCards.AdaptiveActionMode.Secondary')
+- [AdaptiveActionSet](#T-AdaptiveCards-AdaptiveActionSet 'AdaptiveCards.AdaptiveActionSet')
+ - [TypeName](#F-AdaptiveCards-AdaptiveActionSet-TypeName 'AdaptiveCards.AdaptiveActionSet.TypeName')
+ - [Actions](#P-AdaptiveCards-AdaptiveActionSet-Actions 'AdaptiveCards.AdaptiveActionSet.Actions')
+ - [Type](#P-AdaptiveCards-AdaptiveActionSet-Type 'AdaptiveCards.AdaptiveActionSet.Type')
+- [AdaptiveAssociatedInputs](#T-AdaptiveCards-AdaptiveAssociatedInputs 'AdaptiveCards.AdaptiveAssociatedInputs')
+ - [Auto](#F-AdaptiveCards-AdaptiveAssociatedInputs-Auto 'AdaptiveCards.AdaptiveAssociatedInputs.Auto')
+ - [None](#F-AdaptiveCards-AdaptiveAssociatedInputs-None 'AdaptiveCards.AdaptiveAssociatedInputs.None')
+- [AdaptiveAuthCardButton](#T-AdaptiveCards-AdaptiveAuthCardButton 'AdaptiveCards.AdaptiveAuthCardButton')
+ - [Image](#P-AdaptiveCards-AdaptiveAuthCardButton-Image 'AdaptiveCards.AdaptiveAuthCardButton.Image')
+ - [Title](#P-AdaptiveCards-AdaptiveAuthCardButton-Title 'AdaptiveCards.AdaptiveAuthCardButton.Title')
+ - [Type](#P-AdaptiveCards-AdaptiveAuthCardButton-Type 'AdaptiveCards.AdaptiveAuthCardButton.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveAuthCardButton-Value 'AdaptiveCards.AdaptiveAuthCardButton.Value')
+- [AdaptiveAuthentication](#T-AdaptiveCards-AdaptiveAuthentication 'AdaptiveCards.AdaptiveAuthentication')
+ - [Buttons](#P-AdaptiveCards-AdaptiveAuthentication-Buttons 'AdaptiveCards.AdaptiveAuthentication.Buttons')
+ - [ConnectionName](#P-AdaptiveCards-AdaptiveAuthentication-ConnectionName 'AdaptiveCards.AdaptiveAuthentication.ConnectionName')
+ - [Text](#P-AdaptiveCards-AdaptiveAuthentication-Text 'AdaptiveCards.AdaptiveAuthentication.Text')
+ - [TokenExchangeResource](#P-AdaptiveCards-AdaptiveAuthentication-TokenExchangeResource 'AdaptiveCards.AdaptiveAuthentication.TokenExchangeResource')
+- [AdaptiveBackgroundImage](#T-AdaptiveCards-AdaptiveBackgroundImage 'AdaptiveCards.AdaptiveBackgroundImage')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveBackgroundImage-#ctor 'AdaptiveCards.AdaptiveBackgroundImage.#ctor')
+ - [#ctor(url)](#M-AdaptiveCards-AdaptiveBackgroundImage-#ctor-System-String- 'AdaptiveCards.AdaptiveBackgroundImage.#ctor(System.String)')
+ - [#ctor(url)](#M-AdaptiveCards-AdaptiveBackgroundImage-#ctor-System-Uri- 'AdaptiveCards.AdaptiveBackgroundImage.#ctor(System.Uri)')
+ - [#ctor(url,fillMode,hAlignment,vAlignment)](#M-AdaptiveCards-AdaptiveBackgroundImage-#ctor-System-String,AdaptiveCards-AdaptiveImageFillMode,AdaptiveCards-AdaptiveHorizontalAlignment,AdaptiveCards-AdaptiveVerticalAlignment- 'AdaptiveCards.AdaptiveBackgroundImage.#ctor(System.String,AdaptiveCards.AdaptiveImageFillMode,AdaptiveCards.AdaptiveHorizontalAlignment,AdaptiveCards.AdaptiveVerticalAlignment)')
+ - [#ctor(url,fillMode,hAlignment,vAlignment)](#M-AdaptiveCards-AdaptiveBackgroundImage-#ctor-System-Uri,AdaptiveCards-AdaptiveImageFillMode,AdaptiveCards-AdaptiveHorizontalAlignment,AdaptiveCards-AdaptiveVerticalAlignment- 'AdaptiveCards.AdaptiveBackgroundImage.#ctor(System.Uri,AdaptiveCards.AdaptiveImageFillMode,AdaptiveCards.AdaptiveHorizontalAlignment,AdaptiveCards.AdaptiveVerticalAlignment)')
+ - [TypeName](#F-AdaptiveCards-AdaptiveBackgroundImage-TypeName 'AdaptiveCards.AdaptiveBackgroundImage.TypeName')
+ - [FillMode](#P-AdaptiveCards-AdaptiveBackgroundImage-FillMode 'AdaptiveCards.AdaptiveBackgroundImage.FillMode')
+ - [HorizontalAlignment](#P-AdaptiveCards-AdaptiveBackgroundImage-HorizontalAlignment 'AdaptiveCards.AdaptiveBackgroundImage.HorizontalAlignment')
+ - [Url](#P-AdaptiveCards-AdaptiveBackgroundImage-Url 'AdaptiveCards.AdaptiveBackgroundImage.Url')
+ - [UrlString](#P-AdaptiveCards-AdaptiveBackgroundImage-UrlString 'AdaptiveCards.AdaptiveBackgroundImage.UrlString')
+ - [VerticalAlignment](#P-AdaptiveCards-AdaptiveBackgroundImage-VerticalAlignment 'AdaptiveCards.AdaptiveBackgroundImage.VerticalAlignment')
+ - [HasDefaultValues()](#M-AdaptiveCards-AdaptiveBackgroundImage-HasDefaultValues 'AdaptiveCards.AdaptiveBackgroundImage.HasDefaultValues')
+ - [op_Implicit(backgroundImageUrl)](#M-AdaptiveCards-AdaptiveBackgroundImage-op_Implicit-System-Uri-~AdaptiveCards-AdaptiveBackgroundImage 'AdaptiveCards.AdaptiveBackgroundImage.op_Implicit(System.Uri)~AdaptiveCards.AdaptiveBackgroundImage')
+- [AdaptiveBackgroundImageConverter](#T-AdaptiveCards-AdaptiveBackgroundImageConverter 'AdaptiveCards.AdaptiveBackgroundImageConverter')
+ - [CanWrite](#P-AdaptiveCards-AdaptiveBackgroundImageConverter-CanWrite 'AdaptiveCards.AdaptiveBackgroundImageConverter.CanWrite')
+ - [Warnings](#P-AdaptiveCards-AdaptiveBackgroundImageConverter-Warnings 'AdaptiveCards.AdaptiveBackgroundImageConverter.Warnings')
+ - [CanConvert(objectType)](#M-AdaptiveCards-AdaptiveBackgroundImageConverter-CanConvert-System-Type- 'AdaptiveCards.AdaptiveBackgroundImageConverter.CanConvert(System.Type)')
+ - [ReadJson(reader,objectType,existingValue,serializer)](#M-AdaptiveCards-AdaptiveBackgroundImageConverter-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveBackgroundImageConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [WriteJson(writer,backgroundImage,serializer)](#M-AdaptiveCards-AdaptiveBackgroundImageConverter-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveBackgroundImageConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [AdaptiveCard](#T-AdaptiveCards-AdaptiveCard 'AdaptiveCards.AdaptiveCard')
+ - [#ctor(schemaVersion)](#M-AdaptiveCards-AdaptiveCard-#ctor-AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveCard.#ctor(AdaptiveCards.AdaptiveSchemaVersion)')
+ - [#ctor(schemaVersion)](#M-AdaptiveCards-AdaptiveCard-#ctor-System-String- 'AdaptiveCards.AdaptiveCard.#ctor(System.String)')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveCard-#ctor 'AdaptiveCards.AdaptiveCard.#ctor')
+ - [ContentType](#F-AdaptiveCards-AdaptiveCard-ContentType 'AdaptiveCards.AdaptiveCard.ContentType')
+ - [KnownSchemaVersion](#F-AdaptiveCards-AdaptiveCard-KnownSchemaVersion 'AdaptiveCards.AdaptiveCard.KnownSchemaVersion')
+ - [TypeName](#F-AdaptiveCards-AdaptiveCard-TypeName 'AdaptiveCards.AdaptiveCard.TypeName')
+ - [Actions](#P-AdaptiveCards-AdaptiveCard-Actions 'AdaptiveCards.AdaptiveCard.Actions')
+ - [Authentication](#P-AdaptiveCards-AdaptiveCard-Authentication 'AdaptiveCards.AdaptiveCard.Authentication')
+ - [BackgroundImage](#P-AdaptiveCards-AdaptiveCard-BackgroundImage 'AdaptiveCards.AdaptiveCard.BackgroundImage')
+ - [Body](#P-AdaptiveCards-AdaptiveCard-Body 'AdaptiveCards.AdaptiveCard.Body')
+ - [FallbackText](#P-AdaptiveCards-AdaptiveCard-FallbackText 'AdaptiveCards.AdaptiveCard.FallbackText')
+ - [Height](#P-AdaptiveCards-AdaptiveCard-Height 'AdaptiveCards.AdaptiveCard.Height')
+ - [JsonSchema](#P-AdaptiveCards-AdaptiveCard-JsonSchema 'AdaptiveCards.AdaptiveCard.JsonSchema')
+ - [Lang](#P-AdaptiveCards-AdaptiveCard-Lang 'AdaptiveCards.AdaptiveCard.Lang')
+ - [MinVersion](#P-AdaptiveCards-AdaptiveCard-MinVersion 'AdaptiveCards.AdaptiveCard.MinVersion')
+ - [OnDeserializingMissingVersion](#P-AdaptiveCards-AdaptiveCard-OnDeserializingMissingVersion 'AdaptiveCards.AdaptiveCard.OnDeserializingMissingVersion')
+ - [PixelMinHeight](#P-AdaptiveCards-AdaptiveCard-PixelMinHeight 'AdaptiveCards.AdaptiveCard.PixelMinHeight')
+ - [Refresh](#P-AdaptiveCards-AdaptiveCard-Refresh 'AdaptiveCards.AdaptiveCard.Refresh')
+ - [SelectAction](#P-AdaptiveCards-AdaptiveCard-SelectAction 'AdaptiveCards.AdaptiveCard.SelectAction')
+ - [Speak](#P-AdaptiveCards-AdaptiveCard-Speak 'AdaptiveCards.AdaptiveCard.Speak')
+ - [Title](#P-AdaptiveCards-AdaptiveCard-Title 'AdaptiveCards.AdaptiveCard.Title')
+ - [Type](#P-AdaptiveCards-AdaptiveCard-Type 'AdaptiveCards.AdaptiveCard.Type')
+ - [Version](#P-AdaptiveCards-AdaptiveCard-Version 'AdaptiveCards.AdaptiveCard.Version')
+ - [VerticalContentAlignment](#P-AdaptiveCards-AdaptiveCard-VerticalContentAlignment 'AdaptiveCards.AdaptiveCard.VerticalContentAlignment')
+ - [FromJson(json)](#M-AdaptiveCards-AdaptiveCard-FromJson-System-String- 'AdaptiveCards.AdaptiveCard.FromJson(System.String)')
+ - [GetResourceInformation()](#M-AdaptiveCards-AdaptiveCard-GetResourceInformation 'AdaptiveCards.AdaptiveCard.GetResourceInformation')
+ - [ShouldSerializeActions()](#M-AdaptiveCards-AdaptiveCard-ShouldSerializeActions 'AdaptiveCards.AdaptiveCard.ShouldSerializeActions')
+ - [ShouldSerializeBody()](#M-AdaptiveCards-AdaptiveCard-ShouldSerializeBody 'AdaptiveCards.AdaptiveCard.ShouldSerializeBody')
+ - [ShouldSerializeHeight()](#M-AdaptiveCards-AdaptiveCard-ShouldSerializeHeight 'AdaptiveCards.AdaptiveCard.ShouldSerializeHeight')
+ - [ShouldSerializeJsonSchema()](#M-AdaptiveCards-AdaptiveCard-ShouldSerializeJsonSchema 'AdaptiveCards.AdaptiveCard.ShouldSerializeJsonSchema')
+ - [ToJson()](#M-AdaptiveCards-AdaptiveCard-ToJson 'AdaptiveCards.AdaptiveCard.ToJson')
+- [AdaptiveCardConfig](#T-AdaptiveCards-Rendering-AdaptiveCardConfig 'AdaptiveCards.Rendering.AdaptiveCardConfig')
+ - [AllowCustomStyle](#P-AdaptiveCards-Rendering-AdaptiveCardConfig-AllowCustomStyle 'AdaptiveCards.Rendering.AdaptiveCardConfig.AllowCustomStyle')
+- [AdaptiveCardConverter](#T-AdaptiveCards-AdaptiveCardConverter 'AdaptiveCards.AdaptiveCardConverter')
+ - [CanWrite](#P-AdaptiveCards-AdaptiveCardConverter-CanWrite 'AdaptiveCards.AdaptiveCardConverter.CanWrite')
+ - [Warnings](#P-AdaptiveCards-AdaptiveCardConverter-Warnings 'AdaptiveCards.AdaptiveCardConverter.Warnings')
+ - [CanConvert()](#M-AdaptiveCards-AdaptiveCardConverter-CanConvert-System-Type- 'AdaptiveCards.AdaptiveCardConverter.CanConvert(System.Type)')
+ - [ReadJson(reader,objectType,existingValue,serializer)](#M-AdaptiveCards-AdaptiveCardConverter-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveCardConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [WriteJson()](#M-AdaptiveCards-AdaptiveCardConverter-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveCardConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [AdaptiveCardParseResult](#T-AdaptiveCards-AdaptiveCardParseResult 'AdaptiveCards.AdaptiveCardParseResult')
+ - [Card](#P-AdaptiveCards-AdaptiveCardParseResult-Card 'AdaptiveCards.AdaptiveCardParseResult.Card')
+ - [Warnings](#P-AdaptiveCards-AdaptiveCardParseResult-Warnings 'AdaptiveCards.AdaptiveCardParseResult.Warnings')
+- [AdaptiveCardRendererBase\`2](#T-AdaptiveCards-Rendering-AdaptiveCardRendererBase`2 'AdaptiveCards.Rendering.AdaptiveCardRendererBase`2')
+ - [ElementRenderers](#P-AdaptiveCards-Rendering-AdaptiveCardRendererBase`2-ElementRenderers 'AdaptiveCards.Rendering.AdaptiveCardRendererBase`2.ElementRenderers')
+ - [HostConfig](#P-AdaptiveCards-Rendering-AdaptiveCardRendererBase`2-HostConfig 'AdaptiveCards.Rendering.AdaptiveCardRendererBase`2.HostConfig')
+ - [SupportedSchemaVersion](#P-AdaptiveCards-Rendering-AdaptiveCardRendererBase`2-SupportedSchemaVersion 'AdaptiveCards.Rendering.AdaptiveCardRendererBase`2.SupportedSchemaVersion')
+ - [GetSupportedSchemaVersion()](#M-AdaptiveCards-Rendering-AdaptiveCardRendererBase`2-GetSupportedSchemaVersion 'AdaptiveCards.Rendering.AdaptiveCardRendererBase`2.GetSupportedSchemaVersion')
+- [AdaptiveChoice](#T-AdaptiveCards-AdaptiveChoice 'AdaptiveCards.AdaptiveChoice')
+ - [IsSelected](#P-AdaptiveCards-AdaptiveChoice-IsSelected 'AdaptiveCards.AdaptiveChoice.IsSelected')
+ - [Speak](#P-AdaptiveCards-AdaptiveChoice-Speak 'AdaptiveCards.AdaptiveChoice.Speak')
+ - [Title](#P-AdaptiveCards-AdaptiveChoice-Title 'AdaptiveCards.AdaptiveChoice.Title')
+ - [Value](#P-AdaptiveCards-AdaptiveChoice-Value 'AdaptiveCards.AdaptiveChoice.Value')
+- [AdaptiveChoiceInputStyle](#T-AdaptiveCards-AdaptiveChoiceInputStyle 'AdaptiveCards.AdaptiveChoiceInputStyle')
+ - [Compact](#F-AdaptiveCards-AdaptiveChoiceInputStyle-Compact 'AdaptiveCards.AdaptiveChoiceInputStyle.Compact')
+ - [Expanded](#F-AdaptiveCards-AdaptiveChoiceInputStyle-Expanded 'AdaptiveCards.AdaptiveChoiceInputStyle.Expanded')
+ - [Filtered](#F-AdaptiveCards-AdaptiveChoiceInputStyle-Filtered 'AdaptiveCards.AdaptiveChoiceInputStyle.Filtered')
+- [AdaptiveChoiceSetInput](#T-AdaptiveCards-AdaptiveChoiceSetInput 'AdaptiveCards.AdaptiveChoiceSetInput')
+ - [TypeName](#F-AdaptiveCards-AdaptiveChoiceSetInput-TypeName 'AdaptiveCards.AdaptiveChoiceSetInput.TypeName')
+ - [Choices](#P-AdaptiveCards-AdaptiveChoiceSetInput-Choices 'AdaptiveCards.AdaptiveChoiceSetInput.Choices')
+ - [IsMultiSelect](#P-AdaptiveCards-AdaptiveChoiceSetInput-IsMultiSelect 'AdaptiveCards.AdaptiveChoiceSetInput.IsMultiSelect')
+ - [Placeholder](#P-AdaptiveCards-AdaptiveChoiceSetInput-Placeholder 'AdaptiveCards.AdaptiveChoiceSetInput.Placeholder')
+ - [Style](#P-AdaptiveCards-AdaptiveChoiceSetInput-Style 'AdaptiveCards.AdaptiveChoiceSetInput.Style')
+ - [Type](#P-AdaptiveCards-AdaptiveChoiceSetInput-Type 'AdaptiveCards.AdaptiveChoiceSetInput.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveChoiceSetInput-Value 'AdaptiveCards.AdaptiveChoiceSetInput.Value')
+ - [Wrap](#P-AdaptiveCards-AdaptiveChoiceSetInput-Wrap 'AdaptiveCards.AdaptiveChoiceSetInput.Wrap')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveChoiceSetInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveChoiceSetInput.GetNonInteractiveValue')
+- [AdaptiveCollectionElement](#T-AdaptiveCards-AdaptiveCollectionElement 'AdaptiveCards.AdaptiveCollectionElement')
+ - [Bleed](#P-AdaptiveCards-AdaptiveCollectionElement-Bleed 'AdaptiveCards.AdaptiveCollectionElement.Bleed')
+ - [PixelMinHeight](#P-AdaptiveCards-AdaptiveCollectionElement-PixelMinHeight 'AdaptiveCards.AdaptiveCollectionElement.PixelMinHeight')
+ - [SelectAction](#P-AdaptiveCards-AdaptiveCollectionElement-SelectAction 'AdaptiveCards.AdaptiveCollectionElement.SelectAction')
+ - [Style](#P-AdaptiveCards-AdaptiveCollectionElement-Style 'AdaptiveCards.AdaptiveCollectionElement.Style')
+ - [StyleXml](#P-AdaptiveCards-AdaptiveCollectionElement-StyleXml 'AdaptiveCards.AdaptiveCollectionElement.StyleXml')
+ - [VerticalContentAlignment](#P-AdaptiveCards-AdaptiveCollectionElement-VerticalContentAlignment 'AdaptiveCards.AdaptiveCollectionElement.VerticalContentAlignment')
+ - [ShouldSerializeStyleXml()](#M-AdaptiveCards-AdaptiveCollectionElement-ShouldSerializeStyleXml 'AdaptiveCards.AdaptiveCollectionElement.ShouldSerializeStyleXml')
+- [AdaptiveCollectionWithContentAlignment](#T-AdaptiveCards-AdaptiveCollectionWithContentAlignment 'AdaptiveCards.AdaptiveCollectionWithContentAlignment')
+ - [HorizontalContentAlignment](#P-AdaptiveCards-AdaptiveCollectionWithContentAlignment-HorizontalContentAlignment 'AdaptiveCards.AdaptiveCollectionWithContentAlignment.HorizontalContentAlignment')
+ - [VerticalContentAlignment](#P-AdaptiveCards-AdaptiveCollectionWithContentAlignment-VerticalContentAlignment 'AdaptiveCards.AdaptiveCollectionWithContentAlignment.VerticalContentAlignment')
+ - [GetEnumerator()](#M-AdaptiveCards-AdaptiveCollectionWithContentAlignment-GetEnumerator 'AdaptiveCards.AdaptiveCollectionWithContentAlignment.GetEnumerator')
+- [AdaptiveColumn](#T-AdaptiveCards-AdaptiveColumn 'AdaptiveCards.AdaptiveColumn')
+ - [TypeName](#F-AdaptiveCards-AdaptiveColumn-TypeName 'AdaptiveCards.AdaptiveColumn.TypeName')
+ - [Rtl](#P-AdaptiveCards-AdaptiveColumn-Rtl 'AdaptiveCards.AdaptiveColumn.Rtl')
+ - [Size](#P-AdaptiveCards-AdaptiveColumn-Size 'AdaptiveCards.AdaptiveColumn.Size')
+ - [Type](#P-AdaptiveCards-AdaptiveColumn-Type 'AdaptiveCards.AdaptiveColumn.Type')
+ - [Width](#P-AdaptiveCards-AdaptiveColumn-Width 'AdaptiveCards.AdaptiveColumn.Width')
+- [AdaptiveColumnSet](#T-AdaptiveCards-AdaptiveColumnSet 'AdaptiveCards.AdaptiveColumnSet')
+ - [TypeName](#F-AdaptiveCards-AdaptiveColumnSet-TypeName 'AdaptiveCards.AdaptiveColumnSet.TypeName')
+ - [Columns](#P-AdaptiveCards-AdaptiveColumnSet-Columns 'AdaptiveCards.AdaptiveColumnSet.Columns')
+ - [Type](#P-AdaptiveCards-AdaptiveColumnSet-Type 'AdaptiveCards.AdaptiveColumnSet.Type')
+- [AdaptiveColumnSize](#T-AdaptiveCards-AdaptiveColumnSize 'AdaptiveCards.AdaptiveColumnSize')
+ - [Auto](#F-AdaptiveCards-AdaptiveColumnSize-Auto 'AdaptiveCards.AdaptiveColumnSize.Auto')
+ - [Stretch](#F-AdaptiveCards-AdaptiveColumnSize-Stretch 'AdaptiveCards.AdaptiveColumnSize.Stretch')
+- [AdaptiveColumnWidth](#T-AdaptiveCards-AdaptiveColumnWidth 'AdaptiveCards.AdaptiveColumnWidth')
+ - [Auto](#F-AdaptiveCards-AdaptiveColumnWidth-Auto 'AdaptiveCards.AdaptiveColumnWidth.Auto')
+ - [Stretch](#F-AdaptiveCards-AdaptiveColumnWidth-Stretch 'AdaptiveCards.AdaptiveColumnWidth.Stretch')
+- [AdaptiveConfigBase](#T-AdaptiveCards-Rendering-AdaptiveConfigBase 'AdaptiveCards.Rendering.AdaptiveConfigBase')
+ - [AdditionalData](#P-AdaptiveCards-Rendering-AdaptiveConfigBase-AdditionalData 'AdaptiveCards.Rendering.AdaptiveConfigBase.AdditionalData')
+- [AdaptiveContainer](#T-AdaptiveCards-AdaptiveContainer 'AdaptiveCards.AdaptiveContainer')
+ - [TypeName](#F-AdaptiveCards-AdaptiveContainer-TypeName 'AdaptiveCards.AdaptiveContainer.TypeName')
+ - [BackgroundImage](#P-AdaptiveCards-AdaptiveContainer-BackgroundImage 'AdaptiveCards.AdaptiveContainer.BackgroundImage')
+ - [Items](#P-AdaptiveCards-AdaptiveContainer-Items 'AdaptiveCards.AdaptiveContainer.Items')
+ - [Rtl](#P-AdaptiveCards-AdaptiveContainer-Rtl 'AdaptiveCards.AdaptiveContainer.Rtl')
+ - [Type](#P-AdaptiveCards-AdaptiveContainer-Type 'AdaptiveCards.AdaptiveContainer.Type')
+- [AdaptiveContainerStyle](#T-AdaptiveCards-AdaptiveContainerStyle 'AdaptiveCards.AdaptiveContainerStyle')
+ - [Accent](#F-AdaptiveCards-AdaptiveContainerStyle-Accent 'AdaptiveCards.AdaptiveContainerStyle.Accent')
+ - [Attention](#F-AdaptiveCards-AdaptiveContainerStyle-Attention 'AdaptiveCards.AdaptiveContainerStyle.Attention')
+ - [Default](#F-AdaptiveCards-AdaptiveContainerStyle-Default 'AdaptiveCards.AdaptiveContainerStyle.Default')
+ - [Emphasis](#F-AdaptiveCards-AdaptiveContainerStyle-Emphasis 'AdaptiveCards.AdaptiveContainerStyle.Emphasis')
+ - [Good](#F-AdaptiveCards-AdaptiveContainerStyle-Good 'AdaptiveCards.AdaptiveContainerStyle.Good')
+ - [Normal](#F-AdaptiveCards-AdaptiveContainerStyle-Normal 'AdaptiveCards.AdaptiveContainerStyle.Normal')
+ - [Warning](#F-AdaptiveCards-AdaptiveContainerStyle-Warning 'AdaptiveCards.AdaptiveContainerStyle.Warning')
+- [AdaptiveDateInput](#T-AdaptiveCards-AdaptiveDateInput 'AdaptiveCards.AdaptiveDateInput')
+ - [TypeName](#F-AdaptiveCards-AdaptiveDateInput-TypeName 'AdaptiveCards.AdaptiveDateInput.TypeName')
+ - [Max](#P-AdaptiveCards-AdaptiveDateInput-Max 'AdaptiveCards.AdaptiveDateInput.Max')
+ - [Min](#P-AdaptiveCards-AdaptiveDateInput-Min 'AdaptiveCards.AdaptiveDateInput.Min')
+ - [Placeholder](#P-AdaptiveCards-AdaptiveDateInput-Placeholder 'AdaptiveCards.AdaptiveDateInput.Placeholder')
+ - [Type](#P-AdaptiveCards-AdaptiveDateInput-Type 'AdaptiveCards.AdaptiveDateInput.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveDateInput-Value 'AdaptiveCards.AdaptiveDateInput.Value')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveDateInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveDateInput.GetNonInteractiveValue')
+- [AdaptiveElement](#T-AdaptiveCards-AdaptiveElement 'AdaptiveCards.AdaptiveElement')
+ - [Height](#P-AdaptiveCards-AdaptiveElement-Height 'AdaptiveCards.AdaptiveElement.Height')
+ - [IsVisible](#P-AdaptiveCards-AdaptiveElement-IsVisible 'AdaptiveCards.AdaptiveElement.IsVisible')
+ - [Separator](#P-AdaptiveCards-AdaptiveElement-Separator 'AdaptiveCards.AdaptiveElement.Separator')
+ - [Spacing](#P-AdaptiveCards-AdaptiveElement-Spacing 'AdaptiveCards.AdaptiveElement.Spacing')
+ - [Speak](#P-AdaptiveCards-AdaptiveElement-Speak 'AdaptiveCards.AdaptiveElement.Speak')
+ - [ShouldSerializeHeight()](#M-AdaptiveCards-AdaptiveElement-ShouldSerializeHeight 'AdaptiveCards.AdaptiveElement.ShouldSerializeHeight')
+- [AdaptiveElementRenderers\`2](#T-AdaptiveCards-Rendering-AdaptiveElementRenderers`2 'AdaptiveCards.Rendering.AdaptiveElementRenderers`2')
+ - [Get(type)](#M-AdaptiveCards-Rendering-AdaptiveElementRenderers`2-Get-System-Type- 'AdaptiveCards.Rendering.AdaptiveElementRenderers`2.Get(System.Type)')
+ - [Get\`\`1()](#M-AdaptiveCards-Rendering-AdaptiveElementRenderers`2-Get``1 'AdaptiveCards.Rendering.AdaptiveElementRenderers`2.Get``1')
+ - [Remove\`\`1()](#M-AdaptiveCards-Rendering-AdaptiveElementRenderers`2-Remove``1 'AdaptiveCards.Rendering.AdaptiveElementRenderers`2.Remove``1')
+ - [Set\`\`1(renderer)](#M-AdaptiveCards-Rendering-AdaptiveElementRenderers`2-Set``1-System-Func{``0,`1,`0}- 'AdaptiveCards.Rendering.AdaptiveElementRenderers`2.Set``1(System.Func{``0,`1,`0})')
+- [AdaptiveException](#T-AdaptiveCards-AdaptiveException 'AdaptiveCards.AdaptiveException')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveException-#ctor 'AdaptiveCards.AdaptiveException.#ctor')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveException-#ctor-System-String- 'AdaptiveCards.AdaptiveException.#ctor(System.String)')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveException-#ctor-System-String,System-Exception- 'AdaptiveCards.AdaptiveException.#ctor(System.String,System.Exception)')
+- [AdaptiveExecuteAction](#T-AdaptiveCards-AdaptiveExecuteAction 'AdaptiveCards.AdaptiveExecuteAction')
+ - [TypeName](#F-AdaptiveCards-AdaptiveExecuteAction-TypeName 'AdaptiveCards.AdaptiveExecuteAction.TypeName')
+ - [AssociatedInputs](#P-AdaptiveCards-AdaptiveExecuteAction-AssociatedInputs 'AdaptiveCards.AdaptiveExecuteAction.AssociatedInputs')
+ - [Data](#P-AdaptiveCards-AdaptiveExecuteAction-Data 'AdaptiveCards.AdaptiveExecuteAction.Data')
+ - [DataJson](#P-AdaptiveCards-AdaptiveExecuteAction-DataJson 'AdaptiveCards.AdaptiveExecuteAction.DataJson')
+ - [Type](#P-AdaptiveCards-AdaptiveExecuteAction-Type 'AdaptiveCards.AdaptiveExecuteAction.Type')
+ - [Verb](#P-AdaptiveCards-AdaptiveExecuteAction-Verb 'AdaptiveCards.AdaptiveExecuteAction.Verb')
+- [AdaptiveFact](#T-AdaptiveCards-AdaptiveFact 'AdaptiveCards.AdaptiveFact')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveFact-#ctor 'AdaptiveCards.AdaptiveFact.#ctor')
+ - [#ctor(title,value)](#M-AdaptiveCards-AdaptiveFact-#ctor-System-String,System-String- 'AdaptiveCards.AdaptiveFact.#ctor(System.String,System.String)')
+ - [Speak](#P-AdaptiveCards-AdaptiveFact-Speak 'AdaptiveCards.AdaptiveFact.Speak')
+ - [Title](#P-AdaptiveCards-AdaptiveFact-Title 'AdaptiveCards.AdaptiveFact.Title')
+ - [Value](#P-AdaptiveCards-AdaptiveFact-Value 'AdaptiveCards.AdaptiveFact.Value')
+- [AdaptiveFactSet](#T-AdaptiveCards-AdaptiveFactSet 'AdaptiveCards.AdaptiveFactSet')
+ - [TypeName](#F-AdaptiveCards-AdaptiveFactSet-TypeName 'AdaptiveCards.AdaptiveFactSet.TypeName')
+ - [Facts](#P-AdaptiveCards-AdaptiveFactSet-Facts 'AdaptiveCards.AdaptiveFactSet.Facts')
+ - [Type](#P-AdaptiveCards-AdaptiveFactSet-Type 'AdaptiveCards.AdaptiveFactSet.Type')
+- [AdaptiveFallbackConverter](#T-AdaptiveCards-AdaptiveFallbackConverter 'AdaptiveCards.AdaptiveFallbackConverter')
+ - [IsInFallback](#F-AdaptiveCards-AdaptiveFallbackConverter-IsInFallback 'AdaptiveCards.AdaptiveFallbackConverter.IsInFallback')
+ - [CanRead](#P-AdaptiveCards-AdaptiveFallbackConverter-CanRead 'AdaptiveCards.AdaptiveFallbackConverter.CanRead')
+ - [CanWrite](#P-AdaptiveCards-AdaptiveFallbackConverter-CanWrite 'AdaptiveCards.AdaptiveFallbackConverter.CanWrite')
+ - [Warnings](#P-AdaptiveCards-AdaptiveFallbackConverter-Warnings 'AdaptiveCards.AdaptiveFallbackConverter.Warnings')
+ - [CanConvert(objectType)](#M-AdaptiveCards-AdaptiveFallbackConverter-CanConvert-System-Type- 'AdaptiveCards.AdaptiveFallbackConverter.CanConvert(System.Type)')
+ - [ParseFallback()](#M-AdaptiveCards-AdaptiveFallbackConverter-ParseFallback-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-JsonSerializer,System-String,AdaptiveCards-AdaptiveInternalID- 'AdaptiveCards.AdaptiveFallbackConverter.ParseFallback(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.JsonSerializer,System.String,AdaptiveCards.AdaptiveInternalID)')
+ - [ReadJson()](#M-AdaptiveCards-AdaptiveFallbackConverter-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveFallbackConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [WriteJson(writer,cardElement,serializer)](#M-AdaptiveCards-AdaptiveFallbackConverter-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveFallbackConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [AdaptiveFallbackElement](#T-AdaptiveCards-AdaptiveFallbackElement 'AdaptiveCards.AdaptiveFallbackElement')
+ - [#ctor(fallbackType)](#M-AdaptiveCards-AdaptiveFallbackElement-#ctor-AdaptiveCards-AdaptiveFallbackElement-AdaptiveFallbackType- 'AdaptiveCards.AdaptiveFallbackElement.#ctor(AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType)')
+ - [#ctor(fallbackContent)](#M-AdaptiveCards-AdaptiveFallbackElement-#ctor-AdaptiveCards-AdaptiveTypedElement- 'AdaptiveCards.AdaptiveFallbackElement.#ctor(AdaptiveCards.AdaptiveTypedElement)')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveFallbackElement-#ctor 'AdaptiveCards.AdaptiveFallbackElement.#ctor')
+ - [drop](#F-AdaptiveCards-AdaptiveFallbackElement-drop 'AdaptiveCards.AdaptiveFallbackElement.drop')
+ - [Content](#P-AdaptiveCards-AdaptiveFallbackElement-Content 'AdaptiveCards.AdaptiveFallbackElement.Content')
+ - [Type](#P-AdaptiveCards-AdaptiveFallbackElement-Type 'AdaptiveCards.AdaptiveFallbackElement.Type')
+- [AdaptiveFallbackException](#T-AdaptiveCards-AdaptiveFallbackException 'AdaptiveCards.AdaptiveFallbackException')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveFallbackException-#ctor 'AdaptiveCards.AdaptiveFallbackException.#ctor')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveFallbackException-#ctor-System-String- 'AdaptiveCards.AdaptiveFallbackException.#ctor(System.String)')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveFallbackException-#ctor-System-String,System-Exception- 'AdaptiveCards.AdaptiveFallbackException.#ctor(System.String,System.Exception)')
+- [AdaptiveFallbackType](#T-AdaptiveCards-AdaptiveFallbackElement-AdaptiveFallbackType 'AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType')
+ - [Content](#F-AdaptiveCards-AdaptiveFallbackElement-AdaptiveFallbackType-Content 'AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType.Content')
+ - [Drop](#F-AdaptiveCards-AdaptiveFallbackElement-AdaptiveFallbackType-Drop 'AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType.Drop')
+ - [None](#F-AdaptiveCards-AdaptiveFallbackElement-AdaptiveFallbackType-None 'AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType.None')
+- [AdaptiveFeatureRegistration](#T-AdaptiveCards-AdaptiveFeatureRegistration 'AdaptiveCards.AdaptiveFeatureRegistration')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveFeatureRegistration-#ctor 'AdaptiveCards.AdaptiveFeatureRegistration.#ctor')
+ - [Get(feature)](#M-AdaptiveCards-AdaptiveFeatureRegistration-Get-System-String- 'AdaptiveCards.AdaptiveFeatureRegistration.Get(System.String)')
+ - [Remove(feature)](#M-AdaptiveCards-AdaptiveFeatureRegistration-Remove-System-String- 'AdaptiveCards.AdaptiveFeatureRegistration.Remove(System.String)')
+ - [Set(feature,version)](#M-AdaptiveCards-AdaptiveFeatureRegistration-Set-System-String,System-String- 'AdaptiveCards.AdaptiveFeatureRegistration.Set(System.String,System.String)')
+- [AdaptiveFontType](#T-AdaptiveCards-AdaptiveFontType 'AdaptiveCards.AdaptiveFontType')
+ - [Default](#F-AdaptiveCards-AdaptiveFontType-Default 'AdaptiveCards.AdaptiveFontType.Default')
+ - [Monospace](#F-AdaptiveCards-AdaptiveFontType-Monospace 'AdaptiveCards.AdaptiveFontType.Monospace')
+- [AdaptiveHeight](#T-AdaptiveCards-AdaptiveHeight 'AdaptiveCards.AdaptiveHeight')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveHeight-#ctor 'AdaptiveCards.AdaptiveHeight.#ctor')
+ - [#ctor(px)](#M-AdaptiveCards-AdaptiveHeight-#ctor-System-UInt32- 'AdaptiveCards.AdaptiveHeight.#ctor(System.UInt32)')
+ - [#ctor(heightType)](#M-AdaptiveCards-AdaptiveHeight-#ctor-AdaptiveCards-AdaptiveHeightType- 'AdaptiveCards.AdaptiveHeight.#ctor(AdaptiveCards.AdaptiveHeightType)')
+ - [Auto](#P-AdaptiveCards-AdaptiveHeight-Auto 'AdaptiveCards.AdaptiveHeight.Auto')
+ - [HeightType](#P-AdaptiveCards-AdaptiveHeight-HeightType 'AdaptiveCards.AdaptiveHeight.HeightType')
+ - [Stretch](#P-AdaptiveCards-AdaptiveHeight-Stretch 'AdaptiveCards.AdaptiveHeight.Stretch')
+ - [Unit](#P-AdaptiveCards-AdaptiveHeight-Unit 'AdaptiveCards.AdaptiveHeight.Unit')
+ - [UnitXml](#P-AdaptiveCards-AdaptiveHeight-UnitXml 'AdaptiveCards.AdaptiveHeight.UnitXml')
+ - [Equals()](#M-AdaptiveCards-AdaptiveHeight-Equals-System-Object- 'AdaptiveCards.AdaptiveHeight.Equals(System.Object)')
+ - [Equals()](#M-AdaptiveCards-AdaptiveHeight-Equals-AdaptiveCards-AdaptiveHeight- 'AdaptiveCards.AdaptiveHeight.Equals(AdaptiveCards.AdaptiveHeight)')
+ - [GetHashCode()](#M-AdaptiveCards-AdaptiveHeight-GetHashCode 'AdaptiveCards.AdaptiveHeight.GetHashCode')
+ - [IsPixel()](#M-AdaptiveCards-AdaptiveHeight-IsPixel 'AdaptiveCards.AdaptiveHeight.IsPixel')
+ - [ShouldSerializeAdaptiveHeight()](#M-AdaptiveCards-AdaptiveHeight-ShouldSerializeAdaptiveHeight 'AdaptiveCards.AdaptiveHeight.ShouldSerializeAdaptiveHeight')
+ - [ShouldSerializeUnitXml()](#M-AdaptiveCards-AdaptiveHeight-ShouldSerializeUnitXml 'AdaptiveCards.AdaptiveHeight.ShouldSerializeUnitXml')
+ - [op_Equality()](#M-AdaptiveCards-AdaptiveHeight-op_Equality-AdaptiveCards-AdaptiveHeight,AdaptiveCards-AdaptiveHeight- 'AdaptiveCards.AdaptiveHeight.op_Equality(AdaptiveCards.AdaptiveHeight,AdaptiveCards.AdaptiveHeight)')
+ - [op_Inequality()](#M-AdaptiveCards-AdaptiveHeight-op_Inequality-AdaptiveCards-AdaptiveHeight,AdaptiveCards-AdaptiveHeight- 'AdaptiveCards.AdaptiveHeight.op_Inequality(AdaptiveCards.AdaptiveHeight,AdaptiveCards.AdaptiveHeight)')
+- [AdaptiveHeightType](#T-AdaptiveCards-AdaptiveHeightType 'AdaptiveCards.AdaptiveHeightType')
+ - [Auto](#F-AdaptiveCards-AdaptiveHeightType-Auto 'AdaptiveCards.AdaptiveHeightType.Auto')
+ - [Pixel](#F-AdaptiveCards-AdaptiveHeightType-Pixel 'AdaptiveCards.AdaptiveHeightType.Pixel')
+ - [Stretch](#F-AdaptiveCards-AdaptiveHeightType-Stretch 'AdaptiveCards.AdaptiveHeightType.Stretch')
+- [AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment')
+ - [Center](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Center 'AdaptiveCards.AdaptiveHorizontalAlignment.Center')
+ - [Left](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Left 'AdaptiveCards.AdaptiveHorizontalAlignment.Left')
+ - [Right](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Right 'AdaptiveCards.AdaptiveHorizontalAlignment.Right')
+ - [Stretch](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Stretch 'AdaptiveCards.AdaptiveHorizontalAlignment.Stretch')
+- [AdaptiveHorizontalContentAlignment](#T-AdaptiveCards-AdaptiveHorizontalContentAlignment 'AdaptiveCards.AdaptiveHorizontalContentAlignment')
+ - [Center](#F-AdaptiveCards-AdaptiveHorizontalContentAlignment-Center 'AdaptiveCards.AdaptiveHorizontalContentAlignment.Center')
+ - [Left](#F-AdaptiveCards-AdaptiveHorizontalContentAlignment-Left 'AdaptiveCards.AdaptiveHorizontalContentAlignment.Left')
+ - [Right](#F-AdaptiveCards-AdaptiveHorizontalContentAlignment-Right 'AdaptiveCards.AdaptiveHorizontalContentAlignment.Right')
+- [AdaptiveHostConfig](#T-AdaptiveCards-Rendering-AdaptiveHostConfig 'AdaptiveCards.Rendering.AdaptiveHostConfig')
+ - [Actions](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-Actions 'AdaptiveCards.Rendering.AdaptiveHostConfig.Actions')
+ - [AdaptiveCard](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-AdaptiveCard 'AdaptiveCards.Rendering.AdaptiveHostConfig.AdaptiveCard')
+ - [ContainerStyles](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-ContainerStyles 'AdaptiveCards.Rendering.AdaptiveHostConfig.ContainerStyles')
+ - [FactSet](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-FactSet 'AdaptiveCards.Rendering.AdaptiveHostConfig.FactSet')
+ - [FontFamily](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-FontFamily 'AdaptiveCards.Rendering.AdaptiveHostConfig.FontFamily')
+ - [FontSizes](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-FontSizes 'AdaptiveCards.Rendering.AdaptiveHostConfig.FontSizes')
+ - [FontTypes](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-FontTypes 'AdaptiveCards.Rendering.AdaptiveHostConfig.FontTypes')
+ - [FontWeights](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-FontWeights 'AdaptiveCards.Rendering.AdaptiveHostConfig.FontWeights')
+ - [Headings](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-Headings 'AdaptiveCards.Rendering.AdaptiveHostConfig.Headings')
+ - [ImageBaseUrl](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-ImageBaseUrl 'AdaptiveCards.Rendering.AdaptiveHostConfig.ImageBaseUrl')
+ - [ImageSet](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-ImageSet 'AdaptiveCards.Rendering.AdaptiveHostConfig.ImageSet')
+ - [ImageSizes](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-ImageSizes 'AdaptiveCards.Rendering.AdaptiveHostConfig.ImageSizes')
+ - [Inputs](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-Inputs 'AdaptiveCards.Rendering.AdaptiveHostConfig.Inputs')
+ - [Media](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-Media 'AdaptiveCards.Rendering.AdaptiveHostConfig.Media')
+ - [Separator](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-Separator 'AdaptiveCards.Rendering.AdaptiveHostConfig.Separator')
+ - [Spacing](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-Spacing 'AdaptiveCards.Rendering.AdaptiveHostConfig.Spacing')
+ - [SupportsInteractivity](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-SupportsInteractivity 'AdaptiveCards.Rendering.AdaptiveHostConfig.SupportsInteractivity')
+ - [FromJson()](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-FromJson-System-String- 'AdaptiveCards.Rendering.AdaptiveHostConfig.FromJson(System.String)')
+ - [GetFontFamily()](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-GetFontFamily-AdaptiveCards-AdaptiveFontType- 'AdaptiveCards.Rendering.AdaptiveHostConfig.GetFontFamily(AdaptiveCards.AdaptiveFontType)')
+ - [GetFontSize()](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-GetFontSize-AdaptiveCards-AdaptiveFontType,AdaptiveCards-AdaptiveTextSize- 'AdaptiveCards.Rendering.AdaptiveHostConfig.GetFontSize(AdaptiveCards.AdaptiveFontType,AdaptiveCards.AdaptiveTextSize)')
+ - [GetFontWeight()](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-GetFontWeight-AdaptiveCards-AdaptiveFontType,AdaptiveCards-AdaptiveTextWeight- 'AdaptiveCards.Rendering.AdaptiveHostConfig.GetFontWeight(AdaptiveCards.AdaptiveFontType,AdaptiveCards.AdaptiveTextWeight)')
+ - [GetSpacing(spacing)](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-GetSpacing-AdaptiveCards-AdaptiveSpacing- 'AdaptiveCards.Rendering.AdaptiveHostConfig.GetSpacing(AdaptiveCards.AdaptiveSpacing)')
+ - [ResolveFinalAbsoluteUri(uriString)](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-ResolveFinalAbsoluteUri-System-String- 'AdaptiveCards.Rendering.AdaptiveHostConfig.ResolveFinalAbsoluteUri(System.String)')
+ - [ResolveFinalAbsoluteUri(uri)](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-ResolveFinalAbsoluteUri-System-Uri- 'AdaptiveCards.Rendering.AdaptiveHostConfig.ResolveFinalAbsoluteUri(System.Uri)')
+ - [ToJson()](#M-AdaptiveCards-Rendering-AdaptiveHostConfig-ToJson 'AdaptiveCards.Rendering.AdaptiveHostConfig.ToJson')
+- [AdaptiveImage](#T-AdaptiveCards-AdaptiveImage 'AdaptiveCards.AdaptiveImage')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveImage-#ctor 'AdaptiveCards.AdaptiveImage.#ctor')
+ - [#ctor(url)](#M-AdaptiveCards-AdaptiveImage-#ctor-System-String- 'AdaptiveCards.AdaptiveImage.#ctor(System.String)')
+ - [#ctor(url)](#M-AdaptiveCards-AdaptiveImage-#ctor-System-Uri- 'AdaptiveCards.AdaptiveImage.#ctor(System.Uri)')
+ - [TypeName](#F-AdaptiveCards-AdaptiveImage-TypeName 'AdaptiveCards.AdaptiveImage.TypeName')
+ - [AltText](#P-AdaptiveCards-AdaptiveImage-AltText 'AdaptiveCards.AdaptiveImage.AltText')
+ - [BackgroundColor](#P-AdaptiveCards-AdaptiveImage-BackgroundColor 'AdaptiveCards.AdaptiveImage.BackgroundColor')
+ - [HorizontalAlignment](#P-AdaptiveCards-AdaptiveImage-HorizontalAlignment 'AdaptiveCards.AdaptiveImage.HorizontalAlignment')
+ - [PixelHeight](#P-AdaptiveCards-AdaptiveImage-PixelHeight 'AdaptiveCards.AdaptiveImage.PixelHeight')
+ - [PixelWidth](#P-AdaptiveCards-AdaptiveImage-PixelWidth 'AdaptiveCards.AdaptiveImage.PixelWidth')
+ - [SelectAction](#P-AdaptiveCards-AdaptiveImage-SelectAction 'AdaptiveCards.AdaptiveImage.SelectAction')
+ - [Size](#P-AdaptiveCards-AdaptiveImage-Size 'AdaptiveCards.AdaptiveImage.Size')
+ - [Style](#P-AdaptiveCards-AdaptiveImage-Style 'AdaptiveCards.AdaptiveImage.Style')
+ - [Type](#P-AdaptiveCards-AdaptiveImage-Type 'AdaptiveCards.AdaptiveImage.Type')
+ - [Url](#P-AdaptiveCards-AdaptiveImage-Url 'AdaptiveCards.AdaptiveImage.Url')
+ - [UrlString](#P-AdaptiveCards-AdaptiveImage-UrlString 'AdaptiveCards.AdaptiveImage.UrlString')
+- [AdaptiveImageFillMode](#T-AdaptiveCards-AdaptiveImageFillMode 'AdaptiveCards.AdaptiveImageFillMode')
+ - [Cover](#F-AdaptiveCards-AdaptiveImageFillMode-Cover 'AdaptiveCards.AdaptiveImageFillMode.Cover')
+ - [Repeat](#F-AdaptiveCards-AdaptiveImageFillMode-Repeat 'AdaptiveCards.AdaptiveImageFillMode.Repeat')
+ - [RepeatHorizontally](#F-AdaptiveCards-AdaptiveImageFillMode-RepeatHorizontally 'AdaptiveCards.AdaptiveImageFillMode.RepeatHorizontally')
+ - [RepeatVertically](#F-AdaptiveCards-AdaptiveImageFillMode-RepeatVertically 'AdaptiveCards.AdaptiveImageFillMode.RepeatVertically')
+- [AdaptiveImageSet](#T-AdaptiveCards-AdaptiveImageSet 'AdaptiveCards.AdaptiveImageSet')
+ - [TypeName](#F-AdaptiveCards-AdaptiveImageSet-TypeName 'AdaptiveCards.AdaptiveImageSet.TypeName')
+ - [ImageSize](#P-AdaptiveCards-AdaptiveImageSet-ImageSize 'AdaptiveCards.AdaptiveImageSet.ImageSize')
+ - [Images](#P-AdaptiveCards-AdaptiveImageSet-Images 'AdaptiveCards.AdaptiveImageSet.Images')
+ - [Type](#P-AdaptiveCards-AdaptiveImageSet-Type 'AdaptiveCards.AdaptiveImageSet.Type')
+- [AdaptiveImageSize](#T-AdaptiveCards-AdaptiveImageSize 'AdaptiveCards.AdaptiveImageSize')
+ - [Auto](#F-AdaptiveCards-AdaptiveImageSize-Auto 'AdaptiveCards.AdaptiveImageSize.Auto')
+ - [Large](#F-AdaptiveCards-AdaptiveImageSize-Large 'AdaptiveCards.AdaptiveImageSize.Large')
+ - [Medium](#F-AdaptiveCards-AdaptiveImageSize-Medium 'AdaptiveCards.AdaptiveImageSize.Medium')
+ - [Small](#F-AdaptiveCards-AdaptiveImageSize-Small 'AdaptiveCards.AdaptiveImageSize.Small')
+ - [Stretch](#F-AdaptiveCards-AdaptiveImageSize-Stretch 'AdaptiveCards.AdaptiveImageSize.Stretch')
+- [AdaptiveImageStyle](#T-AdaptiveCards-AdaptiveImageStyle 'AdaptiveCards.AdaptiveImageStyle')
+ - [Default](#F-AdaptiveCards-AdaptiveImageStyle-Default 'AdaptiveCards.AdaptiveImageStyle.Default')
+ - [Normal](#F-AdaptiveCards-AdaptiveImageStyle-Normal 'AdaptiveCards.AdaptiveImageStyle.Normal')
+ - [Person](#F-AdaptiveCards-AdaptiveImageStyle-Person 'AdaptiveCards.AdaptiveImageStyle.Person')
+- [AdaptiveInline](#T-AdaptiveCards-AdaptiveInline 'AdaptiveCards.AdaptiveInline')
+ - [AdditionalProperties](#P-AdaptiveCards-AdaptiveInline-AdditionalProperties 'AdaptiveCards.AdaptiveInline.AdditionalProperties')
+ - [Type](#P-AdaptiveCards-AdaptiveInline-Type 'AdaptiveCards.AdaptiveInline.Type')
+ - [ShouldSerializeAdditionalProperties()](#M-AdaptiveCards-AdaptiveInline-ShouldSerializeAdditionalProperties 'AdaptiveCards.AdaptiveInline.ShouldSerializeAdditionalProperties')
+- [AdaptiveInput](#T-AdaptiveCards-AdaptiveInput 'AdaptiveCards.AdaptiveInput')
+ - [ErrorMessage](#P-AdaptiveCards-AdaptiveInput-ErrorMessage 'AdaptiveCards.AdaptiveInput.ErrorMessage')
+ - [IsRequired](#P-AdaptiveCards-AdaptiveInput-IsRequired 'AdaptiveCards.AdaptiveInput.IsRequired')
+ - [Label](#P-AdaptiveCards-AdaptiveInput-Label 'AdaptiveCards.AdaptiveInput.Label')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveInput.GetNonInteractiveValue')
+- [AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveInternalID-#ctor 'AdaptiveCards.AdaptiveInternalID.#ctor')
+ - [#ctor(id)](#M-AdaptiveCards-AdaptiveInternalID-#ctor-System-UInt32- 'AdaptiveCards.AdaptiveInternalID.#ctor(System.UInt32)')
+ - [Invalid](#F-AdaptiveCards-AdaptiveInternalID-Invalid 'AdaptiveCards.AdaptiveInternalID.Invalid')
+ - [Current()](#M-AdaptiveCards-AdaptiveInternalID-Current 'AdaptiveCards.AdaptiveInternalID.Current')
+ - [Equals()](#M-AdaptiveCards-AdaptiveInternalID-Equals-System-Object- 'AdaptiveCards.AdaptiveInternalID.Equals(System.Object)')
+ - [GetHashCode()](#M-AdaptiveCards-AdaptiveInternalID-GetHashCode 'AdaptiveCards.AdaptiveInternalID.GetHashCode')
+ - [Next()](#M-AdaptiveCards-AdaptiveInternalID-Next 'AdaptiveCards.AdaptiveInternalID.Next')
+ - [ToString()](#M-AdaptiveCards-AdaptiveInternalID-ToString 'AdaptiveCards.AdaptiveInternalID.ToString')
+- [AdaptiveMedia](#T-AdaptiveCards-AdaptiveMedia 'AdaptiveCards.AdaptiveMedia')
+ - [TypeName](#F-AdaptiveCards-AdaptiveMedia-TypeName 'AdaptiveCards.AdaptiveMedia.TypeName')
+ - [AltText](#P-AdaptiveCards-AdaptiveMedia-AltText 'AdaptiveCards.AdaptiveMedia.AltText')
+ - [Poster](#P-AdaptiveCards-AdaptiveMedia-Poster 'AdaptiveCards.AdaptiveMedia.Poster')
+ - [Sources](#P-AdaptiveCards-AdaptiveMedia-Sources 'AdaptiveCards.AdaptiveMedia.Sources')
+ - [Type](#P-AdaptiveCards-AdaptiveMedia-Type 'AdaptiveCards.AdaptiveMedia.Type')
+- [AdaptiveMediaSource](#T-AdaptiveCards-AdaptiveMediaSource 'AdaptiveCards.AdaptiveMediaSource')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveMediaSource-#ctor 'AdaptiveCards.AdaptiveMediaSource.#ctor')
+ - [#ctor(mimeType,url)](#M-AdaptiveCards-AdaptiveMediaSource-#ctor-System-String,System-String- 'AdaptiveCards.AdaptiveMediaSource.#ctor(System.String,System.String)')
+ - [MimeType](#P-AdaptiveCards-AdaptiveMediaSource-MimeType 'AdaptiveCards.AdaptiveMediaSource.MimeType')
+ - [Url](#P-AdaptiveCards-AdaptiveMediaSource-Url 'AdaptiveCards.AdaptiveMediaSource.Url')
+- [AdaptiveNumberInput](#T-AdaptiveCards-AdaptiveNumberInput 'AdaptiveCards.AdaptiveNumberInput')
+ - [TypeName](#F-AdaptiveCards-AdaptiveNumberInput-TypeName 'AdaptiveCards.AdaptiveNumberInput.TypeName')
+ - [Max](#P-AdaptiveCards-AdaptiveNumberInput-Max 'AdaptiveCards.AdaptiveNumberInput.Max')
+ - [Min](#P-AdaptiveCards-AdaptiveNumberInput-Min 'AdaptiveCards.AdaptiveNumberInput.Min')
+ - [Placeholder](#P-AdaptiveCards-AdaptiveNumberInput-Placeholder 'AdaptiveCards.AdaptiveNumberInput.Placeholder')
+ - [Type](#P-AdaptiveCards-AdaptiveNumberInput-Type 'AdaptiveCards.AdaptiveNumberInput.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveNumberInput-Value 'AdaptiveCards.AdaptiveNumberInput.Value')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveNumberInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveNumberInput.GetNonInteractiveValue')
+- [AdaptiveOpenUrlAction](#T-AdaptiveCards-AdaptiveOpenUrlAction 'AdaptiveCards.AdaptiveOpenUrlAction')
+ - [TypeName](#F-AdaptiveCards-AdaptiveOpenUrlAction-TypeName 'AdaptiveCards.AdaptiveOpenUrlAction.TypeName')
+ - [Type](#P-AdaptiveCards-AdaptiveOpenUrlAction-Type 'AdaptiveCards.AdaptiveOpenUrlAction.Type')
+ - [Url](#P-AdaptiveCards-AdaptiveOpenUrlAction-Url 'AdaptiveCards.AdaptiveOpenUrlAction.Url')
+ - [UrlString](#P-AdaptiveCards-AdaptiveOpenUrlAction-UrlString 'AdaptiveCards.AdaptiveOpenUrlAction.UrlString')
+- [AdaptiveRefresh](#T-AdaptiveCards-AdaptiveRefresh 'AdaptiveCards.AdaptiveRefresh')
+ - [Action](#P-AdaptiveCards-AdaptiveRefresh-Action 'AdaptiveCards.AdaptiveRefresh.Action')
+ - [UserIds](#P-AdaptiveCards-AdaptiveRefresh-UserIds 'AdaptiveCards.AdaptiveRefresh.UserIds')
+- [AdaptiveRenderException](#T-AdaptiveCards-Rendering-AdaptiveRenderException 'AdaptiveCards.Rendering.AdaptiveRenderException')
+ - [CardFallbackText](#P-AdaptiveCards-Rendering-AdaptiveRenderException-CardFallbackText 'AdaptiveCards.Rendering.AdaptiveRenderException.CardFallbackText')
+- [AdaptiveRichTextBlock](#T-AdaptiveCards-AdaptiveRichTextBlock 'AdaptiveCards.AdaptiveRichTextBlock')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveRichTextBlock-#ctor 'AdaptiveCards.AdaptiveRichTextBlock.#ctor')
+ - [TypeName](#F-AdaptiveCards-AdaptiveRichTextBlock-TypeName 'AdaptiveCards.AdaptiveRichTextBlock.TypeName')
+ - [HorizontalAlignment](#P-AdaptiveCards-AdaptiveRichTextBlock-HorizontalAlignment 'AdaptiveCards.AdaptiveRichTextBlock.HorizontalAlignment')
+ - [Inlines](#P-AdaptiveCards-AdaptiveRichTextBlock-Inlines 'AdaptiveCards.AdaptiveRichTextBlock.Inlines')
+ - [Type](#P-AdaptiveCards-AdaptiveRichTextBlock-Type 'AdaptiveCards.AdaptiveRichTextBlock.Type')
+- [AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveSchemaVersion-#ctor 'AdaptiveCards.AdaptiveSchemaVersion.#ctor')
+ - [#ctor(versionString)](#M-AdaptiveCards-AdaptiveSchemaVersion-#ctor-System-String- 'AdaptiveCards.AdaptiveSchemaVersion.#ctor(System.String)')
+ - [#ctor(major,minor)](#M-AdaptiveCards-AdaptiveSchemaVersion-#ctor-System-Int32,System-Int32- 'AdaptiveCards.AdaptiveSchemaVersion.#ctor(System.Int32,System.Int32)')
+ - [Major](#P-AdaptiveCards-AdaptiveSchemaVersion-Major 'AdaptiveCards.AdaptiveSchemaVersion.Major')
+ - [Minor](#P-AdaptiveCards-AdaptiveSchemaVersion-Minor 'AdaptiveCards.AdaptiveSchemaVersion.Minor')
+ - [CompareTo(other)](#M-AdaptiveCards-AdaptiveSchemaVersion-CompareTo-AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.CompareTo(AdaptiveCards.AdaptiveSchemaVersion)')
+ - [Equals()](#M-AdaptiveCards-AdaptiveSchemaVersion-Equals-System-Object- 'AdaptiveCards.AdaptiveSchemaVersion.Equals(System.Object)')
+ - [GetHashCode()](#M-AdaptiveCards-AdaptiveSchemaVersion-GetHashCode 'AdaptiveCards.AdaptiveSchemaVersion.GetHashCode')
+ - [ToString()](#M-AdaptiveCards-AdaptiveSchemaVersion-ToString 'AdaptiveCards.AdaptiveSchemaVersion.ToString')
+ - [op_Equality()](#M-AdaptiveCards-AdaptiveSchemaVersion-op_Equality-AdaptiveCards-AdaptiveSchemaVersion,AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.op_Equality(AdaptiveCards.AdaptiveSchemaVersion,AdaptiveCards.AdaptiveSchemaVersion)')
+ - [op_GreaterThan()](#M-AdaptiveCards-AdaptiveSchemaVersion-op_GreaterThan-AdaptiveCards-AdaptiveSchemaVersion,AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.op_GreaterThan(AdaptiveCards.AdaptiveSchemaVersion,AdaptiveCards.AdaptiveSchemaVersion)')
+ - [op_GreaterThanOrEqual()](#M-AdaptiveCards-AdaptiveSchemaVersion-op_GreaterThanOrEqual-AdaptiveCards-AdaptiveSchemaVersion,AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.op_GreaterThanOrEqual(AdaptiveCards.AdaptiveSchemaVersion,AdaptiveCards.AdaptiveSchemaVersion)')
+ - [op_Implicit(versionString)](#M-AdaptiveCards-AdaptiveSchemaVersion-op_Implicit-System-String-~AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion.op_Implicit(System.String)~AdaptiveCards.AdaptiveSchemaVersion')
+ - [op_Inequality()](#M-AdaptiveCards-AdaptiveSchemaVersion-op_Inequality-AdaptiveCards-AdaptiveSchemaVersion,AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.op_Inequality(AdaptiveCards.AdaptiveSchemaVersion,AdaptiveCards.AdaptiveSchemaVersion)')
+ - [op_LessThan()](#M-AdaptiveCards-AdaptiveSchemaVersion-op_LessThan-AdaptiveCards-AdaptiveSchemaVersion,AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.op_LessThan(AdaptiveCards.AdaptiveSchemaVersion,AdaptiveCards.AdaptiveSchemaVersion)')
+ - [op_LessThanOrEqual()](#M-AdaptiveCards-AdaptiveSchemaVersion-op_LessThanOrEqual-AdaptiveCards-AdaptiveSchemaVersion,AdaptiveCards-AdaptiveSchemaVersion- 'AdaptiveCards.AdaptiveSchemaVersion.op_LessThanOrEqual(AdaptiveCards.AdaptiveSchemaVersion,AdaptiveCards.AdaptiveSchemaVersion)')
+- [AdaptiveSerializationException](#T-AdaptiveCards-AdaptiveSerializationException 'AdaptiveCards.AdaptiveSerializationException')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveSerializationException-#ctor 'AdaptiveCards.AdaptiveSerializationException.#ctor')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveSerializationException-#ctor-System-String- 'AdaptiveCards.AdaptiveSerializationException.#ctor(System.String)')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveSerializationException-#ctor-System-String,System-Exception- 'AdaptiveCards.AdaptiveSerializationException.#ctor(System.String,System.Exception)')
+- [AdaptiveShowCardAction](#T-AdaptiveCards-AdaptiveShowCardAction 'AdaptiveCards.AdaptiveShowCardAction')
+ - [TypeName](#F-AdaptiveCards-AdaptiveShowCardAction-TypeName 'AdaptiveCards.AdaptiveShowCardAction.TypeName')
+ - [Card](#P-AdaptiveCards-AdaptiveShowCardAction-Card 'AdaptiveCards.AdaptiveShowCardAction.Card')
+ - [Type](#P-AdaptiveCards-AdaptiveShowCardAction-Type 'AdaptiveCards.AdaptiveShowCardAction.Type')
+- [AdaptiveSpacing](#T-AdaptiveCards-AdaptiveSpacing 'AdaptiveCards.AdaptiveSpacing')
+ - [Default](#F-AdaptiveCards-AdaptiveSpacing-Default 'AdaptiveCards.AdaptiveSpacing.Default')
+ - [ExtraLarge](#F-AdaptiveCards-AdaptiveSpacing-ExtraLarge 'AdaptiveCards.AdaptiveSpacing.ExtraLarge')
+ - [Large](#F-AdaptiveCards-AdaptiveSpacing-Large 'AdaptiveCards.AdaptiveSpacing.Large')
+ - [Medium](#F-AdaptiveCards-AdaptiveSpacing-Medium 'AdaptiveCards.AdaptiveSpacing.Medium')
+ - [None](#F-AdaptiveCards-AdaptiveSpacing-None 'AdaptiveCards.AdaptiveSpacing.None')
+ - [Padding](#F-AdaptiveCards-AdaptiveSpacing-Padding 'AdaptiveCards.AdaptiveSpacing.Padding')
+ - [Small](#F-AdaptiveCards-AdaptiveSpacing-Small 'AdaptiveCards.AdaptiveSpacing.Small')
+- [AdaptiveSubmitAction](#T-AdaptiveCards-AdaptiveSubmitAction 'AdaptiveCards.AdaptiveSubmitAction')
+ - [TypeName](#F-AdaptiveCards-AdaptiveSubmitAction-TypeName 'AdaptiveCards.AdaptiveSubmitAction.TypeName')
+ - [AssociatedInputs](#P-AdaptiveCards-AdaptiveSubmitAction-AssociatedInputs 'AdaptiveCards.AdaptiveSubmitAction.AssociatedInputs')
+ - [Data](#P-AdaptiveCards-AdaptiveSubmitAction-Data 'AdaptiveCards.AdaptiveSubmitAction.Data')
+ - [DataJson](#P-AdaptiveCards-AdaptiveSubmitAction-DataJson 'AdaptiveCards.AdaptiveSubmitAction.DataJson')
+ - [Type](#P-AdaptiveCards-AdaptiveSubmitAction-Type 'AdaptiveCards.AdaptiveSubmitAction.Type')
+- [AdaptiveTable](#T-AdaptiveCards-AdaptiveTable 'AdaptiveCards.AdaptiveTable')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTable-TypeName 'AdaptiveCards.AdaptiveTable.TypeName')
+ - [Columns](#P-AdaptiveCards-AdaptiveTable-Columns 'AdaptiveCards.AdaptiveTable.Columns')
+ - [FirstRowAsHeaders](#P-AdaptiveCards-AdaptiveTable-FirstRowAsHeaders 'AdaptiveCards.AdaptiveTable.FirstRowAsHeaders')
+ - [GridStyle](#P-AdaptiveCards-AdaptiveTable-GridStyle 'AdaptiveCards.AdaptiveTable.GridStyle')
+ - [GridStyleXml](#P-AdaptiveCards-AdaptiveTable-GridStyleXml 'AdaptiveCards.AdaptiveTable.GridStyleXml')
+ - [Rows](#P-AdaptiveCards-AdaptiveTable-Rows 'AdaptiveCards.AdaptiveTable.Rows')
+ - [ShowGridLines](#P-AdaptiveCards-AdaptiveTable-ShowGridLines 'AdaptiveCards.AdaptiveTable.ShowGridLines')
+ - [Type](#P-AdaptiveCards-AdaptiveTable-Type 'AdaptiveCards.AdaptiveTable.Type')
+ - [Add(element)](#M-AdaptiveCards-AdaptiveTable-Add-AdaptiveCards-AdaptiveElement- 'AdaptiveCards.AdaptiveTable.Add(AdaptiveCards.AdaptiveElement)')
+ - [GetEnumerator()](#M-AdaptiveCards-AdaptiveTable-GetEnumerator 'AdaptiveCards.AdaptiveTable.GetEnumerator')
+ - [ShouldSerializeStyleXml()](#M-AdaptiveCards-AdaptiveTable-ShouldSerializeStyleXml 'AdaptiveCards.AdaptiveTable.ShouldSerializeStyleXml')
+- [AdaptiveTableCell](#T-AdaptiveCards-AdaptiveTableCell 'AdaptiveCards.AdaptiveTableCell')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTableCell-TypeName 'AdaptiveCards.AdaptiveTableCell.TypeName')
+- [AdaptiveTableColumnDefinition](#T-AdaptiveCards-AdaptiveTableColumnDefinition 'AdaptiveCards.AdaptiveTableColumnDefinition')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTableColumnDefinition-TypeName 'AdaptiveCards.AdaptiveTableColumnDefinition.TypeName')
+ - [HorizontalContentAlignment](#P-AdaptiveCards-AdaptiveTableColumnDefinition-HorizontalContentAlignment 'AdaptiveCards.AdaptiveTableColumnDefinition.HorizontalContentAlignment')
+ - [VerticalContentAlignment](#P-AdaptiveCards-AdaptiveTableColumnDefinition-VerticalContentAlignment 'AdaptiveCards.AdaptiveTableColumnDefinition.VerticalContentAlignment')
+- [AdaptiveTableRow](#T-AdaptiveCards-AdaptiveTableRow 'AdaptiveCards.AdaptiveTableRow')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTableRow-TypeName 'AdaptiveCards.AdaptiveTableRow.TypeName')
+ - [Cells](#P-AdaptiveCards-AdaptiveTableRow-Cells 'AdaptiveCards.AdaptiveTableRow.Cells')
+ - [Rtl](#P-AdaptiveCards-AdaptiveTableRow-Rtl 'AdaptiveCards.AdaptiveTableRow.Rtl')
+ - [Style](#P-AdaptiveCards-AdaptiveTableRow-Style 'AdaptiveCards.AdaptiveTableRow.Style')
+ - [StyleXml](#P-AdaptiveCards-AdaptiveTableRow-StyleXml 'AdaptiveCards.AdaptiveTableRow.StyleXml')
+ - [Type](#P-AdaptiveCards-AdaptiveTableRow-Type 'AdaptiveCards.AdaptiveTableRow.Type')
+ - [GetEnumerator()](#M-AdaptiveCards-AdaptiveTableRow-GetEnumerator 'AdaptiveCards.AdaptiveTableRow.GetEnumerator')
+ - [ShouldSerializeStyleXml()](#M-AdaptiveCards-AdaptiveTableRow-ShouldSerializeStyleXml 'AdaptiveCards.AdaptiveTableRow.ShouldSerializeStyleXml')
+- [AdaptiveTargetElement](#T-AdaptiveCards-AdaptiveTargetElement 'AdaptiveCards.AdaptiveTargetElement')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveTargetElement-#ctor 'AdaptiveCards.AdaptiveTargetElement.#ctor')
+ - [#ctor(elementId)](#M-AdaptiveCards-AdaptiveTargetElement-#ctor-System-String- 'AdaptiveCards.AdaptiveTargetElement.#ctor(System.String)')
+ - [#ctor(elementId,isVisible)](#M-AdaptiveCards-AdaptiveTargetElement-#ctor-System-String,System-Boolean- 'AdaptiveCards.AdaptiveTargetElement.#ctor(System.String,System.Boolean)')
+ - [ElementId](#P-AdaptiveCards-AdaptiveTargetElement-ElementId 'AdaptiveCards.AdaptiveTargetElement.ElementId')
+ - [IsVisible](#P-AdaptiveCards-AdaptiveTargetElement-IsVisible 'AdaptiveCards.AdaptiveTargetElement.IsVisible')
+ - [IsVisibleXml](#P-AdaptiveCards-AdaptiveTargetElement-IsVisibleXml 'AdaptiveCards.AdaptiveTargetElement.IsVisibleXml')
+ - [ShouldSerializeIsVisibleXml()](#M-AdaptiveCards-AdaptiveTargetElement-ShouldSerializeIsVisibleXml 'AdaptiveCards.AdaptiveTargetElement.ShouldSerializeIsVisibleXml')
+ - [op_Implicit(elementId)](#M-AdaptiveCards-AdaptiveTargetElement-op_Implicit-System-String-~AdaptiveCards-AdaptiveTargetElement 'AdaptiveCards.AdaptiveTargetElement.op_Implicit(System.String)~AdaptiveCards.AdaptiveTargetElement')
+- [AdaptiveTextBlock](#T-AdaptiveCards-AdaptiveTextBlock 'AdaptiveCards.AdaptiveTextBlock')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveTextBlock-#ctor 'AdaptiveCards.AdaptiveTextBlock.#ctor')
+ - [#ctor(text)](#M-AdaptiveCards-AdaptiveTextBlock-#ctor-System-String- 'AdaptiveCards.AdaptiveTextBlock.#ctor(System.String)')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTextBlock-TypeName 'AdaptiveCards.AdaptiveTextBlock.TypeName')
+ - [Color](#P-AdaptiveCards-AdaptiveTextBlock-Color 'AdaptiveCards.AdaptiveTextBlock.Color')
+ - [FontType](#P-AdaptiveCards-AdaptiveTextBlock-FontType 'AdaptiveCards.AdaptiveTextBlock.FontType')
+ - [HorizontalAlignment](#P-AdaptiveCards-AdaptiveTextBlock-HorizontalAlignment 'AdaptiveCards.AdaptiveTextBlock.HorizontalAlignment')
+ - [IsSubtle](#P-AdaptiveCards-AdaptiveTextBlock-IsSubtle 'AdaptiveCards.AdaptiveTextBlock.IsSubtle')
+ - [Italic](#P-AdaptiveCards-AdaptiveTextBlock-Italic 'AdaptiveCards.AdaptiveTextBlock.Italic')
+ - [MaxLines](#P-AdaptiveCards-AdaptiveTextBlock-MaxLines 'AdaptiveCards.AdaptiveTextBlock.MaxLines')
+ - [MaxWidth](#P-AdaptiveCards-AdaptiveTextBlock-MaxWidth 'AdaptiveCards.AdaptiveTextBlock.MaxWidth')
+ - [Size](#P-AdaptiveCards-AdaptiveTextBlock-Size 'AdaptiveCards.AdaptiveTextBlock.Size')
+ - [Strikethrough](#P-AdaptiveCards-AdaptiveTextBlock-Strikethrough 'AdaptiveCards.AdaptiveTextBlock.Strikethrough')
+ - [Style](#P-AdaptiveCards-AdaptiveTextBlock-Style 'AdaptiveCards.AdaptiveTextBlock.Style')
+ - [Text](#P-AdaptiveCards-AdaptiveTextBlock-Text 'AdaptiveCards.AdaptiveTextBlock.Text')
+ - [Type](#P-AdaptiveCards-AdaptiveTextBlock-Type 'AdaptiveCards.AdaptiveTextBlock.Type')
+ - [Weight](#P-AdaptiveCards-AdaptiveTextBlock-Weight 'AdaptiveCards.AdaptiveTextBlock.Weight')
+ - [Wrap](#P-AdaptiveCards-AdaptiveTextBlock-Wrap 'AdaptiveCards.AdaptiveTextBlock.Wrap')
+- [AdaptiveTextBlockStyle](#T-AdaptiveCards-AdaptiveTextBlockStyle 'AdaptiveCards.AdaptiveTextBlockStyle')
+ - [Heading](#F-AdaptiveCards-AdaptiveTextBlockStyle-Heading 'AdaptiveCards.AdaptiveTextBlockStyle.Heading')
+ - [Paragraph](#F-AdaptiveCards-AdaptiveTextBlockStyle-Paragraph 'AdaptiveCards.AdaptiveTextBlockStyle.Paragraph')
+- [AdaptiveTextColor](#T-AdaptiveCards-AdaptiveTextColor 'AdaptiveCards.AdaptiveTextColor')
+ - [Accent](#F-AdaptiveCards-AdaptiveTextColor-Accent 'AdaptiveCards.AdaptiveTextColor.Accent')
+ - [Attention](#F-AdaptiveCards-AdaptiveTextColor-Attention 'AdaptiveCards.AdaptiveTextColor.Attention')
+ - [Dark](#F-AdaptiveCards-AdaptiveTextColor-Dark 'AdaptiveCards.AdaptiveTextColor.Dark')
+ - [Default](#F-AdaptiveCards-AdaptiveTextColor-Default 'AdaptiveCards.AdaptiveTextColor.Default')
+ - [Good](#F-AdaptiveCards-AdaptiveTextColor-Good 'AdaptiveCards.AdaptiveTextColor.Good')
+ - [Light](#F-AdaptiveCards-AdaptiveTextColor-Light 'AdaptiveCards.AdaptiveTextColor.Light')
+ - [Warning](#F-AdaptiveCards-AdaptiveTextColor-Warning 'AdaptiveCards.AdaptiveTextColor.Warning')
+- [AdaptiveTextInput](#T-AdaptiveCards-AdaptiveTextInput 'AdaptiveCards.AdaptiveTextInput')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTextInput-TypeName 'AdaptiveCards.AdaptiveTextInput.TypeName')
+ - [InlineAction](#P-AdaptiveCards-AdaptiveTextInput-InlineAction 'AdaptiveCards.AdaptiveTextInput.InlineAction')
+ - [IsMultiline](#P-AdaptiveCards-AdaptiveTextInput-IsMultiline 'AdaptiveCards.AdaptiveTextInput.IsMultiline')
+ - [MaxLength](#P-AdaptiveCards-AdaptiveTextInput-MaxLength 'AdaptiveCards.AdaptiveTextInput.MaxLength')
+ - [Placeholder](#P-AdaptiveCards-AdaptiveTextInput-Placeholder 'AdaptiveCards.AdaptiveTextInput.Placeholder')
+ - [Regex](#P-AdaptiveCards-AdaptiveTextInput-Regex 'AdaptiveCards.AdaptiveTextInput.Regex')
+ - [Style](#P-AdaptiveCards-AdaptiveTextInput-Style 'AdaptiveCards.AdaptiveTextInput.Style')
+ - [Type](#P-AdaptiveCards-AdaptiveTextInput-Type 'AdaptiveCards.AdaptiveTextInput.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveTextInput-Value 'AdaptiveCards.AdaptiveTextInput.Value')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveTextInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveTextInput.GetNonInteractiveValue')
+- [AdaptiveTextInputStyle](#T-AdaptiveCards-AdaptiveTextInputStyle 'AdaptiveCards.AdaptiveTextInputStyle')
+ - [Email](#F-AdaptiveCards-AdaptiveTextInputStyle-Email 'AdaptiveCards.AdaptiveTextInputStyle.Email')
+ - [Password](#F-AdaptiveCards-AdaptiveTextInputStyle-Password 'AdaptiveCards.AdaptiveTextInputStyle.Password')
+ - [Tel](#F-AdaptiveCards-AdaptiveTextInputStyle-Tel 'AdaptiveCards.AdaptiveTextInputStyle.Tel')
+ - [Text](#F-AdaptiveCards-AdaptiveTextInputStyle-Text 'AdaptiveCards.AdaptiveTextInputStyle.Text')
+ - [Url](#F-AdaptiveCards-AdaptiveTextInputStyle-Url 'AdaptiveCards.AdaptiveTextInputStyle.Url')
+- [AdaptiveTextRun](#T-AdaptiveCards-AdaptiveTextRun 'AdaptiveCards.AdaptiveTextRun')
+ - [#ctor()](#M-AdaptiveCards-AdaptiveTextRun-#ctor 'AdaptiveCards.AdaptiveTextRun.#ctor')
+ - [#ctor(text)](#M-AdaptiveCards-AdaptiveTextRun-#ctor-System-String- 'AdaptiveCards.AdaptiveTextRun.#ctor(System.String)')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTextRun-TypeName 'AdaptiveCards.AdaptiveTextRun.TypeName')
+ - [Color](#P-AdaptiveCards-AdaptiveTextRun-Color 'AdaptiveCards.AdaptiveTextRun.Color')
+ - [FontType](#P-AdaptiveCards-AdaptiveTextRun-FontType 'AdaptiveCards.AdaptiveTextRun.FontType')
+ - [Highlight](#P-AdaptiveCards-AdaptiveTextRun-Highlight 'AdaptiveCards.AdaptiveTextRun.Highlight')
+ - [IsSubtle](#P-AdaptiveCards-AdaptiveTextRun-IsSubtle 'AdaptiveCards.AdaptiveTextRun.IsSubtle')
+ - [Italic](#P-AdaptiveCards-AdaptiveTextRun-Italic 'AdaptiveCards.AdaptiveTextRun.Italic')
+ - [SelectAction](#P-AdaptiveCards-AdaptiveTextRun-SelectAction 'AdaptiveCards.AdaptiveTextRun.SelectAction')
+ - [Size](#P-AdaptiveCards-AdaptiveTextRun-Size 'AdaptiveCards.AdaptiveTextRun.Size')
+ - [Strikethrough](#P-AdaptiveCards-AdaptiveTextRun-Strikethrough 'AdaptiveCards.AdaptiveTextRun.Strikethrough')
+ - [Text](#P-AdaptiveCards-AdaptiveTextRun-Text 'AdaptiveCards.AdaptiveTextRun.Text')
+ - [Type](#P-AdaptiveCards-AdaptiveTextRun-Type 'AdaptiveCards.AdaptiveTextRun.Type')
+ - [Underline](#P-AdaptiveCards-AdaptiveTextRun-Underline 'AdaptiveCards.AdaptiveTextRun.Underline')
+ - [Weight](#P-AdaptiveCards-AdaptiveTextRun-Weight 'AdaptiveCards.AdaptiveTextRun.Weight')
+- [AdaptiveTextSize](#T-AdaptiveCards-AdaptiveTextSize 'AdaptiveCards.AdaptiveTextSize')
+ - [Default](#F-AdaptiveCards-AdaptiveTextSize-Default 'AdaptiveCards.AdaptiveTextSize.Default')
+ - [ExtraLarge](#F-AdaptiveCards-AdaptiveTextSize-ExtraLarge 'AdaptiveCards.AdaptiveTextSize.ExtraLarge')
+ - [Large](#F-AdaptiveCards-AdaptiveTextSize-Large 'AdaptiveCards.AdaptiveTextSize.Large')
+ - [Medium](#F-AdaptiveCards-AdaptiveTextSize-Medium 'AdaptiveCards.AdaptiveTextSize.Medium')
+ - [Normal](#F-AdaptiveCards-AdaptiveTextSize-Normal 'AdaptiveCards.AdaptiveTextSize.Normal')
+ - [Small](#F-AdaptiveCards-AdaptiveTextSize-Small 'AdaptiveCards.AdaptiveTextSize.Small')
+- [AdaptiveTextWeight](#T-AdaptiveCards-AdaptiveTextWeight 'AdaptiveCards.AdaptiveTextWeight')
+ - [Bolder](#F-AdaptiveCards-AdaptiveTextWeight-Bolder 'AdaptiveCards.AdaptiveTextWeight.Bolder')
+ - [Default](#F-AdaptiveCards-AdaptiveTextWeight-Default 'AdaptiveCards.AdaptiveTextWeight.Default')
+ - [Lighter](#F-AdaptiveCards-AdaptiveTextWeight-Lighter 'AdaptiveCards.AdaptiveTextWeight.Lighter')
+ - [Normal](#F-AdaptiveCards-AdaptiveTextWeight-Normal 'AdaptiveCards.AdaptiveTextWeight.Normal')
+- [AdaptiveTimeInput](#T-AdaptiveCards-AdaptiveTimeInput 'AdaptiveCards.AdaptiveTimeInput')
+ - [TypeName](#F-AdaptiveCards-AdaptiveTimeInput-TypeName 'AdaptiveCards.AdaptiveTimeInput.TypeName')
+ - [Max](#P-AdaptiveCards-AdaptiveTimeInput-Max 'AdaptiveCards.AdaptiveTimeInput.Max')
+ - [Min](#P-AdaptiveCards-AdaptiveTimeInput-Min 'AdaptiveCards.AdaptiveTimeInput.Min')
+ - [Placeholder](#P-AdaptiveCards-AdaptiveTimeInput-Placeholder 'AdaptiveCards.AdaptiveTimeInput.Placeholder')
+ - [Type](#P-AdaptiveCards-AdaptiveTimeInput-Type 'AdaptiveCards.AdaptiveTimeInput.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveTimeInput-Value 'AdaptiveCards.AdaptiveTimeInput.Value')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveTimeInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveTimeInput.GetNonInteractiveValue')
+- [AdaptiveToggleInput](#T-AdaptiveCards-AdaptiveToggleInput 'AdaptiveCards.AdaptiveToggleInput')
+ - [TypeName](#F-AdaptiveCards-AdaptiveToggleInput-TypeName 'AdaptiveCards.AdaptiveToggleInput.TypeName')
+ - [Title](#P-AdaptiveCards-AdaptiveToggleInput-Title 'AdaptiveCards.AdaptiveToggleInput.Title')
+ - [Type](#P-AdaptiveCards-AdaptiveToggleInput-Type 'AdaptiveCards.AdaptiveToggleInput.Type')
+ - [Value](#P-AdaptiveCards-AdaptiveToggleInput-Value 'AdaptiveCards.AdaptiveToggleInput.Value')
+ - [ValueOff](#P-AdaptiveCards-AdaptiveToggleInput-ValueOff 'AdaptiveCards.AdaptiveToggleInput.ValueOff')
+ - [ValueOn](#P-AdaptiveCards-AdaptiveToggleInput-ValueOn 'AdaptiveCards.AdaptiveToggleInput.ValueOn')
+ - [Wrap](#P-AdaptiveCards-AdaptiveToggleInput-Wrap 'AdaptiveCards.AdaptiveToggleInput.Wrap')
+ - [GetNonInteractiveValue()](#M-AdaptiveCards-AdaptiveToggleInput-GetNonInteractiveValue 'AdaptiveCards.AdaptiveToggleInput.GetNonInteractiveValue')
+- [AdaptiveToggleVisibilityAction](#T-AdaptiveCards-AdaptiveToggleVisibilityAction 'AdaptiveCards.AdaptiveToggleVisibilityAction')
+ - [TypeName](#F-AdaptiveCards-AdaptiveToggleVisibilityAction-TypeName 'AdaptiveCards.AdaptiveToggleVisibilityAction.TypeName')
+ - [TargetElements](#P-AdaptiveCards-AdaptiveToggleVisibilityAction-TargetElements 'AdaptiveCards.AdaptiveToggleVisibilityAction.TargetElements')
+ - [Type](#P-AdaptiveCards-AdaptiveToggleVisibilityAction-Type 'AdaptiveCards.AdaptiveToggleVisibilityAction.Type')
+- [AdaptiveTokenExchangeResource](#T-AdaptiveCards-AdaptiveTokenExchangeResource 'AdaptiveCards.AdaptiveTokenExchangeResource')
+ - [Id](#P-AdaptiveCards-AdaptiveTokenExchangeResource-Id 'AdaptiveCards.AdaptiveTokenExchangeResource.Id')
+ - [ProviderId](#P-AdaptiveCards-AdaptiveTokenExchangeResource-ProviderId 'AdaptiveCards.AdaptiveTokenExchangeResource.ProviderId')
+ - [Uri](#P-AdaptiveCards-AdaptiveTokenExchangeResource-Uri 'AdaptiveCards.AdaptiveTokenExchangeResource.Uri')
+- [AdaptiveTypedBaseElementConverter](#T-AdaptiveCards-AdaptiveTypedBaseElementConverter 'AdaptiveCards.AdaptiveTypedBaseElementConverter')
+ - [ParseContext](#P-AdaptiveCards-AdaptiveTypedBaseElementConverter-ParseContext 'AdaptiveCards.AdaptiveTypedBaseElementConverter.ParseContext')
+- [AdaptiveTypedElement](#T-AdaptiveCards-AdaptiveTypedElement 'AdaptiveCards.AdaptiveTypedElement')
+ - [Requires](#F-AdaptiveCards-AdaptiveTypedElement-Requires 'AdaptiveCards.AdaptiveTypedElement.Requires')
+ - [AdditionalProperties](#P-AdaptiveCards-AdaptiveTypedElement-AdditionalProperties 'AdaptiveCards.AdaptiveTypedElement.AdditionalProperties')
+ - [Fallback](#P-AdaptiveCards-AdaptiveTypedElement-Fallback 'AdaptiveCards.AdaptiveTypedElement.Fallback')
+ - [Id](#P-AdaptiveCards-AdaptiveTypedElement-Id 'AdaptiveCards.AdaptiveTypedElement.Id')
+ - [InternalID](#P-AdaptiveCards-AdaptiveTypedElement-InternalID 'AdaptiveCards.AdaptiveTypedElement.InternalID')
+ - [Type](#P-AdaptiveCards-AdaptiveTypedElement-Type 'AdaptiveCards.AdaptiveTypedElement.Type')
+ - [MeetsRequirements(featureRegistration)](#M-AdaptiveCards-AdaptiveTypedElement-MeetsRequirements-AdaptiveCards-AdaptiveFeatureRegistration- 'AdaptiveCards.AdaptiveTypedElement.MeetsRequirements(AdaptiveCards.AdaptiveFeatureRegistration)')
+ - [ShouldSerializeAdditionalProperties()](#M-AdaptiveCards-AdaptiveTypedElement-ShouldSerializeAdditionalProperties 'AdaptiveCards.AdaptiveTypedElement.ShouldSerializeAdditionalProperties')
+- [AdaptiveTypedElementConverter](#T-AdaptiveCards-AdaptiveTypedElementConverter 'AdaptiveCards.AdaptiveTypedElementConverter')
+ - [TypedElementTypes](#F-AdaptiveCards-AdaptiveTypedElementConverter-TypedElementTypes 'AdaptiveCards.AdaptiveTypedElementConverter.TypedElementTypes')
+ - [CanRead](#P-AdaptiveCards-AdaptiveTypedElementConverter-CanRead 'AdaptiveCards.AdaptiveTypedElementConverter.CanRead')
+ - [CanWrite](#P-AdaptiveCards-AdaptiveTypedElementConverter-CanWrite 'AdaptiveCards.AdaptiveTypedElementConverter.CanWrite')
+ - [Warnings](#P-AdaptiveCards-AdaptiveTypedElementConverter-Warnings 'AdaptiveCards.AdaptiveTypedElementConverter.Warnings')
+ - [CanConvert()](#M-AdaptiveCards-AdaptiveTypedElementConverter-CanConvert-System-Type- 'AdaptiveCards.AdaptiveTypedElementConverter.CanConvert(System.Type)')
+ - [CreateElement\`\`1()](#M-AdaptiveCards-AdaptiveTypedElementConverter-CreateElement``1-System-String- 'AdaptiveCards.AdaptiveTypedElementConverter.CreateElement``1(System.String)')
+ - [GetElementTypeName()](#M-AdaptiveCards-AdaptiveTypedElementConverter-GetElementTypeName-System-Type,Newtonsoft-Json-Linq-JObject- 'AdaptiveCards.AdaptiveTypedElementConverter.GetElementTypeName(System.Type,Newtonsoft.Json.Linq.JObject)')
+ - [ReadJson()](#M-AdaptiveCards-AdaptiveTypedElementConverter-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveTypedElementConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [RegisterTypedElement\`\`1(typeName)](#M-AdaptiveCards-AdaptiveTypedElementConverter-RegisterTypedElement``1-System-String- 'AdaptiveCards.AdaptiveTypedElementConverter.RegisterTypedElement``1(System.String)')
+ - [WriteJson()](#M-AdaptiveCards-AdaptiveTypedElementConverter-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.AdaptiveTypedElementConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [AdaptiveUnknownAction](#T-AdaptiveCards-AdaptiveUnknownAction 'AdaptiveCards.AdaptiveUnknownAction')
+ - [Type](#P-AdaptiveCards-AdaptiveUnknownAction-Type 'AdaptiveCards.AdaptiveUnknownAction.Type')
+- [AdaptiveUnknownElement](#T-AdaptiveCards-AdaptiveUnknownElement 'AdaptiveCards.AdaptiveUnknownElement')
+ - [Type](#P-AdaptiveCards-AdaptiveUnknownElement-Type 'AdaptiveCards.AdaptiveUnknownElement.Type')
+- [AdaptiveVerticalAlignment](#T-AdaptiveCards-AdaptiveVerticalAlignment 'AdaptiveCards.AdaptiveVerticalAlignment')
+ - [Bottom](#F-AdaptiveCards-AdaptiveVerticalAlignment-Bottom 'AdaptiveCards.AdaptiveVerticalAlignment.Bottom')
+ - [Center](#F-AdaptiveCards-AdaptiveVerticalAlignment-Center 'AdaptiveCards.AdaptiveVerticalAlignment.Center')
+ - [Top](#F-AdaptiveCards-AdaptiveVerticalAlignment-Top 'AdaptiveCards.AdaptiveVerticalAlignment.Top')
+- [AdaptiveVerticalContentAlignment](#T-AdaptiveCards-AdaptiveVerticalContentAlignment 'AdaptiveCards.AdaptiveVerticalContentAlignment')
+ - [Bottom](#F-AdaptiveCards-AdaptiveVerticalContentAlignment-Bottom 'AdaptiveCards.AdaptiveVerticalContentAlignment.Bottom')
+ - [Center](#F-AdaptiveCards-AdaptiveVerticalContentAlignment-Center 'AdaptiveCards.AdaptiveVerticalContentAlignment.Center')
+ - [Top](#F-AdaptiveCards-AdaptiveVerticalContentAlignment-Top 'AdaptiveCards.AdaptiveVerticalContentAlignment.Top')
+- [AdaptiveVisitor](#T-AdaptiveCards-Rendering-AdaptiveVisitor 'AdaptiveCards.Rendering.AdaptiveVisitor')
+- [AdaptiveWarning](#T-AdaptiveCards-AdaptiveWarning 'AdaptiveCards.AdaptiveWarning')
+ - [#ctor(code,message)](#M-AdaptiveCards-AdaptiveWarning-#ctor-System-Int32,System-String- 'AdaptiveCards.AdaptiveWarning.#ctor(System.Int32,System.String)')
+ - [Code](#P-AdaptiveCards-AdaptiveWarning-Code 'AdaptiveCards.AdaptiveWarning.Code')
+ - [Message](#P-AdaptiveCards-AdaptiveWarning-Message 'AdaptiveCards.AdaptiveWarning.Message')
+ - [ToString()](#M-AdaptiveCards-AdaptiveWarning-ToString 'AdaptiveCards.AdaptiveWarning.ToString')
+- [BlockRules](#T-Microsoft-MarkedNet-BlockRules 'Microsoft.MarkedNet.BlockRules')
+- [BreaksInlineRules](#T-Microsoft-MarkedNet-BreaksInlineRules 'Microsoft.MarkedNet.BreaksInlineRules')
+- [ColorUtil](#T-AdaptiveCards-ColorUtil 'AdaptiveCards.ColorUtil')
+ - [alphaColorLength](#F-AdaptiveCards-ColorUtil-alphaColorLength 'AdaptiveCards.ColorUtil.alphaColorLength')
+ - [colorStringLength](#F-AdaptiveCards-ColorUtil-colorStringLength 'AdaptiveCards.ColorUtil.colorStringLength')
+ - [GenerateLighterColor(hexColor)](#M-AdaptiveCards-ColorUtil-GenerateLighterColor-System-String- 'AdaptiveCards.ColorUtil.GenerateLighterColor(System.String)')
+ - [IsValidColor(color)](#M-AdaptiveCards-ColorUtil-IsValidColor-System-String- 'AdaptiveCards.ColorUtil.IsValidColor(System.String)')
+ - [TryParseColor(color,result)](#M-AdaptiveCards-ColorUtil-TryParseColor-System-String,System-Int32@- 'AdaptiveCards.ColorUtil.TryParseColor(System.String,System.Int32@)')
+- [ContainerStyleConfig](#T-AdaptiveCards-Rendering-ContainerStyleConfig 'AdaptiveCards.Rendering.ContainerStyleConfig')
+ - [BackgroundColor](#P-AdaptiveCards-Rendering-ContainerStyleConfig-BackgroundColor 'AdaptiveCards.Rendering.ContainerStyleConfig.BackgroundColor')
+ - [ForegroundColors](#P-AdaptiveCards-Rendering-ContainerStyleConfig-ForegroundColors 'AdaptiveCards.Rendering.ContainerStyleConfig.ForegroundColors')
+- [ContextType](#T-AdaptiveCards-ParseContext-ContextType 'AdaptiveCards.ParseContext.ContextType')
+ - [Action](#F-AdaptiveCards-ParseContext-ContextType-Action 'AdaptiveCards.ParseContext.ContextType.Action')
+ - [Element](#F-AdaptiveCards-ParseContext-ContextType-Element 'AdaptiveCards.ParseContext.ContextType.Element')
+- [EmojiMarkdownRenderer](#T-Microsoft-MarkedNet-EmojiMarkdownRenderer 'Microsoft.MarkedNet.EmojiMarkdownRenderer')
+- [ErrorMessageConfig](#T-AdaptiveCards-Rendering-ErrorMessageConfig 'AdaptiveCards.Rendering.ErrorMessageConfig')
+ - [Size](#P-AdaptiveCards-Rendering-ErrorMessageConfig-Size 'AdaptiveCards.Rendering.ErrorMessageConfig.Size')
+ - [Spacing](#P-AdaptiveCards-Rendering-ErrorMessageConfig-Spacing 'AdaptiveCards.Rendering.ErrorMessageConfig.Spacing')
+ - [Weight](#P-AdaptiveCards-Rendering-ErrorMessageConfig-Weight 'AdaptiveCards.Rendering.ErrorMessageConfig.Weight')
+- [FactSetConfig](#T-AdaptiveCards-Rendering-FactSetConfig 'AdaptiveCards.Rendering.FactSetConfig')
+ - [Spacing](#P-AdaptiveCards-Rendering-FactSetConfig-Spacing 'AdaptiveCards.Rendering.FactSetConfig.Spacing')
+ - [Title](#P-AdaptiveCards-Rendering-FactSetConfig-Title 'AdaptiveCards.Rendering.FactSetConfig.Title')
+ - [Value](#P-AdaptiveCards-Rendering-FactSetConfig-Value 'AdaptiveCards.Rendering.FactSetConfig.Value')
+- [FontColorConfig](#T-AdaptiveCards-Rendering-FontColorConfig 'AdaptiveCards.Rendering.FontColorConfig')
+ - [Default](#P-AdaptiveCards-Rendering-FontColorConfig-Default 'AdaptiveCards.Rendering.FontColorConfig.Default')
+- [GfmBlockRules](#T-Microsoft-MarkedNet-GfmBlockRules 'Microsoft.MarkedNet.GfmBlockRules')
+- [GfmInlineRules](#T-Microsoft-MarkedNet-GfmInlineRules 'Microsoft.MarkedNet.GfmInlineRules')
+- [HashColorConverter](#T-AdaptiveCards-HashColorConverter 'AdaptiveCards.HashColorConverter')
+ - [CanWrite](#P-AdaptiveCards-HashColorConverter-CanWrite 'AdaptiveCards.HashColorConverter.CanWrite')
+ - [Warnings](#P-AdaptiveCards-HashColorConverter-Warnings 'AdaptiveCards.HashColorConverter.Warnings')
+ - [CanConvert()](#M-AdaptiveCards-HashColorConverter-CanConvert-System-Type- 'AdaptiveCards.HashColorConverter.CanConvert(System.Type)')
+ - [ReadJson()](#M-AdaptiveCards-HashColorConverter-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.HashColorConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [WriteJson()](#M-AdaptiveCards-HashColorConverter-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.HashColorConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [HeadingsConfig](#T-AdaptiveCards-Rendering-HeadingsConfig 'AdaptiveCards.Rendering.HeadingsConfig')
+ - [Level](#P-AdaptiveCards-Rendering-HeadingsConfig-Level 'AdaptiveCards.Rendering.HeadingsConfig.Level')
+- [HighlightColorConfig](#T-AdaptiveCards-Rendering-HighlightColorConfig 'AdaptiveCards.Rendering.HighlightColorConfig')
+ - [Default](#P-AdaptiveCards-Rendering-HighlightColorConfig-Default 'AdaptiveCards.Rendering.HighlightColorConfig.Default')
+- [HtmlRenderer](#T-Microsoft-MarkedNet-HtmlRenderer 'Microsoft.MarkedNet.HtmlRenderer')
+- [IAdaptiveTextElement](#T-AdaptiveCards-IAdaptiveTextElement 'AdaptiveCards.IAdaptiveTextElement')
+ - [Color](#P-AdaptiveCards-IAdaptiveTextElement-Color 'AdaptiveCards.IAdaptiveTextElement.Color')
+ - [FontType](#P-AdaptiveCards-IAdaptiveTextElement-FontType 'AdaptiveCards.IAdaptiveTextElement.FontType')
+ - [IsSubtle](#P-AdaptiveCards-IAdaptiveTextElement-IsSubtle 'AdaptiveCards.IAdaptiveTextElement.IsSubtle')
+ - [Italic](#P-AdaptiveCards-IAdaptiveTextElement-Italic 'AdaptiveCards.IAdaptiveTextElement.Italic')
+ - [Size](#P-AdaptiveCards-IAdaptiveTextElement-Size 'AdaptiveCards.IAdaptiveTextElement.Size')
+ - [Strikethrough](#P-AdaptiveCards-IAdaptiveTextElement-Strikethrough 'AdaptiveCards.IAdaptiveTextElement.Strikethrough')
+ - [Text](#P-AdaptiveCards-IAdaptiveTextElement-Text 'AdaptiveCards.IAdaptiveTextElement.Text')
+ - [Weight](#P-AdaptiveCards-IAdaptiveTextElement-Weight 'AdaptiveCards.IAdaptiveTextElement.Weight')
+- [IconPlacement](#T-AdaptiveCards-Rendering-IconPlacement 'AdaptiveCards.Rendering.IconPlacement')
+ - [AboveTitle](#F-AdaptiveCards-Rendering-IconPlacement-AboveTitle 'AdaptiveCards.Rendering.IconPlacement.AboveTitle')
+ - [LeftOfTitle](#F-AdaptiveCards-Rendering-IconPlacement-LeftOfTitle 'AdaptiveCards.Rendering.IconPlacement.LeftOfTitle')
+- [IgnoreEmptyItemsConverter\`1](#T-AdaptiveCards-IgnoreEmptyItemsConverter`1 'AdaptiveCards.IgnoreEmptyItemsConverter`1')
+ - [CanWrite](#P-AdaptiveCards-IgnoreEmptyItemsConverter`1-CanWrite 'AdaptiveCards.IgnoreEmptyItemsConverter`1.CanWrite')
+ - [CanConvert()](#M-AdaptiveCards-IgnoreEmptyItemsConverter`1-CanConvert-System-Type- 'AdaptiveCards.IgnoreEmptyItemsConverter`1.CanConvert(System.Type)')
+ - [ReadJson()](#M-AdaptiveCards-IgnoreEmptyItemsConverter`1-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.IgnoreEmptyItemsConverter`1.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [WriteJson()](#M-AdaptiveCards-IgnoreEmptyItemsConverter`1-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.IgnoreEmptyItemsConverter`1.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [IgnoreNullEnumConverter\`1](#T-AdaptiveCards-IgnoreNullEnumConverter`1 'AdaptiveCards.IgnoreNullEnumConverter`1')
+ - [#ctor()](#M-AdaptiveCards-IgnoreNullEnumConverter`1-#ctor 'AdaptiveCards.IgnoreNullEnumConverter`1.#ctor')
+ - [#ctor()](#M-AdaptiveCards-IgnoreNullEnumConverter`1-#ctor-System-Boolean- 'AdaptiveCards.IgnoreNullEnumConverter`1.#ctor(System.Boolean)')
+ - [Warnings](#P-AdaptiveCards-IgnoreNullEnumConverter`1-Warnings 'AdaptiveCards.IgnoreNullEnumConverter`1.Warnings')
+ - [ReadJson()](#M-AdaptiveCards-IgnoreNullEnumConverter`1-ReadJson-Newtonsoft-Json-JsonReader,System-Type,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.IgnoreNullEnumConverter`1.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)')
+ - [WriteJson()](#M-AdaptiveCards-IgnoreNullEnumConverter`1-WriteJson-Newtonsoft-Json-JsonWriter,System-Object,Newtonsoft-Json-JsonSerializer- 'AdaptiveCards.IgnoreNullEnumConverter`1.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)')
+- [InlineLexer](#T-Microsoft-MarkedNet-InlineLexer 'Microsoft.MarkedNet.InlineLexer')
+ - [Mangle()](#M-Microsoft-MarkedNet-InlineLexer-Mangle-System-String- 'Microsoft.MarkedNet.InlineLexer.Mangle(System.String)')
+ - [Output()](#M-Microsoft-MarkedNet-InlineLexer-Output-System-String- 'Microsoft.MarkedNet.InlineLexer.Output(System.String)')
+ - [OutputLink()](#M-Microsoft-MarkedNet-InlineLexer-OutputLink-System-Collections-Generic-IList{System-String},Microsoft-MarkedNet-LinkObj- 'Microsoft.MarkedNet.InlineLexer.OutputLink(System.Collections.Generic.IList{System.String},Microsoft.MarkedNet.LinkObj)')
+ - [Smartypants()](#M-Microsoft-MarkedNet-InlineLexer-Smartypants-System-String- 'Microsoft.MarkedNet.InlineLexer.Smartypants(System.String)')
+- [InlineRules](#T-Microsoft-MarkedNet-InlineRules 'Microsoft.MarkedNet.InlineRules')
+- [InputLabelConfig](#T-AdaptiveCards-Rendering-InputLabelConfig 'AdaptiveCards.Rendering.InputLabelConfig')
+ - [Color](#P-AdaptiveCards-Rendering-InputLabelConfig-Color 'AdaptiveCards.Rendering.InputLabelConfig.Color')
+ - [IsSubtle](#P-AdaptiveCards-Rendering-InputLabelConfig-IsSubtle 'AdaptiveCards.Rendering.InputLabelConfig.IsSubtle')
+ - [Size](#P-AdaptiveCards-Rendering-InputLabelConfig-Size 'AdaptiveCards.Rendering.InputLabelConfig.Size')
+ - [Suffix](#P-AdaptiveCards-Rendering-InputLabelConfig-Suffix 'AdaptiveCards.Rendering.InputLabelConfig.Suffix')
+ - [Weight](#P-AdaptiveCards-Rendering-InputLabelConfig-Weight 'AdaptiveCards.Rendering.InputLabelConfig.Weight')
+- [InputsConfig](#T-AdaptiveCards-Rendering-InputsConfig 'AdaptiveCards.Rendering.InputsConfig')
+- [JsonExtensions](#T-AdaptiveCards-JsonExtensions 'AdaptiveCards.JsonExtensions')
+ - [IsHexDigit(c)](#M-AdaptiveCards-JsonExtensions-IsHexDigit-System-Char- 'AdaptiveCards.JsonExtensions.IsHexDigit(System.Char)')
+- [LabelConfig](#T-AdaptiveCards-Rendering-LabelConfig 'AdaptiveCards.Rendering.LabelConfig')
+ - [InputSpacing](#P-AdaptiveCards-Rendering-LabelConfig-InputSpacing 'AdaptiveCards.Rendering.LabelConfig.InputSpacing')
+- [Lexer](#T-Microsoft-MarkedNet-Lexer 'Microsoft.MarkedNet.Lexer')
+ - [Lex()](#M-Microsoft-MarkedNet-Lexer-Lex-System-String,Microsoft-MarkedNet-Options- 'Microsoft.MarkedNet.Lexer.Lex(System.String,Microsoft.MarkedNet.Options)')
+ - [Lex()](#M-Microsoft-MarkedNet-Lexer-Lex-System-String- 'Microsoft.MarkedNet.Lexer.Lex(System.String)')
+ - [Token()](#M-Microsoft-MarkedNet-Lexer-Token-System-String,System-Boolean,Microsoft-MarkedNet-TokensResult- 'Microsoft.MarkedNet.Lexer.Token(System.String,System.Boolean,Microsoft.MarkedNet.TokensResult)')
+- [MarkdownRenderer](#T-Microsoft-MarkedNet-MarkdownRenderer 'Microsoft.MarkedNet.MarkdownRenderer')
+ - [Postprocess(text)](#M-Microsoft-MarkedNet-MarkdownRenderer-Postprocess-System-String- 'Microsoft.MarkedNet.MarkdownRenderer.Postprocess(System.String)')
+ - [Preprocess(text)](#M-Microsoft-MarkedNet-MarkdownRenderer-Preprocess-System-String- 'Microsoft.MarkedNet.MarkdownRenderer.Preprocess(System.String)')
+- [MediaConfig](#T-AdaptiveCards-Rendering-MediaConfig 'AdaptiveCards.Rendering.MediaConfig')
+ - [AllowInlinePlayback](#P-AdaptiveCards-Rendering-MediaConfig-AllowInlinePlayback 'AdaptiveCards.Rendering.MediaConfig.AllowInlinePlayback')
+ - [DefaultPoster](#P-AdaptiveCards-Rendering-MediaConfig-DefaultPoster 'AdaptiveCards.Rendering.MediaConfig.DefaultPoster')
+ - [PlayButton](#P-AdaptiveCards-Rendering-MediaConfig-PlayButton 'AdaptiveCards.Rendering.MediaConfig.PlayButton')
+- [NormalBlockRules](#T-Microsoft-MarkedNet-NormalBlockRules 'Microsoft.MarkedNet.NormalBlockRules')
+- [NormalInlineRules](#T-Microsoft-MarkedNet-NormalInlineRules 'Microsoft.MarkedNet.NormalInlineRules')
+- [ParseContext](#T-AdaptiveCards-ParseContext 'AdaptiveCards.ParseContext')
+ - [Type](#P-AdaptiveCards-ParseContext-Type 'AdaptiveCards.ParseContext.Type')
+ - [GetNearestFallbackID(skipID)](#M-AdaptiveCards-ParseContext-GetNearestFallbackID-AdaptiveCards-AdaptiveInternalID- 'AdaptiveCards.ParseContext.GetNearestFallbackID(AdaptiveCards.AdaptiveInternalID)')
+ - [PopElement()](#M-AdaptiveCards-ParseContext-PopElement 'AdaptiveCards.ParseContext.PopElement')
+ - [PushElement(idJsonProperty,internalId)](#M-AdaptiveCards-ParseContext-PushElement-System-String,AdaptiveCards-AdaptiveInternalID- 'AdaptiveCards.ParseContext.PushElement(System.String,AdaptiveCards.AdaptiveInternalID)')
+- [Parser](#T-Microsoft-MarkedNet-Parser 'Microsoft.MarkedNet.Parser')
+ - [Next()](#M-Microsoft-MarkedNet-Parser-Next 'Microsoft.MarkedNet.Parser.Next')
+ - [Parse()](#M-Microsoft-MarkedNet-Parser-Parse-Microsoft-MarkedNet-TokensResult,Microsoft-MarkedNet-Options- 'Microsoft.MarkedNet.Parser.Parse(Microsoft.MarkedNet.TokensResult,Microsoft.MarkedNet.Options)')
+ - [Parse()](#M-Microsoft-MarkedNet-Parser-Parse-Microsoft-MarkedNet-TokensResult- 'Microsoft.MarkedNet.Parser.Parse(Microsoft.MarkedNet.TokensResult)')
+ - [ParseText()](#M-Microsoft-MarkedNet-Parser-ParseText 'Microsoft.MarkedNet.Parser.ParseText')
+ - [Peek()](#M-Microsoft-MarkedNet-Parser-Peek 'Microsoft.MarkedNet.Parser.Peek')
+ - [Tok()](#M-Microsoft-MarkedNet-Parser-Tok 'Microsoft.MarkedNet.Parser.Tok')
+- [PedanticInlineRules](#T-Microsoft-MarkedNet-PedanticInlineRules 'Microsoft.MarkedNet.PedanticInlineRules')
+- [RemoteResourceInformation](#T-AdaptiveCards-RemoteResourceInformation 'AdaptiveCards.RemoteResourceInformation')
+ - [#ctor(url,mimeType)](#M-AdaptiveCards-RemoteResourceInformation-#ctor-System-String,System-String- 'AdaptiveCards.RemoteResourceInformation.#ctor(System.String,System.String)')
+- [RenderedAdaptiveCardBase](#T-AdaptiveCards-Rendering-RenderedAdaptiveCardBase 'AdaptiveCards.Rendering.RenderedAdaptiveCardBase')
+ - [OriginatingCard](#P-AdaptiveCards-Rendering-RenderedAdaptiveCardBase-OriginatingCard 'AdaptiveCards.Rendering.RenderedAdaptiveCardBase.OriginatingCard')
+ - [UserInputs](#P-AdaptiveCards-Rendering-RenderedAdaptiveCardBase-UserInputs 'AdaptiveCards.Rendering.RenderedAdaptiveCardBase.UserInputs')
+ - [Warnings](#P-AdaptiveCards-Rendering-RenderedAdaptiveCardBase-Warnings 'AdaptiveCards.Rendering.RenderedAdaptiveCardBase.Warnings')
+- [RenderedAdaptiveCardInputs](#T-AdaptiveCards-Rendering-RenderedAdaptiveCardInputs 'AdaptiveCards.Rendering.RenderedAdaptiveCardInputs')
+ - [AsDictionary()](#M-AdaptiveCards-Rendering-RenderedAdaptiveCardInputs-AsDictionary 'AdaptiveCards.Rendering.RenderedAdaptiveCardInputs.AsDictionary')
+ - [AsJson()](#M-AdaptiveCards-Rendering-RenderedAdaptiveCardInputs-AsJson 'AdaptiveCards.Rendering.RenderedAdaptiveCardInputs.AsJson')
+- [RendererUtilities](#T-AdaptiveCards-Rendering-RendererUtilities 'AdaptiveCards.Rendering.RendererUtilities')
+ - [ApplyTextFunctions(text)](#M-AdaptiveCards-Rendering-RendererUtilities-ApplyTextFunctions-System-String,System-String- 'AdaptiveCards.Rendering.RendererUtilities.ApplyTextFunctions(System.String,System.String)')
+- [SeparatorConfig](#T-AdaptiveCards-Rendering-SeparatorConfig 'AdaptiveCards.Rendering.SeparatorConfig')
+ - [LineColor](#P-AdaptiveCards-Rendering-SeparatorConfig-LineColor 'AdaptiveCards.Rendering.SeparatorConfig.LineColor')
+ - [LineThickness](#P-AdaptiveCards-Rendering-SeparatorConfig-LineThickness 'AdaptiveCards.Rendering.SeparatorConfig.LineThickness')
+- [ShowCardActionMode](#T-AdaptiveCards-Rendering-ShowCardActionMode 'AdaptiveCards.Rendering.ShowCardActionMode')
+ - [Inline](#F-AdaptiveCards-Rendering-ShowCardActionMode-Inline 'AdaptiveCards.Rendering.ShowCardActionMode.Inline')
+ - [Popup](#F-AdaptiveCards-Rendering-ShowCardActionMode-Popup 'AdaptiveCards.Rendering.ShowCardActionMode.Popup')
+- [ShowCardConfig](#T-AdaptiveCards-Rendering-ShowCardConfig 'AdaptiveCards.Rendering.ShowCardConfig')
+ - [#ctor()](#M-AdaptiveCards-Rendering-ShowCardConfig-#ctor 'AdaptiveCards.Rendering.ShowCardConfig.#ctor')
+ - [ActionMode](#P-AdaptiveCards-Rendering-ShowCardConfig-ActionMode 'AdaptiveCards.Rendering.ShowCardConfig.ActionMode')
+ - [InlineTopMargin](#P-AdaptiveCards-Rendering-ShowCardConfig-InlineTopMargin 'AdaptiveCards.Rendering.ShowCardConfig.InlineTopMargin')
+ - [Style](#P-AdaptiveCards-Rendering-ShowCardConfig-Style 'AdaptiveCards.Rendering.ShowCardConfig.Style')
+- [SpacingsConfig](#T-AdaptiveCards-Rendering-SpacingsConfig 'AdaptiveCards.Rendering.SpacingsConfig')
+- [TablesBlockRules](#T-Microsoft-MarkedNet-TablesBlockRules 'Microsoft.MarkedNet.TablesBlockRules')
+- [TextBlockConfig](#T-AdaptiveCards-Rendering-TextBlockConfig 'AdaptiveCards.Rendering.TextBlockConfig')
+ - [Color](#P-AdaptiveCards-Rendering-TextBlockConfig-Color 'AdaptiveCards.Rendering.TextBlockConfig.Color')
+ - [IsSubtle](#P-AdaptiveCards-Rendering-TextBlockConfig-IsSubtle 'AdaptiveCards.Rendering.TextBlockConfig.IsSubtle')
+ - [MaxWidth](#P-AdaptiveCards-Rendering-TextBlockConfig-MaxWidth 'AdaptiveCards.Rendering.TextBlockConfig.MaxWidth')
+ - [Size](#P-AdaptiveCards-Rendering-TextBlockConfig-Size 'AdaptiveCards.Rendering.TextBlockConfig.Size')
+ - [Weight](#P-AdaptiveCards-Rendering-TextBlockConfig-Weight 'AdaptiveCards.Rendering.TextBlockConfig.Weight')
+ - [Wrap](#P-AdaptiveCards-Rendering-TextBlockConfig-Wrap 'AdaptiveCards.Rendering.TextBlockConfig.Wrap')
+- [TextMarkdownRenderer](#T-Microsoft-MarkedNet-TextMarkdownRenderer 'Microsoft.MarkedNet.TextMarkdownRenderer')
+- [WarningLoggingContractResolver](#T-AdaptiveCards-WarningLoggingContractResolver 'AdaptiveCards.WarningLoggingContractResolver')
+ - [CreateProperty(member,memberSerialization)](#M-AdaptiveCards-WarningLoggingContractResolver-CreateProperty-System-Reflection-MemberInfo,Newtonsoft-Json-MemberSerialization- 'AdaptiveCards.WarningLoggingContractResolver.CreateProperty(System.Reflection.MemberInfo,Newtonsoft.Json.MemberSerialization)')
+- [WarningStatusCode](#T-AdaptiveCards-AdaptiveWarning-WarningStatusCode 'AdaptiveCards.AdaptiveWarning.WarningStatusCode')
+ - [EmptyLabelInRequiredInput](#F-AdaptiveCards-AdaptiveWarning-WarningStatusCode-EmptyLabelInRequiredInput 'AdaptiveCards.AdaptiveWarning.WarningStatusCode.EmptyLabelInRequiredInput')
+ - [InvalidLanguage](#F-AdaptiveCards-AdaptiveWarning-WarningStatusCode-InvalidLanguage 'AdaptiveCards.AdaptiveWarning.WarningStatusCode.InvalidLanguage')
+ - [MaxActionsExceeded](#F-AdaptiveCards-AdaptiveWarning-WarningStatusCode-MaxActionsExceeded 'AdaptiveCards.AdaptiveWarning.WarningStatusCode.MaxActionsExceeded')
+ - [NoErrorMessageForValidatedInput](#F-AdaptiveCards-AdaptiveWarning-WarningStatusCode-NoErrorMessageForValidatedInput 'AdaptiveCards.AdaptiveWarning.WarningStatusCode.NoErrorMessageForValidatedInput')
+ - [UnsupportedSchemaVersion](#F-AdaptiveCards-AdaptiveWarning-WarningStatusCode-UnsupportedSchemaVersion 'AdaptiveCards.AdaptiveWarning.WarningStatusCode.UnsupportedSchemaVersion')
+- [XamlRenderer](#T-Microsoft-MarkedNet-XamlRenderer 'Microsoft.MarkedNet.XamlRenderer')
+ - [BlockQuoteStyle](#P-Microsoft-MarkedNet-XamlRenderer-BlockQuoteStyle 'Microsoft.MarkedNet.XamlRenderer.BlockQuoteStyle')
+ - [CellHeaderStyle](#P-Microsoft-MarkedNet-XamlRenderer-CellHeaderStyle 'Microsoft.MarkedNet.XamlRenderer.CellHeaderStyle')
+ - [CellStyle](#P-Microsoft-MarkedNet-XamlRenderer-CellStyle 'Microsoft.MarkedNet.XamlRenderer.CellStyle')
+ - [CodeSpanStyle](#P-Microsoft-MarkedNet-XamlRenderer-CodeSpanStyle 'Microsoft.MarkedNet.XamlRenderer.CodeSpanStyle')
+ - [CodeStyle](#P-Microsoft-MarkedNet-XamlRenderer-CodeStyle 'Microsoft.MarkedNet.XamlRenderer.CodeStyle')
+ - [CodespanStyle](#P-Microsoft-MarkedNet-XamlRenderer-CodespanStyle 'Microsoft.MarkedNet.XamlRenderer.CodespanStyle')
+ - [HeadingStyles](#P-Microsoft-MarkedNet-XamlRenderer-HeadingStyles 'Microsoft.MarkedNet.XamlRenderer.HeadingStyles')
+ - [ImageStyle](#P-Microsoft-MarkedNet-XamlRenderer-ImageStyle 'Microsoft.MarkedNet.XamlRenderer.ImageStyle')
+ - [ImageTitleStyle](#P-Microsoft-MarkedNet-XamlRenderer-ImageTitleStyle 'Microsoft.MarkedNet.XamlRenderer.ImageTitleStyle')
+ - [ListItemStyle](#P-Microsoft-MarkedNet-XamlRenderer-ListItemStyle 'Microsoft.MarkedNet.XamlRenderer.ListItemStyle')
+ - [OrderedListStyle](#P-Microsoft-MarkedNet-XamlRenderer-OrderedListStyle 'Microsoft.MarkedNet.XamlRenderer.OrderedListStyle')
+ - [ParagraphStyle](#P-Microsoft-MarkedNet-XamlRenderer-ParagraphStyle 'Microsoft.MarkedNet.XamlRenderer.ParagraphStyle')
+ - [UnorderedListStyle](#P-Microsoft-MarkedNet-XamlRenderer-UnorderedListStyle 'Microsoft.MarkedNet.XamlRenderer.UnorderedListStyle')
+
+
+## ActionsConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Properties which control rendering and behavior of actions.
+
+
+### ActionAlignment `property`
+
+##### Summary
+
+Control horizontal alignment behavior.
+
+
+### ActionsOrientation `property`
+
+##### Summary
+
+Arrange actions horizontally or vertically.
+
+
+### ButtonSpacing `property`
+
+##### Summary
+
+Controls the amount of space between actions.
+
+
+### IconPlacement `property`
+
+##### Summary
+
+Controls where action icons are placed relative to titles.
+
+
+### IconSize `property`
+
+##### Summary
+
+Defines the size at which to render icons.
+
+
+### MaxActions `property`
+
+##### Summary
+
+Max number of actions to allow in parsed cards.
+
+
+### ShowCard `property`
+
+##### Summary
+
+Controls the behavior of Action.ShowCard.
+
+
+### Spacing `property`
+
+##### Summary
+
+Controls spacing between card elements.
+
+
+## ActionsOrientation `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Controls the layout of actions.
+
+
+### Horizontal `constants`
+
+##### Summary
+
+Actions should be laid out horizontally.
+
+
+### Vertical `constants`
+
+##### Summary
+
+Actions should be laid out vertically.
+
+
+## AdaptiveAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Base of Action types
+
+
+### IconUrl `property`
+
+##### Summary
+
+IconUrl that can be specified for actions
+
+
+### IsEnabled `property`
+
+##### Summary
+
+When set false, action is disabled
+
+
+### Mode `property`
+
+##### Summary
+
+Determines whether the action should be displayed as a button or in the overflow menu.
+
+
+### Speak `property`
+
+##### Summary
+
+Speak phrase for this action
+
+
+### Style `property`
+
+##### Summary
+
+Style that can be specified for actions
+
+
+### Title `property`
+
+##### Summary
+
+Title of the action
+
+
+### Tooltip `property`
+
+##### Summary
+
+Defines text that should be displayed to the end user as they hover the mouse over the action, and read when using narration software.
+
+
+## AdaptiveActionHandlers `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+A collection of actions known by the host.
+
+
+### AddSupportedAction\`\`1() `method`
+
+##### Summary
+
+Adds a given action type. Any action in a payload not specified here will be dropped from the rendered card.
+
+##### Parameters
+
+This method has no parameters.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TAction | The type of the action to add. |
+
+
+### IsSupported(type) `method`
+
+##### Summary
+
+Determines whether or not the action is supported by the renderer.
+
+##### Returns
+
+true iff the Type is supported.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| type | [System.Type](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Type 'System.Type') | The Type for which to determine support. |
+
+
+### RemoveSupportedAction\`\`1() `method`
+
+##### Summary
+
+Remove support for an action type. This will prevent these actions from appearing in the rendered card.
+
+##### Parameters
+
+This method has no parameters.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TAction | The type of the action to remove. |
+
+
+## AdaptiveActionMode `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Determines whether the action should be displayed as a button or in the overflow menu.
+
+
+### Primary `constants`
+
+##### Summary
+
+Action is displayed as a button.
+
+
+### Secondary `constants`
+
+##### Summary
+
+Action is placed in an overflow menu (typically a popup menu under a ... button).
+
+
+## AdaptiveActionSet `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the ActionSet element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+The AdaptiveCard element that this class implements.
+
+
+### Actions `property`
+
+##### Summary
+
+The actions contained within this ActionSet.
+
+
+### Type `property`
+
+##### Summary
+
+The JSON property name that this class implements.
+
+
+## AdaptiveAssociatedInputs `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls which inputs are associated with a given submit action
+
+
+### Auto `constants`
+
+##### Summary
+
+Gathers and validates inputs from the current card and any parent cards
+
+
+### None `constants`
+
+##### Summary
+
+Does not gather or validate any inputs on submit
+
+
+## AdaptiveAuthCardButton `type`
+
+##### Namespace
+
+AdaptiveCards
+
+
+### Image `property`
+
+##### Summary
+
+A URL to an image to display alongside the button's caption.
+
+
+### Title `property`
+
+##### Summary
+
+The caption of the button.
+
+
+### Type `property`
+
+##### Summary
+
+The type of the button.
+
+
+### Value `property`
+
+##### Summary
+
+The value associated with the button. The meaning of value depends on the button's type.
+
+
+## AdaptiveAuthentication `type`
+
+##### Namespace
+
+AdaptiveCards
+
+
+### Buttons `property`
+
+##### Summary
+
+Buttons that should be displayed to the user when prompting for authentication. The array MUST contain one button of type \"signin\". Other button types are not currently supported.
+
+
+### ConnectionName `property`
+
+##### Summary
+
+The identifier for registered OAuth connection setting information.
+
+
+### Text `property`
+
+##### Summary
+
+Text that can be displayed to the end user when prompting them to authenticate.
+
+
+### TokenExchangeResource `property`
+
+##### Summary
+
+Provides information required to enable on-behalf-of single sign-on user authentication.
+
+
+## AdaptiveBackgroundImage `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the backgroundImage property
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes a new AdaptiveBackgroundImage instance.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(url) `constructor`
+
+##### Summary
+
+Initializes a new AdaptiveBackgroundImage instance using the specified URL.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The background image URL expressed as a string. |
+
+
+### #ctor(url) `constructor`
+
+##### Summary
+
+Initializes a new AdaptiveBackgroundImage instance using the specified URL.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.Uri](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Uri 'System.Uri') | The background image URL represented as a Uri object. |
+
+
+### #ctor(url,fillMode,hAlignment,vAlignment) `constructor`
+
+##### Summary
+
+Initializes a new AdaptiveBackgroundImage instance using the specified parameters.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The background image URL expressed as a string. |
+| fillMode | [AdaptiveCards.AdaptiveImageFillMode](#T-AdaptiveCards-AdaptiveImageFillMode 'AdaptiveCards.AdaptiveImageFillMode') | Controls how the background image should be displayed. |
+| hAlignment | [AdaptiveCards.AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment') | Controls horizontal alignment. |
+| vAlignment | [AdaptiveCards.AdaptiveVerticalAlignment](#T-AdaptiveCards-AdaptiveVerticalAlignment 'AdaptiveCards.AdaptiveVerticalAlignment') | Controls vertical alignment. |
+
+
+### #ctor(url,fillMode,hAlignment,vAlignment) `constructor`
+
+##### Summary
+
+Initializes a new AdaptiveBackgroundImage instance using the specified parameters.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.Uri](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Uri 'System.Uri') | The background image URL represented as a Uri object. |
+| fillMode | [AdaptiveCards.AdaptiveImageFillMode](#T-AdaptiveCards-AdaptiveImageFillMode 'AdaptiveCards.AdaptiveImageFillMode') | Controls how the background image should be displayed. |
+| hAlignment | [AdaptiveCards.AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment') | Controls horizontal alignment. |
+| vAlignment | [AdaptiveCards.AdaptiveVerticalAlignment](#T-AdaptiveCards-AdaptiveVerticalAlignment 'AdaptiveCards.AdaptiveVerticalAlignment') | Controls vertical alignment. |
+
+
+### TypeName `constants`
+
+##### Summary
+
+The JSON property name that this class implements.
+
+
+### FillMode `property`
+
+##### Summary
+
+Controls how the image is tiled or stretched.
+
+
+### HorizontalAlignment `property`
+
+##### Summary
+
+Determines how to align the background image horizontally.
+
+
+### Url `property`
+
+##### Summary
+
+The Url of the background image.
+
+
+### UrlString `property`
+
+##### Summary
+
+The Url of the background image as a string.
+
+
+### VerticalAlignment `property`
+
+##### Summary
+
+Determines how to align the background image vertically.
+
+
+### HasDefaultValues() `method`
+
+##### Summary
+
+Determines if this instance only has default property values set (aside from [Url](#P-AdaptiveCards-AdaptiveBackgroundImage-Url 'AdaptiveCards.AdaptiveBackgroundImage.Url')).
+
+##### Returns
+
+true iff this instance has only default property values.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_Implicit(backgroundImageUrl) `method`
+
+##### Summary
+
+Implicitly create an AdaptiveBackgroundImage from a Uri
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| backgroundImageUrl | [System.Uri)~AdaptiveCards.AdaptiveBackgroundImage](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Uri)~AdaptiveCards.AdaptiveBackgroundImage 'System.Uri)~AdaptiveCards.AdaptiveBackgroundImage') | |
+
+
+## AdaptiveBackgroundImageConverter `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Helper class used by Newtonsoft.Json to convert the backgroundImage property to/from JSON.
+
+
+### CanWrite `property`
+
+##### Summary
+
+Lets Newtonsoft.Json know that this class supports writing.
+
+
+### Warnings `property`
+
+##### Summary
+
+A list of warnings generated by the converter.
+
+
+### CanConvert(objectType) `method`
+
+##### Summary
+
+Called by Newtonsoft.Json to determine if this converter knows how to convert an object of type `objectType`.
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| objectType | [System.Type](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Type 'System.Type') | The type of object to convert. |
+
+
+### ReadJson(reader,objectType,existingValue,serializer) `method`
+
+##### Summary
+
+Generates a new [AdaptiveBackgroundImage](#T-AdaptiveCards-AdaptiveBackgroundImage 'AdaptiveCards.AdaptiveBackgroundImage') instance from JSON.
+
+##### Returns
+
+A new [AdaptiveBackgroundImage](#T-AdaptiveCards-AdaptiveBackgroundImage 'AdaptiveCards.AdaptiveBackgroundImage') instance.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| reader | [Newtonsoft.Json.JsonReader](#T-Newtonsoft-Json-JsonReader 'Newtonsoft.Json.JsonReader') | JsonReader from which to read. |
+| objectType | [System.Type](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Type 'System.Type') | Not used. |
+| existingValue | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Not used. |
+| serializer | [Newtonsoft.Json.JsonSerializer](#T-Newtonsoft-Json-JsonSerializer 'Newtonsoft.Json.JsonSerializer') | Not used. |
+
+
+### WriteJson(writer,backgroundImage,serializer) `method`
+
+##### Summary
+
+Writes the object to JSON. If the supplied `backgroundImage` is all default values and a URL, will write as a simple string. Otherwise, serialize the supplied `backgroundImage` as a JSON object via the `serializer`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| writer | [Newtonsoft.Json.JsonWriter](#T-Newtonsoft-Json-JsonWriter 'Newtonsoft.Json.JsonWriter') | JsonWriter to write to. |
+| backgroundImage | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | The AdaptiveBackgroundImage object to write. |
+| serializer | [Newtonsoft.Json.JsonSerializer](#T-Newtonsoft-Json-JsonSerializer 'Newtonsoft.Json.JsonSerializer') | JsonSerializer to use for serialization. |
+
+
+## AdaptiveCard `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Adaptive card which has flexible container
+
+
+### #ctor(schemaVersion) `constructor`
+
+##### Summary
+
+Creates an AdaptiveCard using a specific schema version.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| schemaVersion | [AdaptiveCards.AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion') | The schema version to use |
+
+
+### #ctor(schemaVersion) `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| schemaVersion | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The schema version to use |
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Summary
+
+Creates an AdaptiveCard using the [KnownSchemaVersion](#F-AdaptiveCards-AdaptiveCard-KnownSchemaVersion 'AdaptiveCards.AdaptiveCard.KnownSchemaVersion') of this library.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### ContentType `constants`
+
+##### Summary
+
+AdaptiveCard mimetype.
+
+
+### KnownSchemaVersion `constants`
+
+##### Summary
+
+The latest known schema version supported by this library.
+
+
+### TypeName `constants`
+
+##### Summary
+
+The AdaptiveCard element that this class implements.
+
+
+### Actions `property`
+
+##### Summary
+
+The Actions for this card.
+
+
+### Authentication `property`
+
+##### Summary
+
+Defines authentication information to enable on-behalf-of single sign on or just-in-time OAuth.
+
+
+### BackgroundImage `property`
+
+##### Summary
+
+Background image for card.
+
+
+### Body `property`
+
+##### Summary
+
+The Body elements for this card.
+
+
+### FallbackText `property`
+
+##### Summary
+
+Text shown when the client doesn’t support the version specified. This can be in markdown format.
+
+
+### Height `property`
+
+##### Summary
+
+Value that denotes if the card must use all the vertical space that is set to it. Default value is [Auto](#F-AdaptiveCards-AdaptiveHeightType-Auto 'AdaptiveCards.AdaptiveHeightType.Auto').
+
+
+### JsonSchema `property`
+
+##### Summary
+
+This makes sure the $schema property doesn't show up in AdditionalProperties
+
+
+### Lang `property`
+
+##### Summary
+
+The 2-letter ISO-639-1 language used in the card. Used to localize any date/time functions.
+
+
+### MinVersion `property`
+
+##### Summary
+
+This is obsolete. Use the [Version](#P-AdaptiveCards-AdaptiveCard-Version 'AdaptiveCards.AdaptiveCard.Version') property instead.
+
+
+### OnDeserializingMissingVersion `property`
+
+##### Summary
+
+Callback that will be invoked should a null or empty version string is encountered. The callback may return an alternate version to use for parsing.
+
+##### Example
+
+AdaptiveCard.OnDeserializingMissingVersion = () => new AdaptiveSchemaVersion(0, 5);
+
+
+### PixelMinHeight `property`
+
+##### Summary
+
+Explicit card minimum height in pixels.
+
+
+### Refresh `property`
+
+##### Summary
+
+Defines how the card can be refreshed by making a request to the target Bot.
+
+
+### SelectAction `property`
+
+##### Summary
+
+Action for the card (this allows a default action at the card level)
+
+
+### Speak `property`
+
+##### Summary
+
+Speak annotation for the card.
+
+
+### Title `property`
+
+##### Summary
+
+Title for the card (used when displayed in a dialog).
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Version `property`
+
+##### Summary
+
+Schema version that this card requires. If a client is lower than this version the fallbackText will be rendered.
+
+
+### VerticalContentAlignment `property`
+
+##### Summary
+
+The content alignment for the element inside the container.
+
+
+### FromJson(json) `method`
+
+##### Summary
+
+Parse an AdaptiveCard from a JSON string.
+
+##### Returns
+
+The result of parsing `json`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| json | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | A JSON-serialized Adaptive Card. |
+
+
+### GetResourceInformation() `method`
+
+##### Summary
+
+Get resource information for all images and media present in this card.
+
+##### Returns
+
+Resource information for the entire card.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeActions() `method`
+
+##### Summary
+
+Determines whether the actions portion of an AdaptiveCard should be serialized.
+
+##### Returns
+
+true iff actions should be serialized.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeBody() `method`
+
+##### Summary
+
+Determines whether the body portion of an AdaptiveCard should be serialized.
+
+##### Returns
+
+true iff the body should be serialized.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeHeight() `method`
+
+##### Summary
+
+Determines whether the height property of an AdaptiveCard should be serialized.
+
+##### Returns
+
+true iff the height property should be serialized.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeJsonSchema() `method`
+
+##### Summary
+
+Determines whether the schema entry in an AdaptiveCard should be serialized.
+
+##### Returns
+
+false
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ToJson() `method`
+
+##### Summary
+
+Serialize this AdaptiveCard to JSON.
+
+##### Returns
+
+The JSON representation of this AdaptiveCard.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCardConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Contains options for the AdaptiveCard element.
+
+
+### AllowCustomStyle `property`
+
+##### Summary
+
+Determines whether custom styles should be honored.
+
+
+## AdaptiveCardConverter `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Helper class used by Newtonsoft.Json to convert an AdaptiveCard to/from JSON.
+
+
+### CanWrite `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Warnings `property`
+
+##### Summary
+
+A list of warnings generated by the converter.
+
+
+### CanConvert() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ReadJson(reader,objectType,existingValue,serializer) `method`
+
+##### Summary
+
+Generates a new [AdaptiveCard](#T-AdaptiveCards-AdaptiveCard 'AdaptiveCards.AdaptiveCard') instance from JSON.
+
+##### Returns
+
+A new AdaptiveCard instance on success.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| reader | [Newtonsoft.Json.JsonReader](#T-Newtonsoft-Json-JsonReader 'Newtonsoft.Json.JsonReader') | JsonReader from which to read. |
+| objectType | [System.Type](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Type 'System.Type') | |
+| existingValue | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | |
+| serializer | [Newtonsoft.Json.JsonSerializer](#T-Newtonsoft-Json-JsonSerializer 'Newtonsoft.Json.JsonSerializer') | |
+
+
+### WriteJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCardParseResult `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+The result of parsing an AdaptiveCard from JSON.
+
+
+### Card `property`
+
+##### Summary
+
+The parsed card object.
+
+
+### Warnings `property`
+
+##### Summary
+
+A collection of any warnings that might have been encountered when parsing the card.
+
+
+## AdaptiveCardRendererBase\`2 `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Abstract base class that every AdaptiveCards renderer must implement.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TUIElement | The base UI element type the renderer implements (e.g. "HTMLElement" or
+"FrameworkElement"). |
+| TContext | The type of the renderer context to use (e.g. "AdaptiveRenderContext"). |
+
+
+### ElementRenderers `property`
+
+##### Summary
+
+The dictionary of supported element types and their associated rendering functions
+
+
+### HostConfig `property`
+
+##### Summary
+
+A Host Configuration object to determine base styling and behavior of the rendered card
+
+
+### SupportedSchemaVersion `property`
+
+##### Summary
+
+Provides the highest schema version that this renderer supports.
+
+
+### GetSupportedSchemaVersion() `method`
+
+##### Summary
+
+Provides the highest schema version that this renderer supports.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveChoice `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Choice as part of a Input.AdaptiveChoiceSetInput element
+
+
+### IsSelected `property`
+
+##### Summary
+
+Is this choice selected?
+
+
+### Speak `property`
+
+##### Summary
+
+(OPTIONAL) Speech description of the choice
+
+
+### Title `property`
+
+##### Summary
+
+Display text for the choice
+
+
+### Value `property`
+
+##### Summary
+
+Internal value which will be collected as input if the choice is selected
+
+
+## AdaptiveChoiceInputStyle `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+The style of ChoiceInput to display.
+
+
+### Compact `constants`
+
+##### Summary
+
+Compact display similar to a ComboBox.
+
+
+### Expanded `constants`
+
+##### Summary
+
+Expanded display i.e. Checkbox or Radio buttons.
+
+
+### Filtered `constants`
+
+##### Summary
+
+Allows users to filter choices in a choice set.
+
+
+## AdaptiveChoiceSetInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Input.ChoiceSet element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+The AdaptiveCard element that this class implements.
+
+
+### Choices `property`
+
+##### Summary
+
+A collection of available choices.
+
+
+### IsMultiSelect `property`
+
+##### Summary
+
+Determines whether multiple selections are allowed.
+
+
+### Placeholder `property`
+
+##### Summary
+
+Text to display as a placeholder.
+
+
+### Style `property`
+
+##### Summary
+
+The style to use when displaying this Input.ChoiceSet.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Value `property`
+
+##### Summary
+
+Comma separated string of selected Choice values.
+
+
+### Wrap `property`
+
+##### Summary
+
+Controls text wrapping behavior.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCollectionElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Base class for all elements that contain other elements.
+
+
+### Bleed `property`
+
+##### Summary
+
+Defines if the element can bleed through its parent's padding.
+
+
+### PixelMinHeight `property`
+
+##### Summary
+
+Explicit container element minimum height.
+
+
+### SelectAction `property`
+
+##### Summary
+
+Action for this container. This allows for setting a default action at the container level.
+
+
+### Style `property`
+
+##### Summary
+
+The style used to display this element. See [AdaptiveContainerStyle](#T-AdaptiveCards-AdaptiveContainerStyle 'AdaptiveCards.AdaptiveContainerStyle').
+
+
+### StyleXml `property`
+
+##### Summary
+
+Controls XML serialization of style.
+
+
+### VerticalContentAlignment `property`
+
+##### Summary
+
+The content alignment for the element inside the container.
+
+
+### ShouldSerializeStyleXml() `method`
+
+##### Summary
+
+Determines whether to serialize the style for XML.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCollectionWithContentAlignment `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+AdaptiveCard element with content alignment properties
+
+
+### HorizontalContentAlignment `property`
+
+##### Summary
+
+The content alignment for the TableCells inside the TableRow.
+
+
+### VerticalContentAlignment `property`
+
+##### Summary
+
+The content alignment for the TableCells inside the TableRow.
+
+
+### GetEnumerator() `method`
+
+##### Summary
+
+Returns enumerator
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveColumn `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Column element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Rtl `property`
+
+##### Summary
+
+Sets the text flow direction
+
+
+### Size `property`
+
+##### Summary
+
+Size for the column (either ColumnSize string or number which is relative size of the column).
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Width `property`
+
+##### Summary
+
+Width for the column (either ColumnWidth string or number which is relative size of the column).
+
+
+## AdaptiveColumnSet `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the ColumnSet element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Columns `property`
+
+##### Summary
+
+Collection of Columns that this ColumnSet contains.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveColumnSize `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the horizontal size (width) of Column.
+
+
+### Auto `constants`
+
+##### Summary
+
+The width of the Column is optimally chosen depending on the space available in the element's container
+
+
+### Stretch `constants`
+
+##### Summary
+
+The width of the Column adjusts to match that of its container
+
+
+## AdaptiveColumnWidth `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the horizontal size (width) of Column.
+
+
+### Auto `constants`
+
+##### Summary
+
+The width of the Column is optimally chosen depending on the space available in the element's container
+
+
+### Stretch `constants`
+
+##### Summary
+
+The width of the Column adjusts to match that of its container
+
+
+## AdaptiveConfigBase `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Base class for configuration-holding renderer classes.
+
+
+### AdditionalData `property`
+
+##### Summary
+
+Holds additional data in a configuration that doesn't map to known properties.
+
+
+## AdaptiveContainer `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Container element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### BackgroundImage `property`
+
+##### Summary
+
+Background image to use when displaying this container.
+
+
+### Items `property`
+
+##### Summary
+
+Elements within this container.
+
+
+### Rtl `property`
+
+##### Summary
+
+Sets the text flow direction
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveContainerStyle `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls which style to apply to a container.
+
+
+### Accent `constants`
+
+##### Summary
+
+The container should be displayed using the accent style
+
+
+### Attention `constants`
+
+##### Summary
+
+The container should be displayed using the attention style
+
+
+### Default `constants`
+
+##### Summary
+
+The container should be displayed using the default style
+
+
+### Emphasis `constants`
+
+##### Summary
+
+The container should be displayed using the emphasis style
+
+
+### Good `constants`
+
+##### Summary
+
+The container should be displayed using the good style
+
+
+### Normal `constants`
+
+##### Summary
+
+The container is a normal container
+
+
+### Warning `constants`
+
+##### Summary
+
+The container should be displayed using the warning style
+
+
+## AdaptiveDateInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Input.Date element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Max `property`
+
+##### Summary
+
+Hint of maximum value (note: may be ignored by some clients).
+
+
+### Min `property`
+
+##### Summary
+
+Hint of minimum value (note: may be ignored by some clients).
+
+
+### Placeholder `property`
+
+##### Summary
+
+Placeholder text to display.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Value `property`
+
+##### Summary
+
+The initial value for the field.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an element in Adaptive Cards.
+
+
+### Height `property`
+
+##### Summary
+
+The amount of space the element should be separated from the previous element. Default value is [Auto](#P-AdaptiveCards-AdaptiveHeight-Auto 'AdaptiveCards.AdaptiveHeight.Auto').
+
+
+### IsVisible `property`
+
+##### Summary
+
+Indicates whether the element should be visible when the card has been rendered.
+
+
+### Separator `property`
+
+##### Summary
+
+Indicates whether there should be a visible separator (e.g. a line) between this element and the one before it.
+
+
+### Spacing `property`
+
+##### Summary
+
+The amount of space the element should be separated from the previous element. Default value is [Default](#F-AdaptiveCards-AdaptiveSpacing-Default 'AdaptiveCards.AdaptiveSpacing.Default').
+
+
+### Speak `property`
+
+##### Summary
+
+SSML fragment for spoken interaction.
+
+
+### ShouldSerializeHeight() `method`
+
+##### Summary
+
+Determines whether the height property should be serialized or not.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveElementRenderers\`2 `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Encapsulates information needed to map from element types to factory methods for instantiating them.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TUIElement | The base UI element type the renderer implements (e.g. "HTMLElement" or
+"FrameworkElement"). |
+| TContext | The type of the renderer context to use (e.g. "AdaptiveRenderContext"). |
+
+
+### Get(type) `method`
+
+##### Summary
+
+Gets the factory method for an element type.
+
+##### Returns
+
+The factory method for the element object.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| type | [System.Type](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Type 'System.Type') | The type of object for which to retrieve the factory method. |
+
+
+### Get\`\`1() `method`
+
+##### Summary
+
+Gets the factory method for an element type.
+
+##### Returns
+
+The factory method for the element object of type TElement.
+
+##### Parameters
+
+This method has no parameters.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TElement | The type of element object to get. |
+
+
+### Remove\`\`1() `method`
+
+##### Summary
+
+Removes the registration for the element type.
+
+##### Parameters
+
+This method has no parameters.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TElement | The type of element object to remove. |
+
+
+### Set\`\`1(renderer) `method`
+
+##### Summary
+
+Registers or replaces a factory method for the given element type.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| renderer | [System.Func{\`\`0,\`1,\`0}](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Func 'System.Func{``0,`1,`0}') | Factory method for instantiating an element object of type TElement. |
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| TElement | The type of the element object. |
+
+
+## AdaptiveException `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an exception thrown by Adaptive Cards itself.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+## AdaptiveExecuteAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Execute action gathers up input fields, merges with optional data field and generates event to client
+ asking for data to be submitted.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### AssociatedInputs `property`
+
+##### Summary
+
+Controls which inputs are associated with the execute action
+
+
+### Data `property`
+
+##### Summary
+
+initial data that input fields will be combined with. This is essentially 'hidden' properties, Example:
+ {"id":"123123123"}
+
+
+### DataJson `property`
+
+##### Summary
+
+Get or set the data as a JSON string.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Verb `property`
+
+##### Summary
+
+The card author-defined verb associated with this action.
+
+
+## AdaptiveFact `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a "fact" in a FactSet element.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty Fact.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(title,value) `constructor`
+
+##### Summary
+
+Initializes a Fact with the given properties.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| title | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The title of the Fact. |
+| value | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The value of the Fact. |
+
+
+### Speak `property`
+
+##### Summary
+
+(Optional) Specifies what should be spoken for this entire element. This is simple text or SSML fragment.
+
+
+### Title `property`
+
+##### Summary
+
+The Fact's title.
+
+
+### Value `property`
+
+##### Summary
+
+The Fact's value.
+
+
+## AdaptiveFactSet `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the FactSet element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Facts `property`
+
+##### Summary
+
+A collection of Facts to this FactSet contains.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveFallbackConverter `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+A converter to use with Newtonsoft.Json that handles fallback scenarios.
+
+
+### IsInFallback `constants`
+
+##### Summary
+
+State tracking to determine whether we're currently processing a fallback request.
+
+
+### CanRead `property`
+
+##### Summary
+
+Lets Newtonsoft.Json know that this converter knows how to read JSON.
+
+
+### CanWrite `property`
+
+##### Summary
+
+Lets Newtonsoft.Json know that this converter knows how to write JSON.
+
+
+### Warnings `property`
+
+##### Summary
+
+A list of warnings generated by this converter.
+
+
+### CanConvert(objectType) `method`
+
+##### Summary
+
+Called by Newtonsoft.Json to determine if an object is recognized by this converter.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| objectType | [System.Type](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Type 'System.Type') | Type of object. |
+
+
+### ParseFallback() `method`
+
+##### Summary
+
+Helper to handle instantiating an [AdaptiveFallbackElement](#T-AdaptiveCards-AdaptiveFallbackElement 'AdaptiveCards.AdaptiveFallbackElement') during JSON parsing.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ReadJson() `method`
+
+##### Summary
+
+Called by Newtonsoft.Json to convert the given JSON to an object instance.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### WriteJson(writer,cardElement,serializer) `method`
+
+##### Summary
+
+Called by Newtonsoft.Json to write the given element as JSON.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| writer | [Newtonsoft.Json.JsonWriter](#T-Newtonsoft-Json-JsonWriter 'Newtonsoft.Json.JsonWriter') | Destination for serialized content. |
+| cardElement | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Element to serialize. |
+| serializer | [Newtonsoft.Json.JsonSerializer](#T-Newtonsoft-Json-JsonSerializer 'Newtonsoft.Json.JsonSerializer') | Serializer to use. |
+
+
+## AdaptiveFallbackElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the fallback property.
+
+
+### #ctor(fallbackType) `constructor`
+
+##### Summary
+
+Initializes an AdaptiveFallbackElement with the given `fallbackType`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| fallbackType | [AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType](#T-AdaptiveCards-AdaptiveFallbackElement-AdaptiveFallbackType 'AdaptiveCards.AdaptiveFallbackElement.AdaptiveFallbackType') | The type of fallback this instance represents. |
+
+
+### #ctor(fallbackContent) `constructor`
+
+##### Summary
+
+Initializes an AdaptiveFallbackElement with the given `fallbackContent`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| fallbackContent | [AdaptiveCards.AdaptiveTypedElement](#T-AdaptiveCards-AdaptiveTypedElement 'AdaptiveCards.AdaptiveTypedElement') | The content to show in the event of fallback. |
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an AdaptiveFallbackElement with no fallback type.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### drop `constants`
+
+##### Summary
+
+String that represents "drop" fallback type
+
+
+### Content `property`
+
+##### Summary
+
+The content to show in the event of fallback.
+
+
+### Type `property`
+
+##### Summary
+
+Represents the type of fallback to perform.
+
+
+## AdaptiveFallbackException `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+An exception thrown while processing fallback.
+
+##### Remarks
+
+This exception is intended to be caught and handled by an element that has a fallback action.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+## AdaptiveFallbackType `type`
+
+##### Namespace
+
+AdaptiveCards.AdaptiveFallbackElement
+
+##### Summary
+
+Enumeration describing an object's fallback type.
+
+
+### Content `constants`
+
+##### Summary
+
+This element has content to show in the event of fallback being triggered.
+
+
+### Drop `constants`
+
+##### Summary
+
+Drop this element during fallback.
+
+
+### None `constants`
+
+##### Summary
+
+This object does not have fallback specified.
+
+
+## AdaptiveFeatureRegistration `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Tracks features supported by a host. When an Adaptive Cards element declares "requires", this is the collection
+that gets used.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes a new AdaptiveFeatureRegistration instance.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### Get(feature) `method`
+
+##### Summary
+
+Retrieves the version of a registered feature.
+
+##### Returns
+
+The version of the feature if it is registered. Otherwise, the empty string.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| feature | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The feature whose version is being requested. |
+
+
+### Remove(feature) `method`
+
+##### Summary
+
+Removes (or unregisters) a feature.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| feature | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The feature to remove. |
+
+
+### Set(feature,version) `method`
+
+##### Summary
+
+Sets (or registers) a feature to a particular version.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| feature | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The feature upon which to set a version. |
+| version | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The version to set. |
+
+
+## AdaptiveFontType `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the font type of the TextBlock Elements
+
+
+### Default `constants`
+
+##### Summary
+
+The default font type for general use
+
+
+### Monospace `constants`
+
+##### Summary
+
+The monospace font type
+
+
+## AdaptiveHeight `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the height property in Adaptive Cards.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty AdaptiveHeight instance.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(px) `constructor`
+
+##### Summary
+
+Initializes an AdaptiveHeight instance with the given pixel size.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| px | [System.UInt32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.UInt32 'System.UInt32') | The device-independent pixel size to use. |
+
+
+### #ctor(heightType) `constructor`
+
+##### Summary
+
+Initializes an AdaptiveHeight instance with the given [AdaptiveHeightType](#T-AdaptiveCards-AdaptiveHeightType 'AdaptiveCards.AdaptiveHeightType').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| heightType | [AdaptiveCards.AdaptiveHeightType](#T-AdaptiveCards-AdaptiveHeightType 'AdaptiveCards.AdaptiveHeightType') | The AdaptiveHeightType to use. |
+
+
+### Auto `property`
+
+##### Summary
+
+Returns a new AdaptiveHeight instance initialized for the [Auto](#F-AdaptiveCards-AdaptiveHeightType-Auto 'AdaptiveCards.AdaptiveHeightType.Auto') height type.
+
+
+### HeightType `property`
+
+##### Summary
+
+The [AdaptiveHeightType](#T-AdaptiveCards-AdaptiveHeightType 'AdaptiveCards.AdaptiveHeightType') this instance represents.
+
+
+### Stretch `property`
+
+##### Summary
+
+Returns a new AdaptiveHeight instance initialized for the [Stretch](#F-AdaptiveCards-AdaptiveHeightType-Stretch 'AdaptiveCards.AdaptiveHeightType.Stretch') height type.
+
+
+### Unit `property`
+
+##### Summary
+
+The specific height to use (only valid for the [Pixel](#F-AdaptiveCards-AdaptiveHeightType-Pixel 'AdaptiveCards.AdaptiveHeightType.Pixel') type).
+
+
+### UnitXml `property`
+
+##### Summary
+
+Helper to aid in XML serialization of the [Unit](#P-AdaptiveCards-AdaptiveHeight-Unit 'AdaptiveCards.AdaptiveHeight.Unit') property.
+
+
+### Equals() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Equals() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetHashCode() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### IsPixel() `method`
+
+##### Summary
+
+Returns true if this [AdaptiveHeight](#T-AdaptiveCards-AdaptiveHeight 'AdaptiveCards.AdaptiveHeight') instance represents the [Pixel](#F-AdaptiveCards-AdaptiveHeightType-Pixel 'AdaptiveCards.AdaptiveHeightType.Pixel')[AdaptiveHeightType](#T-AdaptiveCards-AdaptiveHeightType 'AdaptiveCards.AdaptiveHeightType').
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeAdaptiveHeight() `method`
+
+##### Summary
+
+Determines whether this [AdaptiveHeight](#T-AdaptiveCards-AdaptiveHeight 'AdaptiveCards.AdaptiveHeight') instance should be serialized.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeUnitXml() `method`
+
+##### Summary
+
+Determines whether to serialize the [UnitXml](#P-AdaptiveCards-AdaptiveHeight-UnitXml 'AdaptiveCards.AdaptiveHeight.UnitXml') property.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_Equality() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_Inequality() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveHeightType `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the vertical size (height) of element.
+
+
+### Auto `constants`
+
+##### Summary
+
+The height of the element matches element content.
+
+
+### Pixel `constants`
+
+##### Summary
+
+The height of the element was explicitly specified (only for Image elements).
+
+
+### Stretch `constants`
+
+##### Summary
+
+The height of the element uses as much space as it is able to.
+
+
+## AdaptiveHorizontalAlignment `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls how elements are horizontally positioned within their container.
+
+
+### Center `constants`
+
+##### Summary
+
+The element is centered inside its container
+
+
+### Left `constants`
+
+##### Summary
+
+The element is left aligned
+
+
+### Right `constants`
+
+##### Summary
+
+The element is right aligned
+
+
+### Stretch `constants`
+
+##### Summary
+
+Stretch the actions to fit the containerhrit
+
+
+## AdaptiveHorizontalContentAlignment `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the horizontal alignment of child elements within a container.
+
+
+### Center `constants`
+
+##### Summary
+
+Center within the container.
+
+
+### Left `constants`
+
+##### Summary
+
+Align to the leading edge of the container.
+
+
+### Right `constants`
+
+##### Summary
+
+Align to the trailing edge of the container.
+
+
+## AdaptiveHostConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Contains host-configurable options for controlling rendering behavior.
+
+
+### Actions `property`
+
+##### Summary
+
+Properties which control rendering and behavior of actions.
+
+
+### AdaptiveCard `property`
+
+##### Summary
+
+Properties that control the rendering and behavior of the toplevel Adaptive Card.
+
+
+### ContainerStyles `property`
+
+##### Summary
+
+Definitions of the various styles that can be applied to containers and container-like elements.
+
+
+### FactSet `property`
+
+##### Summary
+
+Controls the rendering of the FactSet element.
+
+
+### FontFamily `property`
+
+##### Summary
+
+Defines which font families to use during rendering. (Obsolete)
+
+
+### FontSizes `property`
+
+##### Summary
+
+Defines which font sizes to use during rendering. (Obsolete)
+
+
+### FontTypes `property`
+
+##### Summary
+
+Defines font families, sizes, and weights to use during rendering.
+
+
+### FontWeights `property`
+
+##### Summary
+
+Defines which font weights to use during rendering. (Obsolete)
+
+
+### Headings `property`
+
+##### Summary
+
+Controls the rendering of heading text.
+
+
+### ImageBaseUrl `property`
+
+##### Summary
+
+Image Base URL for relative URLs.
+
+
+### ImageSet `property`
+
+##### Summary
+
+Controls the default size at which images in an ImageSet are rendered.
+
+
+### ImageSizes `property`
+
+##### Summary
+
+Controls the sizes at which images render.
+
+
+### Inputs `property`
+
+##### Summary
+
+Controls the rendering and behavior of input elements.
+
+
+### Media `property`
+
+##### Summary
+
+Controls the rendering and behavior of media elements.
+
+
+### Separator `property`
+
+##### Summary
+
+Controls the appearance of the separator.
+
+
+### Spacing `property`
+
+##### Summary
+
+Defines the various values to use for spacing.
+
+
+### SupportsInteractivity `property`
+
+##### Summary
+
+Toggles whether or not to render inputs and actions.
+
+
+### FromJson() `method`
+
+##### Summary
+
+Constructs an [AdaptiveHostConfig](#T-AdaptiveCards-Rendering-AdaptiveHostConfig 'AdaptiveCards.Rendering.AdaptiveHostConfig') instance from the given JSON.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetFontFamily() `method`
+
+##### Summary
+
+Retrieves the name of the font family given the desired AdaptiveFontType.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetFontSize() `method`
+
+##### Summary
+
+Retrieves a font size for an AdaptiveFontType.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetFontWeight() `method`
+
+##### Summary
+
+Retrieves a font weight for an AdaptiveFontType.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetSpacing(spacing) `method`
+
+##### Summary
+
+Get the numeric value of spacing to use for a given spacing type.
+
+##### Returns
+
+The numeric value for the type of spacing.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| spacing | [AdaptiveCards.AdaptiveSpacing](#T-AdaptiveCards-AdaptiveSpacing 'AdaptiveCards.AdaptiveSpacing') | The spacing to look up. |
+
+
+### ResolveFinalAbsoluteUri(uriString) `method`
+
+##### Summary
+
+Resolves a URI string in an absolute [Uri](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Uri 'System.Uri').
+
+##### Returns
+
+The absolute Uri that uriString represents.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| uriString | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The URI to resolve. |
+
+
+### ResolveFinalAbsoluteUri(uri) `method`
+
+##### Summary
+
+Converts a Uri into absolute form using [ImageBaseUrl](#P-AdaptiveCards-Rendering-AdaptiveHostConfig-ImageBaseUrl 'AdaptiveCards.Rendering.AdaptiveHostConfig.ImageBaseUrl') as needed.
+
+##### Returns
+
+An absolute URI for uri.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| uri | [System.Uri](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Uri 'System.Uri') | URI to resolve. |
+
+
+### ToJson() `method`
+
+##### Summary
+
+Serialize this Host Config to JSON.
+
+##### Returns
+
+A JSON string representation of this Host Config.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveImage `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Adaptive Cards Image element type.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveImage](#T-AdaptiveCards-AdaptiveImage 'AdaptiveCards.AdaptiveImage') instance.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(url) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveImage](#T-AdaptiveCards-AdaptiveImage 'AdaptiveCards.AdaptiveImage') instance with the given URL.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The URL of the image as a string. |
+
+
+### #ctor(url) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveImage](#T-AdaptiveCards-AdaptiveImage 'AdaptiveCards.AdaptiveImage') instance with the given URL.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.Uri](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Uri 'System.Uri') | The URL of the image. |
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### AltText `property`
+
+##### Summary
+
+Alternate text (alttext) to display for this image.
+
+
+### BackgroundColor `property`
+
+##### Summary
+
+A background color for the image specified as #AARRGGBB or #RRGGBB.
+
+
+### HorizontalAlignment `property`
+
+##### Summary
+
+Horizontal alignment ([AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment')) to use.
+
+
+### PixelHeight `property`
+
+##### Summary
+
+Explicit image height.
+
+
+### PixelWidth `property`
+
+##### Summary
+
+Explicit image width.
+
+
+### SelectAction `property`
+
+##### Summary
+
+Action to execute when image is invoked.
+
+
+### Size `property`
+
+##### Summary
+
+Controls the sizing ([AdaptiveImageSize](#T-AdaptiveCards-AdaptiveImageSize 'AdaptiveCards.AdaptiveImageSize')) of the displayed image.
+
+
+### Style `property`
+
+##### Summary
+
+The style ([AdaptiveImageStyle](#T-AdaptiveCards-AdaptiveImageStyle 'AdaptiveCards.AdaptiveImageStyle')) in which the image is displayed.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Url `property`
+
+##### Summary
+
+The URL of the image.
+
+
+### UrlString `property`
+
+##### Summary
+
+This is necessary for XML serialization. You should use the [Url](#F-Url 'Url') property directly.
+
+
+## AdaptiveImageFillMode `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls how an image fills a space.
+
+
+### Cover `constants`
+
+##### Summary
+
+Image covers the entire width of its container (preserving aspect ratio). The image may be clipped if the
+aspect ratio of the image doesn't match the aspect ratio of its container. [AdaptiveVerticalAlignment](#T-AdaptiveCards-AdaptiveVerticalAlignment 'AdaptiveCards.AdaptiveVerticalAlignment') is respected, but [AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment') is ignored
+(as it's irrelevant).
+
+
+### Repeat `constants`
+
+##### Summary
+
+The image isn't stretched. Rather, it's repeated on the x-axis and then on the y-axis as many
+times as needed to cover the container's width. Both [AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment') and [Left](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Left 'AdaptiveCards.AdaptiveHorizontalAlignment.Left')) are respected. (defaults to [Top](#F-AdaptiveCards-AdaptiveVerticalAlignment-Top 'AdaptiveCards.AdaptiveVerticalAlignment.Top') and [Left](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Left 'AdaptiveCards.AdaptiveHorizontalAlignment.Left')
+
+
+### RepeatHorizontally `constants`
+
+##### Summary
+
+The image isn't stretched. Rather, it's repeated on the x-axis as many times as needed to cover the
+container's width. [AdaptiveVerticalAlignment](#T-AdaptiveCards-AdaptiveVerticalAlignment 'AdaptiveCards.AdaptiveVerticalAlignment') is respected (defaults to [Top](#F-AdaptiveCards-AdaptiveVerticalAlignment-Top 'AdaptiveCards.AdaptiveVerticalAlignment.Top')). [AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment') is ignored.
+
+
+### RepeatVertically `constants`
+
+##### Summary
+
+The image isn't stretched. Rather, it's repeated on the y-axis as many times as needed to cover the
+container's width. [AdaptiveHorizontalAlignment](#T-AdaptiveCards-AdaptiveHorizontalAlignment 'AdaptiveCards.AdaptiveHorizontalAlignment') is respected (defaults to [Left](#F-AdaptiveCards-AdaptiveHorizontalAlignment-Left 'AdaptiveCards.AdaptiveHorizontalAlignment.Left')). [AdaptiveVerticalAlignment](#T-AdaptiveCards-AdaptiveVerticalAlignment 'AdaptiveCards.AdaptiveVerticalAlignment') is ignored.
+
+
+## AdaptiveImageSet `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an ImageSet element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### ImageSize `property`
+
+##### Summary
+
+Specifies the [AdaptiveImageSize](#T-AdaptiveCards-AdaptiveImageSize 'AdaptiveCards.AdaptiveImageSize') of each image in the set.
+
+
+### Images `property`
+
+##### Summary
+
+Collection of images to display.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveImageSize `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the horizontal size (width) of element.
+
+
+### Auto `constants`
+
+##### Summary
+
+The width of the element is optimally chosen depending on the space available in the element's container
+
+
+### Large `constants`
+
+##### Summary
+
+Large width
+
+
+### Medium `constants`
+
+##### Summary
+
+Medium width
+
+
+### Small `constants`
+
+##### Summary
+
+Small width
+
+
+### Stretch `constants`
+
+##### Summary
+
+The width of the element adjusts to match that of its container
+
+
+## AdaptiveImageStyle `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the way Image elements are displayed.
+
+
+### Default `constants`
+
+##### Summary
+
+The image is displayed within a rectangle.
+
+
+### Normal `constants`
+
+##### Summary
+
+The image is displayed within a rectangle.
+
+
+### Person `constants`
+
+##### Summary
+
+The image is cropped to a circle, a common way to represent people photos.
+
+
+## AdaptiveInline `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a single inline text entry.
+
+
+### AdditionalProperties `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Type `property`
+
+##### Summary
+
+The type name of the inline.
+
+
+### ShouldSerializeAdditionalProperties() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents any input element.
+
+
+### ErrorMessage `property`
+
+##### Summary
+
+Error message to be shown when validation fails.
+
+
+### IsRequired `property`
+
+##### Summary
+
+Sets the input as required for triggering Submit actions.
+
+
+### Label `property`
+
+##### Summary
+
+Label to be shown next to input.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+The string that will be rendered on a a host with "SupportsInteractivity" set to false.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveInternalID `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a unique identifier.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an invalid AdaptiveInternalID
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(id) `constructor`
+
+##### Summary
+
+Initializes an AdaptiveInternalID with the supplied `id`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| id | [System.UInt32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.UInt32 'System.UInt32') | The id with which to initialize. |
+
+
+### Invalid `constants`
+
+##### Summary
+
+Value representing an invalid (or unset) AdaptiveInternalID
+
+
+### Current() `method`
+
+##### Summary
+
+Retrieves the current AdaptiveInternalID
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Equals() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetHashCode() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Next() `method`
+
+##### Summary
+
+Advances to the next AdaptiveInternalID.
+
+##### Returns
+
+The next AdaptiveInternalID.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ToString() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveMedia `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Media element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### AltText `property`
+
+##### Summary
+
+Alternate text to display for this media element.
+
+
+### Poster `property`
+
+##### Summary
+
+URL for the poster image to show for this media element.
+
+
+### Sources `property`
+
+##### Summary
+
+A collection of source from which to retrieve the media.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveMediaSource `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a "media source" for a Media element.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveMediaSource](#T-AdaptiveCards-AdaptiveMediaSource 'AdaptiveCards.AdaptiveMediaSource').
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(mimeType,url) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveMediaSource](#T-AdaptiveCards-AdaptiveMediaSource 'AdaptiveCards.AdaptiveMediaSource') instance with the given properties.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| mimeType | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The mime type of the media. |
+| url | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The url from which to load the media. |
+
+
+### MimeType `property`
+
+##### Summary
+
+The mime type of this media source.
+
+
+### Url `property`
+
+##### Summary
+
+The URL of this media source.
+
+
+## AdaptiveNumberInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Input.Number element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Max `property`
+
+##### Summary
+
+Hint of maximum value (may be ignored by some clients).
+
+
+### Min `property`
+
+##### Summary
+
+Hint of minimum value (may be ignored by some clients).
+
+
+### Placeholder `property`
+
+##### Summary
+
+Text to display as a placeholder.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Value `property`
+
+##### Summary
+
+The initial value for the field.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveOpenUrlAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+When ActionOpenUrl is invoked it will show the given url, either by launching it to an external web
+browser or showing in-situ with embedded web browser.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Url `property`
+
+##### Summary
+
+Url to open using default operating system browser.
+
+
+### UrlString `property`
+
+##### Summary
+
+This is necessary for XML serialization. You should use the [Url](#F-Url 'Url') property directly.
+
+
+## AdaptiveRefresh `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents how a card can be refreshed by making a request to the target Bot
+
+
+### Action `property`
+
+##### Summary
+
+The action to be executed to refresh the card.
+ Clients can run this refresh action automatically or can provide an affordance for users to trigger it manually.
+
+
+### UserIds `property`
+
+##### Summary
+
+A list of user Ids informing the client for which users should the refresh action should be run automatically.
+ Some clients will not run the refresh action automatically unless this property is specified.
+ Some clients may ignore this property and always run the refresh action automatically.
+
+
+## AdaptiveRenderException `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### CardFallbackText `property`
+
+##### Summary
+
+The fallback text associated with this card, if provided by the card author
+
+
+## AdaptiveRichTextBlock `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the RichTextBlock element.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveRichTextBlock](#T-AdaptiveCards-AdaptiveRichTextBlock 'AdaptiveCards.AdaptiveRichTextBlock').
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### HorizontalAlignment `property`
+
+##### Summary
+
+Horizontal alignment for element.
+
+
+### Inlines `property`
+
+##### Summary
+
+A list of text inlines in this RichTextBlock.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveSchemaVersion `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the AdaptiveCards schema version.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion').
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(versionString) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion') instance.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| versionString | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | A string representing the schema version. |
+
+
+### #ctor(major,minor) `constructor`
+
+##### Summary
+
+Iniializes an [AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion') instance.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| major | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | The schema major version. |
+| minor | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | The schema minor version. |
+
+
+### Major `property`
+
+##### Summary
+
+Major version number.
+
+
+### Minor `property`
+
+##### Summary
+
+Minor version number.
+
+
+### CompareTo(other) `method`
+
+##### Summary
+
+Compares this instance to another instance.
+
+##### Returns
+
+0 iff the other AdaptiveSchemaVersion is equal to this one.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| other | [AdaptiveCards.AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion') | AdaptiveSchemaVersion instance to compare to. |
+
+
+### Equals() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetHashCode() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ToString() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_Equality() `method`
+
+##### Summary
+
+Equality comparison operator.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_GreaterThan() `method`
+
+##### Summary
+
+Greater-than operator.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_GreaterThanOrEqual() `method`
+
+##### Summary
+
+Greater-than-or-equal operator.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_Implicit(versionString) `method`
+
+##### Summary
+
+Implicit conversion operator from [String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') to [AdaptiveSchemaVersion](#T-AdaptiveCards-AdaptiveSchemaVersion 'AdaptiveCards.AdaptiveSchemaVersion').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| versionString | [System.String)~AdaptiveCards.AdaptiveSchemaVersion](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String)~AdaptiveCards.AdaptiveSchemaVersion 'System.String)~AdaptiveCards.AdaptiveSchemaVersion') | A string representing the schema version. |
+
+
+### op_Inequality() `method`
+
+##### Summary
+
+Inequality comparison operator.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_LessThan() `method`
+
+##### Summary
+
+Less-than operator.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_LessThanOrEqual() `method`
+
+##### Summary
+
+Less-than-or-equal operator.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveSerializationException `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an exception that occurs during serialization.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+## AdaptiveShowCardAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Action.ShowCard element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Card `property`
+
+##### Summary
+
+[AdaptiveCard](#T-AdaptiveCards-AdaptiveCard 'AdaptiveCards.AdaptiveCard') to show when the action is invoked.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveSpacing `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the spacing of an element.
+
+
+### Default `constants`
+
+##### Summary
+
+Use the default spacing.
+
+
+### ExtraLarge `constants`
+
+##### Summary
+
+Use extra large spacing.
+
+
+### Large `constants`
+
+##### Summary
+
+Use large spacing.
+
+
+### Medium `constants`
+
+##### Summary
+
+Use medium spacing.
+
+
+### None `constants`
+
+##### Summary
+
+Use no spacing.
+
+
+### Padding `constants`
+
+##### Summary
+
+This results in the same padding that's applied to the card itself.
+
+
+### Small `constants`
+
+##### Summary
+
+Use small spacing.
+
+
+## AdaptiveSubmitAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Submit action gathers up input fields, merges with optional data field and generates event to client
+ asking for data to be submitted. It is up to the client to determine how that data is processed. For
+ example: With BotFramework bots the client would send an activity through the messaging medium to the bot.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### AssociatedInputs `property`
+
+##### Summary
+
+Controls which inputs are associated with the submit action
+
+
+### Data `property`
+
+##### Summary
+
+initial data that input fields will be combined with. This is essentially 'hidden' properties, Example:
+ {"id":"123123123"}
+
+
+### DataJson `property`
+
+##### Summary
+
+Get or set the data as a JSON string.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveTable `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a table
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Columns `property`
+
+##### Summary
+
+Collection of TableColumnDefinitions
+
+
+### FirstRowAsHeaders `property`
+
+##### Summary
+
+Specifies whether the first row of the table should be treated as a header row, and be announced as such by accessibility software.
+
+
+### GridStyle `property`
+
+##### Summary
+
+Defines the style of the grid. This property currently only controls the grid’s color
+
+
+### GridStyleXml `property`
+
+##### Summary
+
+Controls XML serialization of style.
+
+
+### Rows `property`
+
+##### Summary
+
+Collection of TableRows
+
+
+### ShowGridLines `property`
+
+##### Summary
+
+Specifies whether grid lines should be displayed.
+
+
+### Type `property`
+
+##### Summary
+
+type name
+
+
+### Add(element) `method`
+
+##### Summary
+
+Add an AdpativeTableRow
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| element | [AdaptiveCards.AdaptiveElement](#T-AdaptiveCards-AdaptiveElement 'AdaptiveCards.AdaptiveElement') | |
+
+
+### GetEnumerator() `method`
+
+##### Summary
+
+Return a enumerator for TableRows
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeStyleXml() `method`
+
+##### Summary
+
+Determines whether to serialize the style for XML.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveTableCell `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a cell within a row of a Table element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveTableColumnDefinition `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the backgroundImage property
+
+
+### TypeName `constants`
+
+##### Summary
+
+The JSON property name that this class implements.
+
+
+### HorizontalContentAlignment `property`
+
+##### Summary
+
+The content alignment for the TableCells inside the TableRow.
+
+
+### VerticalContentAlignment `property`
+
+##### Summary
+
+The content alignment for the TableCells inside the TableRow.
+
+
+## AdaptiveTableRow `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents TableRow element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Cells `property`
+
+##### Summary
+
+Collection of TableCells that this TableRow contains.
+
+
+### Rtl `property`
+
+##### Summary
+
+Sets the content flow direction
+
+
+### Style `property`
+
+##### Summary
+
+The style used to display this element. See [AdaptiveContainerStyle](#T-AdaptiveCards-AdaptiveContainerStyle 'AdaptiveCards.AdaptiveContainerStyle').
+
+
+### StyleXml `property`
+
+##### Summary
+
+Controls XML serialization of style.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### GetEnumerator() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ShouldSerializeStyleXml() `method`
+
+##### Summary
+
+Determines whether to serialize the style for XML.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveTargetElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the target of an Action.ToggleVisibility element.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveTargetElement](#T-AdaptiveCards-AdaptiveTargetElement 'AdaptiveCards.AdaptiveTargetElement').
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(elementId) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveTargetElement](#T-AdaptiveCards-AdaptiveTargetElement 'AdaptiveCards.AdaptiveTargetElement') instance with the supplied properties.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| elementId | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The id of the target element. |
+
+
+### #ctor(elementId,isVisible) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveTargetElement](#T-AdaptiveCards-AdaptiveTargetElement 'AdaptiveCards.AdaptiveTargetElement') instance with the supplied properties.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| elementId | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The Id of the target element. |
+| isVisible | [System.Boolean](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Boolean 'System.Boolean') | Initial visible state. |
+
+
+### ElementId `property`
+
+##### Summary
+
+Target element Id.
+
+
+### IsVisible `property`
+
+##### Summary
+
+Target element visibility.
+
+
+### IsVisibleXml `property`
+
+##### Summary
+
+Helper to do custom serialization of [IsVisible](#P-AdaptiveCards-AdaptiveTargetElement-IsVisible 'AdaptiveCards.AdaptiveTargetElement.IsVisible') property for XML.
+
+
+### ShouldSerializeIsVisibleXml() `method`
+
+##### Summary
+
+Determines whether the [IsVisibleXml](#P-AdaptiveCards-AdaptiveTargetElement-IsVisibleXml 'AdaptiveCards.AdaptiveTargetElement.IsVisibleXml') property should be serialized.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### op_Implicit(elementId) `method`
+
+##### Summary
+
+Implicit conversion from [String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') to [AdaptiveTargetElement](#T-AdaptiveCards-AdaptiveTargetElement 'AdaptiveCards.AdaptiveTargetElement').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| elementId | [System.String)~AdaptiveCards.AdaptiveTargetElement](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String)~AdaptiveCards.AdaptiveTargetElement 'System.String)~AdaptiveCards.AdaptiveTargetElement') | |
+
+
+## AdaptiveTextBlock `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the TextBlock element.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveTextBlock](#T-AdaptiveCards-AdaptiveTextBlock 'AdaptiveCards.AdaptiveTextBlock') instance.
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(text) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveTextBlock](#T-AdaptiveCards-AdaptiveTextBlock 'AdaptiveCards.AdaptiveTextBlock') instance with the supplied text.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The text of this TextBlock. |
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Color `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### FontType `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### HorizontalAlignment `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### IsSubtle `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Italic `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### MaxLines `property`
+
+##### Summary
+
+When [Wrap](#P-AdaptiveCards-AdaptiveTextBlock-Wrap 'AdaptiveCards.AdaptiveTextBlock.Wrap') is true, this controls the maximum number of lines of text to display.
+
+
+### MaxWidth `property`
+
+##### Summary
+
+The maximum width of the TextBlock.
+
+
+### Size `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Strikethrough `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Style `property`
+
+##### Summary
+
+The style ([AdaptiveTextBlockStyle](#T-AdaptiveCards-AdaptiveTextBlockStyle 'AdaptiveCards.AdaptiveTextBlockStyle')) of text.
+
+
+### Text `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Weight `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Wrap `property`
+
+##### Summary
+
+Controls text wrapping behavior.
+
+
+## AdaptiveTextBlockStyle `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Indicates TextBlock element's content type.
+
+
+### Heading `constants`
+
+##### Summary
+
+The content is a heading.
+
+
+### Paragraph `constants`
+
+##### Summary
+
+The content is a paragraph (default).
+
+
+## AdaptiveTextColor `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the color style of TextBlock Elements
+
+
+### Accent `constants`
+
+##### Summary
+
+Accent the text
+
+
+### Attention `constants`
+
+##### Summary
+
+Highlight as needing attention (such as red)
+
+
+### Dark `constants`
+
+##### Summary
+
+Forces the text to be rendered in a dark color which is suitable when displayed over a light background
+
+
+### Default `constants`
+
+##### Summary
+
+The default color which guarentees appropriate contrast
+
+
+### Good `constants`
+
+##### Summary
+
+Good (such as green)
+
+
+### Light `constants`
+
+##### Summary
+
+Forces the text to be rendered in a light color which is suitable when displayed over a dark background
+
+
+### Warning `constants`
+
+##### Summary
+
+Warning (such as yellow)
+
+
+## AdaptiveTextInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an Input.Text element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### InlineAction `property`
+
+##### Summary
+
+[AdaptiveAction](#T-AdaptiveCards-AdaptiveAction 'AdaptiveCards.AdaptiveAction') to invoke inline.
+
+
+### IsMultiline `property`
+
+##### Summary
+
+Controls whether multiple lines of text are allowed.
+
+
+### MaxLength `property`
+
+##### Summary
+
+Hint of maximum number of characters to collect (may be ignored by some clients).
+
+
+### Placeholder `property`
+
+##### Summary
+
+Placeholder text to display when the input is empty.
+
+
+### Regex `property`
+
+##### Summary
+
+Regular expression used for validating the input.
+
+
+### Style `property`
+
+##### Summary
+
+Hint of style of input, if client doesn't support the style it will become simple text input.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Value `property`
+
+##### Summary
+
+The initial value for the field.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveTextInputStyle `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Style of text input.
+
+
+### Email `constants`
+
+##### Summary
+
+Input is an email address. The client may use this information to provide optimized keyboard input for the user.
+
+
+### Password `constants`
+
+##### Summary
+
+Display input text with password masking
+
+
+### Tel `constants`
+
+##### Summary
+
+Input is a telephone number. The client may use this information to provide optimized keyboard input for the
+user.
+
+
+### Text `constants`
+
+##### Summary
+
+Unstructured plain text.
+
+
+### Url `constants`
+
+##### Summary
+
+Input is a url. The client may use this information to provide optimized keyboard input for the user.
+
+
+## AdaptiveTextRun `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a TextRun.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes an empty [AdaptiveTextRun](#T-AdaptiveCards-AdaptiveTextRun 'AdaptiveCards.AdaptiveTextRun').
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(text) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveTextRun](#T-AdaptiveCards-AdaptiveTextRun 'AdaptiveCards.AdaptiveTextRun') with the given text.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The initial text for this TextRun. |
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Color `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### FontType `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Highlight `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### IsSubtle `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Italic `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### SelectAction `property`
+
+##### Summary
+
+Action for this text run
+
+
+### Size `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Strikethrough `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Text `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Underline `property`
+
+##### Summary
+
+Display this text underlined.
+
+
+### Weight `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveTextSize `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the relative size of TextBlock elements
+
+
+### Default `constants`
+
+##### Summary
+
+Default text size
+
+
+### ExtraLarge `constants`
+
+##### Summary
+
+The largest text size
+
+
+### Large `constants`
+
+##### Summary
+
+Slightly larger then medium
+
+
+### Medium `constants`
+
+##### Summary
+
+Slightly larger than default
+
+
+### Normal `constants`
+
+##### Summary
+
+Default text size
+
+
+### Small `constants`
+
+##### Summary
+
+Smallest text size
+
+
+## AdaptiveTextWeight `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the weight of TextBock Elements
+
+
+### Bolder `constants`
+
+##### Summary
+
+Bolder text (wider stroke)
+
+
+### Default `constants`
+
+##### Summary
+
+The default text weight
+
+
+### Lighter `constants`
+
+##### Summary
+
+Lighter text (thinner stroke)
+
+
+### Normal `constants`
+
+##### Summary
+
+The default text weight
+
+
+## AdaptiveTimeInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Input.Time element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Max `property`
+
+##### Summary
+
+Hint of maximum value (may be ignored by some clients)
+
+
+### Min `property`
+
+##### Summary
+
+Hint of minimum value (may be ignored by some clients).
+
+
+### Placeholder `property`
+
+##### Summary
+
+Placeholder text to display when the input is empty.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Value `property`
+
+##### Summary
+
+The initial value for the field.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveToggleInput `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Input.Toggle element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Title `property`
+
+##### Summary
+
+Title text for this element.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Value `property`
+
+##### Summary
+
+The value for the field.
+
+
+### ValueOff `property`
+
+##### Summary
+
+Value to use when toggle is off.
+
+
+### ValueOn `property`
+
+##### Summary
+
+Value to use when toggle is on.
+
+
+### Wrap `property`
+
+##### Summary
+
+Controls text wrapping behavior.
+
+
+### GetNonInteractiveValue() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveToggleVisibilityAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents the Action.ToggleVisibility element.
+
+
+### TypeName `constants`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### TargetElements `property`
+
+##### Summary
+
+Ids of elements whose visibility this element should change.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveTokenExchangeResource `type`
+
+##### Namespace
+
+AdaptiveCards
+
+
+### Id `property`
+
+##### Summary
+
+The unique identifier of this token exchange instance.
+
+
+### ProviderId `property`
+
+##### Summary
+
+An identifier for the identity provider with which to attempt a token exchange.
+
+
+### Uri `property`
+
+##### Summary
+
+An application ID or resource identifier with which to exchange a token on behalf of.
+ This property is identity provider- and application-specific.
+
+
+## AdaptiveTypedBaseElementConverter `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+JsonConverters that deserialize to AdaptiveCards elements and use ParseContext must inherit this class.
+ParseContext provides id generation, id collision detections, and other useful services during deserialization.
+
+
+### ParseContext `property`
+
+##### Summary
+
+The [ParseContext](#P-AdaptiveCards-AdaptiveTypedBaseElementConverter-ParseContext 'AdaptiveCards.AdaptiveTypedBaseElementConverter.ParseContext') to use while parsing in AdaptiveCards.
+
+
+## AdaptiveTypedElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Base for almost all representable elements in AdaptiveCards.
+
+
+### Requires `constants`
+
+##### Summary
+
+A collection representing features and feature versions that this element requires.
+
+
+### AdditionalProperties `property`
+
+##### Summary
+
+Additional properties not found on the default schema.
+
+
+### Fallback `property`
+
+##### Summary
+
+The fallback property controls behavior when an unexpected element or error is encountered.
+
+
+### Id `property`
+
+##### Summary
+
+A unique ID associated with the element. For Inputs, the ID will be used as the key for Action.Submit response.
+
+
+### InternalID `property`
+
+##### Summary
+
+The [AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID') for this element.
+
+
+### Type `property`
+
+##### Summary
+
+The AdaptiveCard element that this class implements.
+
+
+### MeetsRequirements(featureRegistration) `method`
+
+##### Summary
+
+Determines if this element's requirements are satisfied.
+
+##### Returns
+
+true iff this element's requirements are met.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| featureRegistration | [AdaptiveCards.AdaptiveFeatureRegistration](#T-AdaptiveCards-AdaptiveFeatureRegistration 'AdaptiveCards.AdaptiveFeatureRegistration') | The host's [AdaptiveFeatureRegistration](#T-AdaptiveCards-AdaptiveFeatureRegistration 'AdaptiveCards.AdaptiveFeatureRegistration'). |
+
+
+### ShouldSerializeAdditionalProperties() `method`
+
+##### Summary
+
+Determines whether the [AdditionalProperties](#P-AdaptiveCards-AdaptiveTypedElement-AdditionalProperties 'AdaptiveCards.AdaptiveTypedElement.AdditionalProperties') property should be serialized.
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveTypedElementConverter `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+This handles using the type field to instantiate strongly typed objects on deserialization.
+
+
+### TypedElementTypes `constants`
+
+##### Summary
+
+Default types to support, register any new types to this list
+
+
+### CanRead `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### CanWrite `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Warnings `property`
+
+##### Summary
+
+The list of warnings generated while converting.
+
+
+### CanConvert() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### CreateElement\`\`1() `method`
+
+##### Summary
+
+Instantiates a new strongly-typed element of the given type.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### GetElementTypeName() `method`
+
+##### Summary
+
+Retrieves the type name of an AdaptiveCards object.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ReadJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### RegisterTypedElement\`\`1(typeName) `method`
+
+##### Summary
+
+Registers a new element with the element converter.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| typeName | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The [Type](#P-AdaptiveCards-AdaptiveTypedElement-Type 'AdaptiveCards.AdaptiveTypedElement.Type') of the element to register. |
+
+
+### WriteJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveUnknownAction `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an unknown action encountered while parsing.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveUnknownElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents an unknown element encountered while parsing.
+
+
+### Type `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+## AdaptiveVerticalAlignment `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Defines the vertical alignment behavior of an element.
+
+
+### Bottom `constants`
+
+##### Summary
+
+Align to the bottom.
+
+
+### Center `constants`
+
+##### Summary
+
+Centered.
+
+
+### Top `constants`
+
+##### Summary
+
+Align to the top.
+
+
+## AdaptiveVerticalContentAlignment `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Controls the vertical alignment of child elements within a container.
+
+
+### Bottom `constants`
+
+##### Summary
+
+Align to the bottom of the container.
+
+
+### Center `constants`
+
+##### Summary
+
+Center within the container.
+
+
+### Top `constants`
+
+##### Summary
+
+Align to the top.
+
+
+## AdaptiveVisitor `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Utility class which allows you to visit every node
+
+
+## AdaptiveWarning `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Represents a warning generated while parsing.
+
+
+### #ctor(code,message) `constructor`
+
+##### Summary
+
+Initializes an [AdaptiveWarning](#T-AdaptiveCards-AdaptiveWarning 'AdaptiveCards.AdaptiveWarning') instance with the given properties.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| code | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | The [WarningStatusCode](#T-AdaptiveCards-AdaptiveWarning-WarningStatusCode 'AdaptiveCards.AdaptiveWarning.WarningStatusCode') encountered. |
+| message | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The warning message. |
+
+
+### Code `property`
+
+##### Summary
+
+The [WarningStatusCode](#T-AdaptiveCards-AdaptiveWarning-WarningStatusCode 'AdaptiveCards.AdaptiveWarning.WarningStatusCode').
+
+
+### Message `property`
+
+##### Summary
+
+The warning message.
+
+
+### ToString() `method`
+
+##### Summary
+
+Convinience method that provides same string as Message
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+## BlockRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Block-Level Grammar
+
+
+## BreaksInlineRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+GFM + Line Breaks Inline Grammar
+
+
+## ColorUtil `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+A collection of utilities for processing colors.
+
+
+### alphaColorLength `constants`
+
+##### Summary
+
+The length of a string in the "#AARRGGBB" format.
+
+
+### colorStringLength `constants`
+
+##### Summary
+
+The length of a string in the "#RRGGBB" format.
+
+
+### GenerateLighterColor(hexColor) `method`
+
+##### Summary
+
+Create a color that's 25% lighter than the given color.
+
+##### Returns
+
+A 25% brighter version of the supplied color, or "#FF000000" if hexColor is an invalid format.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| hexColor | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | A string in the format of #AARRGGBB or #RRGGBB to lighten. |
+
+
+### IsValidColor(color) `method`
+
+##### Summary
+
+Determines if a string is a valid string of the format #AARRGGBB or #RRGGBB.
+
+##### Returns
+
+true iff the string is of the format #AARRGGBB or #RRGGBB.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| color | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The string to test for color format. |
+
+
+### TryParseColor(color,result) `method`
+
+##### Summary
+
+Attempts to parse the supplied string as an integer if it is a valid color format.
+
+##### Returns
+
+true iff the string was successfully converted.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| color | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The string to convert to an int. |
+| result | [System.Int32@](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32@ 'System.Int32@') | The result of converting the string. |
+
+
+## ContainerStyleConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### BackgroundColor `property`
+
+##### Summary
+
+The background color to use for this container
+
+
+### ForegroundColors `property`
+
+##### Summary
+
+The font colors to use for this container
+
+
+## ContextType `type`
+
+##### Namespace
+
+AdaptiveCards.ParseContext
+
+##### Summary
+
+Denotes what type of AdaptiveCard element this ParseContext represents.
+
+
+### Action `constants`
+
+##### Summary
+
+Represents an Action (i.e. something that belongs in an ActionSet or in the actions of a card).
+
+
+### Element `constants`
+
+##### Summary
+
+Represents an Element (i.e. something that belongs in the body of a card).
+
+
+## EmojiMarkdownRenderer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Renderer which renders emoji markdown to unicode
+
+
+## ErrorMessageConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Properties which control rendering of media
+
+
+### Size `property`
+
+##### Summary
+
+The text size of the label
+
+
+### Spacing `property`
+
+##### Summary
+
+The text color of the label
+
+
+### Weight `property`
+
+##### Summary
+
+The text weight of the label
+
+
+## FactSetConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### Spacing `property`
+
+##### Summary
+
+Spacing between facts and values
+
+
+### Title `property`
+
+##### Summary
+
+TextBlock to use for Titles in factsets
+
+
+### Value `property`
+
+##### Summary
+
+TextBlock to use for Values in fact sets
+
+
+## FontColorConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### Default `property`
+
+##### Summary
+
+Color in #RRGGBB format
+
+
+## GfmBlockRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+GFM Block Grammar
+
+
+## GfmInlineRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+GFM Inline Grammar
+
+
+## HashColorConverter `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Helper class to validate and convert color strings.
+
+
+### CanWrite `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### Warnings `property`
+
+##### Summary
+
+A list of warnings encountered during processing.
+
+
+### CanConvert() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ReadJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### WriteJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## HeadingsConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### Level `property`
+
+##### Summary
+
+Level of heading text, used only if underlying platform requires it.
+
+
+## HighlightColorConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### Default `property`
+
+##### Summary
+
+Color in #RRGGBB format
+
+
+## HtmlRenderer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Renderer which renders to HTML with Emoji Support
+
+
+## IAdaptiveTextElement `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Interface encapsulating the properties of an AdaptiveCards element that displays text.
+
+
+### Color `property`
+
+##### Summary
+
+The color to use while displaying the text.
+
+
+### FontType `property`
+
+##### Summary
+
+Controls which [AdaptiveFontType](#T-AdaptiveCards-AdaptiveFontType 'AdaptiveCards.AdaptiveFontType') is used to display the text.
+
+
+### IsSubtle `property`
+
+##### Summary
+
+Make the text less prominent when displayed.
+
+
+### Italic `property`
+
+##### Summary
+
+Display the text using italics.
+
+
+### Size `property`
+
+##### Summary
+
+The size to use while displaying the text.
+
+
+### Strikethrough `property`
+
+##### Summary
+
+Display this text with strikethrough.
+
+
+### Text `property`
+
+##### Summary
+
+The text to display.
+
+
+### Weight `property`
+
+##### Summary
+
+The weight to use while displaying the text.
+
+
+## IconPlacement `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Controls where to place icons in actions.
+
+
+### AboveTitle `constants`
+
+##### Summary
+
+Display icons above text.
+
+
+### LeftOfTitle `constants`
+
+##### Summary
+
+Display icons to the left of the text.
+
+
+## IgnoreEmptyItemsConverter\`1 `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+JSON converter that will drop empty element items.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| T | Type of the objects to be converted. |
+
+
+### CanWrite `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### CanConvert() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ReadJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### WriteJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## IgnoreNullEnumConverter\`1 `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+JSON converter that will ignore enum values that can't be parsed correctly.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### Warnings `property`
+
+##### Summary
+
+*Inherit from parent.*
+
+
+### ReadJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+### WriteJson() `method`
+
+##### Summary
+
+*Inherit from parent.*
+
+##### Parameters
+
+This method has no parameters.
+
+
+## InlineLexer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+
+### Mangle() `method`
+
+##### Summary
+
+Mangle Links
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Output() `method`
+
+##### Summary
+
+Lexing/Compiling
+
+##### Parameters
+
+This method has no parameters.
+
+
+### OutputLink() `method`
+
+##### Summary
+
+Compile Link
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Smartypants() `method`
+
+##### Summary
+
+Smartypants Transformations
+
+##### Parameters
+
+This method has no parameters.
+
+
+## InlineRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Inline-Level Grammar
+
+
+## InputLabelConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Properties which control rendering of media
+
+
+### Color `property`
+
+##### Summary
+
+The text color of the label
+
+
+### IsSubtle `property`
+
+##### Summary
+
+Make the label less prominent
+
+
+### Size `property`
+
+##### Summary
+
+The text size of the label
+
+
+### Suffix `property`
+
+##### Summary
+
+Suffix to be displayed next to the label. Only respected for required inputs
+
+
+### Weight `property`
+
+##### Summary
+
+The text weight of the label
+
+
+## InputsConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Properties which control rendering of media
+
+
+## JsonExtensions `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Helper class for color validation.
+
+
+### IsHexDigit(c) `method`
+
+##### Summary
+
+Determines if a character is a valid hex digit.
+
+##### Returns
+
+true iff c is a valid hex digit.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| c | [System.Char](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Char 'System.Char') | Character to check. |
+
+
+## LabelConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Properties which control rendering of input labels
+
+
+### InputSpacing `property`
+
+##### Summary
+
+Specifies the spacing between the label and the input
+
+
+## Lexer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+
+### Lex() `method`
+
+##### Summary
+
+Static Lex Method
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Lex() `method`
+
+##### Summary
+
+Preprocessing
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Token() `method`
+
+##### Summary
+
+Lexing
+
+##### Parameters
+
+This method has no parameters.
+
+
+## MarkdownRenderer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+
+### Postprocess(text) `method`
+
+##### Summary
+
+ppostprocess entire output before returning
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+
+
+### Preprocess(text) `method`
+
+##### Summary
+
+Preprocess entire input before parsing
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+
+
+## MediaConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Properties which control rendering of media
+
+
+### AllowInlinePlayback `property`
+
+##### Summary
+
+Controls whether the media is played in the card or sent to host
+
+
+### DefaultPoster `property`
+
+##### Summary
+
+Default poster URL to use for media thumbnail
+
+
+### PlayButton `property`
+
+##### Summary
+
+Play button URL to use for media thumbnail
+
+
+## NormalBlockRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Normal Block Grammar
+
+
+## NormalInlineRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Normal Inline Grammar
+
+
+## ParseContext `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Encapsulates state necessary to correctly parse an AdaptiveCard.
+
+
+### Type `property`
+
+##### Summary
+
+Tracks the most recently encountered element type.
+
+
+### GetNearestFallbackID(skipID) `method`
+
+##### Summary
+
+Walk stack looking for first element to be marked fallback (which isn't the ID we're supposed to
+skip), then return its internal ID. If none, return an invalid ID.
+
+##### Returns
+
+The [AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID') of the nearest element with fallback, or an invalid [AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID') if there is no element with fallback.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| skipID | [AdaptiveCards.AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID') | [AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID') of the element to ignore. |
+
+
+### PopElement() `method`
+
+##### Summary
+
+Pops an element off of the context stack.
+
+##### Parameters
+
+This method has no parameters.
+
+
+### PushElement(idJsonProperty,internalId) `method`
+
+##### Summary
+
+Pushes the supplied element state on to the context stack.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| idJsonProperty | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The value of the current element's "id" property. |
+| internalId | [AdaptiveCards.AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID') | The current element's [AdaptiveInternalID](#T-AdaptiveCards-AdaptiveInternalID 'AdaptiveCards.AdaptiveInternalID'). |
+
+##### Remarks
+
+Used by element converters to determine how to perform element fallback.
+
+
+## Parser `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+
+### Next() `method`
+
+##### Summary
+
+Next Token
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Parse() `method`
+
+##### Summary
+
+Static Parse Method
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Parse() `method`
+
+##### Summary
+
+Parse Loop
+
+##### Parameters
+
+This method has no parameters.
+
+
+### ParseText() `method`
+
+##### Summary
+
+Parse Text Tokens
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Peek() `method`
+
+##### Summary
+
+Preview Next Token
+
+##### Parameters
+
+This method has no parameters.
+
+
+### Tok() `method`
+
+##### Summary
+
+Parse Current Token
+
+##### Parameters
+
+This method has no parameters.
+
+
+## PedanticInlineRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Pedantic Inline Grammar
+
+
+## RemoteResourceInformation `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+Contains information about a remote source.
+
+
+### #ctor(url,mimeType) `constructor`
+
+##### Summary
+
+Initializes a [RemoteResourceInformation](#T-AdaptiveCards-RemoteResourceInformation 'AdaptiveCards.RemoteResourceInformation') with the given properties.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| url | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The URL of the remote resource. |
+| mimeType | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The mimetype of the remote resource. |
+
+
+## RenderedAdaptiveCardBase `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+The base class for RenderedAdaptiveCard. Renderers extend this class to provide their native UI element property.
+
+
+### OriginatingCard `property`
+
+##### Summary
+
+The card that the visual was rendered from.
+
+
+### UserInputs `property`
+
+##### Summary
+
+Provides access to the input fields on a card
+
+
+### Warnings `property`
+
+##### Summary
+
+If any modifications were done to the rendered card they will be reported here
+
+
+## RenderedAdaptiveCardInputs `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Provides access to the input fields on a card
+
+
+### AsDictionary() `method`
+
+##### Summary
+
+Read the input fields as a Dictionary. All input values will serialize the strings
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+### AsJson() `method`
+
+##### Summary
+
+Read the input fields as a JSON object. All input values will serialize to strings
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+## RendererUtilities `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Utility methods for dealing with body and binding
+
+
+### ApplyTextFunctions(text) `method`
+
+##### Summary
+
+This funct will return modified text replacing {{DATE|TIME()}} style functions as the formatted text
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+
+
+## SeparatorConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### LineColor `property`
+
+##### Summary
+
+If there is a visible color, what color to use
+
+
+### LineThickness `property`
+
+##### Summary
+
+If there is a visible line, how thick should the line be
+
+
+## ShowCardActionMode `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Controls the behavior of an invoked Action.ShowCard.
+
+
+### Inline `constants`
+
+##### Summary
+
+Expand the Action.ShowCard in-place.
+
+
+### Popup `constants`
+
+##### Summary
+
+Display the Action.ShowCard in a popup window.
+
+
+## ShowCardConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Configuration for Action.ShowCard elements.
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Initializes a default [ShowCardConfig](#T-AdaptiveCards-Rendering-ShowCardConfig 'AdaptiveCards.Rendering.ShowCardConfig').
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### ActionMode `property`
+
+##### Summary
+
+Controls how Action.ShowCard elements behave when invoked.
+
+
+### InlineTopMargin `property`
+
+##### Summary
+
+Controls the margin to use when showing an inline Action.ShowCard.
+
+
+### Style `property`
+
+##### Summary
+
+Determines what style to use when displaying an inline Action.ShowCard.
+
+
+## SpacingsConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+##### Summary
+
+Specifies how much spacing should be used for the various spacing options
+
+
+## TablesBlockRules `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+GFM + Tables Block Grammar
+
+
+## TextBlockConfig `type`
+
+##### Namespace
+
+AdaptiveCards.Rendering
+
+
+### Color `property`
+
+##### Summary
+
+The color of the text
+
+
+### IsSubtle `property`
+
+##### Summary
+
+Should it be subtle?
+
+
+### MaxWidth `property`
+
+##### Summary
+
+The maximum width for text
+
+
+### Size `property`
+
+##### Summary
+
+The size of the text
+
+
+### Weight `property`
+
+##### Summary
+
+The weight of the text
+
+
+### Wrap `property`
+
+##### Summary
+
+Is it allowed for the text to wrap
+
+
+## TextMarkdownRenderer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Renderer which renders to pure text environments like SMS
+
+
+## WarningLoggingContractResolver `type`
+
+##### Namespace
+
+AdaptiveCards
+
+##### Summary
+
+This JSON contract resolver checks if the JsonConverter can log warnings, and if so sets the Warnings property
+
+
+### CreateProperty(member,memberSerialization) `method`
+
+##### Summary
+
+Override when a member property is being instantiated. At this point we know what converter
+ is being used for the property. If the converter can log warnings, then give it our collection
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| member | [System.Reflection.MemberInfo](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Reflection.MemberInfo 'System.Reflection.MemberInfo') | |
+| memberSerialization | [Newtonsoft.Json.MemberSerialization](#T-Newtonsoft-Json-MemberSerialization 'Newtonsoft.Json.MemberSerialization') | |
+
+
+## WarningStatusCode `type`
+
+##### Namespace
+
+AdaptiveCards.AdaptiveWarning
+
+##### Summary
+
+Status code representing the type of warning encountered.
+
+
+### EmptyLabelInRequiredInput `constants`
+
+##### Summary
+
+An input was marked as requiring input, but didn't have a label.
+
+
+### InvalidLanguage `constants`
+
+##### Summary
+
+The supplied language was not valid.
+
+
+### MaxActionsExceeded `constants`
+
+##### Summary
+
+The maximum number of [AdaptiveAction](#T-AdaptiveCards-AdaptiveAction 'AdaptiveCards.AdaptiveAction')s was exceeded.
+
+
+### NoErrorMessageForValidatedInput `constants`
+
+##### Summary
+
+An input has validation properties set, but no error message to display to users
+
+
+### UnsupportedSchemaVersion `constants`
+
+##### Summary
+
+The supplied schema version wasn't recognized.
+
+
+## XamlRenderer `type`
+
+##### Namespace
+
+Microsoft.MarkedNet
+
+##### Summary
+
+Renderer which renders to pure text environments like SMS
+
+
+### BlockQuoteStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### CellHeaderStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### CellStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### CodeSpanStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### CodeStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### CodespanStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### HeadingStyles `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### ImageStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### ImageTitleStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### ListItemStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### OrderedListStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### ParagraphStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
+
+
+### UnorderedListStyle `property`
+
+##### Summary
+
+set style as string -> Style=\"..."
diff --git a/source/dotnet/Library/AdaptiveCards.Rendering.Wpf.Net6/AdaptiveCards.Rendering.Wpf.Net6.csproj b/source/dotnet/Library/AdaptiveCards.Rendering.Wpf.Net6/AdaptiveCards.Rendering.Wpf.Net6.csproj
new file mode 100644
index 0000000000..ad3dbb149f
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Rendering.Wpf.Net6/AdaptiveCards.Rendering.Wpf.Net6.csproj
@@ -0,0 +1,47 @@
+
+
+ Library
+ net6.0-windows
+ true
+ true
+ AdaptiveCards.Rendering.Wpf.Net6
+ AdaptiveCards.Rendering.Wpf
+
+ Microsoft
+ Adaptive Card renderer for WPF .Net6
+ This library implements classes for rendering Adaptive Cards into WPF controls
+ AdaptiveCards.Rendering.Wpf.Net6
+ false
+ adaptivecards;adaptive-cards
+ https://adaptivecards.io
+ https://adaptivecards.io/content/icons_blue/blue-48.png
+ https://github.com/Microsoft/AdaptiveCards
+ EULA-Windows.txt
+ © Microsoft Corporation. All rights reserved.
+ True
+ True
+ ../../../../35MSSharedLib1024.snk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveCardRenderer.cs b/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveCardRenderer.cs
index 4437f461cf..3a836b61fa 100644
--- a/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveCardRenderer.cs
+++ b/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveCardRenderer.cs
@@ -288,5 +288,15 @@ private async Task RenderCardToImageInternalAsync(Ada
await visitor.GetAllImages(card).WithCancellation(cancellationToken).ConfigureAwait(false);
return visitor.LoadedImages;
}
+
+ public void UseXceedElementRenderers()
+ {
+ throw new NotImplementedException();
+ }
+
+ public void UseDefaultElementRenderers()
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.Net6/AdaptiveCards.Templating.Net6.csproj b/source/dotnet/Library/AdaptiveCards.Templating.Net6/AdaptiveCards.Templating.Net6.csproj
new file mode 100644
index 0000000000..1ec7710f55
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.Net6/AdaptiveCards.Templating.Net6.csproj
@@ -0,0 +1,67 @@
+
+
+ net6.0
+ 1.0.0
+ $(VersionSuffix)
+ Microsoft
+ Adaptive Cards
+ JSON templating library
+ This library implements a JSON-to-JSON templating/data-binding engine. While it is designed to be used with Adaptive Cards, it is not dependent on Adaptive Cards and can therefore be used in many contexts and applications.
+ AdaptiveCards.Templating.Net6
+ © Microsoft Corporation. All rights reserved.
+ https://github.com/Microsoft/AdaptiveCards
+ https://adaptivecards.io/content/icons_blue/blue-48.png
+ EULA-Windows.txt
+ https://github.com/microsoft/AdaptiveCards/issues/2448
+ true
+ $(DefineConstants);$(AdditionalConstants)
+
+
+ $(MSBuildProjectDirectory)\docs\AdaptiveCardsTemplate.xml
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+ false
+
+
+ false
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.Net6/README.md b/source/dotnet/Library/AdaptiveCards.Templating.Net6/README.md
new file mode 100644
index 0000000000..ba63c8628a
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.Net6/README.md
@@ -0,0 +1,84 @@
+# Adaptive Cards Templating Engine for .NET (Preview)
+
+This library implements a JSON-to-JSON templating/data-binding. While it is designed to be used with Adaptive Cards, it is not dependent on Adaptive Cards and can therefore be used in many contexts and applications.
+
+For more information about the data binding language implemented by this library, [please refer to GitHub](https://github.com/microsoft/AdaptiveCards/issues/2448)
+
+## Install via NuGet
+
+Coming soon
+
+## Usage
+
+### Hello World example
+
+Here is a simplistic "Hello World" example on how to use the library to generate an Adaptive Card using a template bound to a data object.
+
+```csharp
+string jsonTemplate = @"{
+ ""type"": ""AdaptiveCard"",
+ ""version"": ""1.0"",
+ ""body"": [
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""Hello, ${person.firstName}!""
+ }
+ ]
+}";
+
+string jsonData = @"{
+ ""person"": {
+ ""firstName"": ""Andrew"",
+ ""lastName"": ""Leader""
+ }
+}";
+
+// The final JSON, it'll have "text": "Hello, Andrew!" in it!
+var template = new AdaptiveCardsTemplate(jsonTemplate);
+var context = new AdaptiveCardsEvaluationContext() {
+ Root = jsonData
+};
+
+string cardJson = template.Expand(context);
+```
+
+### AdaptiveExpression
+
+This library provides a set of built-in functions via AdaptiveExpression. [please refer to GitHub](https://github.com/Microsoft/BotBuilder-Samples/tree/master/experimental/common-expression-language)
+
+Here is an example of simple use case
+```json
+{
+ "type": "AdaptiveCard",
+ "version": "1.0",
+ "body": [
+ {
+ "type": "TextBlock",
+ "text": "Game Score: {if( score >= 70, 'Excellent', 'Try Again')}"
+ }
+ ],
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
+}
+
+{
+ "score" : 95
+}
+```
+
+With given template and data, expanded json will be an adaptive cards as shown.
+
+```json
+{
+ "type": "AdaptiveCard",
+ "version": "1.0",
+ "body": [
+ {
+ "type": "TextBlock",
+ "text": "Game Score: Excellent"
+ }
+ ],
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
+}
+```
+
+
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.Net6/docs/.gitignore b/source/dotnet/Library/AdaptiveCards.Templating.Net6/docs/.gitignore
new file mode 100644
index 0000000000..b81c7954b7
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.Net6/docs/.gitignore
@@ -0,0 +1 @@
+*.xml
\ No newline at end of file
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.Net6/docs/AdaptiveCardsTemplate.md b/source/dotnet/Library/AdaptiveCards.Templating.Net6/docs/AdaptiveCardsTemplate.md
new file mode 100644
index 0000000000..499ff9c7e9
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.Net6/docs/AdaptiveCardsTemplate.md
@@ -0,0 +1,1700 @@
+
+# AdaptiveCards.Templating.Net6
+
+## Contents
+
+- [AdaptiveCardTemplate](#T-AdaptiveCards-Templating-AdaptiveCardTemplate 'AdaptiveCards.Templating.AdaptiveCardTemplate')
+ - [#ctor(jsonTemplate)](#M-AdaptiveCards-Templating-AdaptiveCardTemplate-#ctor-System-Object- 'AdaptiveCards.Templating.AdaptiveCardTemplate.#ctor(System.Object)')
+ - [Expand(context,nullSubstitutionOption)](#M-AdaptiveCards-Templating-AdaptiveCardTemplate-Expand-AdaptiveCards-Templating-EvaluationContext,System-Func{System-String,System-Object}- 'AdaptiveCards.Templating.AdaptiveCardTemplate.Expand(AdaptiveCards.Templating.EvaluationContext,System.Func{System.String,System.Object})')
+ - [Expand(rootData,nullSubstitutionOption)](#M-AdaptiveCards-Templating-AdaptiveCardTemplate-Expand-System-Object,System-Func{System-String,System-Object}- 'AdaptiveCards.Templating.AdaptiveCardTemplate.Expand(System.Object,System.Func{System.String,System.Object})')
+ - [GetLastTemplateExpansionWarnings()](#M-AdaptiveCards-Templating-AdaptiveCardTemplate-GetLastTemplateExpansionWarnings 'AdaptiveCards.Templating.AdaptiveCardTemplate.GetLastTemplateExpansionWarnings')
+- [AdaptiveCardsTemplateParserBaseVisitor\`1](#T-AdaptiveCardsTemplateParserBaseVisitor`1 'AdaptiveCardsTemplateParserBaseVisitor`1')
+ - [VisitArray(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitArray-AdaptiveCardsTemplateParser-ArrayContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitArray(AdaptiveCardsTemplateParser.ArrayContext)')
+ - [VisitJson(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitJson-AdaptiveCardsTemplateParser-JsonContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitJson(AdaptiveCardsTemplateParser.JsonContext)')
+ - [VisitJsonPair(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitJsonPair-AdaptiveCardsTemplateParser-JsonPairContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitJsonPair(AdaptiveCardsTemplateParser.JsonPairContext)')
+ - [VisitObj(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitObj-AdaptiveCardsTemplateParser-ObjContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitObj(AdaptiveCardsTemplateParser.ObjContext)')
+ - [VisitTemplateData(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitTemplateData-AdaptiveCardsTemplateParser-TemplateDataContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitTemplateData(AdaptiveCardsTemplateParser.TemplateDataContext)')
+ - [VisitTemplateRootData(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitTemplateRootData-AdaptiveCardsTemplateParser-TemplateRootDataContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitTemplateRootData(AdaptiveCardsTemplateParser.TemplateRootDataContext)')
+ - [VisitTemplateStringWithRoot(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitTemplateStringWithRoot-AdaptiveCardsTemplateParser-TemplateStringWithRootContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitTemplateStringWithRoot(AdaptiveCardsTemplateParser.TemplateStringWithRootContext)')
+ - [VisitTemplateWhen(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitTemplateWhen-AdaptiveCardsTemplateParser-TemplateWhenContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitTemplateWhen(AdaptiveCardsTemplateParser.TemplateWhenContext)')
+ - [VisitTemplatedString(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitTemplatedString-AdaptiveCardsTemplateParser-TemplatedStringContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitTemplatedString(AdaptiveCardsTemplateParser.TemplatedStringContext)')
+ - [VisitValueArray(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueArray-AdaptiveCardsTemplateParser-ValueArrayContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueArray(AdaptiveCardsTemplateParser.ValueArrayContext)')
+ - [VisitValueFalse(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueFalse-AdaptiveCardsTemplateParser-ValueFalseContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueFalse(AdaptiveCardsTemplateParser.ValueFalseContext)')
+ - [VisitValueNull(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueNull-AdaptiveCardsTemplateParser-ValueNullContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueNull(AdaptiveCardsTemplateParser.ValueNullContext)')
+ - [VisitValueNumber(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueNumber-AdaptiveCardsTemplateParser-ValueNumberContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueNumber(AdaptiveCardsTemplateParser.ValueNumberContext)')
+ - [VisitValueObject(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueObject-AdaptiveCardsTemplateParser-ValueObjectContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueObject(AdaptiveCardsTemplateParser.ValueObjectContext)')
+ - [VisitValueString(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueString-AdaptiveCardsTemplateParser-ValueStringContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueString(AdaptiveCardsTemplateParser.ValueStringContext)')
+ - [VisitValueTemplateExpression(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueTemplateExpression-AdaptiveCardsTemplateParser-ValueTemplateExpressionContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueTemplateExpression(AdaptiveCardsTemplateParser.ValueTemplateExpressionContext)')
+ - [VisitValueTemplateString(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueTemplateString-AdaptiveCardsTemplateParser-ValueTemplateStringContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueTemplateString(AdaptiveCardsTemplateParser.ValueTemplateStringContext)')
+ - [VisitValueTemplateStringWithRoot(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueTemplateStringWithRoot-AdaptiveCardsTemplateParser-ValueTemplateStringWithRootContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueTemplateStringWithRoot(AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext)')
+ - [VisitValueTrue(context)](#M-AdaptiveCardsTemplateParserBaseVisitor`1-VisitValueTrue-AdaptiveCardsTemplateParser-ValueTrueContext- 'AdaptiveCardsTemplateParserBaseVisitor`1.VisitValueTrue(AdaptiveCardsTemplateParser.ValueTrueContext)')
+- [AdaptiveCardsTemplateResult](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult')
+ - [#ctor()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-#ctor 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.#ctor')
+ - [#ctor(capturedString)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-#ctor-System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.#ctor(System.String)')
+ - [#ctor(capturedString,predicate)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-#ctor-System-String,System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.#ctor(System.String,System.String)')
+ - [HasItBeenDropped](#P-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-HasItBeenDropped 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.HasItBeenDropped')
+ - [IsWhen](#P-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-IsWhen 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.IsWhen')
+ - [Predicate](#P-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-Predicate 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.Predicate')
+ - [WhenEvaluationResult](#P-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-WhenEvaluationResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.WhenEvaluationResult')
+ - [Append(capturedString)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-Append-System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.Append(System.String)')
+ - [Append(result)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-Append-AdaptiveCards-Templating-AdaptiveCardsTemplateResult- 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.Append(AdaptiveCards.Templating.AdaptiveCardsTemplateResult)')
+ - [ToString()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-ToString 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.ToString')
+- [AdaptiveCardsTemplateSimpleObjectMemory](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory')
+ - [#ctor(memory)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory-#ctor-System-Object- 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory.#ctor(System.Object)')
+ - [SetValue(path,value)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory-SetValue-System-String,System-Object- 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory.SetValue(System.String,System.Object)')
+ - [TryGetValue(path,value)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory-TryGetValue-System-String,System-Object@- 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory.TryGetValue(System.String,System.Object@)')
+ - [Version()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory-Version 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory.Version')
+- [AdaptiveCardsTemplateVisitor](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor')
+ - [#ctor(nullSubstitutionOption,data,hostData)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-#ctor-System-Func{System-String,System-Object},System-String,System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.#ctor(System.Func{System.String,System.Object},System.String,System.String)')
+ - [Expand(unboundString,data,isTemplatedString,options)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-Expand-System-String,AdaptiveExpressions-Memory-IMemory,System-Boolean,AdaptiveExpressions-Options- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.Expand(System.String,AdaptiveExpressions.Memory.IMemory,System.Boolean,AdaptiveExpressions.Options)')
+ - [ExpandTemplatedString(node,isExpanded)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-ExpandTemplatedString-Antlr4-Runtime-Tree-ITerminalNode,System-Boolean- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.ExpandTemplatedString(Antlr4.Runtime.Tree.ITerminalNode,System.Boolean)')
+ - [GetCurrentDataContext()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-GetCurrentDataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.GetCurrentDataContext')
+ - [HasDataContext()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-HasDataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.HasDataContext')
+ - [IsTrue(predicate,data)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-IsTrue-System-String,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.IsTrue(System.String,Newtonsoft.Json.Linq.JToken)')
+ - [PopDataContext()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-PopDataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.PopDataContext')
+ - [PushDataContext(stringToParse,rootDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-PushDataContext-System-String,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.PushDataContext(System.String,Newtonsoft.Json.Linq.JToken)')
+ - [PushDataContext(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-PushDataContext-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.PushDataContext(AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext)')
+ - [PushTemplatedDataContext(jpath)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-PushTemplatedDataContext-System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.PushTemplatedDataContext(System.String)')
+ - [VisitArray(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitArray-AdaptiveCardsTemplateParser-ArrayContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitArray(AdaptiveCardsTemplateParser.ArrayContext)')
+ - [VisitChildren(node)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+ - [VisitObj(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitObj-AdaptiveCardsTemplateParser-ObjContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitObj(AdaptiveCardsTemplateParser.ObjContext)')
+ - [VisitTemplateData(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitTemplateData-AdaptiveCardsTemplateParser-TemplateDataContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitTemplateData(AdaptiveCardsTemplateParser.TemplateDataContext)')
+ - [VisitTemplateRootData(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitTemplateRootData-AdaptiveCardsTemplateParser-TemplateRootDataContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitTemplateRootData(AdaptiveCardsTemplateParser.TemplateRootDataContext)')
+ - [VisitTemplateStringWithRoot(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitTemplateStringWithRoot-AdaptiveCardsTemplateParser-TemplateStringWithRootContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitTemplateStringWithRoot(AdaptiveCardsTemplateParser.TemplateStringWithRootContext)')
+ - [VisitTemplateWhen(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitTemplateWhen-AdaptiveCardsTemplateParser-TemplateWhenContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitTemplateWhen(AdaptiveCardsTemplateParser.TemplateWhenContext)')
+ - [VisitTerminal(node)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitTerminal-Antlr4-Runtime-Tree-ITerminalNode- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitTerminal(Antlr4.Runtime.Tree.ITerminalNode)')
+ - [VisitValueObject(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitValueObject-AdaptiveCardsTemplateParser-ValueObjectContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitValueObject(AdaptiveCardsTemplateParser.ValueObjectContext)')
+ - [VisitValueTemplateExpression(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitValueTemplateExpression-AdaptiveCardsTemplateParser-ValueTemplateExpressionContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitValueTemplateExpression(AdaptiveCardsTemplateParser.ValueTemplateExpressionContext)')
+ - [VisitValueTemplateString(context)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-VisitValueTemplateString-AdaptiveCardsTemplateParser-ValueTemplateStringContext- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.VisitValueTemplateString(AdaptiveCardsTemplateParser.ValueTemplateStringContext)')
+ - [getTemplateVisitorWarnings()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-getTemplateVisitorWarnings 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.getTemplateVisitorWarnings')
+- [AdaptiveTemplateException](#T-AdaptiveCards-Templating-AdaptiveTemplateException 'AdaptiveCards.Templating.AdaptiveTemplateException')
+ - [#ctor()](#M-AdaptiveCards-Templating-AdaptiveTemplateException-#ctor 'AdaptiveCards.Templating.AdaptiveTemplateException.#ctor')
+ - [#ctor(message)](#M-AdaptiveCards-Templating-AdaptiveTemplateException-#ctor-System-String- 'AdaptiveCards.Templating.AdaptiveTemplateException.#ctor(System.String)')
+ - [#ctor(message,innerException)](#M-AdaptiveCards-Templating-AdaptiveTemplateException-#ctor-System-String,System-Exception- 'AdaptiveCards.Templating.AdaptiveTemplateException.#ctor(System.String,System.Exception)')
+- [DataContext](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext')
+ - [#ctor(jtoken,rootDataContext,hostDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-#ctor-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.#ctor(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
+ - [#ctor(text,rootDataContext,hostDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-#ctor-System-String,Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.#ctor(System.String,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
+ - [GetDataContextAtIndex(index)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-GetDataContextAtIndex-System-Int32- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.GetDataContextAtIndex(System.Int32)')
+ - [Init(jtoken,rootDataContext,hostDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-Init-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.Init(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
+- [EvaluationContext](#T-AdaptiveCards-Templating-EvaluationContext 'AdaptiveCards.Templating.EvaluationContext')
+ - [#ctor()](#M-AdaptiveCards-Templating-EvaluationContext-#ctor 'AdaptiveCards.Templating.EvaluationContext.#ctor')
+ - [#ctor(rootData,hostData)](#M-AdaptiveCards-Templating-EvaluationContext-#ctor-System-Object,System-Object- 'AdaptiveCards.Templating.EvaluationContext.#ctor(System.Object,System.Object)')
+ - [Host](#P-AdaptiveCards-Templating-EvaluationContext-Host 'AdaptiveCards.Templating.EvaluationContext.Host')
+ - [Root](#P-AdaptiveCards-Templating-EvaluationContext-Root 'AdaptiveCards.Templating.EvaluationContext.Root')
+- [EvaluationResult](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-EvaluationResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.EvaluationResult')
+ - [EvaluatedToFalse](#F-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-EvaluationResult-EvaluatedToFalse 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.EvaluationResult.EvaluatedToFalse')
+ - [EvaluatedToTrue](#F-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-EvaluationResult-EvaluatedToTrue 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.EvaluationResult.EvaluatedToTrue')
+ - [NotEvaluated](#F-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-EvaluationResult-NotEvaluated 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.EvaluationResult.NotEvaluated')
+- [IAdaptiveCardsTemplateParserVisitor\`1](#T-IAdaptiveCardsTemplateParserVisitor`1 'IAdaptiveCardsTemplateParserVisitor`1')
+ - [VisitArray(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitArray-AdaptiveCardsTemplateParser-ArrayContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitArray(AdaptiveCardsTemplateParser.ArrayContext)')
+ - [VisitJson(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitJson-AdaptiveCardsTemplateParser-JsonContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitJson(AdaptiveCardsTemplateParser.JsonContext)')
+ - [VisitJsonPair(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitJsonPair-AdaptiveCardsTemplateParser-JsonPairContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitJsonPair(AdaptiveCardsTemplateParser.JsonPairContext)')
+ - [VisitObj(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitObj-AdaptiveCardsTemplateParser-ObjContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitObj(AdaptiveCardsTemplateParser.ObjContext)')
+ - [VisitTemplateData(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitTemplateData-AdaptiveCardsTemplateParser-TemplateDataContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitTemplateData(AdaptiveCardsTemplateParser.TemplateDataContext)')
+ - [VisitTemplateRootData(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitTemplateRootData-AdaptiveCardsTemplateParser-TemplateRootDataContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitTemplateRootData(AdaptiveCardsTemplateParser.TemplateRootDataContext)')
+ - [VisitTemplateStringWithRoot(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitTemplateStringWithRoot-AdaptiveCardsTemplateParser-TemplateStringWithRootContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitTemplateStringWithRoot(AdaptiveCardsTemplateParser.TemplateStringWithRootContext)')
+ - [VisitTemplateWhen(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitTemplateWhen-AdaptiveCardsTemplateParser-TemplateWhenContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitTemplateWhen(AdaptiveCardsTemplateParser.TemplateWhenContext)')
+ - [VisitTemplatedString(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitTemplatedString-AdaptiveCardsTemplateParser-TemplatedStringContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitTemplatedString(AdaptiveCardsTemplateParser.TemplatedStringContext)')
+ - [VisitValueArray(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueArray-AdaptiveCardsTemplateParser-ValueArrayContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueArray(AdaptiveCardsTemplateParser.ValueArrayContext)')
+ - [VisitValueFalse(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueFalse-AdaptiveCardsTemplateParser-ValueFalseContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueFalse(AdaptiveCardsTemplateParser.ValueFalseContext)')
+ - [VisitValueNull(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueNull-AdaptiveCardsTemplateParser-ValueNullContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueNull(AdaptiveCardsTemplateParser.ValueNullContext)')
+ - [VisitValueNumber(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueNumber-AdaptiveCardsTemplateParser-ValueNumberContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueNumber(AdaptiveCardsTemplateParser.ValueNumberContext)')
+ - [VisitValueObject(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueObject-AdaptiveCardsTemplateParser-ValueObjectContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueObject(AdaptiveCardsTemplateParser.ValueObjectContext)')
+ - [VisitValueString(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueString-AdaptiveCardsTemplateParser-ValueStringContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueString(AdaptiveCardsTemplateParser.ValueStringContext)')
+ - [VisitValueTemplateExpression(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueTemplateExpression-AdaptiveCardsTemplateParser-ValueTemplateExpressionContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueTemplateExpression(AdaptiveCardsTemplateParser.ValueTemplateExpressionContext)')
+ - [VisitValueTemplateString(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueTemplateString-AdaptiveCardsTemplateParser-ValueTemplateStringContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueTemplateString(AdaptiveCardsTemplateParser.ValueTemplateStringContext)')
+ - [VisitValueTemplateStringWithRoot(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueTemplateStringWithRoot-AdaptiveCardsTemplateParser-ValueTemplateStringWithRootContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueTemplateStringWithRoot(AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext)')
+ - [VisitValueTrue(context)](#M-IAdaptiveCardsTemplateParserVisitor`1-VisitValueTrue-AdaptiveCardsTemplateParser-ValueTrueContext- 'IAdaptiveCardsTemplateParserVisitor`1.VisitValueTrue(AdaptiveCardsTemplateParser.ValueTrueContext)')
+
+
+## AdaptiveCardTemplate `type`
+
+##### Namespace
+
+AdaptiveCards.Templating
+
+##### Summary
+
+The main `AdaptiveCardTemplate` class
+Contain all methods for performaing data binding to `AdaptiveCardTemplate`
+
+
+### #ctor(jsonTemplate) `constructor`
+
+##### Summary
+
+Creates an instance of AdaptiveCardTemplate
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| jsonTemplate | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | string in json or seriazable object |
+
+##### Example
+
+```
+ var jsonTemplate = "
+ {
+ "type": "AdaptiveCard",
+ "version": "1.0",
+ "body": [
+ {
+ "type": "TextBlock",
+ "text": "Hello ${person.firstName}"
+ }
+ ]
+}"
+ var template = new AdaptiveCardTemplate(jsonTemplate);
+
+```
+
+##### Remarks
+
+Once created, it will contain a parsed tree based on jsonTemplate
+
+Data is bound by calling `Expand` on the object
+
+The intance can be rebound with different data by calling `Expand`
+
+[Expand](#M-AdaptiveCards-Templating-AdaptiveCardTemplate-Expand-AdaptiveCards-Templating-EvaluationContext,System-Func{System-String,System-Object}- 'AdaptiveCards.Templating.AdaptiveCardTemplate.Expand(AdaptiveCards.Templating.EvaluationContext,System.Func{System.String,System.Object})')
+
+
+### Expand(context,nullSubstitutionOption) `method`
+
+##### Summary
+
+Bind data in `context` to the instance of AdaptiveCardTemplate
+
+##### Returns
+
+json as string
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCards.Templating.EvaluationContext](#T-AdaptiveCards-Templating-EvaluationContext 'AdaptiveCards.Templating.EvaluationContext') | provides data context |
+| nullSubstitutionOption | [System.Func{System.String,System.Object}](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Func 'System.Func{System.String,System.Object}') | defines behavior when no suitable data is found for a template entry |
+
+##### Example
+
+```
+var template = new AdaptiveCardTemplate(jsonTemplate);
+var context = new AdaptiveCardsEvaluationContext(jsonData);
+template.Expand(context);
+```
+
+##### Remarks
+
+Data can be also inlined in AdaptiveCardTemplate payload
+
+Expand can be called multiple times with different or same `context`
+
+Returned string can be invalid AdaptiveCards, such validation will be performed by AdaptiveCards Parser
+
+`nullSubstitutionOption` defines behavior when no suitable data is found for a template entry
+
+Default behavior is leaving templated string unchanged
+
+##### See Also
+
+- [AdaptiveCards.Templating.EvaluationContext](#T-AdaptiveCards-Templating-EvaluationContext 'AdaptiveCards.Templating.EvaluationContext')
+
+
+### Expand(rootData,nullSubstitutionOption) `method`
+
+##### Summary
+
+Create a root data context using `rootData`, and bind it to the instance of AdaptiveCardTemplate
+
+##### Returns
+
+json as string
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| rootData | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Serializable object or a string in valid json format that will be used as data context |
+| nullSubstitutionOption | [System.Func{System.String,System.Object}](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Func 'System.Func{System.String,System.Object}') | Defines behavior when no suitable data is found for a template entry |
+
+##### Example
+
+```
+var template = new AdaptiveCardTemplate(jsonTemplate);
+template.Expand(rootData);
+```
+
+##### Remarks
+
+Data can be also inlined in AdaptiveCardTemplate payload
+
+Expand can be called multiple times with different or same `rootData`
+
+Returned string can be invalid AdaptiveCards, such validation will be performed by AdaptiveCards Parser
+
+`nullSubstitutionOption` defines behavior when no suitable data is found for a template entry
+
+Default behavior is leaving templated string unchanged
+
+##### See Also
+
+- [AdaptiveCards.Templating.EvaluationContext](#T-AdaptiveCards-Templating-EvaluationContext 'AdaptiveCards.Templating.EvaluationContext')
+
+
+### GetLastTemplateExpansionWarnings() `method`
+
+##### Summary
+
+Getter method for the array of warning strings from the last template expansion
+
+##### Returns
+
+ArrayList
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCardsTemplateParserBaseVisitor\`1 `type`
+
+##### Namespace
+
+
+
+##### Summary
+
+This class provides an empty implementation of [IAdaptiveCardsTemplateParserVisitor\`1](#T-IAdaptiveCardsTemplateParserVisitor`1 'IAdaptiveCardsTemplateParserVisitor`1'),
+which can be extended to create a visitor which only needs to handle a subset
+of the available methods.
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| Result | The return type of the visit operation. |
+
+
+### VisitArray(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by [array](#M-AdaptiveCardsTemplateParser-array 'AdaptiveCardsTemplateParser.array').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ArrayContext](#T-AdaptiveCardsTemplateParser-ArrayContext 'AdaptiveCardsTemplateParser.ArrayContext') | The parse tree. |
+
+
+### VisitJson(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by [json](#M-AdaptiveCardsTemplateParser-json 'AdaptiveCardsTemplateParser.json').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.JsonContext](#T-AdaptiveCardsTemplateParser-JsonContext 'AdaptiveCardsTemplateParser.JsonContext') | The parse tree. |
+
+
+### VisitJsonPair(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `jsonPair`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.JsonPairContext](#T-AdaptiveCardsTemplateParser-JsonPairContext 'AdaptiveCardsTemplateParser.JsonPairContext') | The parse tree. |
+
+
+### VisitObj(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by [obj](#M-AdaptiveCardsTemplateParser-obj 'AdaptiveCardsTemplateParser.obj').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ObjContext](#T-AdaptiveCardsTemplateParser-ObjContext 'AdaptiveCardsTemplateParser.ObjContext') | The parse tree. |
+
+
+### VisitTemplateData(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateData`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateDataContext](#T-AdaptiveCardsTemplateParser-TemplateDataContext 'AdaptiveCardsTemplateParser.TemplateDataContext') | The parse tree. |
+
+
+### VisitTemplateRootData(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateRootData`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateRootDataContext](#T-AdaptiveCardsTemplateParser-TemplateRootDataContext 'AdaptiveCardsTemplateParser.TemplateRootDataContext') | The parse tree. |
+
+
+### VisitTemplateStringWithRoot(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateStringWithRoot`
+labeled alternative in [templateRoot](#M-AdaptiveCardsTemplateParser-templateRoot 'AdaptiveCardsTemplateParser.templateRoot').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateStringWithRootContext](#T-AdaptiveCardsTemplateParser-TemplateStringWithRootContext 'AdaptiveCardsTemplateParser.TemplateStringWithRootContext') | The parse tree. |
+
+
+### VisitTemplateWhen(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateWhen`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateWhenContext](#T-AdaptiveCardsTemplateParser-TemplateWhenContext 'AdaptiveCardsTemplateParser.TemplateWhenContext') | The parse tree. |
+
+
+### VisitTemplatedString(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templatedString`
+labeled alternative in [templateString](#M-AdaptiveCardsTemplateParser-templateString 'AdaptiveCardsTemplateParser.templateString').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplatedStringContext](#T-AdaptiveCardsTemplateParser-TemplatedStringContext 'AdaptiveCardsTemplateParser.TemplatedStringContext') | The parse tree. |
+
+
+### VisitValueArray(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueArray`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueArrayContext](#T-AdaptiveCardsTemplateParser-ValueArrayContext 'AdaptiveCardsTemplateParser.ValueArrayContext') | The parse tree. |
+
+
+### VisitValueFalse(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueFalse`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueFalseContext](#T-AdaptiveCardsTemplateParser-ValueFalseContext 'AdaptiveCardsTemplateParser.ValueFalseContext') | The parse tree. |
+
+
+### VisitValueNull(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueNull`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueNullContext](#T-AdaptiveCardsTemplateParser-ValueNullContext 'AdaptiveCardsTemplateParser.ValueNullContext') | The parse tree. |
+
+
+### VisitValueNumber(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueNumber`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueNumberContext](#T-AdaptiveCardsTemplateParser-ValueNumberContext 'AdaptiveCardsTemplateParser.ValueNumberContext') | The parse tree. |
+
+
+### VisitValueObject(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueObject`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueObjectContext](#T-AdaptiveCardsTemplateParser-ValueObjectContext 'AdaptiveCardsTemplateParser.ValueObjectContext') | The parse tree. |
+
+
+### VisitValueString(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueString`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueStringContext](#T-AdaptiveCardsTemplateParser-ValueStringContext 'AdaptiveCardsTemplateParser.ValueStringContext') | The parse tree. |
+
+
+### VisitValueTemplateExpression(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTemplateExpression`
+labeled alternative in [templateExpression](#M-AdaptiveCardsTemplateParser-templateExpression 'AdaptiveCardsTemplateParser.templateExpression').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateExpressionContext](#T-AdaptiveCardsTemplateParser-ValueTemplateExpressionContext 'AdaptiveCardsTemplateParser.ValueTemplateExpressionContext') | The parse tree. |
+
+
+### VisitValueTemplateString(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTemplateString`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateStringContext](#T-AdaptiveCardsTemplateParser-ValueTemplateStringContext 'AdaptiveCardsTemplateParser.ValueTemplateStringContext') | The parse tree. |
+
+
+### VisitValueTemplateStringWithRoot(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTemplateStringWithRoot`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext](#T-AdaptiveCardsTemplateParser-ValueTemplateStringWithRootContext 'AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext') | The parse tree. |
+
+
+### VisitValueTrue(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTrue`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+The default implementation returns the result of calling [VisitChildren](#M-Antlr4-Runtime-Tree-AbstractParseTreeVisitor`1-VisitChildren-Antlr4-Runtime-Tree-IRuleNode- 'Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(Antlr4.Runtime.Tree.IRuleNode)')
+on `context`.
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTrueContext](#T-AdaptiveCardsTemplateParser-ValueTrueContext 'AdaptiveCardsTemplateParser.ValueTrueContext') | The parse tree. |
+
+
+## AdaptiveCardsTemplateResult `type`
+
+##### Namespace
+
+AdaptiveCards.Templating
+
+##### Summary
+
+Used by AdaptiveCardsTemplateVisitorClass to return result from its visitor methods
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+constructor for `AdaptiveCardsTemplateResult` class
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(capturedString) `constructor`
+
+##### Summary
+
+constructs a result instance with `capturedString`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| capturedString | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+
+
+### #ctor(capturedString,predicate) `constructor`
+
+##### Summary
+
+construct a result instance for $when expression
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| capturedString | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | result string after parsing $when expression |
+| predicate | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | predicate of $when |
+
+
+### HasItBeenDropped `property`
+
+##### Summary
+
+Indicates that parsing Context has been dropped
+
+
+### IsWhen `property`
+
+##### Summary
+
+Indicates that this instance captures the result of $when
+
+
+### Predicate `property`
+
+##### Summary
+
+Predicate of $when expression
+
+
+### WhenEvaluationResult `property`
+
+##### Summary
+
+Indicates the result of evaluation result of $when expression
+
+
+### Append(capturedString) `method`
+
+##### Summary
+
+Appends `capturedString` to its result
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| capturedString | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+
+
+### Append(result) `method`
+
+##### Summary
+
+Appends another `result` instance to its result
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| result | [AdaptiveCards.Templating.AdaptiveCardsTemplateResult](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult') | |
+
+
+### ToString() `method`
+
+##### Summary
+
+returns string representation
+
+##### Returns
+
+`string`
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCardsTemplateSimpleObjectMemory `type`
+
+##### Namespace
+
+AdaptiveCards.Templating
+
+##### Summary
+
+Implements AEL's IMemory interface
+
+
+### #ctor(memory) `constructor`
+
+##### Summary
+
+Simple implementation of AEL.Memory.IMemory
+It serves as an entry points to additional customazation and optimazation
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| memory | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | |
+
+
+### SetValue(path,value) `method`
+
+##### Summary
+
+Set value to a given path
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| path | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | Memory path |
+| value | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Value to set |
+
+
+### TryGetValue(path,value) `method`
+
+##### Summary
+
+Try get value from a given path.
+Expansion of the template is done in the context of serialized json payload,
+However, the memory that bounds to the template is in deserialized form.
+This is normally not an issue for types other than string
+This override serializes the value if it's string
+
+##### Returns
+
+True if the memory contains an element with the specified key; otherwise, false
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| path | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | Given path |
+| value | [System.Object@](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object@ 'System.Object@') | Resolved value |
+
+
+### Version() `method`
+
+##### Summary
+
+
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveCardsTemplateVisitor `type`
+
+##### Namespace
+
+AdaptiveCards.Templating
+
+##### Summary
+
+an intance of this class is used in visiting a parse tree that's been generated by antlr4 parser
+
+
+### #ctor(nullSubstitutionOption,data,hostData) `constructor`
+
+##### Summary
+
+a constructor for AdaptiveCardsTemplateVisitor
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| nullSubstitutionOption | [System.Func{System.String,System.Object}](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Func 'System.Func{System.String,System.Object}') | it will called upon when AEL finds no suitable functions registered in given AEL expression during evaluation the expression |
+| data | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json data as string which will be set as a root data context |
+| hostData | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json data as string which will be set as the host data context |
+
+
+### Expand(unboundString,data,isTemplatedString,options) `method`
+
+##### Summary
+
+Expands template expression using Adaptive Expression Library (AEL)
+
+##### Returns
+
+`string`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| unboundString | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+| data | [AdaptiveExpressions.Memory.IMemory](#T-AdaptiveExpressions-Memory-IMemory 'AdaptiveExpressions.Memory.IMemory') | |
+| isTemplatedString | [System.Boolean](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Boolean 'System.Boolean') | |
+| options | [AdaptiveExpressions.Options](#T-AdaptiveExpressions-Options 'AdaptiveExpressions.Options') | |
+
+
+### ExpandTemplatedString(node,isExpanded) `method`
+
+##### Summary
+
+Visitor method for `templatdString` label in `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+`AdaptiveCardsTemplateResult`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| node | [Antlr4.Runtime.Tree.ITerminalNode](#T-Antlr4-Runtime-Tree-ITerminalNode 'Antlr4.Runtime.Tree.ITerminalNode') | |
+| isExpanded | [System.Boolean](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Boolean 'System.Boolean') | |
+
+
+### GetCurrentDataContext() `method`
+
+##### Summary
+
+returns current data context
+
+##### Returns
+
+[DataContext](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext')
+
+##### Parameters
+
+This method has no parameters.
+
+
+### HasDataContext() `method`
+
+##### Summary
+
+Checks if there is a data context
+
+##### Returns
+
+
+
+##### Parameters
+
+This method has no parameters.
+
+
+### IsTrue(predicate,data) `method`
+
+##### Summary
+
+Evaluates a predicate
+
+##### Returns
+
+`true` if predicate is evaluated to `true`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| predicate | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+| data | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | |
+
+
+### PopDataContext() `method`
+
+##### Summary
+
+Pops a data context
+
+##### Parameters
+
+This method has no parameters.
+
+
+### PushDataContext(stringToParse,rootDataContext) `method`
+
+##### Summary
+
+creates [JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') object based on stringToParse, and pushes the object onto a stack
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| stringToParse | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | |
+| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | current root data context |
+
+
+### PushDataContext(context) `method`
+
+##### Summary
+
+push a `DataContext` onto a stack
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext') | `context` to push |
+
+
+### PushTemplatedDataContext(jpath) `method`
+
+##### Summary
+
+Given a `jpath`, create a new [DataContext](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext') based on a current [DataContext](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext')
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| jpath | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | a json selection path |
+
+
+### VisitArray(context) `method`
+
+##### Summary
+
+Visit method for `array` grammar in `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+AdaptiveCardsTemplateResult
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ArrayContext](#T-AdaptiveCardsTemplateParser-ArrayContext 'AdaptiveCardsTemplateParser.ArrayContext') | |
+
+
+### VisitChildren(node) `method`
+
+##### Summary
+
+Visits each children in IRuleNode
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| node | [Antlr4.Runtime.Tree.IRuleNode](#T-Antlr4-Runtime-Tree-IRuleNode 'Antlr4.Runtime.Tree.IRuleNode') | |
+
+
+### VisitObj(context) `method`
+
+##### Summary
+
+Visitor method for `obj` grammar rule `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+`AdaptiveCardsTemplateResult`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ObjContext](#T-AdaptiveCardsTemplateParser-ObjContext 'AdaptiveCardsTemplateParser.ObjContext') | |
+
+
+### VisitTemplateData(context) `method`
+
+##### Summary
+
+antlr runtime will call this method when parse tree's context is [TemplateDataContext](#T-AdaptiveCardsTemplateParser-TemplateDataContext 'AdaptiveCardsTemplateParser.TemplateDataContext')
+
+It is used in parsing a pair that has $data as key
+
+It creates new data context, and set it as current memory scope
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateDataContext](#T-AdaptiveCardsTemplateParser-TemplateDataContext 'AdaptiveCardsTemplateParser.TemplateDataContext') | |
+
+
+### VisitTemplateRootData(context) `method`
+
+##### Summary
+
+Visitor method for `templateRootData` grammar rule in `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+[AdaptiveCardsTemplateResult](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult')
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateRootDataContext](#T-AdaptiveCardsTemplateParser-TemplateRootDataContext 'AdaptiveCardsTemplateParser.TemplateRootDataContext') | |
+
+
+### VisitTemplateStringWithRoot(context) `method`
+
+##### Summary
+
+Visitor method for `templateRoot` grammar in `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+[AdaptiveCardsTemplateResult](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult')
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateStringWithRootContext](#T-AdaptiveCardsTemplateParser-TemplateStringWithRootContext 'AdaptiveCardsTemplateParser.TemplateStringWithRootContext') | |
+
+
+### VisitTemplateWhen(context) `method`
+
+##### Summary
+
+return the parsed result of $when from pair context
+
+##### Returns
+
+
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateWhenContext](#T-AdaptiveCardsTemplateParser-TemplateWhenContext 'AdaptiveCardsTemplateParser.TemplateWhenContext') | |
+
+
+### VisitTerminal(node) `method`
+
+##### Summary
+
+Visitor method for `ITernminalNode`
+
+collects token as string and expand template if needed
+
+##### Returns
+
+`AdaptiveCardsTemplateResult`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| node | [Antlr4.Runtime.Tree.ITerminalNode](#T-Antlr4-Runtime-Tree-ITerminalNode 'Antlr4.Runtime.Tree.ITerminalNode') | |
+
+
+### VisitValueObject(context) `method`
+
+##### Summary
+
+Visitor method for `valueObject` grammar rule `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+`AdaptiveCardsTemplateResult`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueObjectContext](#T-AdaptiveCardsTemplateParser-ValueObjectContext 'AdaptiveCardsTemplateParser.ValueObjectContext') | |
+
+
+### VisitValueTemplateExpression(context) `method`
+
+##### Summary
+
+Visitor method for `valueTemplateExpresssion` grammar rule `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+AdaptiveCardsTemplateResult
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateExpressionContext](#T-AdaptiveCardsTemplateParser-ValueTemplateExpressionContext 'AdaptiveCardsTemplateParser.ValueTemplateExpressionContext') | |
+
+##### Remarks
+
+parsed string has a form of "$when" : ${}
+
+
+### VisitValueTemplateString(context) `method`
+
+##### Summary
+
+Visitor method for `valueTemplateString` grammar rule `AdaptiveCardsTemplateParser.g4`
+
+##### Returns
+
+`AdaptiveCardsTemplateResult`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateStringContext](#T-AdaptiveCardsTemplateParser-ValueTemplateStringContext 'AdaptiveCardsTemplateParser.ValueTemplateStringContext') | |
+
+
+### getTemplateVisitorWarnings() `method`
+
+##### Summary
+
+Getter for templateVisitorWarnings
+
+##### Returns
+
+ArrayList
+
+##### Parameters
+
+This method has no parameters.
+
+
+## AdaptiveTemplateException `type`
+
+##### Namespace
+
+AdaptiveCards.Templating
+
+##### Summary
+
+AdaptiveCardTemplate Library's Exception class
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+Default constructor
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(message) `constructor`
+
+##### Summary
+
+Constructor that takes single argument that is exception message
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| message | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The error message that explains the reason for the exception |
+
+
+### #ctor(message,innerException) `constructor`
+
+##### Summary
+
+Constructor that takes message and inner exception to pass
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| message | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The error message that explains the reason for the exception |
+| innerException | [System.Exception](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Exception 'System.Exception') | The exception that is the cause of the current exception |
+
+
+## DataContext `type`
+
+##### Namespace
+
+AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor
+
+##### Summary
+
+maintains data context
+
+
+### #ctor(jtoken,rootDataContext,hostDataContext) `constructor`
+
+##### Summary
+
+constructs a data context of which current data is jtoken
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| jtoken | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | new data to kept as data context |
+| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | root data context |
+| hostDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | optional host data context |
+
+
+### #ctor(text,rootDataContext,hostDataContext) `constructor`
+
+##### Summary
+
+overload contructor that takes `text` which is `string`
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json in string |
+| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | a root data context |
+| hostDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | optional host data context |
+
+##### Exceptions
+
+| Name | Description |
+| ---- | ----------- |
+| [Newtonsoft.Json.JsonException](#T-Newtonsoft-Json-JsonException 'Newtonsoft.Json.JsonException') | `JToken.Parse(text)` can throw JsonException if `text` is invalid json |
+
+
+### GetDataContextAtIndex(index) `method`
+
+##### Summary
+
+retrieve a [JObject](#T-Newtonsoft-Json-Linq-JObject 'Newtonsoft.Json.Linq.JObject') from this DataContext instance if [JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') is a [JArray](#T-Newtonsoft-Json-Linq-JArray 'Newtonsoft.Json.Linq.JArray') at `index`
+
+##### Returns
+
+[JObject](#T-Newtonsoft-Json-Linq-JObject 'Newtonsoft.Json.Linq.JObject') at`index` of a [JArray](#T-Newtonsoft-Json-Linq-JArray 'Newtonsoft.Json.Linq.JArray')
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| index | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | |
+
+
+### Init(jtoken,rootDataContext,hostDataContext) `method`
+
+##### Summary
+
+Initializer method that takes jtoken and root data context to initialize a data context object
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| jtoken | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | current data context |
+| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | root data context |
+| hostDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | optional host data context |
+
+
+## EvaluationContext `type`
+
+##### Namespace
+
+AdaptiveCards.Templating
+
+##### Summary
+
+Provides Data Context to AdaptiveCardsTemplate Parser
+
+
+### #ctor() `constructor`
+
+##### Summary
+
+default consturctor
+
+##### Parameters
+
+This constructor has no parameters.
+
+
+### #ctor(rootData,hostData) `constructor`
+
+##### Summary
+
+constructor for `EvaluationContext` that takes one required argument used for root data context and one optional argument supplying host data
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| rootData | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Data to use while binding |
+| hostData | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Data supplied by the host for use while binding |
+
+
+### Host `property`
+
+##### Summary
+
+Provides Host Data Context
+
+##### Example
+
+```
+
+ string jsonData = @"{
+ ""person"": {
+ ""firstName"": ""Hello"",
+ ""lastName"": ""World""
+ }
+ }";
+ string hostData = @"{
+ ""applicationName"": ""Contoso AdaptiveCards Host",
+ ""platform"": ""mobile""
+ }";
+ var context = new EvaluationContext()
+ {
+ Root = jsonData,
+ Host = hostData
+ };
+
+```
+
+##### Remarks
+
+Typically this is supplied by the host application providing additional context for template binding. For example, the host might supply language or theming information that the template can use for layout.
+
+
+### Root `property`
+
+##### Summary
+
+Provides Root Data Context
+
+##### Example
+
+```
+
+ string jsonData = @"{
+ ""person"": {
+ ""firstName"": ""Hello"",
+ ""lastName"": ""World""
+ }
+ }";
+ var context = new EvaluationContext()
+ {
+ Root = jsonData
+ };
+
+```
+
+
+## EvaluationResult `type`
+
+##### Namespace
+
+AdaptiveCards.Templating.AdaptiveCardsTemplateResult
+
+##### Summary
+
+Indicates evaluation result of $when expression
+
+
+### EvaluatedToFalse `constants`
+
+##### Summary
+
+Expression evaluated false
+
+
+### EvaluatedToTrue `constants`
+
+##### Summary
+
+Expression evaluated true
+
+
+### NotEvaluated `constants`
+
+##### Summary
+
+Expression has not been evaluated
+
+
+## IAdaptiveCardsTemplateParserVisitor\`1 `type`
+
+##### Namespace
+
+
+
+##### Summary
+
+This interface defines a complete generic visitor for a parse tree produced
+by [AdaptiveCardsTemplateParser](#T-AdaptiveCardsTemplateParser 'AdaptiveCardsTemplateParser').
+
+##### Generic Types
+
+| Name | Description |
+| ---- | ----------- |
+| Result | The return type of the visit operation. |
+
+
+### VisitArray(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by [array](#M-AdaptiveCardsTemplateParser-array 'AdaptiveCardsTemplateParser.array').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ArrayContext](#T-AdaptiveCardsTemplateParser-ArrayContext 'AdaptiveCardsTemplateParser.ArrayContext') | The parse tree. |
+
+
+### VisitJson(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by [json](#M-AdaptiveCardsTemplateParser-json 'AdaptiveCardsTemplateParser.json').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.JsonContext](#T-AdaptiveCardsTemplateParser-JsonContext 'AdaptiveCardsTemplateParser.JsonContext') | The parse tree. |
+
+
+### VisitJsonPair(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `jsonPair`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.JsonPairContext](#T-AdaptiveCardsTemplateParser-JsonPairContext 'AdaptiveCardsTemplateParser.JsonPairContext') | The parse tree. |
+
+
+### VisitObj(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by [obj](#M-AdaptiveCardsTemplateParser-obj 'AdaptiveCardsTemplateParser.obj').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ObjContext](#T-AdaptiveCardsTemplateParser-ObjContext 'AdaptiveCardsTemplateParser.ObjContext') | The parse tree. |
+
+
+### VisitTemplateData(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateData`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateDataContext](#T-AdaptiveCardsTemplateParser-TemplateDataContext 'AdaptiveCardsTemplateParser.TemplateDataContext') | The parse tree. |
+
+
+### VisitTemplateRootData(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateRootData`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateRootDataContext](#T-AdaptiveCardsTemplateParser-TemplateRootDataContext 'AdaptiveCardsTemplateParser.TemplateRootDataContext') | The parse tree. |
+
+
+### VisitTemplateStringWithRoot(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateStringWithRoot`
+labeled alternative in [templateRoot](#M-AdaptiveCardsTemplateParser-templateRoot 'AdaptiveCardsTemplateParser.templateRoot').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateStringWithRootContext](#T-AdaptiveCardsTemplateParser-TemplateStringWithRootContext 'AdaptiveCardsTemplateParser.TemplateStringWithRootContext') | The parse tree. |
+
+
+### VisitTemplateWhen(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templateWhen`
+labeled alternative in [pair](#M-AdaptiveCardsTemplateParser-pair 'AdaptiveCardsTemplateParser.pair').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplateWhenContext](#T-AdaptiveCardsTemplateParser-TemplateWhenContext 'AdaptiveCardsTemplateParser.TemplateWhenContext') | The parse tree. |
+
+
+### VisitTemplatedString(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `templatedString`
+labeled alternative in [templateString](#M-AdaptiveCardsTemplateParser-templateString 'AdaptiveCardsTemplateParser.templateString').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.TemplatedStringContext](#T-AdaptiveCardsTemplateParser-TemplatedStringContext 'AdaptiveCardsTemplateParser.TemplatedStringContext') | The parse tree. |
+
+
+### VisitValueArray(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueArray`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueArrayContext](#T-AdaptiveCardsTemplateParser-ValueArrayContext 'AdaptiveCardsTemplateParser.ValueArrayContext') | The parse tree. |
+
+
+### VisitValueFalse(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueFalse`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueFalseContext](#T-AdaptiveCardsTemplateParser-ValueFalseContext 'AdaptiveCardsTemplateParser.ValueFalseContext') | The parse tree. |
+
+
+### VisitValueNull(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueNull`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueNullContext](#T-AdaptiveCardsTemplateParser-ValueNullContext 'AdaptiveCardsTemplateParser.ValueNullContext') | The parse tree. |
+
+
+### VisitValueNumber(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueNumber`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueNumberContext](#T-AdaptiveCardsTemplateParser-ValueNumberContext 'AdaptiveCardsTemplateParser.ValueNumberContext') | The parse tree. |
+
+
+### VisitValueObject(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueObject`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueObjectContext](#T-AdaptiveCardsTemplateParser-ValueObjectContext 'AdaptiveCardsTemplateParser.ValueObjectContext') | The parse tree. |
+
+
+### VisitValueString(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueString`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueStringContext](#T-AdaptiveCardsTemplateParser-ValueStringContext 'AdaptiveCardsTemplateParser.ValueStringContext') | The parse tree. |
+
+
+### VisitValueTemplateExpression(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTemplateExpression`
+labeled alternative in [templateExpression](#M-AdaptiveCardsTemplateParser-templateExpression 'AdaptiveCardsTemplateParser.templateExpression').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateExpressionContext](#T-AdaptiveCardsTemplateParser-ValueTemplateExpressionContext 'AdaptiveCardsTemplateParser.ValueTemplateExpressionContext') | The parse tree. |
+
+
+### VisitValueTemplateString(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTemplateString`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateStringContext](#T-AdaptiveCardsTemplateParser-ValueTemplateStringContext 'AdaptiveCardsTemplateParser.ValueTemplateStringContext') | The parse tree. |
+
+
+### VisitValueTemplateStringWithRoot(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTemplateStringWithRoot`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext](#T-AdaptiveCardsTemplateParser-ValueTemplateStringWithRootContext 'AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext') | The parse tree. |
+
+
+### VisitValueTrue(context) `method`
+
+##### Summary
+
+Visit a parse tree produced by the `valueTrue`
+labeled alternative in [value](#M-AdaptiveCardsTemplateParser-value 'AdaptiveCardsTemplateParser.value').
+
+##### Parameters
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| context | [AdaptiveCardsTemplateParser.ValueTrueContext](#T-AdaptiveCardsTemplateParser-ValueTrueContext 'AdaptiveCardsTemplateParser.ValueTrueContext') | The parse tree. |
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardTemplate.cs b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardTemplate.cs
index b8cb6a8c45..777d610534 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardTemplate.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardTemplate.cs
@@ -96,21 +96,33 @@ public string Expand(EvaluationContext context, Func nullSubstit
return jsonTemplateString;
}
- string jsonData = "";
+ string rootJsonData = "";
+ if (context?.Root != null)
+ {
+ if (context.Root is string root)
+ {
+ rootJsonData = root;
+ }
+ else
+ {
+ rootJsonData = JsonConvert.SerializeObject(context.Root);
+ }
+ }
- if (context != null && context.Root != null)
+ string hostJsonData = "";
+ if (context?.Host != null)
{
- if (context.Root is string)
+ if (context.Host is string host)
{
- jsonData = context.Root as string;
+ hostJsonData = host;
}
else
{
- jsonData = JsonConvert.SerializeObject(context.Root);
+ hostJsonData = JsonConvert.SerializeObject(context.Host);
}
}
- AdaptiveCardsTemplateVisitor eval = new AdaptiveCardsTemplateVisitor(nullSubstitutionOption, jsonData);
+ AdaptiveCardsTemplateVisitor eval = new AdaptiveCardsTemplateVisitor(nullSubstitutionOption, rootJsonData, hostJsonData);
AdaptiveCardsTemplateResult result = eval.Visit(parseTree);
templateExpansionWarnings = eval.getTemplateVisitorWarnings();
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj
index ba9da1970d..e1a2cc3f4f 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj
@@ -1,7 +1,7 @@
- netstandard2.0
+ netstandard2.0
1.0.0
$(VersionSuffix)
Microsoft
@@ -11,7 +11,7 @@
© Microsoft Corporation. All rights reserved.
https://github.com/Microsoft/AdaptiveCards
https://adaptivecards.io/content/icons_blue/blue-48.png
- EULA-Windows.txt
+ MIT
https://github.com/microsoft/AdaptiveCards/issues/2448
true
$(DefineConstants);$(AdditionalConstants)
@@ -25,7 +25,6 @@
-
@@ -44,8 +43,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -54,7 +53,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.cs b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.cs
index 8fbf8ae216..8bd3131383 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.cs
@@ -1,14 +1,14 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// ANTLR Version: 4.8
+// ANTLR Version: 4.11.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
-// Generated from AdaptiveCardsTemplateLexer.g4 by ANTLR 4.8
+// Generated from AdaptiveCardsTemplateLexer.g4 by ANTLR 4.11.1
// Unreachable code detected
#pragma warning disable 0162
@@ -27,250 +27,149 @@
using Antlr4.Runtime.Misc;
using DFA = Antlr4.Runtime.Dfa.DFA;
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")]
+[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.11.1")]
[System.CLSCompliant(false)]
public partial class AdaptiveCardsTemplateLexer : Lexer {
- protected static DFA[] decisionToDFA;
- protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
- public const int
- COMMA=1, COLON=2, LCB=3, RCB=4, LSB=5, RSB=6, TRUE=7, FALSE=8, NULL=9,
- StringDeclOpen=10, NUMBER=11, WS=12, CLOSE=13, TEMPLATEDATA=14, TEMPLATEWHEN=15,
- JPATH=16, TEMPLATELITERAL=17, TEMPLATEROOT=18, STRING=19;
- public const int
- INSIDE=1;
- public static string[] channelNames = {
- "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
- };
+ protected static DFA[] decisionToDFA;
+ protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
+ public const int
+ COMMA=1, COLON=2, LCB=3, RCB=4, LSB=5, RSB=6, TRUE=7, FALSE=8, NULL=9,
+ StringDeclOpen=10, NUMBER=11, WS=12, CLOSE=13, TEMPLATEDATA=14, TEMPLATEWHEN=15,
+ JPATH=16, TEMPLATELITERAL=17, TEMPLATEROOT=18, STRING=19;
+ public const int
+ INSIDE=1;
+ public static string[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static string[] modeNames = {
+ "DEFAULT_MODE", "INSIDE"
+ };
+
+ public static readonly string[] ruleNames = {
+ "COMMA", "COLON", "LCB", "RCB", "LSB", "RSB", "TRUE", "FALSE", "NULL",
+ "StringDeclOpen", "NUMBER", "INT", "EXP", "WS", "CLOSE", "TEMPLATEDATA",
+ "TEMPLATEWHEN", "JPATH", "TEMPLATELITERAL", "TEMPLATEROOT", "STRING",
+ "ESC", "UNICODE", "HEX", "SAFECODEPOINT"
+ };
+
+
+ public AdaptiveCardsTemplateLexer(ICharStream input)
+ : this(input, Console.Out, Console.Error) { }
+
+ public AdaptiveCardsTemplateLexer(ICharStream input, TextWriter output, TextWriter errorOutput)
+ : base(input, output, errorOutput)
+ {
+ Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
+ }
+
+ private static readonly string[] _LiteralNames = {
+ null, "','", "':'", "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'null'",
+ null, null, null, null, "'$data'", "'$when'"
+ };
+ private static readonly string[] _SymbolicNames = {
+ null, "COMMA", "COLON", "LCB", "RCB", "LSB", "RSB", "TRUE", "FALSE", "NULL",
+ "StringDeclOpen", "NUMBER", "WS", "CLOSE", "TEMPLATEDATA", "TEMPLATEWHEN",
+ "JPATH", "TEMPLATELITERAL", "TEMPLATEROOT", "STRING"
+ };
+ public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
+
+ [NotNull]
+ public override IVocabulary Vocabulary
+ {
+ get
+ {
+ return DefaultVocabulary;
+ }
+ }
+
+ public override string GrammarFileName { get { return "AdaptiveCardsTemplateLexer.g4"; } }
+
+ public override string[] RuleNames { get { return ruleNames; } }
+
+ public override string[] ChannelNames { get { return channelNames; } }
+
+ public override string[] ModeNames { get { return modeNames; } }
+
+ public override int[] SerializedAtn { get { return _serializedATN; } }
+
+ static AdaptiveCardsTemplateLexer() {
+ decisionToDFA = new DFA[_ATN.NumberOfDecisions];
+ for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
+ decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
+ }
+ }
+ private static int[] _serializedATN = {
+ 4,0,19,196,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,
+ 6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,
+ 2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,
+ 2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,
+ 3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,
+ 1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,3,10,86,8,10,1,10,1,10,1,10,4,10,91,8,
+ 10,11,10,12,10,92,3,10,95,8,10,1,10,3,10,98,8,10,1,11,1,11,1,11,5,11,103,
+ 8,11,10,11,12,11,106,9,11,3,11,108,8,11,1,12,1,12,3,12,112,8,12,1,12,1,
+ 12,1,13,4,13,117,8,13,11,13,12,13,118,1,13,1,13,1,14,1,14,1,14,1,14,1,
+ 15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,
+ 17,1,17,1,17,1,17,4,17,145,8,17,11,17,12,17,146,1,17,1,17,1,18,1,18,1,
+ 18,1,18,1,18,5,18,156,8,18,10,18,12,18,159,9,18,1,18,1,18,1,19,1,19,1,
+ 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,4,20,175,8,20,11,20,12,
+ 20,176,1,20,3,20,180,8,20,1,21,1,21,1,21,3,21,185,8,21,1,22,1,22,1,22,
+ 1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,157,0,25,2,1,4,2,6,3,8,4,10,5,12,
+ 6,14,7,16,8,18,9,20,10,22,11,24,0,26,0,28,12,30,13,32,14,34,15,36,16,38,
+ 17,40,18,42,19,44,0,46,0,48,0,50,0,2,0,1,9,1,0,48,57,1,0,49,57,2,0,69,
+ 69,101,101,2,0,43,43,45,45,3,0,9,10,13,13,32,32,1,0,34,34,8,0,34,34,47,
+ 47,92,92,98,98,102,102,110,110,114,114,116,116,3,0,48,57,65,70,97,102,
+ 4,0,0,31,34,34,36,36,92,92,204,0,2,1,0,0,0,0,4,1,0,0,0,0,6,1,0,0,0,0,8,
+ 1,0,0,0,0,10,1,0,0,0,0,12,1,0,0,0,0,14,1,0,0,0,0,16,1,0,0,0,0,18,1,0,0,
+ 0,0,20,1,0,0,0,0,22,1,0,0,0,0,28,1,0,0,0,1,30,1,0,0,0,1,32,1,0,0,0,1,34,
+ 1,0,0,0,1,36,1,0,0,0,1,38,1,0,0,0,1,40,1,0,0,0,1,42,1,0,0,0,2,52,1,0,0,
+ 0,4,54,1,0,0,0,6,56,1,0,0,0,8,58,1,0,0,0,10,60,1,0,0,0,12,62,1,0,0,0,14,
+ 64,1,0,0,0,16,69,1,0,0,0,18,75,1,0,0,0,20,80,1,0,0,0,22,85,1,0,0,0,24,
+ 107,1,0,0,0,26,109,1,0,0,0,28,116,1,0,0,0,30,122,1,0,0,0,32,126,1,0,0,
+ 0,34,132,1,0,0,0,36,144,1,0,0,0,38,150,1,0,0,0,40,162,1,0,0,0,42,179,1,
+ 0,0,0,44,181,1,0,0,0,46,186,1,0,0,0,48,192,1,0,0,0,50,194,1,0,0,0,52,53,
+ 5,44,0,0,53,3,1,0,0,0,54,55,5,58,0,0,55,5,1,0,0,0,56,57,5,123,0,0,57,7,
+ 1,0,0,0,58,59,5,125,0,0,59,9,1,0,0,0,60,61,5,91,0,0,61,11,1,0,0,0,62,63,
+ 5,93,0,0,63,13,1,0,0,0,64,65,5,116,0,0,65,66,5,114,0,0,66,67,5,117,0,0,
+ 67,68,5,101,0,0,68,15,1,0,0,0,69,70,5,102,0,0,70,71,5,97,0,0,71,72,5,108,
+ 0,0,72,73,5,115,0,0,73,74,5,101,0,0,74,17,1,0,0,0,75,76,5,110,0,0,76,77,
+ 5,117,0,0,77,78,5,108,0,0,78,79,5,108,0,0,79,19,1,0,0,0,80,81,5,34,0,0,
+ 81,82,1,0,0,0,82,83,6,9,0,0,83,21,1,0,0,0,84,86,5,45,0,0,85,84,1,0,0,0,
+ 85,86,1,0,0,0,86,87,1,0,0,0,87,94,3,24,11,0,88,90,5,46,0,0,89,91,7,0,0,
+ 0,90,89,1,0,0,0,91,92,1,0,0,0,92,90,1,0,0,0,92,93,1,0,0,0,93,95,1,0,0,
+ 0,94,88,1,0,0,0,94,95,1,0,0,0,95,97,1,0,0,0,96,98,3,26,12,0,97,96,1,0,
+ 0,0,97,98,1,0,0,0,98,23,1,0,0,0,99,108,5,48,0,0,100,104,7,1,0,0,101,103,
+ 7,0,0,0,102,101,1,0,0,0,103,106,1,0,0,0,104,102,1,0,0,0,104,105,1,0,0,
+ 0,105,108,1,0,0,0,106,104,1,0,0,0,107,99,1,0,0,0,107,100,1,0,0,0,108,25,
+ 1,0,0,0,109,111,7,2,0,0,110,112,7,3,0,0,111,110,1,0,0,0,111,112,1,0,0,
+ 0,112,113,1,0,0,0,113,114,3,24,11,0,114,27,1,0,0,0,115,117,7,4,0,0,116,
+ 115,1,0,0,0,117,118,1,0,0,0,118,116,1,0,0,0,118,119,1,0,0,0,119,120,1,
+ 0,0,0,120,121,6,13,1,0,121,29,1,0,0,0,122,123,5,34,0,0,123,124,1,0,0,0,
+ 124,125,6,14,2,0,125,31,1,0,0,0,126,127,5,36,0,0,127,128,5,100,0,0,128,
+ 129,5,97,0,0,129,130,5,116,0,0,130,131,5,97,0,0,131,33,1,0,0,0,132,133,
+ 5,36,0,0,133,134,5,119,0,0,134,135,5,104,0,0,135,136,5,101,0,0,136,137,
+ 5,110,0,0,137,35,1,0,0,0,138,139,5,46,0,0,139,145,3,42,20,0,140,141,5,
+ 91,0,0,141,142,3,24,11,0,142,143,5,93,0,0,143,145,1,0,0,0,144,138,1,0,
+ 0,0,144,140,1,0,0,0,145,146,1,0,0,0,146,144,1,0,0,0,146,147,1,0,0,0,147,
+ 148,1,0,0,0,148,149,5,125,0,0,149,37,1,0,0,0,150,151,5,36,0,0,151,152,
+ 5,123,0,0,152,157,1,0,0,0,153,156,8,5,0,0,154,156,3,44,21,0,155,153,1,
+ 0,0,0,155,154,1,0,0,0,156,159,1,0,0,0,157,158,1,0,0,0,157,155,1,0,0,0,
+ 158,160,1,0,0,0,159,157,1,0,0,0,160,161,5,125,0,0,161,39,1,0,0,0,162,163,
+ 5,36,0,0,163,164,5,123,0,0,164,165,5,36,0,0,165,166,5,114,0,0,166,167,
+ 5,111,0,0,167,168,5,111,0,0,168,169,5,116,0,0,169,170,1,0,0,0,170,171,
+ 3,36,17,0,171,41,1,0,0,0,172,175,3,44,21,0,173,175,3,50,24,0,174,172,1,
+ 0,0,0,174,173,1,0,0,0,175,176,1,0,0,0,176,174,1,0,0,0,176,177,1,0,0,0,
+ 177,180,1,0,0,0,178,180,5,36,0,0,179,174,1,0,0,0,179,178,1,0,0,0,180,43,
+ 1,0,0,0,181,184,5,92,0,0,182,185,7,6,0,0,183,185,3,46,22,0,184,182,1,0,
+ 0,0,184,183,1,0,0,0,185,45,1,0,0,0,186,187,5,117,0,0,187,188,3,48,23,0,
+ 188,189,3,48,23,0,189,190,3,48,23,0,190,191,3,48,23,0,191,47,1,0,0,0,192,
+ 193,7,7,0,0,193,49,1,0,0,0,194,195,8,8,0,0,195,51,1,0,0,0,18,0,1,85,92,
+ 94,97,104,107,111,118,144,146,155,157,174,176,179,184,3,5,1,0,6,0,0,4,
+ 0,0
+ };
+
+ public static readonly ATN _ATN =
+ new ATNDeserializer().Deserialize(_serializedATN);
- public static string[] modeNames = {
- "DEFAULT_MODE", "INSIDE"
- };
- public static readonly string[] ruleNames = {
- "COMMA", "COLON", "LCB", "RCB", "LSB", "RSB", "TRUE", "FALSE", "NULL",
- "StringDeclOpen", "NUMBER", "INT", "EXP", "WS", "CLOSE", "TEMPLATEDATA",
- "TEMPLATEWHEN", "JPATH", "TEMPLATELITERAL", "TEMPLATEROOT", "STRING",
- "ESC", "UNICODE", "HEX", "SAFECODEPOINT"
- };
-
-
- public AdaptiveCardsTemplateLexer(ICharStream input)
- : this(input, Console.Out, Console.Error) { }
-
- public AdaptiveCardsTemplateLexer(ICharStream input, TextWriter output, TextWriter errorOutput)
- : base(input, output, errorOutput)
- {
- Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
- }
-
- private static readonly string[] _LiteralNames = {
- null, "','", "':'", "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'null'",
- null, null, null, null, "'$data'", "'$when'"
- };
- private static readonly string[] _SymbolicNames = {
- null, "COMMA", "COLON", "LCB", "RCB", "LSB", "RSB", "TRUE", "FALSE", "NULL",
- "StringDeclOpen", "NUMBER", "WS", "CLOSE", "TEMPLATEDATA", "TEMPLATEWHEN",
- "JPATH", "TEMPLATELITERAL", "TEMPLATEROOT", "STRING"
- };
- public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
-
- [NotNull]
- public override IVocabulary Vocabulary
- {
- get
- {
- return DefaultVocabulary;
- }
- }
-
- public override string GrammarFileName { get { return "AdaptiveCardsTemplateLexer.g4"; } }
-
- public override string[] RuleNames { get { return ruleNames; } }
-
- public override string[] ChannelNames { get { return channelNames; } }
-
- public override string[] ModeNames { get { return modeNames; } }
-
- public override string SerializedAtn { get { return new string(_serializedATN); } }
-
- static AdaptiveCardsTemplateLexer() {
- decisionToDFA = new DFA[_ATN.NumberOfDecisions];
- for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
- decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
- }
- }
- private static char[] _serializedATN = {
- '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786',
- '\x5964', '\x2', '\x15', '\xC6', '\b', '\x1', '\b', '\x1', '\x4', '\x2',
- '\t', '\x2', '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4',
- '\x5', '\t', '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a',
- '\x4', '\b', '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n',
- '\x4', '\v', '\t', '\v', '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r',
- '\x4', '\xE', '\t', '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t',
- '\x10', '\x4', '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4',
- '\x13', '\t', '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t',
- '\x15', '\x4', '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4',
- '\x18', '\t', '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t',
- '\x1A', '\x3', '\x2', '\x3', '\x2', '\x3', '\x3', '\x3', '\x3', '\x3',
- '\x4', '\x3', '\x4', '\x3', '\x5', '\x3', '\x5', '\x3', '\x6', '\x3',
- '\x6', '\x3', '\a', '\x3', '\a', '\x3', '\b', '\x3', '\b', '\x3', '\b',
- '\x3', '\b', '\x3', '\b', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\x3',
- '\t', '\x3', '\t', '\x3', '\t', '\x3', '\n', '\x3', '\n', '\x3', '\n',
- '\x3', '\n', '\x3', '\n', '\x3', '\v', '\x3', '\v', '\x3', '\v', '\x3',
- '\v', '\x3', '\f', '\x5', '\f', 'X', '\n', '\f', '\x3', '\f', '\x3', '\f',
- '\x3', '\f', '\x6', '\f', ']', '\n', '\f', '\r', '\f', '\xE', '\f', '^',
- '\x5', '\f', '\x61', '\n', '\f', '\x3', '\f', '\x5', '\f', '\x64', '\n',
- '\f', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\a', '\r', 'i', '\n', '\r',
- '\f', '\r', '\xE', '\r', 'l', '\v', '\r', '\x5', '\r', 'n', '\n', '\r',
- '\x3', '\xE', '\x3', '\xE', '\x5', '\xE', 'r', '\n', '\xE', '\x3', '\xE',
- '\x3', '\xE', '\x3', '\xF', '\x6', '\xF', 'w', '\n', '\xF', '\r', '\xF',
- '\xE', '\xF', 'x', '\x3', '\xF', '\x3', '\xF', '\x3', '\x10', '\x3', '\x10',
- '\x3', '\x10', '\x3', '\x10', '\x3', '\x11', '\x3', '\x11', '\x3', '\x11',
- '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x12', '\x3', '\x12',
- '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', '\x13',
- '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13',
- '\x6', '\x13', '\x93', '\n', '\x13', '\r', '\x13', '\xE', '\x13', '\x94',
- '\x3', '\x13', '\x3', '\x13', '\x3', '\x14', '\x3', '\x14', '\x3', '\x14',
- '\x3', '\x14', '\x3', '\x14', '\a', '\x14', '\x9E', '\n', '\x14', '\f',
- '\x14', '\xE', '\x14', '\xA1', '\v', '\x14', '\x3', '\x14', '\x3', '\x14',
- '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15',
- '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15',
- '\x3', '\x16', '\x3', '\x16', '\x6', '\x16', '\xB1', '\n', '\x16', '\r',
- '\x16', '\xE', '\x16', '\xB2', '\x3', '\x16', '\x5', '\x16', '\xB6', '\n',
- '\x16', '\x3', '\x17', '\x3', '\x17', '\x3', '\x17', '\x5', '\x17', '\xBB',
- '\n', '\x17', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18',
- '\x3', '\x18', '\x3', '\x18', '\x3', '\x19', '\x3', '\x19', '\x3', '\x1A',
- '\x3', '\x1A', '\x3', '\x9F', '\x2', '\x1B', '\x4', '\x3', '\x6', '\x4',
- '\b', '\x5', '\n', '\x6', '\f', '\a', '\xE', '\b', '\x10', '\t', '\x12',
- '\n', '\x14', '\v', '\x16', '\f', '\x18', '\r', '\x1A', '\x2', '\x1C',
- '\x2', '\x1E', '\xE', ' ', '\xF', '\"', '\x10', '$', '\x11', '&', '\x12',
- '(', '\x13', '*', '\x14', ',', '\x15', '.', '\x2', '\x30', '\x2', '\x32',
- '\x2', '\x34', '\x2', '\x4', '\x2', '\x3', '\v', '\x3', '\x2', '\x32',
- ';', '\x3', '\x2', '\x33', ';', '\x4', '\x2', 'G', 'G', 'g', 'g', '\x4',
- '\x2', '-', '-', '/', '/', '\x5', '\x2', '\v', '\f', '\xF', '\xF', '\"',
- '\"', '\x3', '\x2', '$', '$', '\n', '\x2', '$', '$', '\x31', '\x31', '^',
- '^', '\x64', '\x64', 'h', 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2',
- '\x32', ';', '\x43', 'H', '\x63', 'h', '\x6', '\x2', '\x2', '!', '$',
- '$', '&', '&', '^', '^', '\x2', '\xCE', '\x2', '\x4', '\x3', '\x2', '\x2',
- '\x2', '\x2', '\x6', '\x3', '\x2', '\x2', '\x2', '\x2', '\b', '\x3', '\x2',
- '\x2', '\x2', '\x2', '\n', '\x3', '\x2', '\x2', '\x2', '\x2', '\f', '\x3',
- '\x2', '\x2', '\x2', '\x2', '\xE', '\x3', '\x2', '\x2', '\x2', '\x2',
- '\x10', '\x3', '\x2', '\x2', '\x2', '\x2', '\x12', '\x3', '\x2', '\x2',
- '\x2', '\x2', '\x14', '\x3', '\x2', '\x2', '\x2', '\x2', '\x16', '\x3',
- '\x2', '\x2', '\x2', '\x2', '\x18', '\x3', '\x2', '\x2', '\x2', '\x2',
- '\x1E', '\x3', '\x2', '\x2', '\x2', '\x3', ' ', '\x3', '\x2', '\x2', '\x2',
- '\x3', '\"', '\x3', '\x2', '\x2', '\x2', '\x3', '$', '\x3', '\x2', '\x2',
- '\x2', '\x3', '&', '\x3', '\x2', '\x2', '\x2', '\x3', '(', '\x3', '\x2',
- '\x2', '\x2', '\x3', '*', '\x3', '\x2', '\x2', '\x2', '\x3', ',', '\x3',
- '\x2', '\x2', '\x2', '\x4', '\x36', '\x3', '\x2', '\x2', '\x2', '\x6',
- '\x38', '\x3', '\x2', '\x2', '\x2', '\b', ':', '\x3', '\x2', '\x2', '\x2',
- '\n', '<', '\x3', '\x2', '\x2', '\x2', '\f', '>', '\x3', '\x2', '\x2',
- '\x2', '\xE', '@', '\x3', '\x2', '\x2', '\x2', '\x10', '\x42', '\x3',
- '\x2', '\x2', '\x2', '\x12', 'G', '\x3', '\x2', '\x2', '\x2', '\x14',
- 'M', '\x3', '\x2', '\x2', '\x2', '\x16', 'R', '\x3', '\x2', '\x2', '\x2',
- '\x18', 'W', '\x3', '\x2', '\x2', '\x2', '\x1A', 'm', '\x3', '\x2', '\x2',
- '\x2', '\x1C', 'o', '\x3', '\x2', '\x2', '\x2', '\x1E', 'v', '\x3', '\x2',
- '\x2', '\x2', ' ', '|', '\x3', '\x2', '\x2', '\x2', '\"', '\x80', '\x3',
- '\x2', '\x2', '\x2', '$', '\x86', '\x3', '\x2', '\x2', '\x2', '&', '\x92',
- '\x3', '\x2', '\x2', '\x2', '(', '\x98', '\x3', '\x2', '\x2', '\x2', '*',
- '\xA4', '\x3', '\x2', '\x2', '\x2', ',', '\xB5', '\x3', '\x2', '\x2',
- '\x2', '.', '\xB7', '\x3', '\x2', '\x2', '\x2', '\x30', '\xBC', '\x3',
- '\x2', '\x2', '\x2', '\x32', '\xC2', '\x3', '\x2', '\x2', '\x2', '\x34',
- '\xC4', '\x3', '\x2', '\x2', '\x2', '\x36', '\x37', '\a', '.', '\x2',
- '\x2', '\x37', '\x5', '\x3', '\x2', '\x2', '\x2', '\x38', '\x39', '\a',
- '<', '\x2', '\x2', '\x39', '\a', '\x3', '\x2', '\x2', '\x2', ':', ';',
- '\a', '}', '\x2', '\x2', ';', '\t', '\x3', '\x2', '\x2', '\x2', '<', '=',
- '\a', '\x7F', '\x2', '\x2', '=', '\v', '\x3', '\x2', '\x2', '\x2', '>',
- '?', '\a', ']', '\x2', '\x2', '?', '\r', '\x3', '\x2', '\x2', '\x2', '@',
- '\x41', '\a', '_', '\x2', '\x2', '\x41', '\xF', '\x3', '\x2', '\x2', '\x2',
- '\x42', '\x43', '\a', 'v', '\x2', '\x2', '\x43', '\x44', '\a', 't', '\x2',
- '\x2', '\x44', '\x45', '\a', 'w', '\x2', '\x2', '\x45', '\x46', '\a',
- 'g', '\x2', '\x2', '\x46', '\x11', '\x3', '\x2', '\x2', '\x2', 'G', 'H',
- '\a', 'h', '\x2', '\x2', 'H', 'I', '\a', '\x63', '\x2', '\x2', 'I', 'J',
- '\a', 'n', '\x2', '\x2', 'J', 'K', '\a', 'u', '\x2', '\x2', 'K', 'L',
- '\a', 'g', '\x2', '\x2', 'L', '\x13', '\x3', '\x2', '\x2', '\x2', 'M',
- 'N', '\a', 'p', '\x2', '\x2', 'N', 'O', '\a', 'w', '\x2', '\x2', 'O',
- 'P', '\a', 'n', '\x2', '\x2', 'P', 'Q', '\a', 'n', '\x2', '\x2', 'Q',
- '\x15', '\x3', '\x2', '\x2', '\x2', 'R', 'S', '\a', '$', '\x2', '\x2',
- 'S', 'T', '\x3', '\x2', '\x2', '\x2', 'T', 'U', '\b', '\v', '\x2', '\x2',
- 'U', '\x17', '\x3', '\x2', '\x2', '\x2', 'V', 'X', '\a', '/', '\x2', '\x2',
- 'W', 'V', '\x3', '\x2', '\x2', '\x2', 'W', 'X', '\x3', '\x2', '\x2', '\x2',
- 'X', 'Y', '\x3', '\x2', '\x2', '\x2', 'Y', '`', '\x5', '\x1A', '\r', '\x2',
- 'Z', '\\', '\a', '\x30', '\x2', '\x2', '[', ']', '\t', '\x2', '\x2', '\x2',
- '\\', '[', '\x3', '\x2', '\x2', '\x2', ']', '^', '\x3', '\x2', '\x2',
- '\x2', '^', '\\', '\x3', '\x2', '\x2', '\x2', '^', '_', '\x3', '\x2',
- '\x2', '\x2', '_', '\x61', '\x3', '\x2', '\x2', '\x2', '`', 'Z', '\x3',
- '\x2', '\x2', '\x2', '`', '\x61', '\x3', '\x2', '\x2', '\x2', '\x61',
- '\x63', '\x3', '\x2', '\x2', '\x2', '\x62', '\x64', '\x5', '\x1C', '\xE',
- '\x2', '\x63', '\x62', '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\x3',
- '\x2', '\x2', '\x2', '\x64', '\x19', '\x3', '\x2', '\x2', '\x2', '\x65',
- 'n', '\a', '\x32', '\x2', '\x2', '\x66', 'j', '\t', '\x3', '\x2', '\x2',
- 'g', 'i', '\t', '\x2', '\x2', '\x2', 'h', 'g', '\x3', '\x2', '\x2', '\x2',
- 'i', 'l', '\x3', '\x2', '\x2', '\x2', 'j', 'h', '\x3', '\x2', '\x2', '\x2',
- 'j', 'k', '\x3', '\x2', '\x2', '\x2', 'k', 'n', '\x3', '\x2', '\x2', '\x2',
- 'l', 'j', '\x3', '\x2', '\x2', '\x2', 'm', '\x65', '\x3', '\x2', '\x2',
- '\x2', 'm', '\x66', '\x3', '\x2', '\x2', '\x2', 'n', '\x1B', '\x3', '\x2',
- '\x2', '\x2', 'o', 'q', '\t', '\x4', '\x2', '\x2', 'p', 'r', '\t', '\x5',
- '\x2', '\x2', 'q', 'p', '\x3', '\x2', '\x2', '\x2', 'q', 'r', '\x3', '\x2',
- '\x2', '\x2', 'r', 's', '\x3', '\x2', '\x2', '\x2', 's', 't', '\x5', '\x1A',
- '\r', '\x2', 't', '\x1D', '\x3', '\x2', '\x2', '\x2', 'u', 'w', '\t',
- '\x6', '\x2', '\x2', 'v', 'u', '\x3', '\x2', '\x2', '\x2', 'w', 'x', '\x3',
- '\x2', '\x2', '\x2', 'x', 'v', '\x3', '\x2', '\x2', '\x2', 'x', 'y', '\x3',
- '\x2', '\x2', '\x2', 'y', 'z', '\x3', '\x2', '\x2', '\x2', 'z', '{', '\b',
- '\xF', '\x3', '\x2', '{', '\x1F', '\x3', '\x2', '\x2', '\x2', '|', '}',
- '\a', '$', '\x2', '\x2', '}', '~', '\x3', '\x2', '\x2', '\x2', '~', '\x7F',
- '\b', '\x10', '\x4', '\x2', '\x7F', '!', '\x3', '\x2', '\x2', '\x2', '\x80',
- '\x81', '\a', '&', '\x2', '\x2', '\x81', '\x82', '\a', '\x66', '\x2',
- '\x2', '\x82', '\x83', '\a', '\x63', '\x2', '\x2', '\x83', '\x84', '\a',
- 'v', '\x2', '\x2', '\x84', '\x85', '\a', '\x63', '\x2', '\x2', '\x85',
- '#', '\x3', '\x2', '\x2', '\x2', '\x86', '\x87', '\a', '&', '\x2', '\x2',
- '\x87', '\x88', '\a', 'y', '\x2', '\x2', '\x88', '\x89', '\a', 'j', '\x2',
- '\x2', '\x89', '\x8A', '\a', 'g', '\x2', '\x2', '\x8A', '\x8B', '\a',
- 'p', '\x2', '\x2', '\x8B', '%', '\x3', '\x2', '\x2', '\x2', '\x8C', '\x8D',
- '\a', '\x30', '\x2', '\x2', '\x8D', '\x93', '\x5', ',', '\x16', '\x2',
- '\x8E', '\x8F', '\a', ']', '\x2', '\x2', '\x8F', '\x90', '\x5', '\x1A',
- '\r', '\x2', '\x90', '\x91', '\a', '_', '\x2', '\x2', '\x91', '\x93',
- '\x3', '\x2', '\x2', '\x2', '\x92', '\x8C', '\x3', '\x2', '\x2', '\x2',
- '\x92', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x93', '\x94', '\x3', '\x2',
- '\x2', '\x2', '\x94', '\x92', '\x3', '\x2', '\x2', '\x2', '\x94', '\x95',
- '\x3', '\x2', '\x2', '\x2', '\x95', '\x96', '\x3', '\x2', '\x2', '\x2',
- '\x96', '\x97', '\a', '\x7F', '\x2', '\x2', '\x97', '\'', '\x3', '\x2',
- '\x2', '\x2', '\x98', '\x99', '\a', '&', '\x2', '\x2', '\x99', '\x9A',
- '\a', '}', '\x2', '\x2', '\x9A', '\x9F', '\x3', '\x2', '\x2', '\x2', '\x9B',
- '\x9E', '\n', '\a', '\x2', '\x2', '\x9C', '\x9E', '\x5', '.', '\x17',
- '\x2', '\x9D', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x9D', '\x9C', '\x3',
- '\x2', '\x2', '\x2', '\x9E', '\xA1', '\x3', '\x2', '\x2', '\x2', '\x9F',
- '\xA0', '\x3', '\x2', '\x2', '\x2', '\x9F', '\x9D', '\x3', '\x2', '\x2',
- '\x2', '\xA0', '\xA2', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x9F', '\x3',
- '\x2', '\x2', '\x2', '\xA2', '\xA3', '\a', '\x7F', '\x2', '\x2', '\xA3',
- ')', '\x3', '\x2', '\x2', '\x2', '\xA4', '\xA5', '\a', '&', '\x2', '\x2',
- '\xA5', '\xA6', '\a', '}', '\x2', '\x2', '\xA6', '\xA7', '\a', '&', '\x2',
- '\x2', '\xA7', '\xA8', '\a', 't', '\x2', '\x2', '\xA8', '\xA9', '\a',
- 'q', '\x2', '\x2', '\xA9', '\xAA', '\a', 'q', '\x2', '\x2', '\xAA', '\xAB',
- '\a', 'v', '\x2', '\x2', '\xAB', '\xAC', '\x3', '\x2', '\x2', '\x2', '\xAC',
- '\xAD', '\x5', '&', '\x13', '\x2', '\xAD', '+', '\x3', '\x2', '\x2', '\x2',
- '\xAE', '\xB1', '\x5', '.', '\x17', '\x2', '\xAF', '\xB1', '\x5', '\x34',
- '\x1A', '\x2', '\xB0', '\xAE', '\x3', '\x2', '\x2', '\x2', '\xB0', '\xAF',
- '\x3', '\x2', '\x2', '\x2', '\xB1', '\xB2', '\x3', '\x2', '\x2', '\x2',
- '\xB2', '\xB0', '\x3', '\x2', '\x2', '\x2', '\xB2', '\xB3', '\x3', '\x2',
- '\x2', '\x2', '\xB3', '\xB6', '\x3', '\x2', '\x2', '\x2', '\xB4', '\xB6',
- '\a', '&', '\x2', '\x2', '\xB5', '\xB0', '\x3', '\x2', '\x2', '\x2', '\xB5',
- '\xB4', '\x3', '\x2', '\x2', '\x2', '\xB6', '-', '\x3', '\x2', '\x2',
- '\x2', '\xB7', '\xBA', '\a', '^', '\x2', '\x2', '\xB8', '\xBB', '\t',
- '\b', '\x2', '\x2', '\xB9', '\xBB', '\x5', '\x30', '\x18', '\x2', '\xBA',
- '\xB8', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB9', '\x3', '\x2', '\x2',
- '\x2', '\xBB', '/', '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBD', '\a',
- 'w', '\x2', '\x2', '\xBD', '\xBE', '\x5', '\x32', '\x19', '\x2', '\xBE',
- '\xBF', '\x5', '\x32', '\x19', '\x2', '\xBF', '\xC0', '\x5', '\x32', '\x19',
- '\x2', '\xC0', '\xC1', '\x5', '\x32', '\x19', '\x2', '\xC1', '\x31', '\x3',
- '\x2', '\x2', '\x2', '\xC2', '\xC3', '\t', '\t', '\x2', '\x2', '\xC3',
- '\x33', '\x3', '\x2', '\x2', '\x2', '\xC4', '\xC5', '\n', '\n', '\x2',
- '\x2', '\xC5', '\x35', '\x3', '\x2', '\x2', '\x2', '\x14', '\x2', '\x3',
- 'W', '^', '`', '\x63', 'j', 'm', 'q', 'x', '\x92', '\x94', '\x9D', '\x9F',
- '\xB0', '\xB2', '\xB5', '\xBA', '\x5', '\a', '\x3', '\x2', '\b', '\x2',
- '\x2', '\x6', '\x2', '\x2',
- };
-
- public static readonly ATN _ATN =
- new ATNDeserializer().Deserialize(_serializedATN);
}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.interp b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.interp
index c3644ceb8b..a8f8388277 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.interp
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateLexer.interp
@@ -78,4 +78,4 @@ DEFAULT_MODE
INSIDE
atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 21, 198, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 5, 12, 88, 10, 12, 3, 12, 3, 12, 3, 12, 6, 12, 93, 10, 12, 13, 12, 14, 12, 94, 5, 12, 97, 10, 12, 3, 12, 5, 12, 100, 10, 12, 3, 13, 3, 13, 3, 13, 7, 13, 105, 10, 13, 12, 13, 14, 13, 108, 11, 13, 5, 13, 110, 10, 13, 3, 14, 3, 14, 5, 14, 114, 10, 14, 3, 14, 3, 14, 3, 15, 6, 15, 119, 10, 15, 13, 15, 14, 15, 120, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 6, 19, 147, 10, 19, 13, 19, 14, 19, 148, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 158, 10, 20, 12, 20, 14, 20, 161, 11, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 6, 22, 177, 10, 22, 13, 22, 14, 22, 178, 3, 22, 5, 22, 182, 10, 22, 3, 23, 3, 23, 3, 23, 5, 23, 187, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 159, 2, 27, 4, 3, 6, 4, 8, 5, 10, 6, 12, 7, 14, 8, 16, 9, 18, 10, 20, 11, 22, 12, 24, 13, 26, 2, 28, 2, 30, 14, 32, 15, 34, 16, 36, 17, 38, 18, 40, 19, 42, 20, 44, 21, 46, 2, 48, 2, 50, 2, 52, 2, 4, 2, 3, 11, 3, 2, 50, 59, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 5, 2, 11, 12, 15, 15, 34, 34, 3, 2, 36, 36, 10, 2, 36, 36, 49, 49, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 118, 5, 2, 50, 59, 67, 72, 99, 104, 6, 2, 2, 33, 36, 36, 38, 38, 94, 94, 2, 206, 2, 4, 3, 2, 2, 2, 2, 6, 3, 2, 2, 2, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 3, 32, 3, 2, 2, 2, 3, 34, 3, 2, 2, 2, 3, 36, 3, 2, 2, 2, 3, 38, 3, 2, 2, 2, 3, 40, 3, 2, 2, 2, 3, 42, 3, 2, 2, 2, 3, 44, 3, 2, 2, 2, 4, 54, 3, 2, 2, 2, 6, 56, 3, 2, 2, 2, 8, 58, 3, 2, 2, 2, 10, 60, 3, 2, 2, 2, 12, 62, 3, 2, 2, 2, 14, 64, 3, 2, 2, 2, 16, 66, 3, 2, 2, 2, 18, 71, 3, 2, 2, 2, 20, 77, 3, 2, 2, 2, 22, 82, 3, 2, 2, 2, 24, 87, 3, 2, 2, 2, 26, 109, 3, 2, 2, 2, 28, 111, 3, 2, 2, 2, 30, 118, 3, 2, 2, 2, 32, 124, 3, 2, 2, 2, 34, 128, 3, 2, 2, 2, 36, 134, 3, 2, 2, 2, 38, 146, 3, 2, 2, 2, 40, 152, 3, 2, 2, 2, 42, 164, 3, 2, 2, 2, 44, 181, 3, 2, 2, 2, 46, 183, 3, 2, 2, 2, 48, 188, 3, 2, 2, 2, 50, 194, 3, 2, 2, 2, 52, 196, 3, 2, 2, 2, 54, 55, 7, 46, 2, 2, 55, 5, 3, 2, 2, 2, 56, 57, 7, 60, 2, 2, 57, 7, 3, 2, 2, 2, 58, 59, 7, 125, 2, 2, 59, 9, 3, 2, 2, 2, 60, 61, 7, 127, 2, 2, 61, 11, 3, 2, 2, 2, 62, 63, 7, 93, 2, 2, 63, 13, 3, 2, 2, 2, 64, 65, 7, 95, 2, 2, 65, 15, 3, 2, 2, 2, 66, 67, 7, 118, 2, 2, 67, 68, 7, 116, 2, 2, 68, 69, 7, 119, 2, 2, 69, 70, 7, 103, 2, 2, 70, 17, 3, 2, 2, 2, 71, 72, 7, 104, 2, 2, 72, 73, 7, 99, 2, 2, 73, 74, 7, 110, 2, 2, 74, 75, 7, 117, 2, 2, 75, 76, 7, 103, 2, 2, 76, 19, 3, 2, 2, 2, 77, 78, 7, 112, 2, 2, 78, 79, 7, 119, 2, 2, 79, 80, 7, 110, 2, 2, 80, 81, 7, 110, 2, 2, 81, 21, 3, 2, 2, 2, 82, 83, 7, 36, 2, 2, 83, 84, 3, 2, 2, 2, 84, 85, 8, 11, 2, 2, 85, 23, 3, 2, 2, 2, 86, 88, 7, 47, 2, 2, 87, 86, 3, 2, 2, 2, 87, 88, 3, 2, 2, 2, 88, 89, 3, 2, 2, 2, 89, 96, 5, 26, 13, 2, 90, 92, 7, 48, 2, 2, 91, 93, 9, 2, 2, 2, 92, 91, 3, 2, 2, 2, 93, 94, 3, 2, 2, 2, 94, 92, 3, 2, 2, 2, 94, 95, 3, 2, 2, 2, 95, 97, 3, 2, 2, 2, 96, 90, 3, 2, 2, 2, 96, 97, 3, 2, 2, 2, 97, 99, 3, 2, 2, 2, 98, 100, 5, 28, 14, 2, 99, 98, 3, 2, 2, 2, 99, 100, 3, 2, 2, 2, 100, 25, 3, 2, 2, 2, 101, 110, 7, 50, 2, 2, 102, 106, 9, 3, 2, 2, 103, 105, 9, 2, 2, 2, 104, 103, 3, 2, 2, 2, 105, 108, 3, 2, 2, 2, 106, 104, 3, 2, 2, 2, 106, 107, 3, 2, 2, 2, 107, 110, 3, 2, 2, 2, 108, 106, 3, 2, 2, 2, 109, 101, 3, 2, 2, 2, 109, 102, 3, 2, 2, 2, 110, 27, 3, 2, 2, 2, 111, 113, 9, 4, 2, 2, 112, 114, 9, 5, 2, 2, 113, 112, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 115, 3, 2, 2, 2, 115, 116, 5, 26, 13, 2, 116, 29, 3, 2, 2, 2, 117, 119, 9, 6, 2, 2, 118, 117, 3, 2, 2, 2, 119, 120, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, 121, 122, 3, 2, 2, 2, 122, 123, 8, 15, 3, 2, 123, 31, 3, 2, 2, 2, 124, 125, 7, 36, 2, 2, 125, 126, 3, 2, 2, 2, 126, 127, 8, 16, 4, 2, 127, 33, 3, 2, 2, 2, 128, 129, 7, 38, 2, 2, 129, 130, 7, 102, 2, 2, 130, 131, 7, 99, 2, 2, 131, 132, 7, 118, 2, 2, 132, 133, 7, 99, 2, 2, 133, 35, 3, 2, 2, 2, 134, 135, 7, 38, 2, 2, 135, 136, 7, 121, 2, 2, 136, 137, 7, 106, 2, 2, 137, 138, 7, 103, 2, 2, 138, 139, 7, 112, 2, 2, 139, 37, 3, 2, 2, 2, 140, 141, 7, 48, 2, 2, 141, 147, 5, 44, 22, 2, 142, 143, 7, 93, 2, 2, 143, 144, 5, 26, 13, 2, 144, 145, 7, 95, 2, 2, 145, 147, 3, 2, 2, 2, 146, 140, 3, 2, 2, 2, 146, 142, 3, 2, 2, 2, 147, 148, 3, 2, 2, 2, 148, 146, 3, 2, 2, 2, 148, 149, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 7, 127, 2, 2, 151, 39, 3, 2, 2, 2, 152, 153, 7, 38, 2, 2, 153, 154, 7, 125, 2, 2, 154, 159, 3, 2, 2, 2, 155, 158, 10, 7, 2, 2, 156, 158, 5, 46, 23, 2, 157, 155, 3, 2, 2, 2, 157, 156, 3, 2, 2, 2, 158, 161, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 159, 157, 3, 2, 2, 2, 160, 162, 3, 2, 2, 2, 161, 159, 3, 2, 2, 2, 162, 163, 7, 127, 2, 2, 163, 41, 3, 2, 2, 2, 164, 165, 7, 38, 2, 2, 165, 166, 7, 125, 2, 2, 166, 167, 7, 38, 2, 2, 167, 168, 7, 116, 2, 2, 168, 169, 7, 113, 2, 2, 169, 170, 7, 113, 2, 2, 170, 171, 7, 118, 2, 2, 171, 172, 3, 2, 2, 2, 172, 173, 5, 38, 19, 2, 173, 43, 3, 2, 2, 2, 174, 177, 5, 46, 23, 2, 175, 177, 5, 52, 26, 2, 176, 174, 3, 2, 2, 2, 176, 175, 3, 2, 2, 2, 177, 178, 3, 2, 2, 2, 178, 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 182, 7, 38, 2, 2, 181, 176, 3, 2, 2, 2, 181, 180, 3, 2, 2, 2, 182, 45, 3, 2, 2, 2, 183, 186, 7, 94, 2, 2, 184, 187, 9, 8, 2, 2, 185, 187, 5, 48, 24, 2, 186, 184, 3, 2, 2, 2, 186, 185, 3, 2, 2, 2, 187, 47, 3, 2, 2, 2, 188, 189, 7, 119, 2, 2, 189, 190, 5, 50, 25, 2, 190, 191, 5, 50, 25, 2, 191, 192, 5, 50, 25, 2, 192, 193, 5, 50, 25, 2, 193, 49, 3, 2, 2, 2, 194, 195, 9, 9, 2, 2, 195, 51, 3, 2, 2, 2, 196, 197, 10, 10, 2, 2, 197, 53, 3, 2, 2, 2, 20, 2, 3, 87, 94, 96, 99, 106, 109, 113, 120, 146, 148, 157, 159, 176, 178, 181, 186, 5, 7, 3, 2, 8, 2, 2, 6, 2, 2]
\ No newline at end of file
+[4, 0, 19, 196, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 3, 10, 86, 8, 10, 1, 10, 1, 10, 1, 10, 4, 10, 91, 8, 10, 11, 10, 12, 10, 92, 3, 10, 95, 8, 10, 1, 10, 3, 10, 98, 8, 10, 1, 11, 1, 11, 1, 11, 5, 11, 103, 8, 11, 10, 11, 12, 11, 106, 9, 11, 3, 11, 108, 8, 11, 1, 12, 1, 12, 3, 12, 112, 8, 12, 1, 12, 1, 12, 1, 13, 4, 13, 117, 8, 13, 11, 13, 12, 13, 118, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 145, 8, 17, 11, 17, 12, 17, 146, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 156, 8, 18, 10, 18, 12, 18, 159, 9, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 4, 20, 175, 8, 20, 11, 20, 12, 20, 176, 1, 20, 3, 20, 180, 8, 20, 1, 21, 1, 21, 1, 21, 3, 21, 185, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 157, 0, 25, 2, 1, 4, 2, 6, 3, 8, 4, 10, 5, 12, 6, 14, 7, 16, 8, 18, 9, 20, 10, 22, 11, 24, 0, 26, 0, 28, 12, 30, 13, 32, 14, 34, 15, 36, 16, 38, 17, 40, 18, 42, 19, 44, 0, 46, 0, 48, 0, 50, 0, 2, 0, 1, 9, 1, 0, 48, 57, 1, 0, 49, 57, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 34, 34, 8, 0, 34, 34, 47, 47, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 3, 0, 48, 57, 65, 70, 97, 102, 4, 0, 0, 31, 34, 34, 36, 36, 92, 92, 204, 0, 2, 1, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 1, 30, 1, 0, 0, 0, 1, 32, 1, 0, 0, 0, 1, 34, 1, 0, 0, 0, 1, 36, 1, 0, 0, 0, 1, 38, 1, 0, 0, 0, 1, 40, 1, 0, 0, 0, 1, 42, 1, 0, 0, 0, 2, 52, 1, 0, 0, 0, 4, 54, 1, 0, 0, 0, 6, 56, 1, 0, 0, 0, 8, 58, 1, 0, 0, 0, 10, 60, 1, 0, 0, 0, 12, 62, 1, 0, 0, 0, 14, 64, 1, 0, 0, 0, 16, 69, 1, 0, 0, 0, 18, 75, 1, 0, 0, 0, 20, 80, 1, 0, 0, 0, 22, 85, 1, 0, 0, 0, 24, 107, 1, 0, 0, 0, 26, 109, 1, 0, 0, 0, 28, 116, 1, 0, 0, 0, 30, 122, 1, 0, 0, 0, 32, 126, 1, 0, 0, 0, 34, 132, 1, 0, 0, 0, 36, 144, 1, 0, 0, 0, 38, 150, 1, 0, 0, 0, 40, 162, 1, 0, 0, 0, 42, 179, 1, 0, 0, 0, 44, 181, 1, 0, 0, 0, 46, 186, 1, 0, 0, 0, 48, 192, 1, 0, 0, 0, 50, 194, 1, 0, 0, 0, 52, 53, 5, 44, 0, 0, 53, 3, 1, 0, 0, 0, 54, 55, 5, 58, 0, 0, 55, 5, 1, 0, 0, 0, 56, 57, 5, 123, 0, 0, 57, 7, 1, 0, 0, 0, 58, 59, 5, 125, 0, 0, 59, 9, 1, 0, 0, 0, 60, 61, 5, 91, 0, 0, 61, 11, 1, 0, 0, 0, 62, 63, 5, 93, 0, 0, 63, 13, 1, 0, 0, 0, 64, 65, 5, 116, 0, 0, 65, 66, 5, 114, 0, 0, 66, 67, 5, 117, 0, 0, 67, 68, 5, 101, 0, 0, 68, 15, 1, 0, 0, 0, 69, 70, 5, 102, 0, 0, 70, 71, 5, 97, 0, 0, 71, 72, 5, 108, 0, 0, 72, 73, 5, 115, 0, 0, 73, 74, 5, 101, 0, 0, 74, 17, 1, 0, 0, 0, 75, 76, 5, 110, 0, 0, 76, 77, 5, 117, 0, 0, 77, 78, 5, 108, 0, 0, 78, 79, 5, 108, 0, 0, 79, 19, 1, 0, 0, 0, 80, 81, 5, 34, 0, 0, 81, 82, 1, 0, 0, 0, 82, 83, 6, 9, 0, 0, 83, 21, 1, 0, 0, 0, 84, 86, 5, 45, 0, 0, 85, 84, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 94, 3, 24, 11, 0, 88, 90, 5, 46, 0, 0, 89, 91, 7, 0, 0, 0, 90, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 95, 1, 0, 0, 0, 94, 88, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 98, 3, 26, 12, 0, 97, 96, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 23, 1, 0, 0, 0, 99, 108, 5, 48, 0, 0, 100, 104, 7, 1, 0, 0, 101, 103, 7, 0, 0, 0, 102, 101, 1, 0, 0, 0, 103, 106, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 107, 99, 1, 0, 0, 0, 107, 100, 1, 0, 0, 0, 108, 25, 1, 0, 0, 0, 109, 111, 7, 2, 0, 0, 110, 112, 7, 3, 0, 0, 111, 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 113, 1, 0, 0, 0, 113, 114, 3, 24, 11, 0, 114, 27, 1, 0, 0, 0, 115, 117, 7, 4, 0, 0, 116, 115, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 6, 13, 1, 0, 121, 29, 1, 0, 0, 0, 122, 123, 5, 34, 0, 0, 123, 124, 1, 0, 0, 0, 124, 125, 6, 14, 2, 0, 125, 31, 1, 0, 0, 0, 126, 127, 5, 36, 0, 0, 127, 128, 5, 100, 0, 0, 128, 129, 5, 97, 0, 0, 129, 130, 5, 116, 0, 0, 130, 131, 5, 97, 0, 0, 131, 33, 1, 0, 0, 0, 132, 133, 5, 36, 0, 0, 133, 134, 5, 119, 0, 0, 134, 135, 5, 104, 0, 0, 135, 136, 5, 101, 0, 0, 136, 137, 5, 110, 0, 0, 137, 35, 1, 0, 0, 0, 138, 139, 5, 46, 0, 0, 139, 145, 3, 42, 20, 0, 140, 141, 5, 91, 0, 0, 141, 142, 3, 24, 11, 0, 142, 143, 5, 93, 0, 0, 143, 145, 1, 0, 0, 0, 144, 138, 1, 0, 0, 0, 144, 140, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 5, 125, 0, 0, 149, 37, 1, 0, 0, 0, 150, 151, 5, 36, 0, 0, 151, 152, 5, 123, 0, 0, 152, 157, 1, 0, 0, 0, 153, 156, 8, 5, 0, 0, 154, 156, 3, 44, 21, 0, 155, 153, 1, 0, 0, 0, 155, 154, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 161, 5, 125, 0, 0, 161, 39, 1, 0, 0, 0, 162, 163, 5, 36, 0, 0, 163, 164, 5, 123, 0, 0, 164, 165, 5, 36, 0, 0, 165, 166, 5, 114, 0, 0, 166, 167, 5, 111, 0, 0, 167, 168, 5, 111, 0, 0, 168, 169, 5, 116, 0, 0, 169, 170, 1, 0, 0, 0, 170, 171, 3, 36, 17, 0, 171, 41, 1, 0, 0, 0, 172, 175, 3, 44, 21, 0, 173, 175, 3, 50, 24, 0, 174, 172, 1, 0, 0, 0, 174, 173, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 174, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 180, 1, 0, 0, 0, 178, 180, 5, 36, 0, 0, 179, 174, 1, 0, 0, 0, 179, 178, 1, 0, 0, 0, 180, 43, 1, 0, 0, 0, 181, 184, 5, 92, 0, 0, 182, 185, 7, 6, 0, 0, 183, 185, 3, 46, 22, 0, 184, 182, 1, 0, 0, 0, 184, 183, 1, 0, 0, 0, 185, 45, 1, 0, 0, 0, 186, 187, 5, 117, 0, 0, 187, 188, 3, 48, 23, 0, 188, 189, 3, 48, 23, 0, 189, 190, 3, 48, 23, 0, 190, 191, 3, 48, 23, 0, 191, 47, 1, 0, 0, 0, 192, 193, 7, 7, 0, 0, 193, 49, 1, 0, 0, 0, 194, 195, 8, 8, 0, 0, 195, 51, 1, 0, 0, 0, 18, 0, 1, 85, 92, 94, 97, 104, 107, 111, 118, 144, 146, 155, 157, 174, 176, 179, 184, 3, 5, 1, 0, 6, 0, 0, 4, 0, 0]
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.cs b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.cs
index 2ceb6d43a1..9849388051 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.cs
@@ -1,14 +1,14 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// ANTLR Version: 4.8
+// ANTLR Version: 4.11.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
-// Generated from AdaptiveCardsTemplateParser.g4 by ANTLR 4.8
+// Generated from AdaptiveCardsTemplateParser.g4 by ANTLR 4.11.1
// Unreachable code detected
#pragma warning disable 0162
@@ -30,924 +30,940 @@
using Antlr4.Runtime.Tree;
using DFA = Antlr4.Runtime.Dfa.DFA;
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")]
+[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.11.1")]
[System.CLSCompliant(false)]
public partial class AdaptiveCardsTemplateParser : Parser {
- protected static DFA[] decisionToDFA;
- protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
- public const int
- COMMA=1, COLON=2, LCB=3, RCB=4, LSB=5, RSB=6, TRUE=7, FALSE=8, NULL=9,
- StringDeclOpen=10, NUMBER=11, WS=12, CLOSE=13, TEMPLATEDATA=14, TEMPLATEWHEN=15,
- JPATH=16, TEMPLATELITERAL=17, TEMPLATEROOT=18, STRING=19;
- public const int
- RULE_json = 0, RULE_obj = 1, RULE_pair = 2, RULE_array = 3, RULE_value = 4,
- RULE_templateString = 5, RULE_templateRoot = 6, RULE_templateExpression = 7;
- public static readonly string[] ruleNames = {
- "json", "obj", "pair", "array", "value", "templateString", "templateRoot",
- "templateExpression"
- };
-
- private static readonly string[] _LiteralNames = {
- null, "','", "':'", "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'null'",
- null, null, null, null, "'$data'", "'$when'"
- };
- private static readonly string[] _SymbolicNames = {
- null, "COMMA", "COLON", "LCB", "RCB", "LSB", "RSB", "TRUE", "FALSE", "NULL",
- "StringDeclOpen", "NUMBER", "WS", "CLOSE", "TEMPLATEDATA", "TEMPLATEWHEN",
- "JPATH", "TEMPLATELITERAL", "TEMPLATEROOT", "STRING"
- };
- public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
-
- [NotNull]
- public override IVocabulary Vocabulary
- {
- get
- {
- return DefaultVocabulary;
- }
- }
-
- public override string GrammarFileName { get { return "AdaptiveCardsTemplateParser.g4"; } }
-
- public override string[] RuleNames { get { return ruleNames; } }
-
- public override string SerializedAtn { get { return new string(_serializedATN); } }
-
- static AdaptiveCardsTemplateParser() {
- decisionToDFA = new DFA[_ATN.NumberOfDecisions];
- for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
- decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
- }
- }
-
- public AdaptiveCardsTemplateParser(ITokenStream input) : this(input, Console.Out, Console.Error) { }
-
- public AdaptiveCardsTemplateParser(ITokenStream input, TextWriter output, TextWriter errorOutput)
- : base(input, output, errorOutput)
- {
- Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
- }
-
- public partial class JsonContext : ParserRuleContext {
- public ValueContext value() {
- return GetRuleContext(0);
- }
- public JsonContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_json; } }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitJson(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public JsonContext json() {
- JsonContext _localctx = new JsonContext(Context, State);
- EnterRule(_localctx, 0, RULE_json);
- try {
- EnterOuterAlt(_localctx, 1);
- {
- State = 16; value();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class ObjContext : ParserRuleContext {
- public ITerminalNode LCB() { return GetToken(AdaptiveCardsTemplateParser.LCB, 0); }
- public PairContext[] pair() {
- return GetRuleContexts();
- }
- public PairContext pair(int i) {
- return GetRuleContext(i);
- }
- public ITerminalNode RCB() { return GetToken(AdaptiveCardsTemplateParser.RCB, 0); }
- public ITerminalNode[] COMMA() { return GetTokens(AdaptiveCardsTemplateParser.COMMA); }
- public ITerminalNode COMMA(int i) {
- return GetToken(AdaptiveCardsTemplateParser.COMMA, i);
- }
- public ObjContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_obj; } }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitObj(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public ObjContext obj() {
- ObjContext _localctx = new ObjContext(Context, State);
- EnterRule(_localctx, 2, RULE_obj);
- int _la;
- try {
- State = 31;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,1,Context) ) {
- case 1:
- EnterOuterAlt(_localctx, 1);
- {
- State = 18; Match(LCB);
- State = 19; pair();
- State = 24;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==COMMA) {
- {
- {
- State = 20; Match(COMMA);
- State = 21; pair();
- }
- }
- State = 26;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 27; Match(RCB);
- }
- break;
- case 2:
- EnterOuterAlt(_localctx, 2);
- {
- State = 29; Match(LCB);
- State = 30; Match(RCB);
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class PairContext : ParserRuleContext {
- public PairContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_pair; } }
-
- public PairContext() { }
- public virtual void CopyFrom(PairContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class TemplateWhenContext : PairContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public ITerminalNode TEMPLATEWHEN() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEWHEN, 0); }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
- public TemplateExpressionContext templateExpression() {
- return GetRuleContext(0);
- }
- public TemplateWhenContext(PairContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitTemplateWhen(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class JsonPairContext : PairContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
- public ValueContext value() {
- return GetRuleContext(0);
- }
- public ITerminalNode[] STRING() { return GetTokens(AdaptiveCardsTemplateParser.STRING); }
- public ITerminalNode STRING(int i) {
- return GetToken(AdaptiveCardsTemplateParser.STRING, i);
- }
- public JsonPairContext(PairContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitJsonPair(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class TemplateDataContext : PairContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public ITerminalNode TEMPLATEDATA() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEDATA, 0); }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
- public ValueContext value() {
- return GetRuleContext(0);
- }
- public TemplateDataContext(PairContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitTemplateData(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class TemplateRootDataContext : PairContext {
- public ITerminalNode[] StringDeclOpen() { return GetTokens(AdaptiveCardsTemplateParser.StringDeclOpen); }
- public ITerminalNode StringDeclOpen(int i) {
- return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, i);
- }
- public ITerminalNode TEMPLATEDATA() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEDATA, 0); }
- public ITerminalNode[] CLOSE() { return GetTokens(AdaptiveCardsTemplateParser.CLOSE); }
- public ITerminalNode CLOSE(int i) {
- return GetToken(AdaptiveCardsTemplateParser.CLOSE, i);
- }
- public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
- public TemplateRootContext templateRoot() {
- return GetRuleContext(0);
- }
- public TemplateRootDataContext(PairContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitTemplateRootData(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public PairContext pair() {
- PairContext _localctx = new PairContext(Context, State);
- EnterRule(_localctx, 4, RULE_pair);
- int _la;
- try {
- State = 61;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,3,Context) ) {
- case 1:
- _localctx = new JsonPairContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 33; Match(StringDeclOpen);
- State = 37;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==STRING) {
- {
- {
- State = 34; Match(STRING);
- }
- }
- State = 39;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 40; Match(CLOSE);
- State = 41; Match(COLON);
- State = 42; value();
- }
- break;
- case 2:
- _localctx = new TemplateRootDataContext(_localctx);
- EnterOuterAlt(_localctx, 2);
- {
- State = 43; Match(StringDeclOpen);
- State = 44; Match(TEMPLATEDATA);
- State = 45; Match(CLOSE);
- State = 46; Match(COLON);
- State = 47; Match(StringDeclOpen);
- State = 48; templateRoot();
- State = 49; Match(CLOSE);
- }
- break;
- case 3:
- _localctx = new TemplateDataContext(_localctx);
- EnterOuterAlt(_localctx, 3);
- {
- State = 51; Match(StringDeclOpen);
- State = 52; Match(TEMPLATEDATA);
- State = 53; Match(CLOSE);
- State = 54; Match(COLON);
- State = 55; value();
- }
- break;
- case 4:
- _localctx = new TemplateWhenContext(_localctx);
- EnterOuterAlt(_localctx, 4);
- {
- State = 56; Match(StringDeclOpen);
- State = 57; Match(TEMPLATEWHEN);
- State = 58; Match(CLOSE);
- State = 59; Match(COLON);
- State = 60; templateExpression();
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class ArrayContext : ParserRuleContext {
- public ITerminalNode LSB() { return GetToken(AdaptiveCardsTemplateParser.LSB, 0); }
- public ValueContext[] value() {
- return GetRuleContexts();
- }
- public ValueContext value(int i) {
- return GetRuleContext(i);
- }
- public ITerminalNode RSB() { return GetToken(AdaptiveCardsTemplateParser.RSB, 0); }
- public ITerminalNode[] COMMA() { return GetTokens(AdaptiveCardsTemplateParser.COMMA); }
- public ITerminalNode COMMA(int i) {
- return GetToken(AdaptiveCardsTemplateParser.COMMA, i);
- }
- public ArrayContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_array; } }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitArray(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public ArrayContext array() {
- ArrayContext _localctx = new ArrayContext(Context, State);
- EnterRule(_localctx, 6, RULE_array);
- int _la;
- try {
- State = 76;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) {
- case 1:
- EnterOuterAlt(_localctx, 1);
- {
- State = 63; Match(LSB);
- State = 64; value();
- State = 69;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==COMMA) {
- {
- {
- State = 65; Match(COMMA);
- State = 66; value();
- }
- }
- State = 71;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 72; Match(RSB);
- }
- break;
- case 2:
- EnterOuterAlt(_localctx, 2);
- {
- State = 74; Match(LSB);
- State = 75; Match(RSB);
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class ValueContext : ParserRuleContext {
- public ValueContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_value; } }
-
- public ValueContext() { }
- public virtual void CopyFrom(ValueContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class ValueObjectContext : ValueContext {
- public ObjContext obj() {
- return GetRuleContext(0);
- }
- public ValueObjectContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueObject(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueNullContext : ValueContext {
- public ITerminalNode NULL() { return GetToken(AdaptiveCardsTemplateParser.NULL, 0); }
- public ValueNullContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueNull(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueTemplateStringContext : ValueContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public TemplateStringContext[] templateString() {
- return GetRuleContexts();
- }
- public TemplateStringContext templateString(int i) {
- return GetRuleContext(i);
- }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ValueTemplateStringContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueTemplateString(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueNumberContext : ValueContext {
- public ITerminalNode NUMBER() { return GetToken(AdaptiveCardsTemplateParser.NUMBER, 0); }
- public ValueNumberContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueNumber(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueTrueContext : ValueContext {
- public ITerminalNode TRUE() { return GetToken(AdaptiveCardsTemplateParser.TRUE, 0); }
- public ValueTrueContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueTrue(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueFalseContext : ValueContext {
- public ITerminalNode FALSE() { return GetToken(AdaptiveCardsTemplateParser.FALSE, 0); }
- public ValueFalseContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueFalse(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueStringContext : ValueContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ITerminalNode[] STRING() { return GetTokens(AdaptiveCardsTemplateParser.STRING); }
- public ITerminalNode STRING(int i) {
- return GetToken(AdaptiveCardsTemplateParser.STRING, i);
- }
- public ValueStringContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueString(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueTemplateStringWithRootContext : ValueContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public TemplateRootContext templateRoot() {
- return GetRuleContext(0);
- }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ValueTemplateStringWithRootContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueTemplateStringWithRoot(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ValueArrayContext : ValueContext {
- public ArrayContext array() {
- return GetRuleContext(0);
- }
- public ValueArrayContext(ValueContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueArray(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public ValueContext value() {
- ValueContext _localctx = new ValueContext(Context, State);
- EnterRule(_localctx, 8, RULE_value);
- int _la;
- try {
- State = 106;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,8,Context) ) {
- case 1:
- _localctx = new ValueTemplateStringContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 78; Match(StringDeclOpen);
- State = 79; templateString();
- State = 83;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==TEMPLATELITERAL || _la==STRING) {
- {
- {
- State = 80; templateString();
- }
- }
- State = 85;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 86; Match(CLOSE);
- }
- break;
- case 2:
- _localctx = new ValueTemplateStringWithRootContext(_localctx);
- EnterOuterAlt(_localctx, 2);
- {
- State = 88; Match(StringDeclOpen);
- State = 89; templateRoot();
- State = 90; Match(CLOSE);
- }
- break;
- case 3:
- _localctx = new ValueStringContext(_localctx);
- EnterOuterAlt(_localctx, 3);
- {
- State = 92; Match(StringDeclOpen);
- State = 96;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==STRING) {
- {
- {
- State = 93; Match(STRING);
- }
- }
- State = 98;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 99; Match(CLOSE);
- }
- break;
- case 4:
- _localctx = new ValueNumberContext(_localctx);
- EnterOuterAlt(_localctx, 4);
- {
- State = 100; Match(NUMBER);
- }
- break;
- case 5:
- _localctx = new ValueObjectContext(_localctx);
- EnterOuterAlt(_localctx, 5);
- {
- State = 101; obj();
- }
- break;
- case 6:
- _localctx = new ValueArrayContext(_localctx);
- EnterOuterAlt(_localctx, 6);
- {
- State = 102; array();
- }
- break;
- case 7:
- _localctx = new ValueTrueContext(_localctx);
- EnterOuterAlt(_localctx, 7);
- {
- State = 103; Match(TRUE);
- }
- break;
- case 8:
- _localctx = new ValueFalseContext(_localctx);
- EnterOuterAlt(_localctx, 8);
- {
- State = 104; Match(FALSE);
- }
- break;
- case 9:
- _localctx = new ValueNullContext(_localctx);
- EnterOuterAlt(_localctx, 9);
- {
- State = 105; Match(NULL);
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class TemplateStringContext : ParserRuleContext {
- public TemplateStringContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_templateString; } }
-
- public TemplateStringContext() { }
- public virtual void CopyFrom(TemplateStringContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class TemplatedStringContext : TemplateStringContext {
- public ITerminalNode TEMPLATELITERAL() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATELITERAL, 0); }
- public ITerminalNode[] STRING() { return GetTokens(AdaptiveCardsTemplateParser.STRING); }
- public ITerminalNode STRING(int i) {
- return GetToken(AdaptiveCardsTemplateParser.STRING, i);
- }
- public TemplatedStringContext(TemplateStringContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitTemplatedString(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public TemplateStringContext templateString() {
- TemplateStringContext _localctx = new TemplateStringContext(Context, State);
- EnterRule(_localctx, 10, RULE_templateString);
- int _la;
- try {
- int _alt;
- _localctx = new TemplatedStringContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- {
- State = 111;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==STRING) {
- {
- {
- State = 108; Match(STRING);
- }
- }
- State = 113;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 114; Match(TEMPLATELITERAL);
- State = 118;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,10,Context);
- while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- State = 115; Match(STRING);
- }
- }
- }
- State = 120;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,10,Context);
- }
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class TemplateRootContext : ParserRuleContext {
- public TemplateRootContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_templateRoot; } }
-
- public TemplateRootContext() { }
- public virtual void CopyFrom(TemplateRootContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class TemplateStringWithRootContext : TemplateRootContext {
- public ITerminalNode TEMPLATEROOT() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEROOT, 0); }
- public TemplateStringWithRootContext(TemplateRootContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitTemplateStringWithRoot(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public TemplateRootContext templateRoot() {
- TemplateRootContext _localctx = new TemplateRootContext(Context, State);
- EnterRule(_localctx, 12, RULE_templateRoot);
- try {
- _localctx = new TemplateStringWithRootContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 121; Match(TEMPLATEROOT);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class TemplateExpressionContext : ParserRuleContext {
- public TemplateExpressionContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_templateExpression; } }
-
- public TemplateExpressionContext() { }
- public virtual void CopyFrom(TemplateExpressionContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class ValueTemplateExpressionContext : TemplateExpressionContext {
- public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
- public ITerminalNode TEMPLATELITERAL() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATELITERAL, 0); }
- public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
- public ValueTemplateExpressionContext(TemplateExpressionContext context) { CopyFrom(context); }
- public override TResult Accept(IParseTreeVisitor visitor) {
- IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
- if (typedVisitor != null) return typedVisitor.VisitValueTemplateExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public TemplateExpressionContext templateExpression() {
- TemplateExpressionContext _localctx = new TemplateExpressionContext(Context, State);
- EnterRule(_localctx, 14, RULE_templateExpression);
- try {
- _localctx = new ValueTemplateExpressionContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 123; Match(StringDeclOpen);
- State = 124; Match(TEMPLATELITERAL);
- State = 125; Match(CLOSE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- private static char[] _serializedATN = {
- '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786',
- '\x5964', '\x3', '\x15', '\x82', '\x4', '\x2', '\t', '\x2', '\x4', '\x3',
- '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4',
- '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b',
- '\x4', '\t', '\t', '\t', '\x3', '\x2', '\x3', '\x2', '\x3', '\x3', '\x3',
- '\x3', '\x3', '\x3', '\x3', '\x3', '\a', '\x3', '\x19', '\n', '\x3', '\f',
- '\x3', '\xE', '\x3', '\x1C', '\v', '\x3', '\x3', '\x3', '\x3', '\x3',
- '\x3', '\x3', '\x3', '\x3', '\x5', '\x3', '\"', '\n', '\x3', '\x3', '\x4',
- '\x3', '\x4', '\a', '\x4', '&', '\n', '\x4', '\f', '\x4', '\xE', '\x4',
- ')', '\v', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4',
- '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4',
- '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4',
- '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4',
- '\x3', '\x4', '\x3', '\x4', '\x5', '\x4', '@', '\n', '\x4', '\x3', '\x5',
- '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\a', '\x5', '\x46', '\n', '\x5',
- '\f', '\x5', '\xE', '\x5', 'I', '\v', '\x5', '\x3', '\x5', '\x3', '\x5',
- '\x3', '\x5', '\x3', '\x5', '\x5', '\x5', 'O', '\n', '\x5', '\x3', '\x6',
- '\x3', '\x6', '\x3', '\x6', '\a', '\x6', 'T', '\n', '\x6', '\f', '\x6',
- '\xE', '\x6', 'W', '\v', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
- '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
- '\a', '\x6', '\x61', '\n', '\x6', '\f', '\x6', '\xE', '\x6', '\x64', '\v',
- '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3',
- '\x6', '\x3', '\x6', '\x3', '\x6', '\x5', '\x6', 'm', '\n', '\x6', '\x3',
- '\a', '\a', '\a', 'p', '\n', '\a', '\f', '\a', '\xE', '\a', 's', '\v',
- '\a', '\x3', '\a', '\x3', '\a', '\a', '\a', 'w', '\n', '\a', '\f', '\a',
- '\xE', '\a', 'z', '\v', '\a', '\x3', '\b', '\x3', '\b', '\x3', '\t', '\x3',
- '\t', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\x2', '\x2', '\n', '\x2',
- '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x2', '\x2', '\x2', '\x8D',
- '\x2', '\x12', '\x3', '\x2', '\x2', '\x2', '\x4', '!', '\x3', '\x2', '\x2',
- '\x2', '\x6', '?', '\x3', '\x2', '\x2', '\x2', '\b', 'N', '\x3', '\x2',
- '\x2', '\x2', '\n', 'l', '\x3', '\x2', '\x2', '\x2', '\f', 'q', '\x3',
- '\x2', '\x2', '\x2', '\xE', '{', '\x3', '\x2', '\x2', '\x2', '\x10', '}',
- '\x3', '\x2', '\x2', '\x2', '\x12', '\x13', '\x5', '\n', '\x6', '\x2',
- '\x13', '\x3', '\x3', '\x2', '\x2', '\x2', '\x14', '\x15', '\a', '\x5',
- '\x2', '\x2', '\x15', '\x1A', '\x5', '\x6', '\x4', '\x2', '\x16', '\x17',
- '\a', '\x3', '\x2', '\x2', '\x17', '\x19', '\x5', '\x6', '\x4', '\x2',
- '\x18', '\x16', '\x3', '\x2', '\x2', '\x2', '\x19', '\x1C', '\x3', '\x2',
- '\x2', '\x2', '\x1A', '\x18', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x1B',
- '\x3', '\x2', '\x2', '\x2', '\x1B', '\x1D', '\x3', '\x2', '\x2', '\x2',
- '\x1C', '\x1A', '\x3', '\x2', '\x2', '\x2', '\x1D', '\x1E', '\a', '\x6',
- '\x2', '\x2', '\x1E', '\"', '\x3', '\x2', '\x2', '\x2', '\x1F', ' ', '\a',
- '\x5', '\x2', '\x2', ' ', '\"', '\a', '\x6', '\x2', '\x2', '!', '\x14',
- '\x3', '\x2', '\x2', '\x2', '!', '\x1F', '\x3', '\x2', '\x2', '\x2', '\"',
- '\x5', '\x3', '\x2', '\x2', '\x2', '#', '\'', '\a', '\f', '\x2', '\x2',
- '$', '&', '\a', '\x15', '\x2', '\x2', '%', '$', '\x3', '\x2', '\x2', '\x2',
- '&', ')', '\x3', '\x2', '\x2', '\x2', '\'', '%', '\x3', '\x2', '\x2',
- '\x2', '\'', '(', '\x3', '\x2', '\x2', '\x2', '(', '*', '\x3', '\x2',
- '\x2', '\x2', ')', '\'', '\x3', '\x2', '\x2', '\x2', '*', '+', '\a', '\xF',
- '\x2', '\x2', '+', ',', '\a', '\x4', '\x2', '\x2', ',', '@', '\x5', '\n',
- '\x6', '\x2', '-', '.', '\a', '\f', '\x2', '\x2', '.', '/', '\a', '\x10',
- '\x2', '\x2', '/', '\x30', '\a', '\xF', '\x2', '\x2', '\x30', '\x31',
- '\a', '\x4', '\x2', '\x2', '\x31', '\x32', '\a', '\f', '\x2', '\x2', '\x32',
- '\x33', '\x5', '\xE', '\b', '\x2', '\x33', '\x34', '\a', '\xF', '\x2',
- '\x2', '\x34', '@', '\x3', '\x2', '\x2', '\x2', '\x35', '\x36', '\a',
- '\f', '\x2', '\x2', '\x36', '\x37', '\a', '\x10', '\x2', '\x2', '\x37',
- '\x38', '\a', '\xF', '\x2', '\x2', '\x38', '\x39', '\a', '\x4', '\x2',
- '\x2', '\x39', '@', '\x5', '\n', '\x6', '\x2', ':', ';', '\a', '\f', '\x2',
- '\x2', ';', '<', '\a', '\x11', '\x2', '\x2', '<', '=', '\a', '\xF', '\x2',
- '\x2', '=', '>', '\a', '\x4', '\x2', '\x2', '>', '@', '\x5', '\x10', '\t',
- '\x2', '?', '#', '\x3', '\x2', '\x2', '\x2', '?', '-', '\x3', '\x2', '\x2',
- '\x2', '?', '\x35', '\x3', '\x2', '\x2', '\x2', '?', ':', '\x3', '\x2',
- '\x2', '\x2', '@', '\a', '\x3', '\x2', '\x2', '\x2', '\x41', '\x42', '\a',
- '\a', '\x2', '\x2', '\x42', 'G', '\x5', '\n', '\x6', '\x2', '\x43', '\x44',
- '\a', '\x3', '\x2', '\x2', '\x44', '\x46', '\x5', '\n', '\x6', '\x2',
- '\x45', '\x43', '\x3', '\x2', '\x2', '\x2', '\x46', 'I', '\x3', '\x2',
- '\x2', '\x2', 'G', '\x45', '\x3', '\x2', '\x2', '\x2', 'G', 'H', '\x3',
- '\x2', '\x2', '\x2', 'H', 'J', '\x3', '\x2', '\x2', '\x2', 'I', 'G', '\x3',
- '\x2', '\x2', '\x2', 'J', 'K', '\a', '\b', '\x2', '\x2', 'K', 'O', '\x3',
- '\x2', '\x2', '\x2', 'L', 'M', '\a', '\a', '\x2', '\x2', 'M', 'O', '\a',
- '\b', '\x2', '\x2', 'N', '\x41', '\x3', '\x2', '\x2', '\x2', 'N', 'L',
- '\x3', '\x2', '\x2', '\x2', 'O', '\t', '\x3', '\x2', '\x2', '\x2', 'P',
- 'Q', '\a', '\f', '\x2', '\x2', 'Q', 'U', '\x5', '\f', '\a', '\x2', 'R',
- 'T', '\x5', '\f', '\a', '\x2', 'S', 'R', '\x3', '\x2', '\x2', '\x2', 'T',
- 'W', '\x3', '\x2', '\x2', '\x2', 'U', 'S', '\x3', '\x2', '\x2', '\x2',
- 'U', 'V', '\x3', '\x2', '\x2', '\x2', 'V', 'X', '\x3', '\x2', '\x2', '\x2',
- 'W', 'U', '\x3', '\x2', '\x2', '\x2', 'X', 'Y', '\a', '\xF', '\x2', '\x2',
- 'Y', 'm', '\x3', '\x2', '\x2', '\x2', 'Z', '[', '\a', '\f', '\x2', '\x2',
- '[', '\\', '\x5', '\xE', '\b', '\x2', '\\', ']', '\a', '\xF', '\x2', '\x2',
- ']', 'm', '\x3', '\x2', '\x2', '\x2', '^', '\x62', '\a', '\f', '\x2',
- '\x2', '_', '\x61', '\a', '\x15', '\x2', '\x2', '`', '_', '\x3', '\x2',
- '\x2', '\x2', '\x61', '\x64', '\x3', '\x2', '\x2', '\x2', '\x62', '`',
- '\x3', '\x2', '\x2', '\x2', '\x62', '\x63', '\x3', '\x2', '\x2', '\x2',
- '\x63', '\x65', '\x3', '\x2', '\x2', '\x2', '\x64', '\x62', '\x3', '\x2',
- '\x2', '\x2', '\x65', 'm', '\a', '\xF', '\x2', '\x2', '\x66', 'm', '\a',
- '\r', '\x2', '\x2', 'g', 'm', '\x5', '\x4', '\x3', '\x2', 'h', 'm', '\x5',
- '\b', '\x5', '\x2', 'i', 'm', '\a', '\t', '\x2', '\x2', 'j', 'm', '\a',
- '\n', '\x2', '\x2', 'k', 'm', '\a', '\v', '\x2', '\x2', 'l', 'P', '\x3',
- '\x2', '\x2', '\x2', 'l', 'Z', '\x3', '\x2', '\x2', '\x2', 'l', '^', '\x3',
- '\x2', '\x2', '\x2', 'l', '\x66', '\x3', '\x2', '\x2', '\x2', 'l', 'g',
- '\x3', '\x2', '\x2', '\x2', 'l', 'h', '\x3', '\x2', '\x2', '\x2', 'l',
- 'i', '\x3', '\x2', '\x2', '\x2', 'l', 'j', '\x3', '\x2', '\x2', '\x2',
- 'l', 'k', '\x3', '\x2', '\x2', '\x2', 'm', '\v', '\x3', '\x2', '\x2',
- '\x2', 'n', 'p', '\a', '\x15', '\x2', '\x2', 'o', 'n', '\x3', '\x2', '\x2',
- '\x2', 'p', 's', '\x3', '\x2', '\x2', '\x2', 'q', 'o', '\x3', '\x2', '\x2',
- '\x2', 'q', 'r', '\x3', '\x2', '\x2', '\x2', 'r', 't', '\x3', '\x2', '\x2',
- '\x2', 's', 'q', '\x3', '\x2', '\x2', '\x2', 't', 'x', '\a', '\x13', '\x2',
- '\x2', 'u', 'w', '\a', '\x15', '\x2', '\x2', 'v', 'u', '\x3', '\x2', '\x2',
- '\x2', 'w', 'z', '\x3', '\x2', '\x2', '\x2', 'x', 'v', '\x3', '\x2', '\x2',
- '\x2', 'x', 'y', '\x3', '\x2', '\x2', '\x2', 'y', '\r', '\x3', '\x2',
- '\x2', '\x2', 'z', 'x', '\x3', '\x2', '\x2', '\x2', '{', '|', '\a', '\x14',
- '\x2', '\x2', '|', '\xF', '\x3', '\x2', '\x2', '\x2', '}', '~', '\a',
- '\f', '\x2', '\x2', '~', '\x7F', '\a', '\x13', '\x2', '\x2', '\x7F', '\x80',
- '\a', '\xF', '\x2', '\x2', '\x80', '\x11', '\x3', '\x2', '\x2', '\x2',
- '\r', '\x1A', '!', '\'', '?', 'G', 'N', 'U', '\x62', 'l', 'q', 'x',
- };
-
- public static readonly ATN _ATN =
- new ATNDeserializer().Deserialize(_serializedATN);
+ protected static DFA[] decisionToDFA;
+ protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
+ public const int
+ COMMA=1, COLON=2, LCB=3, RCB=4, LSB=5, RSB=6, TRUE=7, FALSE=8, NULL=9,
+ StringDeclOpen=10, NUMBER=11, WS=12, CLOSE=13, TEMPLATEDATA=14, TEMPLATEWHEN=15,
+ JPATH=16, TEMPLATELITERAL=17, TEMPLATEROOT=18, STRING=19;
+ public const int
+ RULE_json = 0, RULE_obj = 1, RULE_pair = 2, RULE_array = 3, RULE_value = 4,
+ RULE_templateString = 5, RULE_templateRoot = 6, RULE_templateExpression = 7;
+ public static readonly string[] ruleNames = {
+ "json", "obj", "pair", "array", "value", "templateString", "templateRoot",
+ "templateExpression"
+ };
+
+ private static readonly string[] _LiteralNames = {
+ null, "','", "':'", "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'null'",
+ null, null, null, null, "'$data'", "'$when'"
+ };
+ private static readonly string[] _SymbolicNames = {
+ null, "COMMA", "COLON", "LCB", "RCB", "LSB", "RSB", "TRUE", "FALSE", "NULL",
+ "StringDeclOpen", "NUMBER", "WS", "CLOSE", "TEMPLATEDATA", "TEMPLATEWHEN",
+ "JPATH", "TEMPLATELITERAL", "TEMPLATEROOT", "STRING"
+ };
+ public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
+
+ [NotNull]
+ public override IVocabulary Vocabulary
+ {
+ get
+ {
+ return DefaultVocabulary;
+ }
+ }
+
+ public override string GrammarFileName { get { return "AdaptiveCardsTemplateParser.g4"; } }
+
+ public override string[] RuleNames { get { return ruleNames; } }
+
+ public override int[] SerializedAtn { get { return _serializedATN; } }
+
+ static AdaptiveCardsTemplateParser() {
+ decisionToDFA = new DFA[_ATN.NumberOfDecisions];
+ for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
+ decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
+ }
+ }
+
+ public AdaptiveCardsTemplateParser(ITokenStream input) : this(input, Console.Out, Console.Error) { }
+
+ public AdaptiveCardsTemplateParser(ITokenStream input, TextWriter output, TextWriter errorOutput)
+ : base(input, output, errorOutput)
+ {
+ Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
+ }
+
+ public partial class JsonContext : ParserRuleContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ValueContext value() {
+ return GetRuleContext(0);
+ }
+ public JsonContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_json; } }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitJson(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public JsonContext json() {
+ JsonContext _localctx = new JsonContext(Context, State);
+ EnterRule(_localctx, 0, RULE_json);
+ try {
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 16;
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class ObjContext : ParserRuleContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LCB() { return GetToken(AdaptiveCardsTemplateParser.LCB, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public PairContext[] pair() {
+ return GetRuleContexts();
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public PairContext pair(int i) {
+ return GetRuleContext(i);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RCB() { return GetToken(AdaptiveCardsTemplateParser.RCB, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(AdaptiveCardsTemplateParser.COMMA); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.COMMA, i);
+ }
+ public ObjContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_obj; } }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitObj(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public ObjContext obj() {
+ ObjContext _localctx = new ObjContext(Context, State);
+ EnterRule(_localctx, 2, RULE_obj);
+ int _la;
+ try {
+ State = 31;
+ ErrorHandler.Sync(this);
+ switch ( Interpreter.AdaptivePredict(TokenStream,1,Context) ) {
+ case 1:
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 18;
+ Match(LCB);
+ State = 19;
+ pair();
+ State = 24;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ State = 20;
+ Match(COMMA);
+ State = 21;
+ pair();
+ }
+ }
+ State = 26;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ }
+ State = 27;
+ Match(RCB);
+ }
+ break;
+ case 2:
+ EnterOuterAlt(_localctx, 2);
+ {
+ State = 29;
+ Match(LCB);
+ State = 30;
+ Match(RCB);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class PairContext : ParserRuleContext {
+ public PairContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_pair; } }
+
+ public PairContext() { }
+ public virtual void CopyFrom(PairContext context) {
+ base.CopyFrom(context);
+ }
+ }
+ public partial class TemplateWhenContext : PairContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TEMPLATEWHEN() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEWHEN, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public TemplateExpressionContext templateExpression() {
+ return GetRuleContext(0);
+ }
+ public TemplateWhenContext(PairContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitTemplateWhen(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class JsonPairContext : PairContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ValueContext value() {
+ return GetRuleContext(0);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] STRING() { return GetTokens(AdaptiveCardsTemplateParser.STRING); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.STRING, i);
+ }
+ public JsonPairContext(PairContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitJsonPair(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class TemplateDataContext : PairContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TEMPLATEDATA() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEDATA, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ValueContext value() {
+ return GetRuleContext(0);
+ }
+ public TemplateDataContext(PairContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitTemplateData(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class TemplateRootDataContext : PairContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] StringDeclOpen() { return GetTokens(AdaptiveCardsTemplateParser.StringDeclOpen); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, i);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TEMPLATEDATA() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEDATA, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] CLOSE() { return GetTokens(AdaptiveCardsTemplateParser.CLOSE); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.CLOSE, i);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(AdaptiveCardsTemplateParser.COLON, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public TemplateRootContext templateRoot() {
+ return GetRuleContext(0);
+ }
+ public TemplateRootDataContext(PairContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitTemplateRootData(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public PairContext pair() {
+ PairContext _localctx = new PairContext(Context, State);
+ EnterRule(_localctx, 4, RULE_pair);
+ int _la;
+ try {
+ State = 61;
+ ErrorHandler.Sync(this);
+ switch ( Interpreter.AdaptivePredict(TokenStream,3,Context) ) {
+ case 1:
+ _localctx = new JsonPairContext(_localctx);
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 33;
+ Match(StringDeclOpen);
+ State = 37;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ while (_la==STRING) {
+ {
+ {
+ State = 34;
+ Match(STRING);
+ }
+ }
+ State = 39;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ }
+ State = 40;
+ Match(CLOSE);
+ State = 41;
+ Match(COLON);
+ State = 42;
+ value();
+ }
+ break;
+ case 2:
+ _localctx = new TemplateRootDataContext(_localctx);
+ EnterOuterAlt(_localctx, 2);
+ {
+ State = 43;
+ Match(StringDeclOpen);
+ State = 44;
+ Match(TEMPLATEDATA);
+ State = 45;
+ Match(CLOSE);
+ State = 46;
+ Match(COLON);
+ State = 47;
+ Match(StringDeclOpen);
+ State = 48;
+ templateRoot();
+ State = 49;
+ Match(CLOSE);
+ }
+ break;
+ case 3:
+ _localctx = new TemplateDataContext(_localctx);
+ EnterOuterAlt(_localctx, 3);
+ {
+ State = 51;
+ Match(StringDeclOpen);
+ State = 52;
+ Match(TEMPLATEDATA);
+ State = 53;
+ Match(CLOSE);
+ State = 54;
+ Match(COLON);
+ State = 55;
+ value();
+ }
+ break;
+ case 4:
+ _localctx = new TemplateWhenContext(_localctx);
+ EnterOuterAlt(_localctx, 4);
+ {
+ State = 56;
+ Match(StringDeclOpen);
+ State = 57;
+ Match(TEMPLATEWHEN);
+ State = 58;
+ Match(CLOSE);
+ State = 59;
+ Match(COLON);
+ State = 60;
+ templateExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class ArrayContext : ParserRuleContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LSB() { return GetToken(AdaptiveCardsTemplateParser.LSB, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ValueContext[] value() {
+ return GetRuleContexts();
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ValueContext value(int i) {
+ return GetRuleContext(i);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RSB() { return GetToken(AdaptiveCardsTemplateParser.RSB, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(AdaptiveCardsTemplateParser.COMMA); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.COMMA, i);
+ }
+ public ArrayContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_array; } }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitArray(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public ArrayContext array() {
+ ArrayContext _localctx = new ArrayContext(Context, State);
+ EnterRule(_localctx, 6, RULE_array);
+ int _la;
+ try {
+ State = 76;
+ ErrorHandler.Sync(this);
+ switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) {
+ case 1:
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 63;
+ Match(LSB);
+ State = 64;
+ value();
+ State = 69;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ State = 65;
+ Match(COMMA);
+ State = 66;
+ value();
+ }
+ }
+ State = 71;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ }
+ State = 72;
+ Match(RSB);
+ }
+ break;
+ case 2:
+ EnterOuterAlt(_localctx, 2);
+ {
+ State = 74;
+ Match(LSB);
+ State = 75;
+ Match(RSB);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class ValueContext : ParserRuleContext {
+ public ValueContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_value; } }
+
+ public ValueContext() { }
+ public virtual void CopyFrom(ValueContext context) {
+ base.CopyFrom(context);
+ }
+ }
+ public partial class ValueObjectContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ObjContext obj() {
+ return GetRuleContext(0);
+ }
+ public ValueObjectContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueObject(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueNullContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NULL() { return GetToken(AdaptiveCardsTemplateParser.NULL, 0); }
+ public ValueNullContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueNull(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueTemplateStringContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public TemplateStringContext[] templateString() {
+ return GetRuleContexts();
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public TemplateStringContext templateString(int i) {
+ return GetRuleContext(i);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ public ValueTemplateStringContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueTemplateString(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueNumberContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NUMBER() { return GetToken(AdaptiveCardsTemplateParser.NUMBER, 0); }
+ public ValueNumberContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueNumber(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueTrueContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TRUE() { return GetToken(AdaptiveCardsTemplateParser.TRUE, 0); }
+ public ValueTrueContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueTrue(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueFalseContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FALSE() { return GetToken(AdaptiveCardsTemplateParser.FALSE, 0); }
+ public ValueFalseContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueFalse(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueStringContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] STRING() { return GetTokens(AdaptiveCardsTemplateParser.STRING); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.STRING, i);
+ }
+ public ValueStringContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueString(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueTemplateStringWithRootContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public TemplateRootContext templateRoot() {
+ return GetRuleContext(0);
+ }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ public ValueTemplateStringWithRootContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueTemplateStringWithRoot(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+ public partial class ValueArrayContext : ValueContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ArrayContext array() {
+ return GetRuleContext(0);
+ }
+ public ValueArrayContext(ValueContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueArray(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public ValueContext value() {
+ ValueContext _localctx = new ValueContext(Context, State);
+ EnterRule(_localctx, 8, RULE_value);
+ int _la;
+ try {
+ State = 106;
+ ErrorHandler.Sync(this);
+ switch ( Interpreter.AdaptivePredict(TokenStream,8,Context) ) {
+ case 1:
+ _localctx = new ValueTemplateStringContext(_localctx);
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 78;
+ Match(StringDeclOpen);
+ State = 79;
+ templateString();
+ State = 83;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ while (_la==TEMPLATELITERAL || _la==STRING) {
+ {
+ {
+ State = 80;
+ templateString();
+ }
+ }
+ State = 85;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ }
+ State = 86;
+ Match(CLOSE);
+ }
+ break;
+ case 2:
+ _localctx = new ValueTemplateStringWithRootContext(_localctx);
+ EnterOuterAlt(_localctx, 2);
+ {
+ State = 88;
+ Match(StringDeclOpen);
+ State = 89;
+ templateRoot();
+ State = 90;
+ Match(CLOSE);
+ }
+ break;
+ case 3:
+ _localctx = new ValueStringContext(_localctx);
+ EnterOuterAlt(_localctx, 3);
+ {
+ State = 92;
+ Match(StringDeclOpen);
+ State = 96;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ while (_la==STRING) {
+ {
+ {
+ State = 93;
+ Match(STRING);
+ }
+ }
+ State = 98;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ }
+ State = 99;
+ Match(CLOSE);
+ }
+ break;
+ case 4:
+ _localctx = new ValueNumberContext(_localctx);
+ EnterOuterAlt(_localctx, 4);
+ {
+ State = 100;
+ Match(NUMBER);
+ }
+ break;
+ case 5:
+ _localctx = new ValueObjectContext(_localctx);
+ EnterOuterAlt(_localctx, 5);
+ {
+ State = 101;
+ obj();
+ }
+ break;
+ case 6:
+ _localctx = new ValueArrayContext(_localctx);
+ EnterOuterAlt(_localctx, 6);
+ {
+ State = 102;
+ array();
+ }
+ break;
+ case 7:
+ _localctx = new ValueTrueContext(_localctx);
+ EnterOuterAlt(_localctx, 7);
+ {
+ State = 103;
+ Match(TRUE);
+ }
+ break;
+ case 8:
+ _localctx = new ValueFalseContext(_localctx);
+ EnterOuterAlt(_localctx, 8);
+ {
+ State = 104;
+ Match(FALSE);
+ }
+ break;
+ case 9:
+ _localctx = new ValueNullContext(_localctx);
+ EnterOuterAlt(_localctx, 9);
+ {
+ State = 105;
+ Match(NULL);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class TemplateStringContext : ParserRuleContext {
+ public TemplateStringContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_templateString; } }
+
+ public TemplateStringContext() { }
+ public virtual void CopyFrom(TemplateStringContext context) {
+ base.CopyFrom(context);
+ }
+ }
+ public partial class TemplatedStringContext : TemplateStringContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TEMPLATELITERAL() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATELITERAL, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] STRING() { return GetTokens(AdaptiveCardsTemplateParser.STRING); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING(int i) {
+ return GetToken(AdaptiveCardsTemplateParser.STRING, i);
+ }
+ public TemplatedStringContext(TemplateStringContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitTemplatedString(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public TemplateStringContext templateString() {
+ TemplateStringContext _localctx = new TemplateStringContext(Context, State);
+ EnterRule(_localctx, 10, RULE_templateString);
+ int _la;
+ try {
+ int _alt;
+ _localctx = new TemplatedStringContext(_localctx);
+ EnterOuterAlt(_localctx, 1);
+ {
+ {
+ State = 111;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ while (_la==STRING) {
+ {
+ {
+ State = 108;
+ Match(STRING);
+ }
+ }
+ State = 113;
+ ErrorHandler.Sync(this);
+ _la = TokenStream.LA(1);
+ }
+ State = 114;
+ Match(TEMPLATELITERAL);
+ State = 118;
+ ErrorHandler.Sync(this);
+ _alt = Interpreter.AdaptivePredict(TokenStream,10,Context);
+ while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ State = 115;
+ Match(STRING);
+ }
+ }
+ }
+ State = 120;
+ ErrorHandler.Sync(this);
+ _alt = Interpreter.AdaptivePredict(TokenStream,10,Context);
+ }
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class TemplateRootContext : ParserRuleContext {
+ public TemplateRootContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_templateRoot; } }
+
+ public TemplateRootContext() { }
+ public virtual void CopyFrom(TemplateRootContext context) {
+ base.CopyFrom(context);
+ }
+ }
+ public partial class TemplateStringWithRootContext : TemplateRootContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TEMPLATEROOT() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATEROOT, 0); }
+ public TemplateStringWithRootContext(TemplateRootContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitTemplateStringWithRoot(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public TemplateRootContext templateRoot() {
+ TemplateRootContext _localctx = new TemplateRootContext(Context, State);
+ EnterRule(_localctx, 12, RULE_templateRoot);
+ try {
+ _localctx = new TemplateStringWithRootContext(_localctx);
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 121;
+ Match(TEMPLATEROOT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ public partial class TemplateExpressionContext : ParserRuleContext {
+ public TemplateExpressionContext(ParserRuleContext parent, int invokingState)
+ : base(parent, invokingState)
+ {
+ }
+ public override int RuleIndex { get { return RULE_templateExpression; } }
+
+ public TemplateExpressionContext() { }
+ public virtual void CopyFrom(TemplateExpressionContext context) {
+ base.CopyFrom(context);
+ }
+ }
+ public partial class ValueTemplateExpressionContext : TemplateExpressionContext {
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode StringDeclOpen() { return GetToken(AdaptiveCardsTemplateParser.StringDeclOpen, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TEMPLATELITERAL() { return GetToken(AdaptiveCardsTemplateParser.TEMPLATELITERAL, 0); }
+ [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE() { return GetToken(AdaptiveCardsTemplateParser.CLOSE, 0); }
+ public ValueTemplateExpressionContext(TemplateExpressionContext context) { CopyFrom(context); }
+ [System.Diagnostics.DebuggerNonUserCode]
+ public override TResult Accept(IParseTreeVisitor visitor) {
+ IAdaptiveCardsTemplateParserVisitor typedVisitor = visitor as IAdaptiveCardsTemplateParserVisitor;
+ if (typedVisitor != null) return typedVisitor.VisitValueTemplateExpression(this);
+ else return visitor.VisitChildren(this);
+ }
+ }
+
+ [RuleVersion(0)]
+ public TemplateExpressionContext templateExpression() {
+ TemplateExpressionContext _localctx = new TemplateExpressionContext(Context, State);
+ EnterRule(_localctx, 14, RULE_templateExpression);
+ try {
+ _localctx = new ValueTemplateExpressionContext(_localctx);
+ EnterOuterAlt(_localctx, 1);
+ {
+ State = 123;
+ Match(StringDeclOpen);
+ State = 124;
+ Match(TEMPLATELITERAL);
+ State = 125;
+ Match(CLOSE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ ErrorHandler.ReportError(this, re);
+ ErrorHandler.Recover(this, re);
+ }
+ finally {
+ ExitRule();
+ }
+ return _localctx;
+ }
+
+ private static int[] _serializedATN = {
+ 4,1,19,128,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,
+ 7,7,1,0,1,0,1,1,1,1,1,1,1,1,5,1,23,8,1,10,1,12,1,26,9,1,1,1,1,1,1,1,1,
+ 1,3,1,32,8,1,1,2,1,2,5,2,36,8,2,10,2,12,2,39,9,2,1,2,1,2,1,2,1,2,1,2,1,
+ 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,62,8,
+ 2,1,3,1,3,1,3,1,3,5,3,68,8,3,10,3,12,3,71,9,3,1,3,1,3,1,3,1,3,3,3,77,8,
+ 3,1,4,1,4,1,4,5,4,82,8,4,10,4,12,4,85,9,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,
+ 1,4,5,4,95,8,4,10,4,12,4,98,9,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,107,8,
+ 4,1,5,5,5,110,8,5,10,5,12,5,113,9,5,1,5,1,5,5,5,117,8,5,10,5,12,5,120,
+ 9,5,1,6,1,6,1,7,1,7,1,7,1,7,1,7,0,0,8,0,2,4,6,8,10,12,14,0,0,139,0,16,
+ 1,0,0,0,2,31,1,0,0,0,4,61,1,0,0,0,6,76,1,0,0,0,8,106,1,0,0,0,10,111,1,
+ 0,0,0,12,121,1,0,0,0,14,123,1,0,0,0,16,17,3,8,4,0,17,1,1,0,0,0,18,19,5,
+ 3,0,0,19,24,3,4,2,0,20,21,5,1,0,0,21,23,3,4,2,0,22,20,1,0,0,0,23,26,1,
+ 0,0,0,24,22,1,0,0,0,24,25,1,0,0,0,25,27,1,0,0,0,26,24,1,0,0,0,27,28,5,
+ 4,0,0,28,32,1,0,0,0,29,30,5,3,0,0,30,32,5,4,0,0,31,18,1,0,0,0,31,29,1,
+ 0,0,0,32,3,1,0,0,0,33,37,5,10,0,0,34,36,5,19,0,0,35,34,1,0,0,0,36,39,1,
+ 0,0,0,37,35,1,0,0,0,37,38,1,0,0,0,38,40,1,0,0,0,39,37,1,0,0,0,40,41,5,
+ 13,0,0,41,42,5,2,0,0,42,62,3,8,4,0,43,44,5,10,0,0,44,45,5,14,0,0,45,46,
+ 5,13,0,0,46,47,5,2,0,0,47,48,5,10,0,0,48,49,3,12,6,0,49,50,5,13,0,0,50,
+ 62,1,0,0,0,51,52,5,10,0,0,52,53,5,14,0,0,53,54,5,13,0,0,54,55,5,2,0,0,
+ 55,62,3,8,4,0,56,57,5,10,0,0,57,58,5,15,0,0,58,59,5,13,0,0,59,60,5,2,0,
+ 0,60,62,3,14,7,0,61,33,1,0,0,0,61,43,1,0,0,0,61,51,1,0,0,0,61,56,1,0,0,
+ 0,62,5,1,0,0,0,63,64,5,5,0,0,64,69,3,8,4,0,65,66,5,1,0,0,66,68,3,8,4,0,
+ 67,65,1,0,0,0,68,71,1,0,0,0,69,67,1,0,0,0,69,70,1,0,0,0,70,72,1,0,0,0,
+ 71,69,1,0,0,0,72,73,5,6,0,0,73,77,1,0,0,0,74,75,5,5,0,0,75,77,5,6,0,0,
+ 76,63,1,0,0,0,76,74,1,0,0,0,77,7,1,0,0,0,78,79,5,10,0,0,79,83,3,10,5,0,
+ 80,82,3,10,5,0,81,80,1,0,0,0,82,85,1,0,0,0,83,81,1,0,0,0,83,84,1,0,0,0,
+ 84,86,1,0,0,0,85,83,1,0,0,0,86,87,5,13,0,0,87,107,1,0,0,0,88,89,5,10,0,
+ 0,89,90,3,12,6,0,90,91,5,13,0,0,91,107,1,0,0,0,92,96,5,10,0,0,93,95,5,
+ 19,0,0,94,93,1,0,0,0,95,98,1,0,0,0,96,94,1,0,0,0,96,97,1,0,0,0,97,99,1,
+ 0,0,0,98,96,1,0,0,0,99,107,5,13,0,0,100,107,5,11,0,0,101,107,3,2,1,0,102,
+ 107,3,6,3,0,103,107,5,7,0,0,104,107,5,8,0,0,105,107,5,9,0,0,106,78,1,0,
+ 0,0,106,88,1,0,0,0,106,92,1,0,0,0,106,100,1,0,0,0,106,101,1,0,0,0,106,
+ 102,1,0,0,0,106,103,1,0,0,0,106,104,1,0,0,0,106,105,1,0,0,0,107,9,1,0,
+ 0,0,108,110,5,19,0,0,109,108,1,0,0,0,110,113,1,0,0,0,111,109,1,0,0,0,111,
+ 112,1,0,0,0,112,114,1,0,0,0,113,111,1,0,0,0,114,118,5,17,0,0,115,117,5,
+ 19,0,0,116,115,1,0,0,0,117,120,1,0,0,0,118,116,1,0,0,0,118,119,1,0,0,0,
+ 119,11,1,0,0,0,120,118,1,0,0,0,121,122,5,18,0,0,122,13,1,0,0,0,123,124,
+ 5,10,0,0,124,125,5,17,0,0,125,126,5,13,0,0,126,15,1,0,0,0,11,24,31,37,
+ 61,69,76,83,96,106,111,118
+ };
+
+ public static readonly ATN _ATN =
+ new ATNDeserializer().Deserialize(_serializedATN);
+
+
}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.interp b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.interp
index 69a5836316..abe29b7703 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.interp
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParser.interp
@@ -54,4 +54,4 @@ templateExpression
atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 21, 130, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 25, 10, 3, 12, 3, 14, 3, 28, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 34, 10, 3, 3, 4, 3, 4, 7, 4, 38, 10, 4, 12, 4, 14, 4, 41, 11, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 64, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 7, 5, 70, 10, 5, 12, 5, 14, 5, 73, 11, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 79, 10, 5, 3, 6, 3, 6, 3, 6, 7, 6, 84, 10, 6, 12, 6, 14, 6, 87, 11, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 97, 10, 6, 12, 6, 14, 6, 100, 11, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 109, 10, 6, 3, 7, 7, 7, 112, 10, 7, 12, 7, 14, 7, 115, 11, 7, 3, 7, 3, 7, 7, 7, 119, 10, 7, 12, 7, 14, 7, 122, 11, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 2, 2, 10, 2, 4, 6, 8, 10, 12, 14, 16, 2, 2, 2, 141, 2, 18, 3, 2, 2, 2, 4, 33, 3, 2, 2, 2, 6, 63, 3, 2, 2, 2, 8, 78, 3, 2, 2, 2, 10, 108, 3, 2, 2, 2, 12, 113, 3, 2, 2, 2, 14, 123, 3, 2, 2, 2, 16, 125, 3, 2, 2, 2, 18, 19, 5, 10, 6, 2, 19, 3, 3, 2, 2, 2, 20, 21, 7, 5, 2, 2, 21, 26, 5, 6, 4, 2, 22, 23, 7, 3, 2, 2, 23, 25, 5, 6, 4, 2, 24, 22, 3, 2, 2, 2, 25, 28, 3, 2, 2, 2, 26, 24, 3, 2, 2, 2, 26, 27, 3, 2, 2, 2, 27, 29, 3, 2, 2, 2, 28, 26, 3, 2, 2, 2, 29, 30, 7, 6, 2, 2, 30, 34, 3, 2, 2, 2, 31, 32, 7, 5, 2, 2, 32, 34, 7, 6, 2, 2, 33, 20, 3, 2, 2, 2, 33, 31, 3, 2, 2, 2, 34, 5, 3, 2, 2, 2, 35, 39, 7, 12, 2, 2, 36, 38, 7, 21, 2, 2, 37, 36, 3, 2, 2, 2, 38, 41, 3, 2, 2, 2, 39, 37, 3, 2, 2, 2, 39, 40, 3, 2, 2, 2, 40, 42, 3, 2, 2, 2, 41, 39, 3, 2, 2, 2, 42, 43, 7, 15, 2, 2, 43, 44, 7, 4, 2, 2, 44, 64, 5, 10, 6, 2, 45, 46, 7, 12, 2, 2, 46, 47, 7, 16, 2, 2, 47, 48, 7, 15, 2, 2, 48, 49, 7, 4, 2, 2, 49, 50, 7, 12, 2, 2, 50, 51, 5, 14, 8, 2, 51, 52, 7, 15, 2, 2, 52, 64, 3, 2, 2, 2, 53, 54, 7, 12, 2, 2, 54, 55, 7, 16, 2, 2, 55, 56, 7, 15, 2, 2, 56, 57, 7, 4, 2, 2, 57, 64, 5, 10, 6, 2, 58, 59, 7, 12, 2, 2, 59, 60, 7, 17, 2, 2, 60, 61, 7, 15, 2, 2, 61, 62, 7, 4, 2, 2, 62, 64, 5, 16, 9, 2, 63, 35, 3, 2, 2, 2, 63, 45, 3, 2, 2, 2, 63, 53, 3, 2, 2, 2, 63, 58, 3, 2, 2, 2, 64, 7, 3, 2, 2, 2, 65, 66, 7, 7, 2, 2, 66, 71, 5, 10, 6, 2, 67, 68, 7, 3, 2, 2, 68, 70, 5, 10, 6, 2, 69, 67, 3, 2, 2, 2, 70, 73, 3, 2, 2, 2, 71, 69, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 72, 74, 3, 2, 2, 2, 73, 71, 3, 2, 2, 2, 74, 75, 7, 8, 2, 2, 75, 79, 3, 2, 2, 2, 76, 77, 7, 7, 2, 2, 77, 79, 7, 8, 2, 2, 78, 65, 3, 2, 2, 2, 78, 76, 3, 2, 2, 2, 79, 9, 3, 2, 2, 2, 80, 81, 7, 12, 2, 2, 81, 85, 5, 12, 7, 2, 82, 84, 5, 12, 7, 2, 83, 82, 3, 2, 2, 2, 84, 87, 3, 2, 2, 2, 85, 83, 3, 2, 2, 2, 85, 86, 3, 2, 2, 2, 86, 88, 3, 2, 2, 2, 87, 85, 3, 2, 2, 2, 88, 89, 7, 15, 2, 2, 89, 109, 3, 2, 2, 2, 90, 91, 7, 12, 2, 2, 91, 92, 5, 14, 8, 2, 92, 93, 7, 15, 2, 2, 93, 109, 3, 2, 2, 2, 94, 98, 7, 12, 2, 2, 95, 97, 7, 21, 2, 2, 96, 95, 3, 2, 2, 2, 97, 100, 3, 2, 2, 2, 98, 96, 3, 2, 2, 2, 98, 99, 3, 2, 2, 2, 99, 101, 3, 2, 2, 2, 100, 98, 3, 2, 2, 2, 101, 109, 7, 15, 2, 2, 102, 109, 7, 13, 2, 2, 103, 109, 5, 4, 3, 2, 104, 109, 5, 8, 5, 2, 105, 109, 7, 9, 2, 2, 106, 109, 7, 10, 2, 2, 107, 109, 7, 11, 2, 2, 108, 80, 3, 2, 2, 2, 108, 90, 3, 2, 2, 2, 108, 94, 3, 2, 2, 2, 108, 102, 3, 2, 2, 2, 108, 103, 3, 2, 2, 2, 108, 104, 3, 2, 2, 2, 108, 105, 3, 2, 2, 2, 108, 106, 3, 2, 2, 2, 108, 107, 3, 2, 2, 2, 109, 11, 3, 2, 2, 2, 110, 112, 7, 21, 2, 2, 111, 110, 3, 2, 2, 2, 112, 115, 3, 2, 2, 2, 113, 111, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 116, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 116, 120, 7, 19, 2, 2, 117, 119, 7, 21, 2, 2, 118, 117, 3, 2, 2, 2, 119, 122, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, 121, 13, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 123, 124, 7, 20, 2, 2, 124, 15, 3, 2, 2, 2, 125, 126, 7, 12, 2, 2, 126, 127, 7, 19, 2, 2, 127, 128, 7, 15, 2, 2, 128, 17, 3, 2, 2, 2, 13, 26, 33, 39, 63, 71, 78, 85, 98, 108, 113, 120]
\ No newline at end of file
+[4, 1, 19, 128, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 23, 8, 1, 10, 1, 12, 1, 26, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 32, 8, 1, 1, 2, 1, 2, 5, 2, 36, 8, 2, 10, 2, 12, 2, 39, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 62, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 68, 8, 3, 10, 3, 12, 3, 71, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 77, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 82, 8, 4, 10, 4, 12, 4, 85, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 95, 8, 4, 10, 4, 12, 4, 98, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 107, 8, 4, 1, 5, 5, 5, 110, 8, 5, 10, 5, 12, 5, 113, 9, 5, 1, 5, 1, 5, 5, 5, 117, 8, 5, 10, 5, 12, 5, 120, 9, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 0, 0, 8, 0, 2, 4, 6, 8, 10, 12, 14, 0, 0, 139, 0, 16, 1, 0, 0, 0, 2, 31, 1, 0, 0, 0, 4, 61, 1, 0, 0, 0, 6, 76, 1, 0, 0, 0, 8, 106, 1, 0, 0, 0, 10, 111, 1, 0, 0, 0, 12, 121, 1, 0, 0, 0, 14, 123, 1, 0, 0, 0, 16, 17, 3, 8, 4, 0, 17, 1, 1, 0, 0, 0, 18, 19, 5, 3, 0, 0, 19, 24, 3, 4, 2, 0, 20, 21, 5, 1, 0, 0, 21, 23, 3, 4, 2, 0, 22, 20, 1, 0, 0, 0, 23, 26, 1, 0, 0, 0, 24, 22, 1, 0, 0, 0, 24, 25, 1, 0, 0, 0, 25, 27, 1, 0, 0, 0, 26, 24, 1, 0, 0, 0, 27, 28, 5, 4, 0, 0, 28, 32, 1, 0, 0, 0, 29, 30, 5, 3, 0, 0, 30, 32, 5, 4, 0, 0, 31, 18, 1, 0, 0, 0, 31, 29, 1, 0, 0, 0, 32, 3, 1, 0, 0, 0, 33, 37, 5, 10, 0, 0, 34, 36, 5, 19, 0, 0, 35, 34, 1, 0, 0, 0, 36, 39, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 40, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 40, 41, 5, 13, 0, 0, 41, 42, 5, 2, 0, 0, 42, 62, 3, 8, 4, 0, 43, 44, 5, 10, 0, 0, 44, 45, 5, 14, 0, 0, 45, 46, 5, 13, 0, 0, 46, 47, 5, 2, 0, 0, 47, 48, 5, 10, 0, 0, 48, 49, 3, 12, 6, 0, 49, 50, 5, 13, 0, 0, 50, 62, 1, 0, 0, 0, 51, 52, 5, 10, 0, 0, 52, 53, 5, 14, 0, 0, 53, 54, 5, 13, 0, 0, 54, 55, 5, 2, 0, 0, 55, 62, 3, 8, 4, 0, 56, 57, 5, 10, 0, 0, 57, 58, 5, 15, 0, 0, 58, 59, 5, 13, 0, 0, 59, 60, 5, 2, 0, 0, 60, 62, 3, 14, 7, 0, 61, 33, 1, 0, 0, 0, 61, 43, 1, 0, 0, 0, 61, 51, 1, 0, 0, 0, 61, 56, 1, 0, 0, 0, 62, 5, 1, 0, 0, 0, 63, 64, 5, 5, 0, 0, 64, 69, 3, 8, 4, 0, 65, 66, 5, 1, 0, 0, 66, 68, 3, 8, 4, 0, 67, 65, 1, 0, 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 72, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 73, 5, 6, 0, 0, 73, 77, 1, 0, 0, 0, 74, 75, 5, 5, 0, 0, 75, 77, 5, 6, 0, 0, 76, 63, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 77, 7, 1, 0, 0, 0, 78, 79, 5, 10, 0, 0, 79, 83, 3, 10, 5, 0, 80, 82, 3, 10, 5, 0, 81, 80, 1, 0, 0, 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 86, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 5, 13, 0, 0, 87, 107, 1, 0, 0, 0, 88, 89, 5, 10, 0, 0, 89, 90, 3, 12, 6, 0, 90, 91, 5, 13, 0, 0, 91, 107, 1, 0, 0, 0, 92, 96, 5, 10, 0, 0, 93, 95, 5, 19, 0, 0, 94, 93, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 107, 5, 13, 0, 0, 100, 107, 5, 11, 0, 0, 101, 107, 3, 2, 1, 0, 102, 107, 3, 6, 3, 0, 103, 107, 5, 7, 0, 0, 104, 107, 5, 8, 0, 0, 105, 107, 5, 9, 0, 0, 106, 78, 1, 0, 0, 0, 106, 88, 1, 0, 0, 0, 106, 92, 1, 0, 0, 0, 106, 100, 1, 0, 0, 0, 106, 101, 1, 0, 0, 0, 106, 102, 1, 0, 0, 0, 106, 103, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, 105, 1, 0, 0, 0, 107, 9, 1, 0, 0, 0, 108, 110, 5, 19, 0, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 114, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 118, 5, 17, 0, 0, 115, 117, 5, 19, 0, 0, 116, 115, 1, 0, 0, 0, 117, 120, 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 11, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 121, 122, 5, 18, 0, 0, 122, 13, 1, 0, 0, 0, 123, 124, 5, 10, 0, 0, 124, 125, 5, 17, 0, 0, 125, 126, 5, 13, 0, 0, 126, 15, 1, 0, 0, 0, 11, 24, 31, 37, 61, 69, 76, 83, 96, 106, 111, 118]
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserBaseVisitor.cs b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserBaseVisitor.cs
index 356cc06e9e..51a69f23ac 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserBaseVisitor.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserBaseVisitor.cs
@@ -1,14 +1,14 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// ANTLR Version: 4.8
+// ANTLR Version: 4.11.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
-// Generated from AdaptiveCardsTemplateParser.g4 by ANTLR 4.8
+// Generated from AdaptiveCardsTemplateParser.g4 by ANTLR 4.11.1
// Unreachable code detected
#pragma warning disable 0162
@@ -30,213 +30,214 @@
/// of the available methods.
///
/// The return type of the visit operation.
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")]
+[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.11.1")]
+[System.Diagnostics.DebuggerNonUserCode]
[System.CLSCompliant(false)]
public partial class AdaptiveCardsTemplateParserBaseVisitor : AbstractParseTreeVisitor, IAdaptiveCardsTemplateParserVisitor {
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitJson([NotNull] AdaptiveCardsTemplateParser.JsonContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitObj([NotNull] AdaptiveCardsTemplateParser.ObjContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the jsonPair
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitJsonPair([NotNull] AdaptiveCardsTemplateParser.JsonPairContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the templateRootData
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitTemplateRootData([NotNull] AdaptiveCardsTemplateParser.TemplateRootDataContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the templateData
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitTemplateData([NotNull] AdaptiveCardsTemplateParser.TemplateDataContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the templateWhen
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitTemplateWhen([NotNull] AdaptiveCardsTemplateParser.TemplateWhenContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitArray([NotNull] AdaptiveCardsTemplateParser.ArrayContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueTemplateString
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueTemplateString([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueTemplateStringWithRoot
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueString
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueString([NotNull] AdaptiveCardsTemplateParser.ValueStringContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueNumber
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueNumber([NotNull] AdaptiveCardsTemplateParser.ValueNumberContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueObject
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueObject([NotNull] AdaptiveCardsTemplateParser.ValueObjectContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueArray
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueArray([NotNull] AdaptiveCardsTemplateParser.ValueArrayContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueTrue
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueTrue([NotNull] AdaptiveCardsTemplateParser.ValueTrueContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueFalse
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueFalse([NotNull] AdaptiveCardsTemplateParser.ValueFalseContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueNull
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueNull([NotNull] AdaptiveCardsTemplateParser.ValueNullContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the templatedString
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitTemplatedString([NotNull] AdaptiveCardsTemplateParser.TemplatedStringContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the templateStringWithRoot
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.TemplateStringWithRootContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the valueTemplateExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitValueTemplateExpression([NotNull] AdaptiveCardsTemplateParser.ValueTemplateExpressionContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitJson([NotNull] AdaptiveCardsTemplateParser.JsonContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitObj([NotNull] AdaptiveCardsTemplateParser.ObjContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the jsonPair
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitJsonPair([NotNull] AdaptiveCardsTemplateParser.JsonPairContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the templateRootData
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitTemplateRootData([NotNull] AdaptiveCardsTemplateParser.TemplateRootDataContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the templateData
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitTemplateData([NotNull] AdaptiveCardsTemplateParser.TemplateDataContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the templateWhen
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitTemplateWhen([NotNull] AdaptiveCardsTemplateParser.TemplateWhenContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitArray([NotNull] AdaptiveCardsTemplateParser.ArrayContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueTemplateString
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueTemplateString([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueTemplateStringWithRoot
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueString
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueString([NotNull] AdaptiveCardsTemplateParser.ValueStringContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueNumber
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueNumber([NotNull] AdaptiveCardsTemplateParser.ValueNumberContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueObject
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueObject([NotNull] AdaptiveCardsTemplateParser.ValueObjectContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueArray
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueArray([NotNull] AdaptiveCardsTemplateParser.ValueArrayContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueTrue
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueTrue([NotNull] AdaptiveCardsTemplateParser.ValueTrueContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueFalse
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueFalse([NotNull] AdaptiveCardsTemplateParser.ValueFalseContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueNull
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueNull([NotNull] AdaptiveCardsTemplateParser.ValueNullContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the templatedString
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitTemplatedString([NotNull] AdaptiveCardsTemplateParser.TemplatedStringContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the templateStringWithRoot
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.TemplateStringWithRootContext context) { return VisitChildren(context); }
+ ///
+ /// Visit a parse tree produced by the valueTemplateExpression
+ /// labeled alternative in .
+ ///
+ /// The default implementation returns the result of calling
+ /// on .
+ ///
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ public virtual Result VisitValueTemplateExpression([NotNull] AdaptiveCardsTemplateParser.ValueTemplateExpressionContext context) { return VisitChildren(context); }
}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserVisitor.cs b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserVisitor.cs
index b3f31b4f20..17765c6ffc 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserVisitor.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateParserVisitor.cs
@@ -1,14 +1,14 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// ANTLR Version: 4.8
+// ANTLR Version: 4.11.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
-// Generated from AdaptiveCardsTemplateParser.g4 by ANTLR 4.8
+// Generated from AdaptiveCardsTemplateParser.g4 by ANTLR 4.11.1
// Unreachable code detected
#pragma warning disable 0162
@@ -28,137 +28,137 @@
/// by .
///
/// The return type of the visit operation.
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")]
+[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.11.1")]
[System.CLSCompliant(false)]
public interface IAdaptiveCardsTemplateParserVisitor : IParseTreeVisitor {
- ///
- /// Visit a parse tree produced by .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitJson([NotNull] AdaptiveCardsTemplateParser.JsonContext context);
- ///
- /// Visit a parse tree produced by .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitObj([NotNull] AdaptiveCardsTemplateParser.ObjContext context);
- ///
- /// Visit a parse tree produced by the jsonPair
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitJsonPair([NotNull] AdaptiveCardsTemplateParser.JsonPairContext context);
- ///
- /// Visit a parse tree produced by the templateRootData
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitTemplateRootData([NotNull] AdaptiveCardsTemplateParser.TemplateRootDataContext context);
- ///
- /// Visit a parse tree produced by the templateData
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitTemplateData([NotNull] AdaptiveCardsTemplateParser.TemplateDataContext context);
- ///
- /// Visit a parse tree produced by the templateWhen
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitTemplateWhen([NotNull] AdaptiveCardsTemplateParser.TemplateWhenContext context);
- ///
- /// Visit a parse tree produced by .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitArray([NotNull] AdaptiveCardsTemplateParser.ArrayContext context);
- ///
- /// Visit a parse tree produced by the valueTemplateString
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueTemplateString([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringContext context);
- ///
- /// Visit a parse tree produced by the valueTemplateStringWithRoot
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext context);
- ///
- /// Visit a parse tree produced by the valueString
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueString([NotNull] AdaptiveCardsTemplateParser.ValueStringContext context);
- ///
- /// Visit a parse tree produced by the valueNumber
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueNumber([NotNull] AdaptiveCardsTemplateParser.ValueNumberContext context);
- ///
- /// Visit a parse tree produced by the valueObject
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueObject([NotNull] AdaptiveCardsTemplateParser.ValueObjectContext context);
- ///
- /// Visit a parse tree produced by the valueArray
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueArray([NotNull] AdaptiveCardsTemplateParser.ValueArrayContext context);
- ///
- /// Visit a parse tree produced by the valueTrue
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueTrue([NotNull] AdaptiveCardsTemplateParser.ValueTrueContext context);
- ///
- /// Visit a parse tree produced by the valueFalse
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueFalse([NotNull] AdaptiveCardsTemplateParser.ValueFalseContext context);
- ///
- /// Visit a parse tree produced by the valueNull
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueNull([NotNull] AdaptiveCardsTemplateParser.ValueNullContext context);
- ///
- /// Visit a parse tree produced by the templatedString
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitTemplatedString([NotNull] AdaptiveCardsTemplateParser.TemplatedStringContext context);
- ///
- /// Visit a parse tree produced by the templateStringWithRoot
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.TemplateStringWithRootContext context);
- ///
- /// Visit a parse tree produced by the valueTemplateExpression
- /// labeled alternative in .
- ///
- /// The parse tree.
- /// The visitor result.
- Result VisitValueTemplateExpression([NotNull] AdaptiveCardsTemplateParser.ValueTemplateExpressionContext context);
+ ///
+ /// Visit a parse tree produced by .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitJson([NotNull] AdaptiveCardsTemplateParser.JsonContext context);
+ ///
+ /// Visit a parse tree produced by .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitObj([NotNull] AdaptiveCardsTemplateParser.ObjContext context);
+ ///
+ /// Visit a parse tree produced by the jsonPair
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitJsonPair([NotNull] AdaptiveCardsTemplateParser.JsonPairContext context);
+ ///
+ /// Visit a parse tree produced by the templateRootData
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitTemplateRootData([NotNull] AdaptiveCardsTemplateParser.TemplateRootDataContext context);
+ ///
+ /// Visit a parse tree produced by the templateData
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitTemplateData([NotNull] AdaptiveCardsTemplateParser.TemplateDataContext context);
+ ///
+ /// Visit a parse tree produced by the templateWhen
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitTemplateWhen([NotNull] AdaptiveCardsTemplateParser.TemplateWhenContext context);
+ ///
+ /// Visit a parse tree produced by .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitArray([NotNull] AdaptiveCardsTemplateParser.ArrayContext context);
+ ///
+ /// Visit a parse tree produced by the valueTemplateString
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueTemplateString([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringContext context);
+ ///
+ /// Visit a parse tree produced by the valueTemplateStringWithRoot
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.ValueTemplateStringWithRootContext context);
+ ///
+ /// Visit a parse tree produced by the valueString
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueString([NotNull] AdaptiveCardsTemplateParser.ValueStringContext context);
+ ///
+ /// Visit a parse tree produced by the valueNumber
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueNumber([NotNull] AdaptiveCardsTemplateParser.ValueNumberContext context);
+ ///
+ /// Visit a parse tree produced by the valueObject
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueObject([NotNull] AdaptiveCardsTemplateParser.ValueObjectContext context);
+ ///
+ /// Visit a parse tree produced by the valueArray
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueArray([NotNull] AdaptiveCardsTemplateParser.ValueArrayContext context);
+ ///
+ /// Visit a parse tree produced by the valueTrue
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueTrue([NotNull] AdaptiveCardsTemplateParser.ValueTrueContext context);
+ ///
+ /// Visit a parse tree produced by the valueFalse
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueFalse([NotNull] AdaptiveCardsTemplateParser.ValueFalseContext context);
+ ///
+ /// Visit a parse tree produced by the valueNull
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueNull([NotNull] AdaptiveCardsTemplateParser.ValueNullContext context);
+ ///
+ /// Visit a parse tree produced by the templatedString
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitTemplatedString([NotNull] AdaptiveCardsTemplateParser.TemplatedStringContext context);
+ ///
+ /// Visit a parse tree produced by the templateStringWithRoot
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitTemplateStringWithRoot([NotNull] AdaptiveCardsTemplateParser.TemplateStringWithRootContext context);
+ ///
+ /// Visit a parse tree produced by the valueTemplateExpression
+ /// labeled alternative in .
+ ///
+ /// The parse tree.
+ /// The visitor result.
+ Result VisitValueTemplateExpression([NotNull] AdaptiveCardsTemplateParser.ValueTemplateExpressionContext context);
}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateVisitor.cs b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateVisitor.cs
index 2de812447c..f8fda932a1 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateVisitor.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCardsTemplateVisitor.cs
@@ -23,6 +23,7 @@ public sealed class AdaptiveCardsTemplateVisitor : AdaptiveCardsTemplateParserBa
{
private Stack dataContext = new Stack();
private readonly JToken root;
+ private readonly JToken host;
private readonly Options options;
private ArrayList templateVisitorWarnings;
@@ -33,10 +34,12 @@ private sealed class DataContext
{
public JToken token;
public AdaptiveCardsTemplateSimpleObjectMemory AELMemory;
- public bool IsArrayType = false;
+ public bool IsArrayType;
public JToken RootDataContext;
+ public JToken HostDataContext;
public const string rootKeyword = "$root";
+ public const string hostKeyword = "$host";
public const string dataKeyword = "$data";
public const string indexKeyword = "$index";
@@ -45,9 +48,10 @@ private sealed class DataContext
///
/// new data to kept as data context
/// root data context
- public DataContext(JToken jtoken, JToken rootDataContext)
+ /// optional host data context
+ public DataContext(JToken jtoken, JToken rootDataContext, JToken hostDataContext = null)
{
- Init(jtoken, rootDataContext);
+ Init(jtoken, rootDataContext, hostDataContext);
}
///
@@ -56,12 +60,15 @@ public DataContext(JToken jtoken, JToken rootDataContext)
/// JToken.Parse(text) can throw JsonException if is invalid json
/// json in string
/// a root data context
- public DataContext(string text, JToken rootDataContext)
+ /// optional host data context
+ public DataContext(string text, JToken rootDataContext, JToken hostDataContext = null)
{
// disable date parsing handling
- var jsonReader = new JsonTextReader(new StringReader(text)) { DateParseHandling = DateParseHandling.None };
- var jtoken = JToken.Load(jsonReader);
- Init(jtoken, rootDataContext);
+ using (var jsonReader = new JsonTextReader(new StringReader(text)) { DateParseHandling = DateParseHandling.None })
+ {
+ var jtoken = JToken.Load(jsonReader);
+ Init(jtoken, rootDataContext, hostDataContext);
+ }
}
///
@@ -69,12 +76,14 @@ public DataContext(string text, JToken rootDataContext)
///
/// current data context
/// root data context
- private void Init(JToken jtoken, JToken rootDataContext)
+ /// optional host data context
+ private void Init(JToken jtoken, JToken rootDataContext, JToken hostDataContext)
{
AELMemory = (jtoken is JObject) ? new AdaptiveCardsTemplateSimpleObjectMemory(jtoken) : new AdaptiveCardsTemplateSimpleObjectMemory(new JObject());
token = jtoken;
RootDataContext = rootDataContext;
+ HostDataContext = hostDataContext;
if (jtoken is JArray)
{
@@ -83,6 +92,7 @@ private void Init(JToken jtoken, JToken rootDataContext)
AELMemory.SetValue(dataKeyword, token);
AELMemory.SetValue(rootKeyword, rootDataContext);
+ AELMemory.SetValue(hostKeyword, hostDataContext);
}
///
@@ -94,7 +104,7 @@ public DataContext GetDataContextAtIndex(int index)
{
var jarray = token as JArray;
var jtokenAtIndex = jarray[index];
- var dataContext = new DataContext(jtokenAtIndex, RootDataContext);
+ var dataContext = new DataContext(jtokenAtIndex, RootDataContext, HostDataContext);
dataContext.AELMemory.SetValue(indexKeyword, index);
return dataContext;
}
@@ -104,23 +114,41 @@ public DataContext GetDataContextAtIndex(int index)
/// a constructor for AdaptiveCardsTemplateVisitor
///
/// it will called upon when AEL finds no suitable functions registered in given AEL expression during evaluation the expression
- /// json data in string which will be set as a root data context
- public AdaptiveCardsTemplateVisitor(Func nullSubstitutionOption, string data = null)
+ /// json data as string which will be set as a root data context
+ /// json data as string which will be set as the host data context
+ public AdaptiveCardsTemplateVisitor(Func nullSubstitutionOption, string data = null, string hostData = null)
{
- if (data?.Length != 0)
+ if (!String.IsNullOrEmpty(hostData))
+ {
+ // parse and save host context
+ try
+ {
+ using (var jsonReader = new JsonTextReader(new StringReader(hostData)) { DateParseHandling = DateParseHandling.None })
+ {
+ host = JToken.Load(jsonReader);
+ }
+ }
+ catch (JsonException innerException)
+ {
+ throw new AdaptiveTemplateException("Setting host data failed", innerException);
+ }
+ }
+
+ if (!String.IsNullOrEmpty(data))
{
// set data as root data context
try
{
- var jsonReader = new JsonTextReader(new StringReader(data)) { DateParseHandling = DateParseHandling.None };
- root = JToken.Load(jsonReader);
- PushDataContext(data, root);
+ using (var jsonReader = new JsonTextReader(new StringReader(data)) { DateParseHandling = DateParseHandling.None })
+ {
+ root = JToken.Load(jsonReader);
+ PushDataContext(data, root);
+ }
}
catch (JsonException innerException)
{
throw new AdaptiveTemplateException("Setting root data failed with given data context", innerException);
}
-
}
// if null, set default option
@@ -148,7 +176,7 @@ private DataContext GetCurrentDataContext()
/// current root data context
private void PushDataContext(string stringToParse, JToken rootDataContext)
{
- dataContext.Push(new DataContext(stringToParse, rootDataContext));
+ dataContext.Push(new DataContext(stringToParse, rootDataContext, host));
}
///
@@ -177,13 +205,13 @@ private void PushTemplatedDataContext(string jpath)
{
if (value is JToken jvalue)
{
- dataContext.Push(new DataContext(jvalue, parentDataContext.RootDataContext));
+ dataContext.Push(new DataContext(jvalue, parentDataContext.RootDataContext, parentDataContext.HostDataContext));
}
else
{
var serializedValue = JsonConvert.SerializeObject(value);
- dataContext.Push(new DataContext(serializedValue, parentDataContext.RootDataContext));
+ dataContext.Push(new DataContext(serializedValue, parentDataContext.RootDataContext, parentDataContext.HostDataContext));
}
}
else
@@ -220,7 +248,7 @@ public ArrayList getTemplateVisitorWarnings()
}
///
- /// antlr runtime wil call this method when parse tree's context is
+ /// antlr runtime will call this method when parse tree's context is
/// It is used in parsing a pair that has $data as key
/// It creates new data context, and set it as current memory scope
///
@@ -254,7 +282,7 @@ public override AdaptiveCardsTemplateResult VisitTemplateData([NotNull] Adaptive
var templateLiteral = (templateStrings[0] as AdaptiveCardsTemplateParser.TemplatedStringContext).TEMPLATELITERAL();
try
{
- string templateLiteralExpression = templateLiteral.GetText();
+ string templateLiteralExpression = templateLiteral.GetText();
PushTemplatedDataContext(templateLiteralExpression.Substring(2, templateLiteralExpression.Length - 3));
}
catch (ArgumentNullException)
@@ -268,7 +296,7 @@ public override AdaptiveCardsTemplateResult VisitTemplateData([NotNull] Adaptive
}
}
else
- // else clause handles all of the ordinary json values
+ // else clause handles all of the ordinary json values
{
string childJson = templateDataValueNode.GetText();
try
@@ -535,7 +563,6 @@ public override AdaptiveCardsTemplateResult VisitObj([NotNull] AdaptiveCardsTemp
templateVisitorWarnings.Add($"WARN: Could not evaluate {returnedResult} because it is not an expression or the " +
$"expression is invalid. The $when condition has been set to false by default.");
-
}
else
{
@@ -579,7 +606,7 @@ public override AdaptiveCardsTemplateResult VisitObj([NotNull] AdaptiveCardsTemp
PopDataContext();
}
- // all existing json obj in input and repeated json obj if any have been removed
+ // all existing json obj in input and repeated json obj if any have been removed
if (removedCounts == repeatsCounts)
{
combinedResult.HasItBeenDropped = true;
@@ -589,7 +616,7 @@ public override AdaptiveCardsTemplateResult VisitObj([NotNull] AdaptiveCardsTemp
}
///
- /// Visitor method for ITernminalNode
+ /// Visitor method for ITernminalNode
/// collects token as string and expand template if needed
///
///
@@ -651,7 +678,7 @@ public static string Expand(string unboundString, IMemory data, bool isTemplated
{
exp = Expression.Parse(unboundString.Substring(2, unboundString.Length - 3));
}
- // AEL can throw any errors, for example, System.Data.Syntax error will be thrown from AEL's ANTLR
+ // AEL can throw any errors, for example, System.Data.Syntax error will be thrown from AEL's ANTLR
// when AEL encounters unknown functions.
// We can't possibly know all errors and we simply want to leave the expression as it is when there are any exceptions
#pragma warning disable CA1031 // Do not catch general exception types
@@ -701,9 +728,9 @@ public override AdaptiveCardsTemplateResult VisitTemplateWhen([NotNull] Adaptive
{
throw new ArgumentNullException(nameof(context));
}
- // when this node is visited, the children of this node is shown as below:
+ // when this node is visited, the children of this node is shown as below:
// this node is visited only when parsing was correctly done
- // [ '{', '$when', ':', ',', 'expression']
+ // [ '{', '$when', ':', ',', 'expression']
var result = Visit(context.templateExpression());
if (!result.IsWhen)
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/EvaluationContext.cs b/source/dotnet/Library/AdaptiveCards.Templating/EvaluationContext.cs
index f199fa4b7b..ee0dc169af 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/EvaluationContext.cs
+++ b/source/dotnet/Library/AdaptiveCards.Templating/EvaluationContext.cs
@@ -17,6 +17,7 @@ public sealed class EvaluationContext
/// ""person"": {
/// ""firstName"": ""Hello"",
/// ""lastName"": ""World""
+ /// }
/// }";
///
/// var context = new EvaluationContext()
@@ -29,22 +30,56 @@ public sealed class EvaluationContext
public object Root
{ get; set; }
+ ///
+ /// Provides Host Data Context
+ ///
+ ///
+ /// Typically this is supplied by the host application providing additional context for template binding. For example, the host might supply language or theming information that the template can use for layout.
+ ///
+ ///
+ ///
+ ///
+ /// string jsonData = @"{
+ /// ""person"": {
+ /// ""firstName"": ""Hello"",
+ /// ""lastName"": ""World""
+ /// }
+ /// }";
+ ///
+ /// string hostData = @"{
+ /// ""applicationName"": ""Contoso AdaptiveCards Host",
+ /// ""platform"": ""mobile""
+ /// }";
+ ///
+ /// var context = new EvaluationContext()
+ /// {
+ /// Root = jsonData,
+ /// Host = hostData
+ /// };
+ ///
+ ///
+ ///
+ public object Host
+ { get; set; }
+
///
/// default consturctor
///
public EvaluationContext()
{
Root = null;
+ Host = null;
}
///
- /// constructor for EvaluationContext that takes one argument that will be used for root data context
+ /// constructor for EvaluationContext that takes one required argument used for root data context and one optional argument supplying host data
///
- ///
- public EvaluationContext(object rootData)
+ /// Data to use while binding
+ /// Data supplied by the host for use while binding
+ public EvaluationContext(object rootData, object hostData = null)
{
Root = rootData;
+ Host = hostData;
}
-
}
}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/docs/AdaptiveCardsTemplate.md b/source/dotnet/Library/AdaptiveCards.Templating/docs/AdaptiveCardsTemplate.md
index bd80a82e04..66cfafa373 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/docs/AdaptiveCardsTemplate.md
+++ b/source/dotnet/Library/AdaptiveCards.Templating/docs/AdaptiveCardsTemplate.md
@@ -45,7 +45,7 @@
- [TryGetValue(path,value)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory-TryGetValue-System-String,System-Object@- 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory.TryGetValue(System.String,System.Object@)')
- [Version()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateSimpleObjectMemory-Version 'AdaptiveCards.Templating.AdaptiveCardsTemplateSimpleObjectMemory.Version')
- [AdaptiveCardsTemplateVisitor](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor')
- - [#ctor(nullSubstitutionOption,data)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-#ctor-System-Func{System-String,System-Object},System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.#ctor(System.Func{System.String,System.Object},System.String)')
+ - [#ctor(nullSubstitutionOption,data,hostData)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-#ctor-System-Func{System-String,System-Object},System-String,System-String- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.#ctor(System.Func{System.String,System.Object},System.String,System.String)')
- [Expand(unboundString,data,isTemplatedString,options)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-Expand-System-String,AdaptiveExpressions-Memory-IMemory,System-Boolean,AdaptiveExpressions-Options- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.Expand(System.String,AdaptiveExpressions.Memory.IMemory,System.Boolean,AdaptiveExpressions.Options)')
- [ExpandTemplatedString(node,isExpanded)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-ExpandTemplatedString-Antlr4-Runtime-Tree-ITerminalNode,System-Boolean- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.ExpandTemplatedString(Antlr4.Runtime.Tree.ITerminalNode,System.Boolean)')
- [GetCurrentDataContext()](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-GetCurrentDataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.GetCurrentDataContext')
@@ -72,13 +72,14 @@
- [#ctor(message)](#M-AdaptiveCards-Templating-AdaptiveTemplateException-#ctor-System-String- 'AdaptiveCards.Templating.AdaptiveTemplateException.#ctor(System.String)')
- [#ctor(message,innerException)](#M-AdaptiveCards-Templating-AdaptiveTemplateException-#ctor-System-String,System-Exception- 'AdaptiveCards.Templating.AdaptiveTemplateException.#ctor(System.String,System.Exception)')
- [DataContext](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext')
- - [#ctor(jtoken,rootDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-#ctor-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.#ctor(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
- - [#ctor(text,rootDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-#ctor-System-String,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.#ctor(System.String,Newtonsoft.Json.Linq.JToken)')
+ - [#ctor(jtoken,rootDataContext,hostDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-#ctor-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.#ctor(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
+ - [#ctor(text,rootDataContext,hostDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-#ctor-System-String,Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.#ctor(System.String,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
- [GetDataContextAtIndex(index)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-GetDataContextAtIndex-System-Int32- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.GetDataContextAtIndex(System.Int32)')
- - [Init(jtoken,rootDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-Init-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.Init(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
+ - [Init(jtoken,rootDataContext,hostDataContext)](#M-AdaptiveCards-Templating-AdaptiveCardsTemplateVisitor-DataContext-Init-Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken,Newtonsoft-Json-Linq-JToken- 'AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor.DataContext.Init(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)')
- [EvaluationContext](#T-AdaptiveCards-Templating-EvaluationContext 'AdaptiveCards.Templating.EvaluationContext')
- [#ctor()](#M-AdaptiveCards-Templating-EvaluationContext-#ctor 'AdaptiveCards.Templating.EvaluationContext.#ctor')
- - [#ctor(rootData)](#M-AdaptiveCards-Templating-EvaluationContext-#ctor-System-Object- 'AdaptiveCards.Templating.EvaluationContext.#ctor(System.Object)')
+ - [#ctor(rootData,hostData)](#M-AdaptiveCards-Templating-EvaluationContext-#ctor-System-Object,System-Object- 'AdaptiveCards.Templating.EvaluationContext.#ctor(System.Object,System.Object)')
+ - [Host](#P-AdaptiveCards-Templating-EvaluationContext-Host 'AdaptiveCards.Templating.EvaluationContext.Host')
- [Root](#P-AdaptiveCards-Templating-EvaluationContext-Root 'AdaptiveCards.Templating.EvaluationContext.Root')
- [EvaluationResult](#T-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-EvaluationResult 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.EvaluationResult')
- [EvaluatedToFalse](#F-AdaptiveCards-Templating-AdaptiveCardsTemplateResult-EvaluationResult-EvaluatedToFalse 'AdaptiveCards.Templating.AdaptiveCardsTemplateResult.EvaluationResult.EvaluatedToFalse')
@@ -800,8 +801,8 @@ AdaptiveCards.Templating
an intance of this class is used in visiting a parse tree that's been generated by antlr4 parser
-
-### #ctor(nullSubstitutionOption,data) `constructor`
+
+### #ctor(nullSubstitutionOption,data,hostData) `constructor`
##### Summary
@@ -812,7 +813,8 @@ a constructor for AdaptiveCardsTemplateVisitor
| Name | Type | Description |
| ---- | ---- | ----------- |
| nullSubstitutionOption | [System.Func{System.String,System.Object}](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Func 'System.Func{System.String,System.Object}') | it will called upon when AEL finds no suitable functions registered in given AEL expression during evaluation the expression |
-| data | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json data in string which will be set as a root data context |
+| data | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json data as string which will be set as a root data context |
+| hostData | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json data as string which will be set as the host data context |
### Expand(unboundString,data,isTemplatedString,options) `method`
@@ -1007,7 +1009,7 @@ Visitor method for `obj` grammar rule `AdaptiveCardsTemplateParser.g4`
##### Summary
-antlr runtime wil call this method when parse tree's context is [TemplateDataContext](#T-AdaptiveCardsTemplateParser-TemplateDataContext 'AdaptiveCardsTemplateParser.TemplateDataContext')
+antlr runtime will call this method when parse tree's context is [TemplateDataContext](#T-AdaptiveCardsTemplateParser-TemplateDataContext 'AdaptiveCardsTemplateParser.TemplateDataContext')
It is used in parsing a pair that has $data as key
@@ -1223,8 +1225,8 @@ AdaptiveCards.Templating.AdaptiveCardsTemplateVisitor
maintains data context
-
-### #ctor(jtoken,rootDataContext) `constructor`
+
+### #ctor(jtoken,rootDataContext,hostDataContext) `constructor`
##### Summary
@@ -1236,9 +1238,10 @@ constructs a data context of which current data is jtoken
| ---- | ---- | ----------- |
| jtoken | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | new data to kept as data context |
| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | root data context |
+| hostDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | optional host data context |
-
-### #ctor(text,rootDataContext) `constructor`
+
+### #ctor(text,rootDataContext,hostDataContext) `constructor`
##### Summary
@@ -1250,6 +1253,7 @@ overload contructor that takes `text` which is `string`
| ---- | ---- | ----------- |
| text | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | json in string |
| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | a root data context |
+| hostDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | optional host data context |
##### Exceptions
@@ -1274,8 +1278,8 @@ retrieve a [JObject](#T-Newtonsoft-Json-Linq-JObject 'Newtonsoft.Json.Linq.JObje
| ---- | ---- | ----------- |
| index | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | |
-
-### Init(jtoken,rootDataContext) `method`
+
+### Init(jtoken,rootDataContext,hostDataContext) `method`
##### Summary
@@ -1287,6 +1291,7 @@ Initializer method that takes jtoken and root data context to initialize a data
| ---- | ---- | ----------- |
| jtoken | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | current data context |
| rootDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | root data context |
+| hostDataContext | [Newtonsoft.Json.Linq.JToken](#T-Newtonsoft-Json-Linq-JToken 'Newtonsoft.Json.Linq.JToken') | optional host data context |
## EvaluationContext `type`
@@ -1310,18 +1315,52 @@ default consturctor
This constructor has no parameters.
-
-### #ctor(rootData) `constructor`
+
+### #ctor(rootData,hostData) `constructor`
##### Summary
-constructor for `EvaluationContext` that takes one argument that will be used for root data context
+constructor for `EvaluationContext` that takes one required argument used for root data context and one optional argument supplying host data
##### Parameters
| Name | Type | Description |
| ---- | ---- | ----------- |
-| rootData | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | |
+| rootData | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Data to use while binding |
+| hostData | [System.Object](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Object 'System.Object') | Data supplied by the host for use while binding |
+
+
+### Host `property`
+
+##### Summary
+
+Provides Host Data Context
+
+##### Example
+
+```
+
+ string jsonData = @"{
+ ""person"": {
+ ""firstName"": ""Hello"",
+ ""lastName"": ""World""
+ }
+ }";
+ string hostData = @"{
+ ""applicationName"": ""Contoso AdaptiveCards Host",
+ ""platform"": ""mobile""
+ }";
+ var context = new EvaluationContext()
+ {
+ Root = jsonData,
+ Host = hostData
+ };
+
+```
+
+##### Remarks
+
+Typically this is supplied by the host application providing additional context for template binding. For example, the host might supply language or theming information that the template can use for layout.
### Root `property`
@@ -1338,6 +1377,7 @@ Provides Root Data Context
""person"": {
""firstName"": ""Hello"",
""lastName"": ""World""
+ }
}";
var context = new EvaluationContext()
{
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/tool/makefile b/source/dotnet/Library/AdaptiveCards.Templating/tool/makefile
index eeb23c3b82..60159f7d5b 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/tool/makefile
+++ b/source/dotnet/Library/AdaptiveCards.Templating/tool/makefile
@@ -1,6 +1,6 @@
sources = $(wildcard *.java)
classes = $(wildcard *.class)
-JAR=/usr/local/lib/antlr-4.8-complete.jar
+JAR=/usr/local/lib/antlr-4.11.1-complete.jar
JAVA=/usr/bin/java
LEXER=../AdaptiveCardsTemplateLexer.g4
PARSER=../AdaptiveCardsTemplateParser.g4
diff --git a/source/dotnet/Library/AdaptiveCards/MarkedNet/EmojiMarkup.cs b/source/dotnet/Library/AdaptiveCards/MarkedNet/EmojiMarkup.cs
index 92add937c9..0a37317cd2 100644
--- a/source/dotnet/Library/AdaptiveCards/MarkedNet/EmojiMarkup.cs
+++ b/source/dotnet/Library/AdaptiveCards/MarkedNet/EmojiMarkup.cs
@@ -169,7 +169,7 @@ public static class EmojiMarkup
public const string wavy_dash = ":wavy_dash:";
public const string part_alternation_mark = ":part_alternation_mark:";
public const string congratulations = ":congratulations:";
- public const string secret = ":secret:";
+ public const string secret = ":secret:"; // [SuppressMessage("Microsoft.Security", "CS001:SecretInline", Justification="This is just the emoji name")]
public const string mahjong = ":mahjong:";
public const string black_joker = ":black_joker:";
public const string a = ":a:";
diff --git a/source/dotnet/Library/AdaptiveCards/docs/AdaptiveCards.md b/source/dotnet/Library/AdaptiveCards/docs/AdaptiveCards.md
index a02ca99553..af7a618ce9 100644
--- a/source/dotnet/Library/AdaptiveCards/docs/AdaptiveCards.md
+++ b/source/dotnet/Library/AdaptiveCards/docs/AdaptiveCards.md
@@ -4784,7 +4784,7 @@ Collection of TableRows
##### Summary
-Specifies whether the first row of the table should be treated as a header row, and be announced as such by accessibility software.
+Specifies whether grid lines should be displayed.
### Type `property`
diff --git a/source/dotnet/NuGet.config b/source/dotnet/NuGet.config
new file mode 100644
index 0000000000..7a8b484c38
--- /dev/null
+++ b/source/dotnet/NuGet.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/dotnet/NuGet/AdaptiveCards.Rendering.Wpf.nuspec b/source/dotnet/NuGet/AdaptiveCards.Rendering.Wpf.nuspec
new file mode 100644
index 0000000000..662b18edc0
--- /dev/null
+++ b/source/dotnet/NuGet/AdaptiveCards.Rendering.Wpf.nuspec
@@ -0,0 +1,45 @@
+
+
+
+ AdaptiveCards.Rendering.Wpf
+ 2.8.0
+ Microsoft
+ EULA-Windows.txt
+ https://aka.ms/deprecateLicenseUrl
+ https://adaptivecards.io/
+ https://adaptivecards.io/content/icons_blue/blue-48.png
+ This library implements classes for rendering Adaptive Cards into WPF controls
+ © Microsoft Corporation. All rights reserved.
+ adaptivecards adaptive-cards
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/NuGet/AdaptiveCards.Templating.nuspec b/source/dotnet/NuGet/AdaptiveCards.Templating.nuspec
new file mode 100644
index 0000000000..293fa6c9db
--- /dev/null
+++ b/source/dotnet/NuGet/AdaptiveCards.Templating.nuspec
@@ -0,0 +1,34 @@
+
+
+
+ AdaptiveCards.Templating
+ 1.5.0
+ Microsoft
+ EULA-Windows.txt
+ https://aka.ms/deprecateLicenseUrl
+ https://github.com/microsoft/AdaptiveCards/issues/2448
+ https://adaptivecards.io/content/icons_blue/blue-48.png
+ This library implements a JSON-to-JSON templating/data-binding engine. While it is designed to be used with Adaptive Cards, it is not dependent on Adaptive Cards and can therefore be used in many contexts and applications.
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/NuGet/AdaptiveCards.nuspec b/source/dotnet/NuGet/AdaptiveCards.nuspec
new file mode 100644
index 0000000000..dc7fc66815
--- /dev/null
+++ b/source/dotnet/NuGet/AdaptiveCards.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ AdaptiveCards
+ 3.1.0
+ Microsoft
+ EULA-Windows.txt
+ https://aka.ms/deprecateLicenseUrl
+ https://adaptivecards.io/
+ https://adaptivecards.io/content/icons_blue/blue-48.png
+ This library implements classes for building and serializing adaptive card objects
+ © Microsoft Corporation. All rights reserved.
+ adaptivecards adaptive-cards
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/EULA-Windows.txt b/source/dotnet/NuGet/EULA-Windows.txt
similarity index 100%
rename from source/dotnet/Library/AdaptiveCards.Templating/EULA-Windows.txt
rename to source/dotnet/NuGet/EULA-Windows.txt
diff --git a/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/AdaptiveCards.Net6.Sample.ImageRender.csproj b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/AdaptiveCards.Net6.Sample.ImageRender.csproj
new file mode 100644
index 0000000000..5ca01ce326
--- /dev/null
+++ b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/AdaptiveCards.Net6.Sample.ImageRender.csproj
@@ -0,0 +1,19 @@
+
+
+ Exe
+ net6.0-windows7.0
+
+
+
+
+ x86
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/Program.cs b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/Program.cs
new file mode 100644
index 0000000000..e583de2b15
--- /dev/null
+++ b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/Program.cs
@@ -0,0 +1,138 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using AdaptiveCards.Rendering;
+using AdaptiveCards.Rendering.Wpf;
+using Microsoft.Extensions.CommandLineUtils;
+
+namespace AdaptiveCards.Core.Sample.ImageRender
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ var app = new CommandLineApplication();
+
+ app.HelpOption("-h|--help");
+
+ var pathArg = app.Argument("path", "The path that contains JSON card payloads");
+ var optionRecurse = app.Option("-r|--recursive", "Recurse the directory for all JSON files", CommandOptionType.NoValue);
+ var optionOutput = app.Option("-o|--out", "The directory to output the image(s) to", CommandOptionType.SingleValue);
+ var optionSupportsInteracitivty = app.Option("-i|--supports-interactivity", "Include actions and inputs in the output", CommandOptionType.NoValue);
+ var hostConfigOption = app.Option("--host-config", "Specify a host config file", CommandOptionType.SingleValue);
+
+ app.OnExecute(() =>
+ {
+ var outPath = optionOutput.HasValue()
+ ? optionOutput.Value()
+ : Environment.CurrentDirectory;
+
+ if (!Directory.Exists(outPath))
+ Directory.CreateDirectory(outPath);
+
+ // Get payload search path
+ var payloadPath = pathArg.Value ?? "..\\..\\..\\..\\samples\\v1.0\\Scenarios";
+ if (pathArg.Value == null)
+ {
+ Console.WriteLine($"No path argument specified, trying {payloadPath}...");
+ }
+
+ var files = new List();
+
+ if (File.Exists(payloadPath))
+ {
+ files.Add(payloadPath);
+ }
+ else if (Directory.Exists(payloadPath))
+ {
+ var recurse = optionRecurse.HasValue()
+ ? SearchOption.AllDirectories
+ : SearchOption.TopDirectoryOnly;
+
+ files = Directory.GetFiles(payloadPath, "*.json", recurse).ToList();
+ Console.WriteLine($"Found {files.Count} card payloads...");
+ }
+ else
+ {
+ Console.WriteLine($"{payloadPath} does not contain any JSON files. Nothing to do.");
+ return 1;
+ }
+
+ AdaptiveHostConfig hostConfig = new AdaptiveHostConfig()
+ {
+ SupportsInteractivity = optionSupportsInteracitivty.HasValue()
+ };
+
+
+ if (hostConfigOption.HasValue())
+ {
+ hostConfig = AdaptiveHostConfig.FromJson(File.ReadAllText(hostConfigOption.Value()));
+ }
+
+ AdaptiveCardRenderer renderer = new AdaptiveCardRenderer(hostConfig);
+
+ foreach (var file in files)
+ {
+ RenderCard(file, renderer, outPath).Wait();
+ }
+
+ Console.WriteLine($"All cards were written to {Path.GetFullPath(outPath)}");
+ return 0;
+ });
+
+ app.Execute(args);
+
+
+ // if output, launch the file
+ if (Debugger.IsAttached)
+ {
+ Console.ReadLine();
+ }
+ }
+
+ private static async Task RenderCard(string file, AdaptiveCardRenderer renderer, string outPath)
+ {
+ try
+ {
+ var watch = new Stopwatch();
+ watch.Start();
+
+ AdaptiveCardParseResult parseResult = AdaptiveCard.FromJson(File.ReadAllText(file, Encoding.UTF8));
+ AdaptiveCard card = parseResult.Card;
+
+ // Timeout after 30 seconds
+ var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
+
+ // Render the card to an image
+ RenderedAdaptiveCardImage renderedCard = await renderer.RenderCardToImageAsync(card, true, 400, cts.Token);
+
+ // Report any warnings
+ foreach (var warning in parseResult.Warnings.Union(renderedCard.Warnings))
+ {
+ Console.WriteLine($"[{Path.GetFileName(file)}] WARNING: {warning.Message}");
+ }
+
+ // Write to a png file with the same name as the json file
+ var outputFile = Path.Combine(outPath,
+ Path.ChangeExtension(Path.GetFileName(file), ".png"));
+
+ using (var fileStream = new FileStream(outputFile, FileMode.Create))
+ {
+ renderedCard.ImageStream.CopyTo(fileStream);
+ Console.WriteLine($"[{watch.ElapsedMilliseconds}ms T{Thread.CurrentThread.ManagedThreadId}]\t{Path.GetFileName(file)} => {Path.GetFileName(outputFile)}");
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.Error.WriteLine($"[FAILED]\t{Path.GetFileName(file)} => {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/Properties/launchSettings.json b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/Properties/launchSettings.json
new file mode 100644
index 0000000000..7ca96cd073
--- /dev/null
+++ b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/Properties/launchSettings.json
@@ -0,0 +1,8 @@
+{
+ "profiles": {
+ "AdaptiveCards.Core.Sample.ImageRender": {
+ "commandName": "Project",
+ "commandLineArgs": "..\\..\\..\\..\\..\\..\\..\\samples\\v1.0\\Scenarios -r -i -o ./out --host-config ..\\..\\..\\..\\..\\..\\..\\samples\\HostConfig\\windows-notification.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/README.md b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/README.md
new file mode 100644
index 0000000000..acafdb1c06
--- /dev/null
+++ b/source/dotnet/Samples/AdaptiveCards.Net6.Sample.ImageRender/README.md
@@ -0,0 +1,44 @@
+# AdaptiveCards Image Renderer Sample
+
+This provides a CLI to exercise the .NETCore Renderer to render to images (`AdaptiveCards.Rendering.Wpf.Core`)
+
+## Usage
+
+If you cloned this repo, run the following command to generate images from the Scenario samples. The tool scans a directory for .json files that contain Adaptive Card payloads.
+
+```console
+Usage: dotnet run [payload-path] [options]
+```
+
+```console
+$ dotnet run
+```
+
+Or output to a specific directory
+
+```console
+$ dotnet run -- -o ./out
+```
+
+
+### Arguments
+
+Name | Description
+---|---
+path | The path that contains JSON card payloads
+
+### Options
+
+Short | Long | Description
+---|---|---
+-h |--help | Show help information
+-r |--recursive | Recurse the directory for all JSON files
+-o |--out | The directory to output the image(s) to
+-i | --supports-interactivity | Include actions and inputs in the output
+n/a | --host-config | Specify a host config file
+
+## Example to use Windows Notification host config
+
+```console
+dotnet run -- ../../../../samples -r -i -o ./out --host-config ../../../../samples/hostconfig/windows-notification.json
+```
\ No newline at end of file
diff --git a/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject.wapproj b/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject.wapproj
index bab073157e..c8f52d6db4 100644
--- a/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject.wapproj
+++ b/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject.wapproj
@@ -43,7 +43,7 @@
en-US
AdaptiveCards.Sample.WPFVisualizer.PackageProject_TemporaryKey.pfx
..\WPFVisualizer\AdaptiveCards.Sample.WPFVisualizer.csproj
- 1213BE02687F2D36BA29BFD78D27C2D6F1432842
+ CDB52BC1A7F93B2E7D980BD9C235BDD6BFA59ECB
True
diff --git a/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject_TemporaryKey.pfx b/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject_TemporaryKey.pfx
index ce66aa8dcd..f7a7db6edb 100644
Binary files a/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject_TemporaryKey.pfx and b/source/dotnet/Samples/WPFVisualizer.PackageProject/AdaptiveCards.Sample.WPFVisualizer.PackageProject_TemporaryKey.pfx differ
diff --git a/source/dotnet/Samples/WPFVisualizer/AdaptiveCards.Sample.WPFVisualizer.csproj b/source/dotnet/Samples/WPFVisualizer/AdaptiveCards.Sample.WPFVisualizer.csproj
index 56400b1972..adccb90305 100644
--- a/source/dotnet/Samples/WPFVisualizer/AdaptiveCards.Sample.WPFVisualizer.csproj
+++ b/source/dotnet/Samples/WPFVisualizer/AdaptiveCards.Sample.WPFVisualizer.csproj
@@ -9,7 +9,7 @@
Properties
WpfVisualizer
WpfVisualizer
- v4.6.1
+ v4.8
win
512
{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
@@ -191,7 +191,7 @@
4.0.1
- 12.0.3
+ 13.0.3
5.7.0
diff --git a/source/dotnet/Samples/WPFVisualizer/App.config b/source/dotnet/Samples/WPFVisualizer/App.config
index d7b3d514cd..63c21fb389 100644
--- a/source/dotnet/Samples/WPFVisualizer/App.config
+++ b/source/dotnet/Samples/WPFVisualizer/App.config
@@ -1,17 +1,17 @@
-
+
-
+
-
-
+
+
-
-
+
+
diff --git a/source/dotnet/Samples/WPFVisualizer/Properties/Resources.Designer.cs b/source/dotnet/Samples/WPFVisualizer/Properties/Resources.Designer.cs
index 9cb3d67391..56b68acbdc 100644
--- a/source/dotnet/Samples/WPFVisualizer/Properties/Resources.Designer.cs
+++ b/source/dotnet/Samples/WPFVisualizer/Properties/Resources.Designer.cs
@@ -1,6 +1,4 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
@@ -10,10 +8,10 @@
//
//------------------------------------------------------------------------------
-namespace WpfVisualizer.Properties
-{
-
-
+namespace WpfVisualizer.Properties {
+ using System;
+
+
///
/// A strongly-typed resource class, for looking up localized strings, etc.
///
@@ -21,51 +19,43 @@ namespace WpfVisualizer.Properties
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
/// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WpfVisualizer.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/AdaptiveCards.Sample.WPFVisualizer.Net6.csproj b/source/dotnet/Samples/WPFVisualizerNet6/AdaptiveCards.Sample.WPFVisualizer.Net6.csproj
new file mode 100644
index 0000000000..f0a3152a59
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/AdaptiveCards.Sample.WPFVisualizer.Net6.csproj
@@ -0,0 +1,119 @@
+
+
+ net6.0-windows
+ WinExe
+ WpfVisualizer
+ WpfVisualizer
+ win10-x64
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+ CurrentArchitecture
+ false
+ true
+ true
+ true
+
+
+ true
+ CurrentArchitecture
+
+
+ CurrentArchitecture
+
+
+
+
+
+
+
+
+
+
+
+ HostConfigs\%(Filename)%(Extension)
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ Samples\ActivityUpdate.json
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+ False
+ Microsoft .NET Framework 4.5.2 %28x86 and x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+ 6.0.1
+
+
+ 4.5.0
+
+
+
+ 5.7.0
+ runtime; build; native; contentfiles; analyzers
+ all
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+
+
+ MSBuild:Compile
+
+
+
+
+ SettingsSingleFileGenerator
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/App.config b/source/dotnet/Samples/WPFVisualizerNet6/App.config
new file mode 100644
index 0000000000..d7b3d514cd
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/App.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/App.xaml b/source/dotnet/Samples/WPFVisualizerNet6/App.xaml
new file mode 100644
index 0000000000..4b09900c30
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/App.xaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/App.xaml.cs b/source/dotnet/Samples/WPFVisualizerNet6/App.xaml.cs
new file mode 100644
index 0000000000..99396bc008
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/App.xaml.cs
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace WpfVisualizer
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ public App()
+ {
+ SetCurrentDirectory();
+ }
+
+ ///
+ /// Sets the current directory to the app's output directory. This is needed for Desktop Bridge, which
+ /// defaults to the Windows directory.
+ ///
+ private void SetCurrentDirectory()
+ {
+ // Gets the location of the EXE, including the EXE name
+ var exePath = typeof(App).Assembly.Location;
+ var outputDir = Path.GetDirectoryName(exePath);
+ Directory.SetCurrentDirectory(outputDir);
+ }
+ }
+}
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/FodyWeavers.xml b/source/dotnet/Samples/WPFVisualizerNet6/FodyWeavers.xml
new file mode 100644
index 0000000000..6e2fa02e64
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/MainWindow.xaml b/source/dotnet/Samples/WPFVisualizerNet6/MainWindow.xaml
new file mode 100644
index 0000000000..78590ce30f
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/MainWindow.xaml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Use Xceed Renderers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/MainWindow.xaml.cs b/source/dotnet/Samples/WPFVisualizerNet6/MainWindow.xaml.cs
new file mode 100644
index 0000000000..e04a99cb40
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/MainWindow.xaml.cs
@@ -0,0 +1,511 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+using AdaptiveCards;
+using AdaptiveCards.Templating;
+using AdaptiveCards.Rendering;
+using AdaptiveCards.Rendering.Wpf;
+using Microsoft.Win32;
+using Newtonsoft.Json;
+using System;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Speech.Synthesis;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Threading;
+using Xceed.Wpf.Toolkit.PropertyGrid;
+using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
+using ICSharpCode.AvalonEdit.Highlighting.Xshd;
+using ICSharpCode.AvalonEdit.Highlighting;
+using ICSharpCode.AvalonEdit.Document;
+using ICSharpCode.AvalonEdit;
+
+namespace WpfVisualizer
+{
+ public partial class MainWindow : Window
+ {
+ private bool _dirty;
+ private readonly SpeechSynthesizer _synth;
+ private DocumentLine _errorLine;
+ private string templateData;
+
+ /*
+ // This variable exists so the sample styles are not added twice
+ private bool _stylesAdded = false;
+ */
+
+ public MainWindow()
+ {
+ foreach (var type in typeof(AdaptiveHostConfig).Assembly.GetExportedTypes()
+ .Where(t => t.Namespace == typeof(AdaptiveHostConfig).Namespace))
+ TypeDescriptor.AddAttributes(type, new ExpandableObjectAttribute());
+
+ InitializeComponent();
+
+ LoadJsonSyntaxHighlighting();
+
+ CardPayload = File.ReadAllText("Samples\\ActivityUpdate.json");
+
+ _synth = new SpeechSynthesizer();
+ _synth.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
+ _synth.SetOutputToDefaultAudioDevice();
+ var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
+ timer.Tick += Timer_Tick;
+ timer.Start();
+
+ foreach (var config in Directory.GetFiles("HostConfigs", "*.json"))
+ {
+ hostConfigs.Items.Add(new ComboBoxItem
+ {
+ Content = Path.GetFileNameWithoutExtension(config),
+ Tag = config
+ });
+ }
+
+ Renderer = new AdaptiveCardRenderer()
+ {
+ Resources = Resources
+ };
+
+ Renderer.FeatureRegistration.Set("acTest", "1.0");
+
+ // Use the Xceed rich input controls
+ Renderer.UseXceedElementRenderers();
+ xceedCheckbox.IsChecked = true;
+
+ // Register custom elements and actions
+ // TODO: Change to instance property? Change to UWP parser registration
+ AdaptiveTypedElementConverter.RegisterTypedElement();
+ AdaptiveTypedElementConverter.RegisterTypedElement();
+ AdaptiveTypedElementConverter.RegisterTypedElement();
+
+ Renderer.ElementRenderers.Set(MyCustomRating.Render);
+ Renderer.ElementRenderers.Set(MyCustomInput.Render);
+
+ // This seems unecessary?
+ Renderer.ActionHandlers.AddSupportedAction();
+ }
+
+ private void LoadJsonSyntaxHighlighting()
+ {
+ using (var xmlReader = new System.Xml.XmlTextReader("SyntaxHighlighting\\JSON.xml"))
+ {
+ textBox.SyntaxHighlighting = HighlightingLoader.Load(xmlReader, HighlightingManager.Instance);
+ }
+ }
+
+ public AdaptiveCardRenderer Renderer { get; set; }
+
+ private void Timer_Tick(object sender, EventArgs e)
+ {
+ if (_dirty)
+ {
+ _dirty = false;
+ RenderCard();
+ }
+ }
+
+ public string CardPayload
+ {
+ get { return textBox.Text; }
+ set { textBox.Text = value; }
+ }
+
+ private void RenderCard()
+ {
+ cardError.Children.Clear();
+ cardGrid.Opacity = 0.65;
+
+ if (templateData != null && templateData.Length == 0)
+ {
+ templateData = null;
+ }
+
+ string expandedPayload = "";
+
+ try
+ {
+ // don't throw error, but should affect work flow and performance.
+ // transformer -> has to have errors
+ var template = new AdaptiveCardTemplate(CardPayload);
+ var context = new EvaluationContext
+ {
+ Root = templateData
+ };
+
+ // Create a data binding context, and set its $root property to the
+ // data object to bind the template to
+ // var context = new ACData.EvaluationContext();
+ // context.$root = {
+ // "name": "Mickey Mouse"
+ // };
+
+ expandedPayload = template.Expand(context);
+ }
+
+ catch (Exception e)
+ {
+ // if an exception thrown, we parse and render cards as it is
+ ShowError(e);
+ expandedPayload = CardPayload;
+ }
+
+ try
+ {
+ AdaptiveCardParseResult parseResult = AdaptiveCard.FromJson(expandedPayload);
+
+ AdaptiveCard card = parseResult.Card;
+
+ /*
+ if (!_stylesAdded)
+ {
+ // Example on how to override the Action Positive and Destructive styles
+ Style positiveStyle = new Style(typeof(Button));
+ positiveStyle.Setters.Add(new Setter(Button.BackgroundProperty, Brushes.Green));
+ Style otherStyle = new Style(typeof(Button));
+ otherStyle.Setters.Add(new Setter(Button.BackgroundProperty, Brushes.Yellow));
+ otherStyle.Setters.Add(new Setter(Button.ForegroundProperty, Brushes.Red));
+
+ Renderer.Resources.Add("Adaptive.Action.positive", positiveStyle);
+ Renderer.Resources.Add("Adaptive.Action.other", otherStyle);
+
+ _stylesAdded = true;
+ }
+ */
+
+ RenderedAdaptiveCard renderedCard = Renderer.RenderCard(card);
+ // TODO: should we have an option to render fallback card instead of exception?
+
+ // Wire up click handler
+ renderedCard.OnAction += OnAction;
+
+ renderedCard.OnMediaClicked += OnMediaClick;
+
+ cardGrid.Opacity = 1;
+ cardGrid.Children.Clear();
+ cardGrid.Children.Add(renderedCard.FrameworkElement);
+
+ // Report any warnings
+ var allWarnings = parseResult.Warnings.Union(renderedCard.Warnings);
+ foreach (var warning in allWarnings)
+ {
+ ShowWarning(warning.Message);
+ }
+ }
+ catch (AdaptiveRenderException ex)
+ {
+ var fallbackCard = new TextBlock
+ {
+ Text = ex.CardFallbackText ?? "Sorry, we couldn't render the card"
+ };
+
+ cardGrid.Children.Add(fallbackCard);
+ }
+ catch (Exception ex)
+ {
+ ShowError(ex);
+ }
+ }
+
+ private void OnAction(RenderedAdaptiveCard sender, AdaptiveActionEventArgs e)
+ {
+ if (e.Action is AdaptiveOpenUrlAction openUrlAction)
+ {
+ Process.Start(openUrlAction.Url.AbsoluteUri);
+ }
+ else if (e.Action is AdaptiveShowCardAction showCardAction)
+ {
+ // Action.ShowCard can be rendered inline automatically, or in "popup" mode
+ // If the Host Config is set to Popup mode, then the app needs to show it
+ if (Renderer.HostConfig.Actions.ShowCard.ActionMode == ShowCardActionMode.Popup)
+ {
+ var dialog = new ShowCardWindow(showCardAction.Title, showCardAction, Resources);
+ dialog.Owner = this;
+ dialog.ShowDialog();
+ }
+ }
+ else if (e.Action is AdaptiveSubmitAction submitAction)
+ {
+ var inputs = sender.UserInputs.AsJson();
+
+ // Merge the Action.Submit Data property with the inputs
+ inputs.Merge(submitAction.Data);
+
+ MessageBox.Show(this, JsonConvert.SerializeObject(inputs, Formatting.Indented), "SubmitAction");
+ }
+ else if (e.Action is AdaptiveExecuteAction executeAction)
+ {
+ var inputs = sender.UserInputs.AsJson();
+
+ // Merge the Action.Execute Data property with the inputs
+ inputs.Merge(executeAction.Data);
+
+ MessageBox.Show(this, JsonConvert.SerializeObject(inputs, Formatting.Indented) + "\nverb: " + executeAction.Verb, "ExecuteAction");
+ }
+ }
+
+ private void OnMediaClick(RenderedAdaptiveCard sender, AdaptiveMediaEventArgs e)
+ {
+ MessageBox.Show(this, JsonConvert.SerializeObject(e.Media), "Host received a Media");
+ }
+
+ private void ShowWarning(string message)
+ {
+ var textBlock = new TextBlock
+ {
+ Text = "WARNING: " + message,
+ TextWrapping = TextWrapping.Wrap,
+ Style = Resources["Warning"] as Style
+ };
+ var button = new Button { Content = textBlock };
+ cardError.Children.Add(button);
+ }
+
+ private void ShowError(Exception err)
+ {
+ var textBlock = new TextBlock
+ {
+ Text = err.Message + "\nSource : " + err.Source,
+ TextWrapping = TextWrapping.Wrap,
+ Style = Resources["Error"] as Style
+ };
+ var button = new Button { Content = textBlock };
+ button.Click += Button_Click;
+ cardError.Children.Add(button);
+
+ var iPos = err.Message.IndexOf("line ");
+ if (iPos > 0)
+ {
+ iPos += 5;
+ var iEnd = err.Message.IndexOf(",", iPos);
+
+ var line = 1;
+ if (int.TryParse(err.Message.Substring(iPos, iEnd - iPos), out line))
+ {
+ if (line == 0) line = 1;
+ iPos = err.Message.IndexOf("position ");
+ if (iPos > 0)
+ {
+ iPos += 9;
+ iEnd = err.Message.IndexOf(".", iPos);
+ var position = 0;
+ if (int.TryParse(err.Message.Substring(iPos, iEnd - iPos), out position))
+ _errorLine = textBox.Document.GetLineByNumber(Math.Min(line, textBox.Document.LineCount));
+ }
+ }
+ }
+ }
+
+ private void _OnMissingInput(object sender, MissingInputEventArgs args)
+ {
+ MessageBox.Show("Required input is missing.");
+ args.FrameworkElement.Focus();
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ if (_errorLine != null)
+ textBox.Select(_errorLine.Offset, _errorLine.Length);
+ }
+
+ private void loadButton_Click(object sender, RoutedEventArgs e)
+ {
+ string cardPayload;
+ OpenFileDialogForJson(out cardPayload);
+ CardPayload = cardPayload;
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ var binding = new CommandBinding(NavigationCommands.GoToPage, GoToPage, CanGoToPage);
+ // Register CommandBinding for all windows.
+ CommandManager.RegisterClassCommandBinding(typeof(Window), binding);
+ }
+
+
+ private void GoToPage(object sender, ExecutedRoutedEventArgs e)
+ {
+ if (e.Parameter is string)
+ {
+ var name = e.Parameter as string;
+ if (!string.IsNullOrWhiteSpace(name))
+ Process.Start(name);
+ }
+ }
+
+ private void CanGoToPage(object sender, CanExecuteRoutedEventArgs e)
+ {
+ e.CanExecute = true;
+ }
+
+ private async void viewImage_Click(object sender, RoutedEventArgs e)
+ {
+ var supportsInteractivity = Renderer.HostConfig.SupportsInteractivity;
+
+ try
+ {
+ this.IsEnabled = false;
+
+ //Disable interactivity to remove inputs and actions from the image
+ Renderer.HostConfig.SupportsInteractivity = false;
+
+ var renderedCard = await Renderer.RenderCardToImageAsync(AdaptiveCard.FromJson(CardPayload).Card, false);
+ using (var imageStream = renderedCard.ImageStream)
+ {
+ new ViewImageWindow(renderedCard.ImageStream).Show();
+ }
+ }
+ catch
+ {
+ MessageBox.Show("Failed to render image");
+ }
+ finally
+ {
+ Renderer.HostConfig.SupportsInteractivity = supportsInteractivity;
+ this.IsEnabled = true;
+ }
+ }
+
+ private void speak_Click(object sender, RoutedEventArgs e)
+ {
+ var result = AdaptiveCard.FromJson(CardPayload);
+ var card = result.Card;
+
+ _synth.SpeakAsyncCancelAll();
+ if (card.Speak != null)
+ {
+ _synth.SpeakSsmlAsync(FixSSML(card.Speak));
+ }
+ }
+
+ private string FixSSML(string speak)
+ {
+ var sb = new StringBuilder();
+ sb.AppendLine("");
+ sb.AppendLine(speak);
+ sb.AppendLine("");
+ return sb.ToString();
+ }
+
+ private void textBox_TextChanged(object sender, EventArgs e)
+ {
+ _dirty = true;
+ }
+
+ private void toggleOptions_Click(object sender, RoutedEventArgs e)
+ {
+ hostConfigEditor.Visibility = hostConfigEditor.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
+ }
+
+ public AdaptiveHostConfig HostConfig
+ {
+ get => Renderer.HostConfig;
+ set
+ {
+ hostConfigerror.Children.Clear();
+ Renderer.HostConfig = value;
+ _dirty = true;
+ if (value != null)
+ {
+ var props = value.GetType()
+ .GetRuntimeProperties()
+ .Where(p => typeof(AdaptiveConfigBase).IsAssignableFrom(p.PropertyType));
+
+ foreach (var x in value.AdditionalData)
+ {
+ var textBlock = new TextBlock
+ {
+ Text = $"Unknown property {x.Key}",
+ TextWrapping = TextWrapping.Wrap,
+ Style = Resources["Warning"] as Style
+ };
+ hostConfigerror.Children.Add(textBlock);
+ }
+ }
+ }
+ }
+
+ private void hostConfigs_Selected(object sender, RoutedEventArgs e)
+ {
+ HostConfig = AdaptiveHostConfig.FromJson(File.ReadAllText((string)((ComboBoxItem)hostConfigs.SelectedItem).Tag));
+ hostConfigEditor.SelectedObject = Renderer.HostConfig;
+ }
+
+ private void loadConfig_Click(object sender, RoutedEventArgs e)
+ {
+ var dlg = new OpenFileDialog();
+ dlg.DefaultExt = ".json";
+ dlg.Filter = "Json documents (*.json)|*.json";
+ var result = dlg.ShowDialog();
+ if (result == true)
+ {
+ HostConfig = AdaptiveHostConfig.FromJson(File.ReadAllText(dlg.FileName));
+ }
+ }
+
+ private void saveConfig_Click(object sender, RoutedEventArgs e)
+ {
+ var dlg = new SaveFileDialog();
+ dlg.DefaultExt = ".json";
+ dlg.Filter = "Json documents (*.json)|*.json";
+ var result = dlg.ShowDialog();
+ if (result == true)
+ {
+ var json = JsonConvert.SerializeObject(Renderer.HostConfig, Formatting.Indented);
+ File.WriteAllText(dlg.FileName, json);
+ }
+ }
+
+ private void HostConfigEditor_OnPropertyValueChanged(object sender, PropertyValueChangedEventArgs e)
+ {
+ _dirty = true;
+ }
+
+ private void XceedCheckBox_Unchecked(object sender, RoutedEventArgs e)
+ {
+ _dirty = true;
+ }
+
+ private void XceedCheckBox_Checked(object sender, RoutedEventArgs e)
+ {
+ _dirty = true;
+ }
+
+ private void templateData_Added(object sender, EventArgs e)
+ {
+ var textEditor = sender as TextEditor;
+ templateData = textEditor.Text;
+ _dirty = true;
+ }
+
+ private void OpenFileDialogForJson(out string output)
+ {
+ var dlg = new OpenFileDialog();
+ dlg.DefaultExt = ".json";
+ dlg.Filter = "Json documents (*.json)|*.json";
+ output = "";
+ if (dlg.ShowDialog() == true)
+ {
+ output = File.ReadAllText(dlg.FileName).Replace("\t", " ");
+ _dirty = true;
+ }
+ }
+
+ private void loadTemplateDataButton_Click(object sender, RoutedEventArgs e)
+ {
+ OpenFileDialogForJson(out templateData);
+ if (templateData.Length == 0)
+ {
+ templateData = null;
+ }
+ templateDataTextBox.Text = templateData;
+ }
+ }
+}
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/PRIVACY.md b/source/dotnet/Samples/WPFVisualizerNet6/PRIVACY.md
new file mode 100644
index 0000000000..086968d44e
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/PRIVACY.md
@@ -0,0 +1,13 @@
+# Privacy Policy
+
+This privacy notice discloses the privacy practices for the Adaptive Cards WPF Visualizer. This privacy notice applies solely to information collected by this app. It will notify you of the following:
+
+1. What personally identifiable information is collected from you through the app, how it is used and with whom it may be shared.
+1. What choices are available to you regarding the use of your data.
+1. The security procedures in place to protect the misuse of your information.
+1. How you can correct any inaccuracies in the information.
+
+## Information Collection, Use, and Sharing
+We do not collect any information from the app.
+
+If you feel that we are not abiding by this privacy policy, you should contact us immediately [via email](adaptivecardstores@microsoft.com).
\ No newline at end of file
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/Properties/Resources.Designer.cs b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Resources.Designer.cs
new file mode 100644
index 0000000000..9cb3d67391
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Resources.Designer.cs
@@ -0,0 +1,73 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WpfVisualizer.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WpfVisualizer.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/Properties/Resources.resx b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Resources.resx
new file mode 100644
index 0000000000..af7dbebbac
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/Properties/Settings.Designer.cs b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Settings.Designer.cs
new file mode 100644
index 0000000000..0692a05564
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Settings.Designer.cs
@@ -0,0 +1,32 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WpfVisualizer.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/Properties/Settings.settings b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Settings.settings
new file mode 100644
index 0000000000..033d7a5e9e
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Samples/WPFVisualizerNet6/SyntaxHighlighting/JSON.xml b/source/dotnet/Samples/WPFVisualizerNet6/SyntaxHighlighting/JSON.xml
new file mode 100644
index 0000000000..b32b96a5da
--- /dev/null
+++ b/source/dotnet/Samples/WPFVisualizerNet6/SyntaxHighlighting/JSON.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+ true
+ false
+
+
+ "
+ (?=:)
+
+
+
+ (?<=:)\040"[^"]*
+
+ "
+
+ \b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?
+
+
\ No newline at end of file
diff --git a/source/dotnet/Test/AdaptiveCards.Templating.Test/AdaptiveCards.Templating.Test.csproj b/source/dotnet/Test/AdaptiveCards.Templating.Test/AdaptiveCards.Templating.Test.csproj
index 3aa8996f95..13a860a3d4 100644
--- a/source/dotnet/Test/AdaptiveCards.Templating.Test/AdaptiveCards.Templating.Test.csproj
+++ b/source/dotnet/Test/AdaptiveCards.Templating.Test/AdaptiveCards.Templating.Test.csproj
@@ -7,8 +7,8 @@
-
-
+
+
diff --git a/source/dotnet/Test/AdaptiveCards.Templating.Test/TestTransform.cs b/source/dotnet/Test/AdaptiveCards.Templating.Test/TestTransform.cs
index 5175a95e9f..99bc15b7c7 100644
--- a/source/dotnet/Test/AdaptiveCards.Templating.Test/TestTransform.cs
+++ b/source/dotnet/Test/AdaptiveCards.Templating.Test/TestTransform.cs
@@ -13677,6 +13677,227 @@ public void TestWorkWithRepeatingItems()
}
}
+ [TestClass]
+ public sealed class TestHostKeyword
+ {
+ [TestMethod]
+ public void TestRootInDataContext()
+ {
+ string jsonTemplate = @"{
+ ""type"": ""AdaptiveCard"",
+ ""body"": [
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""$data"": ""${$root.LineItems}"",
+ ""type"": ""TextBlock"",
+ ""id"": ""ReceiptRequired${$index}"",
+ ""text"": ""${string(Milage)}""
+ }
+ ]
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""${$host.text}""
+ }
+ ]
+ }";
+ string rootData = @"{
+ ""LineItems"": [
+ {""Milage"" : 1},
+ {""Milage"" : 10}
+ ]
+ }";
+
+ string hostData = @"{
+ ""text"": ""placeholder""
+ }";
+
+ AdaptiveCardTemplate transformer = new AdaptiveCardTemplate(jsonTemplate);
+ var context = new EvaluationContext
+ {
+ Root = rootData,
+ Host = hostData
+ };
+
+ string cardJson = transformer.Expand(context);
+
+ TestTemplate.AssertJsonEqual(@"{
+ ""type"": ""AdaptiveCard"",
+ ""body"": [
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""type"": ""TextBlock"",
+ ""id"": ""ReceiptRequired0"",
+ ""text"": ""1""
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""id"": ""ReceiptRequired1"",
+ ""text"": ""10""
+ }
+ ]
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""placeholder""
+ }
+ ]
+}", cardJson);
+ }
+
+ [TestMethod]
+ public void TestCanAccessByAEL()
+ {
+ string jsonTemplate = @"{
+ ""type"": ""AdaptiveCard"",
+ ""body"": [
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""${$root.LineItems[0].Milage}""
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""${$root.LineItems[1].Milage}""
+ }
+ ]
+ },
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""${$host.Parameters[0].one}""
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""${$host.Parameters[1].two}""
+ }
+ ]
+ }
+ ]
+ }";
+ string rootJsonData = @"{
+ ""LineItems"": [
+ {""Milage"" : 1},
+ {""Milage"" : 10}
+ ]
+ }";
+
+ string hostJsonData = @"{
+ ""Parameters"": [
+ {""one"": 1},
+ {""two"": 2}
+ ]
+ }";
+
+ AdaptiveCardTemplate transformer = new AdaptiveCardTemplate(jsonTemplate);
+ var context = new EvaluationContext
+ {
+ Root = rootJsonData,
+ Host = hostJsonData
+ };
+
+ string cardJson = transformer.Expand(context);
+
+ TestTemplate.AssertJsonEqual(@"{
+ ""type"": ""AdaptiveCard"",
+ ""body"": [
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""type"": ""TextBlock"",
+ ""text"": 1
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": 10
+ }
+ ]
+ },
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""type"": ""TextBlock"",
+ ""text"": 1
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": 2
+ }
+ ]
+ }
+ ]
+ }",
+ cardJson);
+ }
+
+ [TestMethod]
+ public void TestWorkWithRepeatingItems()
+ {
+ string jsonTemplate = @"{
+ ""type"": ""AdaptiveCard"",
+ ""body"": [
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""$data"": ""${$host.LineItems}"",
+ ""type"": ""TextBlock"",
+ ""text"": ""Class: ${$host.Class}, Mileage: ${Mileage}""
+ }
+ ]
+ }
+ ]
+ }";
+
+ string rootJsonData = "{}";
+ string hostJsonData = @"{
+ ""Class"" : ""Ship"",
+ ""LineItems"": [
+ {""Mileage"" : 1},
+ {""Mileage"" : 10}
+ ]
+ }";
+
+ AdaptiveCardTemplate transformer = new AdaptiveCardTemplate(jsonTemplate);
+ var context = new EvaluationContext
+ {
+ Root = rootJsonData,
+ Host = hostJsonData
+ };
+
+ string cardJson = transformer.Expand(context);
+
+ TestTemplate.AssertJsonEqual(@"{
+ ""type"": ""AdaptiveCard"",
+ ""body"": [
+ {
+ ""type"": ""Container"",
+ ""items"": [
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""Class: Ship, Mileage: 1""
+ },
+ {
+ ""type"": ""TextBlock"",
+ ""text"": ""Class: Ship, Mileage: 10""
+ }
+ ]
+ }
+ ]
+ }", cardJson);
+ }
+ }
+
[TestClass]
public sealed class TestDataKeyword
{
diff --git a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer.xcodeproj/project.pbxproj b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer.xcodeproj/project.pbxproj
index 26d8ab9341..664e71c934 100644
--- a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer.xcodeproj/project.pbxproj
+++ b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer.xcodeproj/project.pbxproj
@@ -604,7 +604,7 @@
TargetAttributes = {
F423C0711EE1FB6100905679 = {
CreatedOnToolsVersion = 8.3.2;
- DevelopmentTeam = UBF8T346G9;
+ DevelopmentTeam = 9KBH5RKYEW;
ProvisioningStyle = Automatic;
};
F423C08D1EE1FB6100905679 = {
@@ -956,10 +956,10 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1.2.5;
- DEVELOPMENT_TEAM = UBF8T346G9;
+ DEVELOPMENT_TEAM = 9KBH5RKYEW;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"COCOAPODS=1",
@@ -967,7 +967,7 @@
);
INFOPLIST_FILE = ADCIOSVisualizer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = MSFT.ADCIOSVisualizer;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.Microsoft.ADCIOSVisualizer-df";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
VERSIONING_SYSTEM = "apple-generic";
@@ -1125,13 +1125,13 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1.2.5;
- DEVELOPMENT_TEAM = UBF8T346G9;
+ DEVELOPMENT_TEAM = 9KBH5RKYEW;
INFOPLIST_FILE = ADCIOSVisualizer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = MSFT.ADCIOSVisualizer;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.Microsoft.ADCIOSVisualizer-df";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
VERSIONING_SYSTEM = "apple-generic";
@@ -1144,13 +1144,13 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1.2.5;
- DEVELOPMENT_TEAM = UBF8T346G9;
+ DEVELOPMENT_TEAM = 9KBH5RKYEW;
INFOPLIST_FILE = ADCIOSVisualizer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = MSFT.ADCIOSVisualizer;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.Microsoft.ADCIOSVisualizer-df";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
VERSIONING_SYSTEM = "apple-generic";
diff --git a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/Info.plist b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/Info.plist
index 43704ec1f6..ec9a5e9e35 100644
--- a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/Info.plist
+++ b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/Info.plist
@@ -2,10 +2,6 @@
- CFBundleIconFiles
-
- Adaptive1.0.png
-
CFBundleDevelopmentRegion
en
CFBundleDisplayName
diff --git a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/ViewController.m b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/ViewController.m
index 61666438c8..b9987828de 100644
--- a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/ViewController.m
+++ b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizer/ViewController.m
@@ -27,6 +27,7 @@
@interface ViewController () {
id _defaultRenderer;
ACRChatWindow *_dataSource;
+ __weak UIView *_targetView;
dispatch_queue_t _global_queue;
__weak AVPlayerViewController *_mediaViewController;
}
@@ -212,7 +213,6 @@ - (void)viewDidLoad
ACOFeatureRegistration *featureReg = [ACOFeatureRegistration getInstance];
[featureReg addFeature:@"acTest" featureVersion:@"1.0"];
-
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(handleVoiceOverEvent:) name:UIAccessibilityElementFocusedNotification object:nil];
}
@@ -281,7 +281,7 @@ - (void)didFetchUserResponses:(ACOAdaptiveCard *)card action:(ACOBaseActionEleme
} else if (action.type == ACRToggleVisibility) {
[self reloadRowsAtChatWindowsWithIndexPaths:self.chatWindow.indexPathsForSelectedRows];
} else if (action.type == ACRShowCard) {
- [self reloadRowsAtChatWindowsWithIndexPaths:self.chatWindow.indexPathsForSelectedRows];
+ [self reloadRowsAtChatWindowsWithIndexPaths:self.chatWindow.indexPathsForSelectedRows targetView:_targetView];
}
}
@@ -313,6 +313,7 @@ - (void)didChangeViewLayout:(CGRect)oldFrame newFrame:(CGRect)newFrame propertie
- (void)didChangeVisibility:(UIButton *)button isVisible:(BOOL)isVisible
{
+ _targetView = button;
if (isVisible) {
button.backgroundColor = [UIColor redColor];
} else {
@@ -403,6 +404,67 @@ - (BOOL)onDisplayOverflowActionMenu:(NSArray *)menuItems
return YES; // skip SDK defult display
}
+- (void)onChoiceSetQueryChange:(NSDictionary *)searchRequest acoElem:(ACOBaseCardElement *)elem completion:(void (^)(NSDictionary *response, NSError *error))completion
+{
+ NSString *queryString = [searchRequest valueForKey:@"value"];
+ NSMutableDictionary *responseDict = [[NSMutableDictionary alloc] init];
+ NSMutableDictionary *resultsArray = [[NSMutableDictionary alloc] init];
+ [responseDict setValue:resultsArray forKey:@"value"];
+ [responseDict setValue:@"application/vnd.microsoft.search.searchResponse" forKey:@"type"];
+
+ if (queryString != nil && [queryString length]) {
+ NSString *urlString = [NSString stringWithFormat:@"https://azuresearch-usnc.nuget.org/query?q=id:%@", queryString];
+ NSURL *url = [NSURL URLWithString:urlString];
+ NSData *data = [NSData dataWithContentsOfURL:url];
+ if (data != nil) {
+ NSDictionary *resultsDictionary = [NSJSONSerialization JSONObjectWithData:data
+ options:kNilOptions
+ error:nil];
+ NSArray *dataList = [resultsDictionary valueForKey:@"data"];
+ NSNumber *pageSize = [searchRequest valueForKey:@"top"];
+ for (int index = 0; index < [pageSize intValue] && index < [dataList count]; index++) {
+ id itemDict = [dataList objectAtIndex:index];
+ if ([itemDict isKindOfClass:NSDictionary.class]) {
+ resultsArray[[itemDict objectForKey:@"id"]] = [itemDict objectForKey:@"description"];
+ }
+ }
+ [responseDict setValue:resultsArray forKey:@"value"];
+ } else {
+ [responseDict setValue:nil forKey:@"value"];
+ [responseDict setValue:@"application/vnd.microsoft.search.error" forKey:@"type"];
+ }
+ }
+ completion(responseDict, nil);
+}
+
+- (void)didUpdateTypeaheadSearchViewController:(UIViewController *)typeaheadSearchVC searchStateImageView:(UIImageView *)searchStateImageView searchViewState:(TSTypeaehadSearchViewState)searchViewState
+{
+ // modify the UI based on the search view state
+ switch (searchViewState) {
+ case zeroState:
+ searchStateImageView.image = [UIImage systemImageNamed:@"magnifyingglass"];
+ break;
+ case displayingGenericError:
+ searchStateImageView.image = [UIImage systemImageNamed:@"xmark.circle"];
+ break;
+ case displayingInvalidSearchError:
+ searchStateImageView.image = [UIImage systemImageNamed:@"xmark.circle"];
+ break;
+ default:
+ break;
+ }
+}
+
+- (BOOL)shouldLaunchTypeaheadSearchViewController:(UIViewController *)typeaheadSearchVC
+{
+ return YES; // continue SDK defult render;
+}
+
+- (BOOL)shouldConfigureNavigationItemViewWithVC:(UIViewController *)typeaheadSearchVC
+{
+ return YES; // continue SDK defult render;
+}
+
- (UIView *)renderButtons:(ACRView *)rootView
inputs:(NSMutableArray *)inputs
superview:(UIView *)superview
@@ -604,6 +666,11 @@ - (void)reloadRowsAtChatWindowsWithIndexPathsAfterValidation:(NSArray *)indexPaths
+{
+ [self reloadRowsAtChatWindowsWithIndexPaths:indexPaths targetView:nil];
+}
+
+- (void)reloadRowsAtChatWindowsWithIndexPaths:(NSArray *)indexPaths targetView:(UIView *)targetView
{
dispatch_async(_global_queue,
^{
@@ -626,7 +693,7 @@ - (void)reloadRowsAtChatWindowsWithIndexPaths:(NSArray *)indexPat
[self.chatWindow reloadData];
}
completion:^(BOOL finished) {
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, targetView);
}];
}
});
diff --git a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerTests/ACRInputTest.mm b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerTests/ACRInputTest.mm
index 2d21feb5be..fa9d9262ec 100644
--- a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerTests/ACRInputTest.mm
+++ b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerTests/ACRInputTest.mm
@@ -101,7 +101,7 @@ - (void)testCanFilterElements
[filteredDataSource addToSource:key];
}
- [filteredDataSource filter:@"7"];
+ [filteredDataSource updateFilteredListForStaticTypeahead:@"7"];
XCTAssertTrue([[filteredDataSource getItemAt:0] isEqualToString:@"7"]);
}
@@ -110,11 +110,11 @@ - (void)testCanFilterElements1
ACOFilteredDataSource *filteredDataSource = [[ACOFilteredDataSource alloc] init];
addDataToFilteredSource(filteredDataSource, _testStrings1);
- [filteredDataSource filter:@"a"];
+ [filteredDataSource updateFilteredListForStaticTypeahead:@"a"];
XCTAssertEqual(filteredDataSource.count, 4);
- [filteredDataSource filter:@"an"];
+ [filteredDataSource updateFilteredListForStaticTypeahead:@"an"];
XCTAssertEqual(filteredDataSource.count, 2);
- [filteredDataSource filter:@"ang"];
+ [filteredDataSource updateFilteredListForStaticTypeahead:@"ang"];
XCTAssertEqual(filteredDataSource.count, 1);
}
@@ -185,7 +185,7 @@ - (void)testValidation0
ACOAdaptiveCardParseResult *cardParseResult = [ACOAdaptiveCard fromJson:payload];
ACOBaseCardElement *acoElement = [[ACOBaseCardElement alloc] initWithBaseCardElement:[cardParseResult.card card]->GetBody().at(1)];
ACOFilteredDataSource *dataSource = [[ACOFilteredDataSource alloc] init];
- ACOChoiceSetCompactStyleValidator *validator = [[ACOChoiceSetCompactStyleValidator alloc] init:acoElement dataSource:dataSource];
+ ACOChoiceSetFilteredStyleValidator *validator = [[ACOChoiceSetFilteredStyleValidator alloc] init:acoElement dataSource:dataSource];
XCTAssertNotNil(validator);
XCTAssertTrue([validator isValid:@"Red"]);
}
@@ -196,7 +196,7 @@ - (void)testValidation1
ACOAdaptiveCardParseResult *cardParseResult = [ACOAdaptiveCard fromJson:payload];
ACOBaseCardElement *acoElement = [[ACOBaseCardElement alloc] initWithBaseCardElement:[cardParseResult.card card]->GetBody().at(1)];
ACOFilteredDataSource *dataSource = [[ACOFilteredDataSource alloc] init];
- ACOChoiceSetCompactStyleValidator *validator = [[ACOChoiceSetCompactStyleValidator alloc] init:acoElement dataSource:dataSource];
+ ACOChoiceSetFilteredStyleValidator *validator = [[ACOChoiceSetFilteredStyleValidator alloc] init:acoElement dataSource:dataSource];
validator.isRequired = NO;
XCTAssertTrue([validator isValid:nil]);
@@ -213,7 +213,7 @@ - (void)testValidationWithPlaceHolder
ACOAdaptiveCardParseResult *cardParseResult = [ACOAdaptiveCard fromJson:payload];
ACOBaseCardElement *acoElement = [[ACOBaseCardElement alloc] initWithBaseCardElement:[cardParseResult.card card]->GetBody().at(2)];
ACOFilteredDataSource *dataSource = [[ACOFilteredDataSource alloc] init];
- ACOChoiceSetCompactStyleValidator *validator = [[ACOChoiceSetCompactStyleValidator alloc] init:acoElement dataSource:dataSource];
+ ACOChoiceSetFilteredStyleValidator *validator = [[ACOChoiceSetFilteredStyleValidator alloc] init:acoElement dataSource:dataSource];
validator.isRequired = YES;
XCTAssertFalse([validator isValid:@"Please choose"]);
@@ -225,7 +225,7 @@ - (void)testGetUserInput
ACOAdaptiveCardParseResult *cardParseResult = [ACOAdaptiveCard fromJson:payload];
ACOBaseCardElement *acoElement = [[ACOBaseCardElement alloc] initWithBaseCardElement:[cardParseResult.card card]->GetBody().at(2)];
ACOFilteredDataSource *dataSource = [[ACOFilteredDataSource alloc] init];
- ACOChoiceSetCompactStyleValidator *validator = [[ACOChoiceSetCompactStyleValidator alloc] init:acoElement dataSource:dataSource];
+ ACOChoiceSetFilteredStyleValidator *validator = [[ACOChoiceSetFilteredStyleValidator alloc] init:acoElement dataSource:dataSource];
validator.isRequired = YES;
XCTAssertTrue([[validator getValue:@"Please choose"] isEqualToString:@""]);
diff --git a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerUITests/ADCIOSVisualizerUITests.mm b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerUITests/ADCIOSVisualizerUITests.mm
index d34ad1c212..2d0d9c0d6d 100644
--- a/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerUITests/ADCIOSVisualizerUITests.mm
+++ b/source/ios/AdaptiveCards/ADCIOSVisualizer/ADCIOSVisualizerUITests/ADCIOSVisualizerUITests.mm
@@ -225,7 +225,7 @@ - (void)verifyChoiceSetInput:(NSDictionary *)expectedVal
- (void)testCanGatherDefaultValuesFromChoiceInputSet
{
- [self openCardForVersion:@"v1.0" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
+ [self openCardForVersion:@"v1.3" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
XCUIElement *chatWindow = testApp.tables[@"ChatWindow"];
[chatWindow swipeUp];
@@ -245,7 +245,7 @@ - (void)testCanGatherDefaultValuesFromChoiceInputSet
- (void)testCanGatherCorrectValuesFromCompactChoiceSet
{
- [self openCardForVersion:@"v1.0" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
+ [self openCardForVersion:@"v1.3" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
XCUIElement *chatWindow = testApp.tables[@"ChatWindow"];
[chatWindow /*@START_MENU_TOKEN@*/.buttons[@"myColor"] /*[[".cells.buttons[@\"myColor\"]",".buttons[@\"myColor\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/ tap];
@@ -270,7 +270,7 @@ - (void)testCanGatherCorrectValuesFromCompactChoiceSet
- (void)testCanGatherCorrectValuesFromExpandedRadioButton
{
- [self openCardForVersion:@"v1.0" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
+ [self openCardForVersion:@"v1.3" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
XCUIElement *chatWindow = testApp.tables[@"ChatWindow"];
[chatWindow.tables[@"myColor2"].staticTexts[@"myColor2, Blue"] tap];
@@ -295,7 +295,7 @@ - (void)testCanGatherCorrectValuesFromExpandedRadioButton
- (void)testCanGatherCorrectValuesFromChoiceset
{
- [self openCardForVersion:@"v1.0" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
+ [self openCardForVersion:@"v1.3" forCardType:@"Elements" withCardName:@"Input.ChoiceSet.json"];
XCUIElement *chatWindow = testApp.tables[@"ChatWindow"];
[chatWindow.tables[@"myColor3"].staticTexts[@"myColor3, Blue"] tap];
@@ -351,4 +351,95 @@ - (void)testHexColorCodeConversion
XCTAssertTrue(CGColorEqualToColor(color9.CGColor, UIColor.clearColor.CGColor));
}
+- (void)testDynamicTypeaheadSearchFromChoiceset
+{
+ NSString *payload = [NSString stringWithContentsOfFile:@"../samples/v1.6/Tests/Input.ChoiceSet.Static&DynamicTypeahead.json" encoding:NSUTF8StringEncoding error:nil];
+ ACOAdaptiveCardParseResult *cardParseResult = [ACOAdaptiveCard fromJson:payload];
+ if (!cardParseResult.isValid) {
+ return;
+ }
+
+ XCUICoordinate *startPoint = [testApp.buttons[@"v1.3"] coordinateWithNormalizedOffset:CGVectorMake(0, 0)]; // center of the element
+ XCUICoordinate *finishPoint = [startPoint coordinateWithOffset:CGVectorMake(-1000, 0)]; // adjust the x-offset to move left
+ [startPoint pressForDuration:0 thenDragToCoordinate:finishPoint];
+ [self openCardForVersion:@"v1.6" forCardType:@"Tests" withCardName:@"Input.ChoiceSet.DynamicTypeahead.json"];
+ XCUIElement *chosenpackageButton = testApp.tables[@"ChatWindow"].buttons[@"chosenPackage"];
+ [chosenpackageButton tap];
+
+ // back button test
+ XCUIElement *backButton = testApp.buttons[@"Back"];
+ [backButton tap];
+
+ [chosenpackageButton tap];
+
+ XCUIElement *searchBarChosenpackageTable = testApp.otherElements[@"searchBar, chosenPackage"];
+
+ [searchBarChosenpackageTable typeText:@"microsoft"];
+ [NSThread sleepForTimeInterval:0.2];
+ XCUIElement *listviewChosenpackageTable = testApp.tables[@"listView, chosenPackage"];
+ [listviewChosenpackageTable.staticTexts[@"Microsoft.Extensions.Hosting.Abstractions"] tap];
+ // Execute a drag from the 4th element to the 2nd element
+
+ XCUIElementQuery *buttons = testApp.buttons;
+ [buttons[@"OK"] tap];
+
+ NSString *resultsString = [self getInputsString];
+ NSDictionary *resultsDictionary = [self parseJsonToDictionary:resultsString];
+ NSDictionary *inputs = [self getInputsFromResultsDictionary:resultsDictionary];
+ [self verifyInput:@"chosenPackage" matchesExpectedValue:@"Hosting and startup abstractions for applications." inInputSet:inputs];
+}
+
+- (void)testStaticDynamicTypeaheadSearchFromChoiceset
+{
+ NSString *payload = [NSString stringWithContentsOfFile:@"../samples/v1.6/Tests/Input.ChoiceSet.Static&DynamicTypeahead.json" encoding:NSUTF8StringEncoding error:nil];
+ ACOAdaptiveCardParseResult *cardParseResult = [ACOAdaptiveCard fromJson:payload];
+
+ if (!cardParseResult.isValid) {
+ return;
+ }
+
+ XCUICoordinate *startPoint = [testApp.buttons[@"v1.3"] coordinateWithNormalizedOffset:CGVectorMake(0, 0)]; // center of the element
+ XCUICoordinate *finishPoint = [startPoint coordinateWithOffset:CGVectorMake(-1000, 0)]; // adjust the x-offset to move left
+ [startPoint pressForDuration:0 thenDragToCoordinate:finishPoint];
+ [self openCardForVersion:@"v1.6" forCardType:@"Tests" withCardName:@"Input.ChoiceSet.Static&DynamicTypeahead.json"];
+ XCUIElement *choicesetPackageButton = testApp.tables[@"ChatWindow"].buttons[@"choiceset1"];
+ [choicesetPackageButton tap];
+
+ // back button test
+ XCUIElement *backButton = testApp.buttons[@"Back"];
+ [backButton tap];
+
+ [choicesetPackageButton tap];
+
+ // select static choice
+ XCUIElement *listviewChoicesetPackageTable = testApp.tables[@"listView, choiceset1"];
+ [listviewChoicesetPackageTable.staticTexts[@"Ms.IdentityModel.static"] tap];
+
+ // press OK button
+ XCUIElementQuery *buttons = testApp.buttons;
+ [buttons[@"Submit"] tap];
+
+ NSString *resultsString = [self getInputsString];
+ NSDictionary *resultsDictionary = [self parseJsonToDictionary:resultsString];
+ NSDictionary *inputs = [self getInputsFromResultsDictionary:resultsDictionary];
+ [self verifyInput:@"choiceset1" matchesExpectedValue:@"4" inInputSet:inputs];
+
+ // select dynamic choice
+ choicesetPackageButton = testApp.tables[@"ChatWindow"].buttons[@"choiceset1"];
+ [choicesetPackageButton tap];
+ XCUIElement *searchBarChoicesetPackageTable = testApp.otherElements[@"searchBar, choiceset1"];
+ [searchBarChoicesetPackageTable typeText:@"Microsoft.Extensions.Hosting.Abstractions"];
+ [NSThread sleepForTimeInterval:0.2];
+ listviewChoicesetPackageTable = testApp.tables[@"listView, choiceset1"];
+ [listviewChoicesetPackageTable.staticTexts[@"Microsoft.Extensions.Hosting.Abstractions"] tap];
+
+ buttons = testApp.buttons;
+ [buttons[@"Submit"] tap];
+
+ resultsString = [self getInputsString];
+ resultsDictionary = [self parseJsonToDictionary:resultsString];
+ inputs = [self getInputsFromResultsDictionary:resultsDictionary];
+ [self verifyInput:@"choiceset1" matchesExpectedValue:@"Hosting and startup abstractions for applications." inInputSet:inputs];
+}
+
@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards.xcodeproj/project.pbxproj b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards.xcodeproj/project.pbxproj
index 3de6ff9675..6773d00f1a 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards.xcodeproj/project.pbxproj
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards.xcodeproj/project.pbxproj
@@ -29,6 +29,7 @@
300ECB64219A12D100371DC5 /* AdaptiveBase64Util.h in Headers */ = {isa = PBXBuildFile; fileRef = 300ECB62219A12D100371DC5 /* AdaptiveBase64Util.h */; settings = {ATTRIBUTES = (Public, ); }; };
30D56DE9268298B300D6E418 /* AdaptiveCardsTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 30D56DE8268298B300D6E418 /* AdaptiveCardsTests.mm */; };
30D56DEF2682AB9C00D6E418 /* AdaptiveCardsTextBlockTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 30D56DEE2682AB9C00D6E418 /* AdaptiveCardsTextBlockTests.mm */; };
+ 6B00E1162A3A58B30079D8A6 /* ACRTypeaheadSearchViewControllerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B00E1152A3A58B30079D8A6 /* ACRTypeaheadSearchViewControllerPrivate.h */; };
6B096D4E225431D0006CC034 /* ACRRichTextBlockRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B096D4C225431D0006CC034 /* ACRRichTextBlockRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; };
6B096D4F225431D0006CC034 /* ACRRichTextBlockRenderer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6B096D4D225431D0006CC034 /* ACRRichTextBlockRenderer.mm */; };
6B1147D11F32E53A008846EC /* ACRActionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1147D01F32E53A008846EC /* ACRActionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -266,6 +267,20 @@
CA1218C921C4509400152EA8 /* ToggleVisibilityAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CA1218C521C4509400152EA8 /* ToggleVisibilityAction.cpp */; };
CFB972012941C07A008E3795 /* ChoicesData.h in Headers */ = {isa = PBXBuildFile; fileRef = CFB971FF2941C079008E3795 /* ChoicesData.h */; };
CFB972022941C07A008E3795 /* ChoicesData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CFB972002941C079008E3795 /* ChoicesData.cpp */; };
+ CFF954CF29819ABD00F321C3 /* ACOTypeaheadDebouncer.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF954CE29819ABD00F321C3 /* ACOTypeaheadDebouncer.mm */; };
+ CFF954D029819AC300F321C3 /* ACOTypeaheadDebouncer.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF954CD29819AA800F321C3 /* ACOTypeaheadDebouncer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ CFF954D329819B4A00F321C3 /* ACOTypeaheadDynamicChoicesService.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF954D229819B4A00F321C3 /* ACOTypeaheadDynamicChoicesService.mm */; };
+ CFF954D52981AED600F321C3 /* ACOTypeaheadSearchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF954D429819C1200F321C3 /* ACOTypeaheadSearchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ CFF954D82981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF954D62981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.mm */; };
+ CFF954D92981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF954D72981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ CFF954DC2981B2A700F321C3 /* ACRTypeaheadSearchParameters.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF954DA2981B2A700F321C3 /* ACRTypeaheadSearchParameters.mm */; };
+ CFF954DD2981B2A700F321C3 /* ACRTypeaheadSearchParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF954DB2981B2A700F321C3 /* ACRTypeaheadSearchParameters.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ CFF954E02981B62000F321C3 /* ACRTypeaheadSearchViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF954DE2981B62000F321C3 /* ACRTypeaheadSearchViewController.mm */; };
+ CFF95C072982E30E00F321C3 /* ACRTypeaheadSearchParametersTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF95C062982E30E00F321C3 /* ACRTypeaheadSearchParametersTests.mm */; };
+ CFF95C092982E34300F321C3 /* ACRChoiceSetFilteredStyleViewTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF95C082982E34300F321C3 /* ACRChoiceSetFilteredStyleViewTests.mm */; };
+ CFF95C0B2982E38500F321C3 /* ACRChoiceSetCompactStyleViewTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF95C0A2982E38500F321C3 /* ACRChoiceSetCompactStyleViewTests.mm */; };
+ CFF95C0D2982E3C900F321C3 /* ACOTypeaheadDynamicChoicesServiceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF95C0C2982E3C900F321C3 /* ACOTypeaheadDynamicChoicesServiceTests.mm */; };
+ CFF95C0F2982E4EC00F321C3 /* ACOTypeaheadDebouncerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CFF95C0E2982E4EC00F321C3 /* ACOTypeaheadDebouncerTests.mm */; };
DD278A02932F65F8BDD1EA5D /* Pods_AdaptiveCards.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 255F5D3143215497D4067E21 /* Pods_AdaptiveCards.framework */; };
EC367F912F6036B68C5BBFDB /* Pods_AdaptiveCards_AdaptiveCardsTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E3DBB3CD3C02321AED9AEF65 /* Pods_AdaptiveCards_AdaptiveCardsTests.framework */; };
F401A8781F0DB69B006D7AF2 /* ACRImageSetUICollectionView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F401A8761F0DB69B006D7AF2 /* ACRImageSetUICollectionView.mm */; };
@@ -494,6 +509,7 @@
3F3FBD57C361267D351D4B65 /* Pods-AdaptiveCards-AdaptiveCardsTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AdaptiveCards-AdaptiveCardsTests.debug.xcconfig"; path = "Target Support Files/Pods-AdaptiveCards-AdaptiveCardsTests/Pods-AdaptiveCards-AdaptiveCardsTests.debug.xcconfig"; sourceTree = ""; };
45580A4A0B0DE521608DDA3A /* Pods-ADCIOSVisualizer-AdaptiveCardsTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ADCIOSVisualizer-AdaptiveCardsTests.release.xcconfig"; path = "Target Support Files/Pods-ADCIOSVisualizer-AdaptiveCardsTests/Pods-ADCIOSVisualizer-AdaptiveCardsTests.release.xcconfig"; sourceTree = ""; };
4B0881019D2B9BA6009F1B94 /* Pods-AdaptiveCards.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AdaptiveCards.release.xcconfig"; path = "Target Support Files/Pods-AdaptiveCards/Pods-AdaptiveCards.release.xcconfig"; sourceTree = ""; };
+ 6B00E1152A3A58B30079D8A6 /* ACRTypeaheadSearchViewControllerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ACRTypeaheadSearchViewControllerPrivate.h; path = PrivateHeaders/ACRTypeaheadSearchViewControllerPrivate.h; sourceTree = ""; };
6B096D4C225431D0006CC034 /* ACRRichTextBlockRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACRRichTextBlockRenderer.h; sourceTree = ""; };
6B096D4D225431D0006CC034 /* ACRRichTextBlockRenderer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ACRRichTextBlockRenderer.mm; sourceTree = ""; };
6B1147D01F32E53A008846EC /* ACRActionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACRActionDelegate.h; sourceTree = ""; };
@@ -744,6 +760,21 @@
CA1218C521C4509400152EA8 /* ToggleVisibilityAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ToggleVisibilityAction.cpp; path = ../../../../shared/cpp/ObjectModel/ToggleVisibilityAction.cpp; sourceTree = ""; };
CFB971FF2941C079008E3795 /* ChoicesData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChoicesData.h; path = ../../../../shared/cpp/ObjectModel/ChoicesData.h; sourceTree = ""; };
CFB972002941C079008E3795 /* ChoicesData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChoicesData.cpp; path = ../../../../shared/cpp/ObjectModel/ChoicesData.cpp; sourceTree = ""; };
+ CFF954CD29819AA800F321C3 /* ACOTypeaheadDebouncer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ACOTypeaheadDebouncer.h; sourceTree = ""; };
+ CFF954CE29819ABD00F321C3 /* ACOTypeaheadDebouncer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ACOTypeaheadDebouncer.mm; sourceTree = ""; };
+ CFF954D129819B3C00F321C3 /* ACOTypeaheadDynamicChoicesService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ACOTypeaheadDynamicChoicesService.h; sourceTree = ""; };
+ CFF954D229819B4A00F321C3 /* ACOTypeaheadDynamicChoicesService.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ACOTypeaheadDynamicChoicesService.mm; sourceTree = ""; };
+ CFF954D429819C1200F321C3 /* ACOTypeaheadSearchHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ACOTypeaheadSearchHandler.h; sourceTree = ""; };
+ CFF954D62981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ACRChoiceSetFilteredStyleView.mm; sourceTree = ""; };
+ CFF954D72981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ACRChoiceSetFilteredStyleView.h; sourceTree = ""; };
+ CFF954DA2981B2A700F321C3 /* ACRTypeaheadSearchParameters.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ACRTypeaheadSearchParameters.mm; sourceTree = ""; };
+ CFF954DB2981B2A700F321C3 /* ACRTypeaheadSearchParameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ACRTypeaheadSearchParameters.h; sourceTree = ""; };
+ CFF954DE2981B62000F321C3 /* ACRTypeaheadSearchViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ACRTypeaheadSearchViewController.mm; sourceTree = ""; };
+ CFF95C062982E30E00F321C3 /* ACRTypeaheadSearchParametersTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ACRTypeaheadSearchParametersTests.mm; sourceTree = ""; };
+ CFF95C082982E34300F321C3 /* ACRChoiceSetFilteredStyleViewTests.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = ACRChoiceSetFilteredStyleViewTests.mm; sourceTree = ""; };
+ CFF95C0A2982E38500F321C3 /* ACRChoiceSetCompactStyleViewTests.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = ACRChoiceSetCompactStyleViewTests.mm; sourceTree = ""; };
+ CFF95C0C2982E3C900F321C3 /* ACOTypeaheadDynamicChoicesServiceTests.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = ACOTypeaheadDynamicChoicesServiceTests.mm; sourceTree = ""; };
+ CFF95C0E2982E4EC00F321C3 /* ACOTypeaheadDebouncerTests.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = ACOTypeaheadDebouncerTests.mm; sourceTree = ""; };
E3DBB3CD3C02321AED9AEF65 /* Pods_AdaptiveCards_AdaptiveCardsTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AdaptiveCards_AdaptiveCardsTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
ED131801E4C2E2B662925ABF /* Pods-AdaptiveCards-AdaptiveCardsTests.apprelease.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AdaptiveCards-AdaptiveCardsTests.apprelease.xcconfig"; path = "Target Support Files/Pods-AdaptiveCards-AdaptiveCardsTests/Pods-AdaptiveCards-AdaptiveCardsTests.apprelease.xcconfig"; sourceTree = ""; };
F401A8761F0DB69B006D7AF2 /* ACRImageSetUICollectionView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ACRImageSetUICollectionView.mm; sourceTree = ""; };
@@ -1256,6 +1287,36 @@
name = Action.Execute;
sourceTree = "";
};
+ CFF954CC29819A6B00F321C3 /* DynamicTypeahead */ = {
+ isa = PBXGroup;
+ children = (
+ 6B00E1152A3A58B30079D8A6 /* ACRTypeaheadSearchViewControllerPrivate.h */,
+ CFF954D429819C1200F321C3 /* ACOTypeaheadSearchHandler.h */,
+ CFF954CD29819AA800F321C3 /* ACOTypeaheadDebouncer.h */,
+ CFF954CE29819ABD00F321C3 /* ACOTypeaheadDebouncer.mm */,
+ CFF954D129819B3C00F321C3 /* ACOTypeaheadDynamicChoicesService.h */,
+ CFF954D229819B4A00F321C3 /* ACOTypeaheadDynamicChoicesService.mm */,
+ CFF954DB2981B2A700F321C3 /* ACRTypeaheadSearchParameters.h */,
+ CFF954DA2981B2A700F321C3 /* ACRTypeaheadSearchParameters.mm */,
+ CFF954D72981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.h */,
+ CFF954D62981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.mm */,
+ CFF954DE2981B62000F321C3 /* ACRTypeaheadSearchViewController.mm */,
+ );
+ name = DynamicTypeahead;
+ sourceTree = "";
+ };
+ CFF95C052982E2CB00F321C3 /* DynamicTypeahead */ = {
+ isa = PBXGroup;
+ children = (
+ CFF95C062982E30E00F321C3 /* ACRTypeaheadSearchParametersTests.mm */,
+ CFF95C082982E34300F321C3 /* ACRChoiceSetFilteredStyleViewTests.mm */,
+ CFF95C0A2982E38500F321C3 /* ACRChoiceSetCompactStyleViewTests.mm */,
+ CFF95C0C2982E3C900F321C3 /* ACOTypeaheadDynamicChoicesServiceTests.mm */,
+ CFF95C0E2982E4EC00F321C3 /* ACOTypeaheadDebouncerTests.mm */,
+ );
+ path = DynamicTypeahead;
+ sourceTree = "";
+ };
F4071C751FCCBAEF00AF4FEA /* json */ = {
isa = PBXGroup;
children = (
@@ -1305,6 +1366,7 @@
F423C0C21EE1FBAA00905679 /* AdaptiveCardsTests */ = {
isa = PBXGroup;
children = (
+ CFF95C052982E2CB00F321C3 /* DynamicTypeahead */,
6B4C05BE27864B0800882387 /* ACRImagePropertiesTests.mm */,
6B124C8B26B4AA07007E9641 /* AdaptiveCardsActionsTest.mm */,
6B124C9726B9F5FC007E9641 /* AdaptiveCardsColumnTests.mm */,
@@ -1510,6 +1572,7 @@
6B9BDF7120E1BD0E00F13155 /* ACRToggleInputDataSource.mm */,
6BE8DFD5249C5126005EFE66 /* ACRToggleInputView.h */,
6BE8DFD3249C4C1B005EFE66 /* ACRToggleInputView.mm */,
+ CFF954CC29819A6B00F321C3 /* DynamicTypeahead */,
6B92A7E72679227C00CAE3BF /* CompactStyleChoiceSet */,
6B70ABA425797B720095D925 /* InputRenderers */,
);
@@ -1641,6 +1704,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ CFF954DD2981B2A700F321C3 /* ACRTypeaheadSearchParameters.h in Headers */,
6B27CD6624BD52D600C0F90F /* ACRInputLabelView.h in Headers */,
6BBE841923CD184D00ECA586 /* ACREnums.h in Headers */,
6BBE841F23CE60E300ECA586 /* ACRMediaRenderer.h in Headers */,
@@ -1657,6 +1721,7 @@
F44873281EE2261F00FCAFAE /* TimeInput.h in Headers */,
F44873261EE2261F00FCAFAE /* TextInput.h in Headers */,
F44873221EE2261F00FCAFAE /* SubmitAction.h in Headers */,
+ 6B00E1162A3A58B30079D8A6 /* ACRTypeaheadSearchViewControllerPrivate.h in Headers */,
F44873201EE2261F00FCAFAE /* ShowCardAction.h in Headers */,
7EF8879D21F14CDD00BAFF02 /* BackgroundImage.h in Headers */,
F448731B1EE2261F00FCAFAE /* OpenUrlAction.h in Headers */,
@@ -1722,6 +1787,7 @@
F43110451F357487001AAE30 /* ACOHostConfig.h in Headers */,
F4F2556C1F98246000A80D39 /* ACOBaseActionElement.h in Headers */,
F427410A1EF864A900399FBB /* ACRBaseCardElementRenderer.h in Headers */,
+ CFF954D52981AED600F321C3 /* ACOTypeaheadSearchHandler.h in Headers */,
F4CAE7821F75AB9000545555 /* ACOAdaptiveCard.h in Headers */,
F4C1F6001F2C23FD0018CB78 /* ACRActionShowCardRenderer.h in Headers */,
F4C1F5E61F2ABB0E0018CB78 /* ACRActionOpenURLRenderer.h in Headers */,
@@ -1798,6 +1864,7 @@
6BFF23F92714C0F000183C59 /* ACORefreshPrivate.h in Headers */,
6BFF240C2714E3D100183C59 /* ACRSeparator.h in Headers */,
6BFF24022714DE3600183C59 /* ACRChoiceSetViewDataSourceCompactStyle.h in Headers */,
+ CFF954D92981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.h in Headers */,
6BFF240A2714E33000183C59 /* ACRToggleVisibilityTarget.h in Headers */,
6BFF23F22714C0F000183C59 /* ACORemoteResourceInformationPrivate.h in Headers */,
6BFF23F82714C0F000183C59 /* ACRParseWarningPrivate.h in Headers */,
@@ -1806,6 +1873,7 @@
6B8C765526449B09009548FA /* TableColumnDefinition.h in Headers */,
6B8C765326449B09009548FA /* Table.h in Headers */,
6BFCA141264F54B500195CA7 /* ACRTableView.h in Headers */,
+ CFF954D029819AC300F321C3 /* ACOTypeaheadDebouncer.h in Headers */,
6BFF24142714EF2200183C59 /* UtiliOS.h in Headers */,
6BFF24082714E30B00183C59 /* ACRShowCardTarget.h in Headers */,
6BFF24102714E46300183C59 /* ACRImageSetUICollectionView.h in Headers */,
@@ -2116,6 +2184,7 @@
6BFCA145264F54B500195CA7 /* ACRTableCellView.mm in Sources */,
6BFF99FB26003EBA0028069F /* ACOAutoCardButton.mm in Sources */,
F4F6BA2A204E107F003741B6 /* UnknownElement.cpp in Sources */,
+ CFF954DC2981B2A700F321C3 /* ACRTypeaheadSearchParameters.mm in Sources */,
F49683531F6CA24600DF0D3A /* ACRRenderer.mm in Sources */,
F42741211EF9DB8000399FBB /* ACRContainerRenderer.mm in Sources */,
6B616C4021CB1878003E29CE /* ACRToggleVisibilityTarget.mm in Sources */,
@@ -2125,6 +2194,7 @@
6BFF99C925FFF53E0028069F /* Refresh.cpp in Sources */,
F4D33EA51F06F41B00941E44 /* ACRSeparator.mm in Sources */,
F427411D1EF8A25200399FBB /* ACRRegistration.mm in Sources */,
+ CFF954CF29819ABD00F321C3 /* ACOTypeaheadDebouncer.mm in Sources */,
F4C1F5FE1F2C235E0018CB78 /* ACRActionShowCardRenderer.mm in Sources */,
6B377285260194000024E527 /* ACRActionExecuteRenderer.mm in Sources */,
F4F6BA35204F200F003741B6 /* ACRParseWarning.mm in Sources */,
@@ -2141,6 +2211,7 @@
F4D0694A205B27EA003645E4 /* ACRViewController.mm in Sources */,
F44872F51EE2261F00FCAFAE /* AdaptiveCardParseException.cpp in Sources */,
F429794D1F32684900E89914 /* ACRDateTextField.mm in Sources */,
+ CFF954E02981B62000F321C3 /* ACRTypeaheadSearchViewController.mm in Sources */,
F4F44B8120478C6F00A2F24C /* Util.cpp in Sources */,
6BAC0F2E228E2D7300E42DEB /* RichTextElementProperties.cpp in Sources */,
6BFF99CC25FFF53E0028069F /* Authentication.cpp in Sources */,
@@ -2205,12 +2276,14 @@
F42741171EF895AB00399FBB /* ACRTextBlockRenderer.mm in Sources */,
6BDE5C4626FEA7DC003A1DDB /* ACRShowCardTarget.mm in Sources */,
7ECFB640219A3940004727A9 /* ParseContext.cpp in Sources */,
+ CFF954D82981AF5800F321C3 /* ACRChoiceSetFilteredStyleView.mm in Sources */,
6BC30F6E21E56CF900B9FAAE /* UtiliOS.mm in Sources */,
6B3787BA20CB3E0E00015401 /* ACRContentHoldingUIScrollView.mm in Sources */,
F44873231EE2261F00FCAFAE /* TextBlock.cpp in Sources */,
F44872F91EE2261F00FCAFAE /* BaseCardElement.cpp in Sources */,
F427410B1EF864A900399FBB /* ACRBaseCardElementRenderer.mm in Sources */,
F43660781F0706D800EBA868 /* SharedAdaptiveCard.cpp in Sources */,
+ CFF954D329819B4A00F321C3 /* ACOTypeaheadDynamicChoicesService.mm in Sources */,
6B7B1A9120B4D2AB00260731 /* Media.cpp in Sources */,
7EDC0F68213878E800077A13 /* SemanticVersion.cpp in Sources */,
84AE295827FFA26F00D01B82 /* ContentSource.cpp in Sources */,
@@ -2253,12 +2326,17 @@
files = (
6B124C8C26B4AA07007E9641 /* AdaptiveCardsActionsTest.mm in Sources */,
6BE6C7C126E2ECEA009E9171 /* ADCMockResolver.m in Sources */,
+ CFF95C092982E34300F321C3 /* ACRChoiceSetFilteredStyleViewTests.mm in Sources */,
6B124CA426D04CA9007E9641 /* AdaptiveCardsUtiliOSTest.mm in Sources */,
6BE6C7B026E2C9A3009E9171 /* ACRCustomRenderers.mm in Sources */,
+ CFF95C0B2982E38500F321C3 /* ACRChoiceSetCompactStyleViewTests.mm in Sources */,
30D56DEF2682AB9C00D6E418 /* AdaptiveCardsTextBlockTests.mm in Sources */,
6B124C9526B8AE72007E9641 /* MockContext.mm in Sources */,
30D56DE9268298B300D6E418 /* AdaptiveCardsTests.mm in Sources */,
+ CFF95C072982E30E00F321C3 /* ACRTypeaheadSearchParametersTests.mm in Sources */,
+ CFF95C0D2982E3C900F321C3 /* ACOTypeaheadDynamicChoicesServiceTests.mm in Sources */,
6B124C9026B8AC37007E9641 /* ACRMockViews.mm in Sources */,
+ CFF95C0F2982E4EC00F321C3 /* ACOTypeaheadDebouncerTests.mm in Sources */,
6B124C9826B9F5FC007E9641 /* AdaptiveCardsColumnTests.mm in Sources */,
6B4C05BF27864B0800882387 /* ACRImagePropertiesTests.mm in Sources */,
);
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOActionOverflow.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOActionOverflow.h
index 9fa52cf7b4..d907da8d7e 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOActionOverflow.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOActionOverflow.h
@@ -5,7 +5,13 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOBaseActionElement.h"
+#else
+/// Cocoapods Imports
+#import
+#endif
#import
@interface ACOActionOverflow : ACOBaseActionElement
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.h
index ba8f25da35..e48f27e183 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.h
@@ -5,11 +5,21 @@
// Copyright © 2017 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOAdaptiveCardParseResult.h"
#import "ACOAuthentication.h"
#import "ACORefresh.h"
#import "ACORemoteResourceInformation.h"
#import "ACRIBaseInputHandler.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#import
+#import
+#import
+#endif
#import
@interface ACOAdaptiveCard : NSObject
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.mm
index 84a94ac1f5..f8b69736b1 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.mm
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOAdaptiveCard.mm
@@ -58,11 +58,12 @@ - (NSData *)inputs
+ (ACOAdaptiveCardParseResult *)fromJson:(NSString *)payload;
{
+ const std::string g_version = "1.6";
ACOAdaptiveCardParseResult *result = nil;
if (payload) {
try {
ACOAdaptiveCard *card = [[ACOAdaptiveCard alloc] init];
- std::shared_ptr parseResult = AdaptiveCard::DeserializeFromString(std::string([payload UTF8String]), std::string("1.5"));
+ std::shared_ptr parseResult = AdaptiveCard::DeserializeFromString(std::string([payload UTF8String]), g_version);
NSMutableArray *acrParseWarnings = [[NSMutableArray alloc] init];
std::vector> parseWarnings = parseResult->GetWarnings();
for (const auto &warning : parseWarnings) {
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDebouncer.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDebouncer.h
new file mode 100644
index 0000000000..36945a6ac0
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDebouncer.h
@@ -0,0 +1,38 @@
+//
+// ACOTypeaheadDebouncer.h
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import
+
+@protocol ACOTypeaheadDebouncerDelegate
+- (void)debouncerDidSendOutput:(id)output;
+@end
+
+
+/**
+ @brief A helper class which implements the debounce operation.
+ @discussion TSDebouncer is a helper which implements the debounce operation on
+ a stream of data. e.g. When user is typing in a UITextField, each
+ edit operation is pushed into the debouncer, but the debouncer will
+ only perform the callback when a certain minimum time has been elapsed
+ since last keystroke by the user.
+ */
+@interface ACOTypeaheadDebouncer : NSObject
+
+@property (strong, nonatomic) id delegate;
+
+/**
+ @brief Initializes a debouncer object with given delay.
+ @param delay The delay in seconds for which debouncing has to be done.
+ */
+- (instancetype)initWithDelay:(NSTimeInterval)delay;
+
+/**
+ @brief Posts the inputs from the input stream into the debouncer.
+ */
+- (void)postInput:(GenericType)input;
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDebouncer.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDebouncer.mm
new file mode 100644
index 0000000000..e177d2a396
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDebouncer.mm
@@ -0,0 +1,38 @@
+//
+// ACOTypeaheadDebouncer.mm
+// AdaptiveCards
+//
+// Created by Jyoti Kukreja on 25/01/23.
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACOTypeaheadDebouncer.h"
+
+@interface ACOTypeaheadDebouncer ()
+@property (nonatomic) NSTimeInterval delay;
+@end
+
+@implementation ACOTypeaheadDebouncer
+
+- (instancetype)initWithDelay:(NSTimeInterval)delay
+{
+ self = [super init];
+ if (self) {
+ _delay = delay;
+ }
+ return self;
+}
+
+- (void)postInput:(id)input
+{
+ __weak __typeof(self) weakSelf = self;
+ [NSObject cancelPreviousPerformRequestsWithTarget:weakSelf];
+ [weakSelf performSelector:@selector(sendOutput:) withObject:input afterDelay:weakSelf.delay];
+}
+
+- (void)sendOutput:(id)output
+{
+ [self.delegate debouncerDidSendOutput:output];
+}
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDynamicChoicesService.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDynamicChoicesService.h
new file mode 100644
index 0000000000..91905a93bf
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDynamicChoicesService.h
@@ -0,0 +1,21 @@
+//
+// ACOTypeaheadDynamicChoicesService.h
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACOTypeaheadDebouncer.h"
+#import "ACOTypeaheadSearchHandler.h"
+#import "ACRView.h"
+#import
+
+@interface ACOTypeaheadDynamicChoicesService : NSObject
+
+- (instancetype)initWithRootView:(ACRView *)rootView
+ inputElem:(ACOBaseCardElement *)inputElem
+ typeaheadSearchDelegate:(id)typeaheadSearchProtocol;
+
+- (void)fetchChoicesFromDynamicSourceWithSearchQuery:(NSString *)searchQuery;
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDynamicChoicesService.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDynamicChoicesService.mm
new file mode 100644
index 0000000000..29a5f313b2
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadDynamicChoicesService.mm
@@ -0,0 +1,103 @@
+//
+// ACOTypeaheadDynamicChoicesService.mm
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACOTypeaheadDynamicChoicesService.h"
+#import "ACOBaseCardElementPrivate.h"
+#import "ACOTypeaheadDebouncer.h"
+#import "ACRView.h"
+#import "ChoiceSetInput.h"
+#import "ChoicesData.h"
+#import
+
+static NSString *const AdaptiveCardChoices = @"action";
+static NSTimeInterval delayTimeInSeconds = 0.25;
+
+@implementation ACOTypeaheadDynamicChoicesService {
+ __weak ACRView *_rootView;
+ ACOTypeaheadDebouncer *_debouncer;
+ dispatch_queue_t _global_queue;
+ ACOBaseCardElement *_inputElem;
+ id _typeaheadSearchDelegate;
+}
+
+- (instancetype)initWithRootView:(ACRView *)rootView
+ inputElem:(ACOBaseCardElement *)inputElem
+ typeaheadSearchDelegate:(id)typeaheadSearchDelegate
+{
+ self = [super init];
+ if (self) {
+ _rootView = rootView;
+ _debouncer = [[ACOTypeaheadDebouncer alloc] initWithDelay:delayTimeInSeconds];
+ _debouncer.delegate = self;
+ _global_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
+ _inputElem = inputElem;
+ _typeaheadSearchDelegate = typeaheadSearchDelegate;
+ }
+
+ return self;
+}
+
+- (void)fetchChoicesFromDynamicSourceWithSearchQuery:(NSString *)searchQuery
+{
+ [_debouncer postInput:searchQuery];
+}
+
+- (void)dealloc
+{
+ _debouncer.delegate = nil;
+}
+
+- (NSDictionary *)getRequestPayloadForTypeaheadSearchWithQueryText:(NSString *)queryText
+ withSkipValue:(int)skipVal
+ AndTopValue:(int)topVal
+{
+ std::shared_ptr elem = [_inputElem element];
+ std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ std::shared_ptr choicesData = choiceSet->GetChoicesData();
+ NSString *choicesDataType = [NSString stringWithCString:AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::ChoicesDataType).c_str() encoding:NSUTF8StringEncoding];
+ NSString *datasetKey = [NSString stringWithCString:AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::Dataset).c_str() encoding:NSUTF8StringEncoding];
+ NSString *value = [NSString stringWithCString:AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::Value).c_str() encoding:NSUTF8StringEncoding];
+ NSString *dataset = (choicesData == nil) ? @"" : [NSString stringWithCString:choicesData->GetDataset().c_str()
+ encoding:NSUTF8StringEncoding];
+ NSString *dataQuery = (choicesData == nil) ? @"" : [NSString stringWithCString:choicesData->GetChoicesDataType().c_str()
+ encoding:NSUTF8StringEncoding];
+
+ NSMutableDictionary *requestPayload = [NSMutableDictionary new];
+ [requestPayload setDictionary:@{
+ choicesDataType : dataQuery,
+ datasetKey : dataset,
+ value : queryText ?: @"",
+ @"skip" : [NSNumber numberWithInt:skipVal], // used for pagination.Usage - retrieve top n records by skipping first x records.
+ @"top" : [NSNumber numberWithInt:topVal]
+ }];
+ return requestPayload;
+}
+
+#pragma mark - ACOTypeaheadDebouncerDelegate Methods specifically for dynamic typeahead
+
+- (void)debouncerDidSendOutput:(id)key
+{
+ if ([key isKindOfClass:NSString.class]) {
+ __weak __typeof(self) weakSelf = self;
+ dispatch_async(_global_queue, ^{
+ __strong __typeof(self) strongSelf = weakSelf;
+ if ([strongSelf->_rootView.acrActionDelegate respondsToSelector:@selector(onChoiceSetQueryChange:acoElem:completion:)]) {
+ NSDictionary *requestPayload = [strongSelf getRequestPayloadForTypeaheadSearchWithQueryText:key withSkipValue:0 AndTopValue:15];
+ [strongSelf->_rootView.acrActionDelegate onChoiceSetQueryChange:requestPayload
+ acoElem:strongSelf->_inputElem
+ completion:^(NSDictionary *response, NSError *error) {
+ NSDictionary *choices = [response objectForKey:@"value"];
+ if ([strongSelf->_typeaheadSearchDelegate respondsToSelector:@selector(updateTypeaheadUIWithSearchText:dynamicChoices:withError:)]) {
+ [strongSelf->_typeaheadSearchDelegate updateTypeaheadUIWithSearchText:key dynamicChoices:choices withError:error];
+ }
+ }];
+ }
+ });
+ }
+}
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadSearchHandler.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadSearchHandler.h
new file mode 100644
index 0000000000..3e8dd65d01
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOTypeaheadSearchHandler.h
@@ -0,0 +1,20 @@
+//
+// ACOTypeaheadSearchHandler.h
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import
+
+typedef enum {
+ zeroState = 0,
+ searchInProgress,
+ displayingGenericError,
+ displayingInvalidSearchError,
+ displayingResults,
+} TSTypeaehadSearchViewState;
+
+@protocol ACRTypeaheadSearchProtocol
+- (void)updateTypeaheadUIWithSearchText:(NSString *)searchText dynamicChoices:(NSDictionary *)response withError:(NSError *)error;
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRActionDelegate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRActionDelegate.h
index f2f0be2bb1..3557599543 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRActionDelegate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRActionDelegate.h
@@ -7,6 +7,8 @@
#import "ACOAdaptiveCard.h"
#import "ACOBaseActionElement.h"
+#import "ACOTypeaheadSearchHandler.h"
+
#import
@class ACROverflowMenuItem;
@@ -22,6 +24,37 @@
- (void)didChangeViewLayout:(CGRect)oldFrame newFrame:(CGRect)newFrame;
- (void)didChangeViewLayout:(CGRect)oldFrame newFrame:(CGRect)newFrame properties:(NSDictionary *)properties;
+#pragma mark - callback for typeahead search (input.choiceset)
+
+/**
+- when choices.data property is present in input.choiceset
+ - This callback is called on input change in choiceset control and used to fetch dynamic choices from the host.
+ - "searchRequest": search request object format to be sent to the host
+ - "acoElem": ChoiceSetInput element on which text change was observed
+ - "completion": completion block with results dictionary as response or error in case of any failure
+ */
+- (void)onChoiceSetQueryChange:(NSDictionary *)searchRequest acoElem:(ACOBaseCardElement *)elem completion:(void (^)(NSDictionary *response, NSError *error))completion;
+
+/**
+- This callback is to update the layout of the typeahead view whenever search state is changed
+*/
+- (void)didUpdateTypeaheadSearchViewController:(UIViewController *)typeaheadSearchVC searchStateImageView:(UIImageView *)searchStateImageView searchViewState:(TSTypeaehadSearchViewState)searchViewState;
+
+/**
+- This callback is to launch the full screen search VC fromm input.choiceset control
+ - Client callback requires to return a BOOL value.
+ - Returning YES means let SDK continue to launch VC on top of the parent view, while NO informs SDK don't launch the typeahead search VC in full screen
+ (which implies client code might grab the typeahead search view controller and launch view by itself).
+ */
+- (BOOL)shouldLaunchTypeaheadSearchViewController:(UIViewController *)typeaheadSearchVC;
+
+/**
+- This callback is to configure the navigation item which is present at the top of the search view controller (configure back button and checkmark)
+ - Client callback requires to return a BOOL value.
+ - Returning YES means let SDK continue to launch VC on top of the parent view, while NO informs SDK don't launch the typeahead search VC in full screen
+ */
+- (BOOL)shouldConfigureNavigationItemViewWithVC:(UIViewController *)typeaheadSearchVC;
+
#pragma mark - callbacks for overflow actions
/**
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRAggregateTarget.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRAggregateTarget.h
index a52929ee45..e12d0e0da6 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRAggregateTarget.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRAggregateTarget.h
@@ -5,8 +5,15 @@
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOInputResults.h"
#import "ACRBaseTarget.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
#import "ACRIContentHoldingView.h"
#import "ACRView.h"
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.h
index 48186f02b3..4656adbe51 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.h
@@ -36,7 +36,13 @@
- (NSString *)getItemAt:(NSInteger)index;
-- (void)filter:(NSString *)filter;
+- (BOOL)findMatch:(NSString *)queryString;
+
+- (NSRange)getHighlightRangeForSearchText:(NSString *)searchText resultText:(NSString *)resultText;
+
+- (void)updateFilteredListForStaticTypeahead:(NSString *)choices;
+
+- (void)updateFilteredListForStaticAndDynamicTypeahead:(NSString *)key dynamicChoices:(NSDictionary *)choices;
- (void)resetFilter;
@@ -54,7 +60,7 @@
@end
-@interface ACOChoiceSetCompactStyleValidator : NSObject
+@interface ACOChoiceSetFilteredStyleValidator : NSObject
@property BOOL isRequired;
@property NSString *placeHolder;
@@ -66,6 +72,8 @@
- (NSString *)getValue:(NSString *)input;
+- (void)updateDynamicTitleMap:(NSDictionary *)titleMap;
+
@end
@interface ACOFilteredListLayout : NSObject
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.mm
index d7d876bd98..e0a334cc54 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.mm
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetCompactStyleView.mm
@@ -22,7 +22,7 @@
@implementation ACRChoiceSetCompactStyleView {
ACOFilteredDataSource *_filteredDataSource;
ACOFilteredListStateManager *_stateManager;
- ACOChoiceSetCompactStyleValidator *_validator;
+ ACOChoiceSetFilteredStyleValidator *_validator;
ACOFilteredListLayout *_filteredListLayout;
NSString *_inputLabel;
UITableView *_listView;
@@ -48,7 +48,7 @@ - (instancetype)initWithInputChoiceSet:(ACOBaseCardElement *)acoElem
if (!_filteredDataSource.isEnabled) {
self.accessibilityTraits |= (UIAccessibilityTraitButton | UIAccessibilityTraitStaticText);
}
- _validator = [[ACOChoiceSetCompactStyleValidator alloc] init:acoElem dataSource:_filteredDataSource];
+ _validator = [[ACOChoiceSetFilteredStyleValidator alloc] init:acoElem dataSource:_filteredDataSource];
if (@available(iOS 11.0, *)) {
self.spacingTop = self.window.safeAreaInsets.top + 8.0f;
@@ -98,7 +98,7 @@ - (instancetype)initWithInputChoiceSet:(ACOBaseCardElement *)acoElem
_filteredListLayout = [[ACOFilteredListLayout alloc] initWithTopMargin:self.spacingTop bottomMargin:self.spacingBottom];
_wrapLines = choiceSet->GetWrap() ? 0 : 1;
- [_filteredDataSource filter:self.text];
+ [_filteredDataSource updateFilteredListForStaticTypeahead:self.text];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(handleKeyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
@@ -121,7 +121,6 @@ - (void)updateControls
} else {
[self hideListView];
}
- [_rootView.acrActionDelegate didChangeViewLayout:CGRectNull newFrame:self.frame];
}
}
@@ -153,6 +152,9 @@ - (void)textFieldDidBeginEditing:(UITextField *)textField
// announce layout change, and move the VO focus to the filtered list
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self);
}
+ } else {
+ [_stateManager expanded];
+ [self updateControls];
}
}
@@ -170,14 +172,13 @@ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRang
// implemented fluentUI north star behavior of removing the
// filtered list when input field is empty
if ([newString length]) {
- [self filterList:newString];
+ [_filteredDataSource updateFilteredListForStaticTypeahead:newString];
[_stateManager expanded];
if (!_stateManager.shouldUpdateFilteredList) {
[_listView reloadData];
}
} else {
[self resetFilteredList];
- [_stateManager collapsed];
}
[self updateControls];
@@ -202,7 +203,7 @@ - (BOOL)textFieldShouldReturn:(UITextField *)textField
- (void)filterList:(NSString *)text
{
- [_filteredDataSource filter:text];
+ [_filteredDataSource updateFilteredListForStaticTypeahead:text];
}
- (void)toggleStateListView:(UIButton *)button
@@ -375,6 +376,9 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
@implementation ACOFilteredDataSource {
NSMutableArray *_unfilteredList;
NSArray *_filteredList;
+ NSMutableArray *_staticUnfilteredList;
+ NSArray *_staticFilteredList;
+ NSArray *_dynamicFilteredList;
NSString *_filter;
}
@@ -382,8 +386,10 @@ - (instancetype)init
{
self = [super init];
if (self) {
- _unfilteredList = [[NSMutableArray alloc] init];
- _filteredList = _unfilteredList;
+ _staticUnfilteredList = [[NSMutableArray alloc] init];
+ _staticFilteredList = _staticUnfilteredList;
+ _dynamicFilteredList = [[NSMutableArray alloc] init];
+ _filteredList = _staticFilteredList;
_filter = @"SELF CONTAINS[c] %@";
_isEnabled = YES;
}
@@ -402,7 +408,7 @@ - (instancetype)init:(BOOL)filteringEnabled
- (void)addToSource:(NSString *)item
{
if (item) {
- [_unfilteredList addObject:item];
+ [_staticUnfilteredList addObject:item];
}
}
@@ -416,22 +422,72 @@ - (NSString *)getItemAt:(NSInteger)index
return (index < 0 or index >= self.count) ? @"" : _filteredList[index];
}
-- (void)filter:(NSString *)key
+- (void)updateFilteredListForStaticTypeahead:(NSString *)key
{
if (!self.isEnabled) {
return;
}
if (!key || key.length == 0) {
[self resetFilter];
+ _staticFilteredList = _staticUnfilteredList;
} else {
NSPredicate *predicate = [NSPredicate predicateWithFormat:_filter, key.lowercaseString];
_filteredList = [_unfilteredList filteredArrayUsingPredicate:predicate];
+ _staticFilteredList = [_staticUnfilteredList filteredArrayUsingPredicate:predicate];
+ _filteredList = _staticFilteredList;
+ }
+}
+
+- (void)updateFilteredListForDynamicTypeahead:(NSDictionary *)choices
+{
+ if (!self.isEnabled) {
+ return;
+ }
+ if (!choices || choices.count == 0) {
+ [self resetFilter];
+ _dynamicFilteredList = @[];
+ } else {
+ NSMutableArray *dynamicList = [[NSMutableArray alloc] init];
+ for (id item in choices) {
+ [dynamicList addObject:item];
+ }
+ _dynamicFilteredList = dynamicList;
+ _filteredList = _dynamicFilteredList;
}
}
+- (void)mergeStaticAndDynamicFilteredList
+{
+ NSMutableArray *mergedList = [[NSMutableArray alloc] init];
+ for (id item in _dynamicFilteredList) {
+ [mergedList addObject:item];
+ }
+ for (id item in _staticFilteredList) {
+ [mergedList addObject:item];
+ }
+ _filteredList = mergedList;
+}
+
+- (void)updateFilteredListForStaticAndDynamicTypeahead:(NSString *)key dynamicChoices:(NSDictionary *)choices
+{
+ [self updateFilteredListForStaticTypeahead:key];
+ [self updateFilteredListForDynamicTypeahead:choices];
+ [self mergeStaticAndDynamicFilteredList];
+}
+
+- (BOOL)findMatch:(NSString *)queryString
+{
+ return [_filteredList containsObject:queryString];
+}
+
+- (NSRange)getHighlightRangeForSearchText:(NSString *)searchText resultText:(NSString *)resultText
+{
+ return [resultText rangeOfString:searchText options:NSCaseInsensitiveSearch];
+}
+
- (void)resetFilter
{
- _filteredList = _unfilteredList;
+ _filteredList = _staticUnfilteredList;
}
@end
@@ -506,8 +562,9 @@ - (void)toggleState
@end
-@implementation ACOChoiceSetCompactStyleValidator {
- NSMutableDictionary *_titlesMap;
+@implementation ACOChoiceSetFilteredStyleValidator {
+ NSMutableDictionary *_staticListTitlesMap;
+ NSMutableDictionary *_dynamicListTitlesMap;
}
- (instancetype)init:(ACOBaseCardElement *)acoElem dataSource:(ACOFilteredDataSource *)dataSource
@@ -519,13 +576,14 @@ - (instancetype)init:(ACOBaseCardElement *)acoElem dataSource:(ACOFilteredDataSo
self.isRequired = choiceSet->GetIsRequired();
self.placeHolder = [NSString stringWithCString:choiceSet->GetPlaceholder().c_str() encoding:NSUTF8StringEncoding];
- _titlesMap = [[NSMutableDictionary alloc] init];
+ _staticListTitlesMap = [[NSMutableDictionary alloc] init];
+ _dynamicListTitlesMap = [[NSMutableDictionary alloc] init];
NSString *defaultValue = [NSString stringWithCString:choiceSet->GetValue().c_str()
encoding:NSUTF8StringEncoding];
for (auto choice : choiceSet->GetChoices()) {
NSString *title = [NSString stringWithCString:choice->GetTitle().c_str() encoding:NSUTF8StringEncoding];
NSString *value = [NSString stringWithCString:choice->GetValue().c_str() encoding:NSUTF8StringEncoding];
- _titlesMap[title] = value;
+ _staticListTitlesMap[title] = value;
if ([value isEqualToString:defaultValue]) {
_userInitialChoice = title;
}
@@ -539,10 +597,10 @@ - (BOOL)isValid:(NSString *)input
{
BOOL isValid = YES;
if (self.isRequired) {
- isValid = !(!input || !input.length ||
- ![_titlesMap objectForKey:input]);
+ isValid = input != nil && input.length;
+ isValid = isValid ? [_staticListTitlesMap objectForKey:input] != nil || [_dynamicListTitlesMap objectForKey:input] != nil : NO;
} else if (input && input.length) {
- isValid = [_titlesMap objectForKey:input] != nil;
+ isValid = ([_staticListTitlesMap objectForKey:input] != nil || [_dynamicListTitlesMap objectForKey:input] != nil);
}
return isValid;
}
@@ -550,12 +608,20 @@ - (BOOL)isValid:(NSString *)input
- (NSString *)getValue:(NSString *)input
{
if (input && input.length) {
- NSString *value = [_titlesMap objectForKey:input];
- return value ? value : @"";
+ NSString *value = [_staticListTitlesMap objectForKey:input];
+ return value ? value : ([_dynamicListTitlesMap objectForKey:input] ?: @"");
}
return @"";
}
+- (void)updateDynamicTitleMap:(NSDictionary *)titleMap
+{
+ [_dynamicListTitlesMap removeAllObjects];
+ for (id key in titleMap) {
+ _dynamicListTitlesMap[key] = [titleMap objectForKey:key];
+ }
+}
+
@end
@implementation ACOFilteredListLayout
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetFilteredStyleView.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetFilteredStyleView.h
new file mode 100644
index 0000000000..01a863af5a
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetFilteredStyleView.h
@@ -0,0 +1,32 @@
+//
+// ACRChoiceSetFilteredStyleView.h
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACOHostConfig.h"
+#import "ACOTypeaheadDynamicChoicesService.h"
+#import "ACRIBaseInputHandler.h"
+#import "ACRView.h"
+#import
+
+@class ACRTypeaheadStateAllParameters;
+
+@protocol ACRChoiceSetFilteredDelegate
+- (void)updateSelectedChoiceInTextField:(NSString *)text;
+- (NSString *)getSelectedText;
+- (NSString *)getChoiceSetId;
+@end
+
+@interface ACRChoiceSetFilteredStyleView : UITextField
+
+@property (weak) UIView *showFilteredListControl;
+
+- (instancetype)initWithInputChoiceSet:(ACOBaseCardElement *)acoElem
+ rootView:(ACRView *)rootView
+ hostConfig:(ACOHostConfig *)hostConfig
+ searchStateParams:(ACRTypeaheadStateAllParameters *)searchStateParams
+ typeaheadViewTitle:(NSString *)typeaheadViewTitle;
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetFilteredStyleView.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetFilteredStyleView.mm
new file mode 100644
index 0000000000..e50ba87287
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetFilteredStyleView.mm
@@ -0,0 +1,178 @@
+//
+// ACRChoiceSetFilteredStyleView.mm
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACRChoiceSetFilteredStyleView.h"
+#import "ACOBaseCardElementPrivate.h"
+#import "ACOBundle.h"
+#import "ACRActionDelegate.h"
+#import "ACRBaseCardElementRenderer.h"
+#import "ACRChoiceSetCompactStyleView.h"
+#import "ACRInputLabelView.h"
+#import "ACRTypeaheadSearchParameters.h"
+#import "ACRTypeaheadSearchViewControllerPrivate.h"
+#import "ACRView.h"
+#import "ChoiceInput.h"
+#import "ChoiceSetInput.h"
+#import "ChoicesData.h"
+#import "HostConfig.h"
+#import "UtiliOS.h"
+
+using namespace AdaptiveCards;
+
+@implementation ACRChoiceSetFilteredStyleView {
+ ACOFilteredDataSource *_filteredDataSource;
+ ACOChoiceSetFilteredStyleValidator *_validator;
+ ACOHostConfig *_hostConfig;
+ ACOBaseCardElement *_inputElem;
+ __weak ACRView *_rootView;
+ UIButton *_navigationButton;
+ NSString *_typeaheadViewTitle;
+ ACRTypeaheadStateAllParameters *_searchStateParams;
+}
+
+- (instancetype)initWithInputChoiceSet:(ACOBaseCardElement *)acoElem
+ rootView:(ACRView *)rootView
+ hostConfig:(ACOHostConfig *)hostConfig
+ searchStateParams:(ACRTypeaheadStateAllParameters *)searchStateParams
+ typeaheadViewTitle:(NSString *)typeaheadViewTitle
+{
+ self = [super init];
+ if (self) {
+ std::shared_ptr elem = [acoElem element];
+ std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ _rootView = rootView;
+ _inputElem = acoElem;
+ _hostConfig = hostConfig;
+ _searchStateParams = searchStateParams;
+ _typeaheadViewTitle = typeaheadViewTitle;
+ _filteredDataSource = [[ACOFilteredDataSource alloc] init];
+ _validator = [[ACOChoiceSetFilteredStyleValidator alloc] init:acoElem dataSource:_filteredDataSource];
+
+ // configure UITextField
+ self.delegate = self;
+ self.placeholder = _validator.placeHolder;
+ self.allowsEditingTextAttributes = NO;
+ self.text = _validator.userInitialChoice;
+
+ // configure AdaptiveCards input handler
+ self.id = [NSString stringWithCString:choiceSet->GetId().c_str()
+ encoding:NSUTF8StringEncoding];
+ self.isRequired = _validator.isRequired;
+ self.hasValidationProperties = self.isRequired;
+ self.accessibilityTraits = UIAccessibilityTraitButton;
+
+ _navigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
+ self.showFilteredListControl = _navigationButton;
+ [_navigationButton addTarget:self action:@selector(launchFullScreenTypeaheadSearchView) forControlEvents:UIControlEventTouchUpInside];
+ self.rightView = _navigationButton;
+ self.rightViewMode = UITextFieldViewModeAlways;
+ self.showFilteredListControl = _navigationButton;
+
+ ACRBaseCardElementRenderer *renderer = [[ACRRegistration getInstance] getRenderer:[NSNumber numberWithInt:(int)choiceSet->GetElementType()]];
+ if (renderer && [renderer respondsToSelector:@selector(configure:rootView:baseCardElement:hostConfig:)]) {
+ // configure input UI
+ [renderer configure:self rootView:rootView baseCardElement:acoElem hostConfig:hostConfig];
+ }
+ }
+ return self;
+}
+
+- (void)launchFullScreenTypeaheadSearchView
+{
+ UIViewController *rootViewController = traverseResponderChainForUIViewController(_rootView);
+ std::shared_ptr elem = [_inputElem element];
+ std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ std::shared_ptr choicesData = choiceSet->GetChoicesData();
+
+ if (rootViewController &&
+ choicesData->GetChoicesDataType().compare((AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::DataQuery))) == 0) {
+ ACRTypeaheadSearchViewController *typeaheadSearchVC = [[ACRTypeaheadSearchViewController alloc] initWithInputChoiceSet:_inputElem
+ rootView:_rootView
+ hostConfig:_hostConfig
+ filteredDataSource:_filteredDataSource
+ filteredStyleValidator:_validator
+ typeaheadViewTitle:_typeaheadViewTitle
+ choiceSetDelegate:self
+ searchStateParams:_searchStateParams];
+ // check if client might want to launch the typeahead search view
+ if ([_rootView.acrActionDelegate respondsToSelector:@selector(shouldLaunchTypeaheadSearchViewController:)]) {
+ BOOL shouldPresentVC = [_rootView.acrActionDelegate shouldLaunchTypeaheadSearchViewController:typeaheadSearchVC];
+ if (shouldPresentVC) {
+ UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:typeaheadSearchVC];
+ navController.modalPresentationStyle = UIModalPresentationFullScreen;
+ [rootViewController presentViewController:navController animated:YES completion:nil];
+ }
+ }
+ }
+}
+
+- (void)navigateToTypeaheadSearchView:(UIButton *)button
+{
+ [self launchFullScreenTypeaheadSearchView];
+}
+
+#pragma mark - UITextFieldDelegate Methods
+
+- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
+{
+ [self launchFullScreenTypeaheadSearchView];
+ return NO;
+}
+
+/// configures position of showFilteredListControl
+- (CGRect)rightViewRectForBounds:(CGRect)bounds
+{
+ CGRect newBounds = [super rightViewRectForBounds:bounds];
+ newBounds.origin.x = newBounds.origin.x - self.layoutMargins.right;
+ return newBounds;
+}
+
+#pragma mark - ACRIBaseInputHandler Methods
+
+- (void)setFocus:(BOOL)shouldBecomeFirstResponder view:(UIView *)view
+{
+ self.accessibilityLabel = view.accessibilityLabel;
+ if (shouldBecomeFirstResponder) {
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self);
+ } else {
+ [view resignFirstResponder];
+ }
+}
+
+- (BOOL)validate:(NSError **)error
+{
+ return [_validator isValid:self.text];
+}
+
+- (void)getInput:(NSMutableDictionary *)dictionary
+{
+ dictionary[self.id] = [_validator getValue:self.text];
+}
+
+#pragma mark - ACRChoiceSetTypeaheadSearchDelegate Methods
+
+- (void)updateSelectedChoiceInTextField:(NSString *)text
+{
+ self.text = text;
+}
+
+- (NSString *)getSelectedText
+{
+ return self.text;
+}
+
+- (NSString *)getChoiceSetId
+{
+ return self.id;
+}
+
+@synthesize hasValidationProperties;
+@synthesize hasVisibilityChanged;
+@synthesize isRequired;
+@synthesize id;
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetViewDataSourceCompactStyle.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetViewDataSourceCompactStyle.mm
index 17568c70c1..502ad3cfca 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetViewDataSourceCompactStyle.mm
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRChoiceSetViewDataSourceCompactStyle.mm
@@ -5,10 +5,17 @@
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRChoiceSetViewDataSourceCompactStyle.h"
+#import "ACRChoiceSetViewDataSource.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
#import "ACOBundle.h"
#import "ACRActionDelegate.h"
-#import "ACRChoiceSetViewDataSource.h"
#import "ACRView.h"
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRColumnSetRenderer.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRColumnSetRenderer.h
index 3aef24e541..74a76e2cf4 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRColumnSetRenderer.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRColumnSetRenderer.h
@@ -5,7 +5,13 @@
// Copyright © 2017 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRBaseCardElementRenderer.h"
+#else
+/// Cocoapods Imports
+#import
+#endif
@interface ACRColumnSetRenderer : ACRBaseCardElementRenderer
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRIBaseCardElementRenderer.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRIBaseCardElementRenderer.h
index d21c812ed1..dc7ad52d81 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRIBaseCardElementRenderer.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRIBaseCardElementRenderer.h
@@ -28,6 +28,10 @@
baseCardElement:(ACOBaseCardElement *)acoElem
hostConfig:(ACOHostConfig *)acoConfig;
+- (void)configureVC:(UIViewController *)view
+ rootView:(ACRView *)rootView
+ baseCardElement:(ACOBaseCardElement *)acoElem
+ hostConfig:(ACOHostConfig *)acoConfig;
@end
@protocol ACRIKVONotificationHandler
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRImageProperties.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRImageProperties.h
index 8a22801a4e..b19cf8f0ff 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRImageProperties.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRImageProperties.h
@@ -5,9 +5,17 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOBaseCardElement.h"
#import "ACOHostConfig.h"
#import "ACREnums.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#import
+#endif
#import
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputChoiceSetRenderer.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputChoiceSetRenderer.mm
index a39225e3cc..2008b739c9 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputChoiceSetRenderer.mm
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputChoiceSetRenderer.mm
@@ -5,14 +5,24 @@
// Copyright © 2018 Microsoft. All rights reserved.
//
-#import "ACRInputChoiceSetRenderer.h"
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
+#import "ACRChoiceSetViewDataSource.h"
+#else
+/// Cocoapods Imports
+#import
+#endif
#import "ACOBaseCardElementPrivate.h"
#import "ACOHostConfigPrivate.h"
#import "ACRChoiceSetCompactStyleView.h"
-#import "ACRChoiceSetViewDataSource.h"
+#import "ACRChoiceSetFilteredStyleView.h"
+#import "ACRInputChoiceSetRenderer.h"
#import "ACRInputLabelViewPrivate.h"
#import "ACRInputTableView.h"
+#import "ACRTypeaheadSearchParameters.h"
+#import "ACRTypeaheadSearchViewControllerPrivate.h"
#import "ChoiceSetInput.h"
+#import "ChoicesData.h"
#import "UtiliOS.h"
@implementation ACRInputChoiceSetRenderer
@@ -37,9 +47,23 @@ - (UIView *)render:(UIView *)viewGroup
std::shared_ptr config = [acoConfig getHostConfig];
std::shared_ptr elem = [acoElem element];
std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ std::shared_ptr choicesData = choiceSet->GetChoicesData();
ACRInputLabelView *inputLabelView = nil;
const auto style = choiceSet->GetChoiceSetStyle();
- if (!choiceSet->GetIsMultiSelect() && (style == ChoiceSetStyle::Compact || style == ChoiceSetStyle::Filtered)) {
+ if (choicesData && choicesData->GetChoicesDataType().compare((AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::DataQuery))) == 0) {
+ auto inputLabel = choiceSet->GetLabel();
+ NSString *typeaheadViewTitle = (!inputLabel.empty()) ? [NSString stringWithCString:inputLabel.c_str() encoding:NSUTF8StringEncoding] : @"Typeahead Search";
+ ACRTypeaheadZeroStateParams *zeroStateParams = [[ACRTypeaheadZeroStateParams alloc] initWithtitle:@"Search options" subtitle:nil];
+ ACRTypeaheadOfflineStateParams *offlineStateParams = [[ACRTypeaheadOfflineStateParams alloc] initWithtitle:@"the device is offline" subtitle:nil];
+ ACRTypeaheadNoResultsStateParams *noResultStateParams = [[ACRTypeaheadNoResultsStateParams alloc] initWithtitle:@"No results" subtitle:nil];
+ ACRTypeaheadErrorStateParams *errorStateParams = [[ACRTypeaheadErrorStateParams alloc] initWithtitle:@"Something went wrong" subtitle:nil];
+ ACRTypeaheadStateAllParameters *typeaheadParams = [[ACRTypeaheadStateAllParameters alloc] initWithzeroStateParams:zeroStateParams
+ errorStateParams:errorStateParams
+ noResultStateParams:noResultStateParams
+ offlineStateParams:offlineStateParams];
+ ACRChoiceSetFilteredStyleView *typeaheadStyleView = [[ACRChoiceSetFilteredStyleView alloc] initWithInputChoiceSet:acoElem rootView:rootView hostConfig:acoConfig searchStateParams:typeaheadParams typeaheadViewTitle:typeaheadViewTitle];
+ inputLabelView = [[ACRInputLabelView alloc] initInputLabelView:rootView acoConfig:acoConfig adaptiveInputElement:choiceSet inputView:typeaheadStyleView accessibilityItem:typeaheadStyleView viewGroup:viewGroup dataSource:nil];
+ } else if (!choiceSet->GetIsMultiSelect() && (style == ChoiceSetStyle::Compact || style == ChoiceSetStyle::Filtered)) {
ACRChoiceSetCompactStyleView *compactStyleView = [[ACRChoiceSetCompactStyleView alloc] initWithInputChoiceSet:acoElem rootView:rootView hostConfig:acoConfig];
inputLabelView = [[ACRInputLabelView alloc] initInputLabelView:rootView acoConfig:acoConfig adaptiveInputElement:choiceSet inputView:compactStyleView accessibilityItem:compactStyleView viewGroup:viewGroup dataSource:nil];
} else {
@@ -83,7 +107,14 @@ - (void)configure:(UIView *)view
return;
}
const auto style = choiceSet->GetChoiceSetStyle();
- if (style == ChoiceSetStyle::Compact || style == ChoiceSetStyle::Filtered) {
+ std::shared_ptr choicesData = choiceSet->GetChoicesData();
+ if (choicesData && choicesData->GetChoicesDataType().compare((AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::DataQuery))) == 0) {
+ ACRChoiceSetFilteredStyleView *choiceSetView = (ACRChoiceSetFilteredStyleView *)view;
+ choiceSetView.borderStyle = UITextBorderStyleRoundedRect;
+ choiceSetView.backgroundColor = UIColor.systemGroupedBackgroundColor;
+ UIButton *button = (UIButton *)choiceSetView.showFilteredListControl;
+ [button setImage:[UIImage systemImageNamed:@"chevron.right"] forState:UIControlStateNormal];
+ } else if ([view isKindOfClass:ACRChoiceSetCompactStyleView.class] && (style == ChoiceSetStyle::Compact || style == ChoiceSetStyle::Filtered)) {
ACRChoiceSetCompactStyleView *choiceSetView = (ACRChoiceSetCompactStyleView *)view;
choiceSetView.borderStyle = UITextBorderStyleRoundedRect;
choiceSetView.backgroundColor = UIColor.systemGroupedBackgroundColor;
@@ -112,4 +143,50 @@ - (void)configure:(UIView *)view
choiceSetView.spacingBottom = 10.0f;
}
}
+
+- (void)configureVC:(UIViewController *)view
+ rootView:(ACRView *)rootView
+ baseCardElement:(ACOBaseCardElement *)acoElem
+ hostConfig:(ACOHostConfig *)acoConfig
+{
+ std::shared_ptr elem = [acoElem element];
+ std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ if (!choiceSet) {
+ return;
+ }
+ std::shared_ptr choicesData = choiceSet->GetChoicesData();
+ if (choicesData && choicesData->GetChoicesDataType().compare((AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::DataQuery))) == 0) {
+ ACRTypeaheadSearchViewController *typeaheadSearchView = (ACRTypeaheadSearchViewController *)view;
+
+ UISearchBar *_customSearchBar = (UISearchBar *)typeaheadSearchView.searchBar;
+ [_customSearchBar.heightAnchor constraintEqualToConstant:36].active = YES;
+ _customSearchBar.backgroundColor = UIColor.whiteColor;
+ UITextField *searchField = [_customSearchBar valueForKey:@"searchField"];
+ searchField.textColor = [UIColor colorWithRed:0.431 green:0.431 blue:0.431 alpha:1];
+ _customSearchBar.searchBarStyle = UISearchBarStyleMinimal;
+
+ UIView *_customSearchBarSeparator = (UIView *)typeaheadSearchView.searchBarSeparator;
+ _customSearchBarSeparator.layer.backgroundColor = [[UIColor colorWithRed:0.784 green:0.784 blue:0.784 alpha:1] CGColor];
+ [_customSearchBarSeparator.heightAnchor constraintEqualToConstant:0.5].active = YES;
+
+ UITableView *filteredListView = (UITableView *)typeaheadSearchView.filteredListView;
+ filteredListView.backgroundColor = UIColor.whiteColor;
+ [filteredListView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
+ filteredListView.rowHeight = UITableViewAutomaticDimension;
+ [filteredListView registerClass:UITableViewCell.self forCellReuseIdentifier:@"SauceCell"];
+
+ UILabel *searchStateTitleLabel = (UILabel *)typeaheadSearchView.searchStateTitleLabel;
+ searchStateTitleLabel.backgroundColor = [UIColor whiteColor];
+ searchStateTitleLabel.textColor = [UIColor colorWithRed:0.443 green:0.443 blue:0.443 alpha:1];
+ searchStateTitleLabel.alpha = 0.9;
+ searchStateTitleLabel.textAlignment = NSTextAlignmentCenter;
+ searchStateTitleLabel.font = [UIFont fontWithName:@"SegoeUI-Regular" size:16];
+ [searchStateTitleLabel.heightAnchor constraintEqualToConstant:20].active = YES;
+
+ UIActivityIndicatorView *loader = (UIActivityIndicatorView *)typeaheadSearchView.loader;
+ [loader.heightAnchor constraintEqualToConstant:32].active = YES;
+ [loader.widthAnchor constraintEqualToConstant:32].active = YES;
+ }
+}
+
@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputLabelView.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputLabelView.h
index d2d0339685..73eea74a61 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputLabelView.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRInputLabelView.h
@@ -5,8 +5,15 @@
// Copyright © 2020 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOEnums.h"
#import "ACRIBaseInputHandler.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
#import
@interface ACRInputLabelView : UIView
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRegistration.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRegistration.h
index 6cb5cbe3a7..0240e59d4d 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRegistration.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRegistration.h
@@ -7,9 +7,16 @@
//
@class ACRBaseCardElementRenderer;
-#import "ACOBaseCardElement.h"
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRBaseActionElementRenderer.h"
#import "ACRTargetBuilder.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
+#import "ACOBaseCardElement.h"
@interface ACRRegistration : NSObject
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderResult.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderResult.h
index c7b9e6ff37..7719b735a0 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderResult.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderResult.h
@@ -8,7 +8,13 @@
@class ACRView;
@class ACRRenderer;
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRViewController.h"
+#else
+/// Cocoapods Imports
+#import
+#endif
#import
@interface ACRRenderResult : NSObject
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderer.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderer.h
index 5e7b5e9363..bcd6e52647 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderer.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRRenderer.h
@@ -5,9 +5,15 @@
// Copyright © 2017 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
+#import "ACRRenderResult.h"
+#else
+/// Cocoapods Imports
+#import
+#endif
#import "ACOAdaptiveCard.h"
#import "ACOHostConfig.h"
-#import "ACRRenderResult.h"
#import
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRShowCardTarget.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRShowCardTarget.mm
index 3b54045d33..a6a59d980f 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRShowCardTarget.mm
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRShowCardTarget.mm
@@ -126,6 +126,9 @@ - (IBAction)toggleVisibilityOfShowCard
}
_button.selected = !isSelected;
+ NSString *hint = hidden ? @"card expanded" : @"card collapsed";
+ _button.accessibilityValue = NSLocalizedString(hint, nil);
+
if ([_rootView.acrActionDelegate respondsToSelector:@selector(didChangeVisibility:isVisible:)]) {
[_rootView.acrActionDelegate didChangeVisibility:_button isVisible:(!_adcView.hidden)];
}
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableCellRenderer.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableCellRenderer.h
index 611763753c..aac7501ab7 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableCellRenderer.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableCellRenderer.h
@@ -5,7 +5,13 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRContainerRenderer.h"
+#else
+/// Cocoapods Imports
+#import
+#endif
@interface ACRTableCellRenderer : ACRContainerRenderer
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableRow.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableRow.h
index d6a04d8a9b..6afe0b2870 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableRow.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTableRow.h
@@ -5,8 +5,15 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRContentStackView.h"
#import "ACREnums.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTapGestureRecognizerFactory.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTapGestureRecognizerFactory.h
index 9583edfec6..27a755a474 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTapGestureRecognizerFactory.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTapGestureRecognizerFactory.h
@@ -4,8 +4,15 @@
//
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACRBaseTarget.h"
#import "ACRIContentHoldingView.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
#import "ACRTapGestureRecognizerEventHandler.h"
#import "ACRView.h"
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchParameters.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchParameters.h
new file mode 100644
index 0000000000..38a138eed6
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchParameters.h
@@ -0,0 +1,47 @@
+//
+// ACRTypeaheadSearchParameters.h
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACOAdaptiveCard.h"
+#import "ACOBaseActionElement.h"
+#import
+
+@protocol ACRITypeaheadSearchStateDelegate
+
+@property NSString *_Nullable title;
+@property NSString *_Nullable subtitle;
+
+@end
+
+@interface ACRTypeaheadStateParameters : NSObject
+- (instancetype _Nullable)initWithtitle:(NSString *_Nullable)title
+ subtitle:(NSString *_Nullable)subtitle;
+
+@end
+
+@interface ACRTypeaheadOfflineStateParams : ACRTypeaheadStateParameters
+@end
+
+@interface ACRTypeaheadNoResultsStateParams : ACRTypeaheadStateParameters
+@end
+
+@interface ACRTypeaheadErrorStateParams : ACRTypeaheadStateParameters
+@end
+
+@interface ACRTypeaheadZeroStateParams : ACRTypeaheadStateParameters
+@end
+
+@interface ACRTypeaheadStateAllParameters : NSObject
+@property ACRTypeaheadZeroStateParams *_Nullable zeroStateParams;
+@property ACRTypeaheadErrorStateParams *_Nullable errorStateParams;
+@property ACRTypeaheadNoResultsStateParams *_Nullable noResultStateParams;
+@property ACRTypeaheadOfflineStateParams *_Nullable offlineStateParams;
+
+- (nonnull instancetype)initWithzeroStateParams:(ACRTypeaheadZeroStateParams *_Nullable)zeroStateParams
+ errorStateParams:(ACRTypeaheadErrorStateParams *_Nullable)errorStateParams
+ noResultStateParams:(ACRTypeaheadNoResultsStateParams *_Nullable)noResultStateParams
+ offlineStateParams:(ACRTypeaheadOfflineStateParams *_Nullable)offlineStateParams;
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchParameters.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchParameters.mm
new file mode 100644
index 0000000000..de003d9a75
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchParameters.mm
@@ -0,0 +1,112 @@
+//
+// ACRTypeaheadSearchParameters.mm
+// AdaptiveCards
+//
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACRTypeaheadSearchParameters.h"
+
+
+@implementation ACRTypeaheadStateParameters
+
+- (instancetype)initWithtitle:(NSString *)title
+ subtitle:(NSString *)subtitle
+{
+ self = [super init];
+ if (self) {
+ self.title = title;
+ self.subtitle = subtitle;
+ }
+ return self;
+}
+
+@synthesize title;
+@synthesize subtitle;
+
+@end
+
+@implementation ACRTypeaheadOfflineStateParams
+
+- (instancetype)initWithtitle:(NSString *)title
+ subtitle:(NSString *)subtitle
+{
+ self = [super init];
+ if (self) {
+ if (!title) {
+ title = @"No Internet";
+ }
+ self = [super initWithtitle:title subtitle:subtitle];
+ }
+ return self;
+}
+
+@end
+
+@implementation ACRTypeaheadNoResultsStateParams
+
+- (instancetype)initWithtitle:(NSString *)title
+ subtitle:(NSString *)subtitle
+{
+ self = [super init];
+ if (self) {
+ if (!title) {
+ title = @"No results found";
+ }
+ self = [super initWithtitle:title subtitle:subtitle];
+ }
+ return self;
+}
+
+@end
+
+@implementation ACRTypeaheadErrorStateParams
+
+- (instancetype)initWithtitle:(NSString *)title
+ subtitle:(NSString *)subtitle
+{
+ self = [super init];
+ if (self) {
+ if (!title) {
+ title = @"Something went wrong";
+ }
+ self = [super initWithtitle:title subtitle:subtitle];
+ }
+ return self;
+}
+@end
+
+@implementation ACRTypeaheadZeroStateParams
+
+- (instancetype)initWithtitle:(NSString *)title
+ subtitle:(NSString *)subtitle
+{
+ self = [super init];
+ if (self) {
+ if (!title) {
+ title = @"Search options";
+ }
+ self = [super initWithtitle:title subtitle:subtitle];
+ }
+ return self;
+}
+@end
+
+@implementation ACRTypeaheadStateAllParameters
+
+- (nonnull instancetype)initWithzeroStateParams:(ACRTypeaheadZeroStateParams *)zeroStateParams
+ errorStateParams:(ACRTypeaheadErrorStateParams *)errorStateParams
+ noResultStateParams:(ACRTypeaheadNoResultsStateParams *)noResultStateParams
+ offlineStateParams:(ACRTypeaheadOfflineStateParams *)offlineStateParams
+{
+ self = [super init];
+ if (self) {
+ self.zeroStateParams = zeroStateParams;
+ self.errorStateParams = errorStateParams;
+ self.noResultStateParams = noResultStateParams;
+ self.offlineStateParams = offlineStateParams;
+ }
+ return self;
+}
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchViewController.mm b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchViewController.mm
new file mode 100644
index 0000000000..0c5152eccd
--- /dev/null
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRTypeaheadSearchViewController.mm
@@ -0,0 +1,397 @@
+//
+// ACRTypeaheadSearchViewController.mm
+// AdaptiveCards
+//
+// Created by Jyoti Kukreja on 26/01/23.
+// Copyright © 2023 Microsoft. All rights reserved.
+//
+
+#import "ACOBaseCardElementPrivate.h"
+#import "ACOBundle.h"
+#import "ACOHostConfigPrivate.h"
+#import "ACOTypeaheadDynamicChoicesService.h"
+#import "ACRActionDelegate.h"
+#import "ACRBaseCardElementRenderer.h"
+#import "ACRChoiceSetCompactStyleView.h"
+#import "ACRChoiceSetFilteredStyleView.h"
+#import "ACRInputLabelView.h"
+#import "ACRTypeaheadSearchViewControllerPrivate.h"
+#import "ACRView.h"
+#import "ChoiceInput.h"
+#import "ChoiceSetInput.h"
+#import "ChoicesData.h"
+#import "HostConfig.h"
+#import "UtiliOS.h"
+#import
+
+typedef enum {
+ none = 0,
+ staticDataSource,
+ dynamicDataSource,
+} TSChoicesDataSource;
+
+typedef enum {
+ error = 0,
+ networkError,
+ success
+} ACODynamicTypeaheadResponseType;
+
+static CGFloat const ACOSearchImageViewHeight = 48.0f;
+static CGFloat const ACOSearchImageViewWidth = 48.0f;
+static CGFloat const ACOSearchBarPadding = 8.0f;
+static CGFloat const ACOListViewBottomPadding = 32.0f;
+static CGFloat const ACOStackViewSpacing = 14.0f;
+
+@implementation ACRTypeaheadSearchViewController {
+ ACOFilteredDataSource *_filteredDataSource;
+ ACOChoiceSetFilteredStyleValidator *_validator;
+ ACOBaseCardElement *_inputElem;
+ __weak ACRView *_rootView;
+ NSInteger _wrapLines;
+ TSChoicesDataSource _dataSourceType;
+ TSTypeaehadSearchViewState _searchViewState;
+ id _choiceSetDelegate;
+ ACRTypeaheadStateAllParameters *_searchStateParams;
+ UIStackView *_container;
+ UISearchBar *_searchBar;
+ UIView *_searchBarSeparator;
+ UIActivityIndicatorView *_loader;
+ UILabel *_searchStateTitleLabel;
+ UIImageView *_searchStateImageView;
+ UITableView *_listView;
+ ACOTypeaheadDynamicChoicesService *_dynamicChoicesService;
+ NSString *_typeaheadViewTitle;
+}
+
+- (instancetype)initWithInputChoiceSet:(ACOBaseCardElement *)acoElem
+ rootView:(ACRView *)rootView
+ hostConfig:(ACOHostConfig *)hostConfig
+ filteredDataSource:(ACOFilteredDataSource *)filteredDataSource
+ filteredStyleValidator:(ACOChoiceSetFilteredStyleValidator *)validator
+ typeaheadViewTitle:(NSString *)typeaheadViewTitle
+ choiceSetDelegate:(id)choiceSetDelegate
+ searchStateParams:(ACRTypeaheadStateAllParameters *)searchStateParams
+{
+ self = [super init];
+ if (self) {
+ std::shared_ptr elem = [acoElem element];
+ std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ _rootView = rootView;
+ _inputElem = acoElem;
+ _typeaheadViewTitle = typeaheadViewTitle;
+ _choiceSetDelegate = choiceSetDelegate;
+ _searchStateParams = searchStateParams;
+ _filteredDataSource = filteredDataSource;
+ _validator = validator;
+ _wrapLines = choiceSet->GetWrap() ? 0 : 1;
+ _dynamicChoicesService = [[ACOTypeaheadDynamicChoicesService alloc] initWithRootView:_rootView inputElem:_inputElem typeaheadSearchDelegate:self];
+ std::shared_ptr choicesData = choiceSet->GetChoicesData();
+ _dataSourceType = none;
+ if (choicesData->GetChoicesDataType().compare((AdaptiveCardSchemaKeyToString(AdaptiveCardSchemaKey::DataQuery))) == 0) {
+ _dataSourceType = dynamicDataSource;
+ } else if (choiceSet->GetChoiceSetStyle() == ChoiceSetStyle::Filtered) {
+ _dataSourceType = staticDataSource;
+ }
+ }
+
+ return self;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ std::shared_ptr elem = [_inputElem element];
+ std::shared_ptr choiceSet = std::dynamic_pointer_cast(elem);
+ self.view.backgroundColor = UIColor.whiteColor;
+ UIView *mainview = [[UIView alloc] initWithFrame:CGRectZero];
+ [mainview setFrame:self.view.bounds];
+ [mainview setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
+ mainview.backgroundColor = UIColor.whiteColor;
+ [self.view addSubview:mainview];
+
+ _container = [[UIStackView alloc] initWithFrame:CGRectZero];
+ _container.axis = UILayoutConstraintAxisVertical;
+ _container.layoutMargins = UIEdgeInsetsMake(12, 0, 16, 16);
+ _container.layoutMarginsRelativeArrangement = YES;
+ _container.translatesAutoresizingMaskIntoConstraints = NO;
+ _container.spacing = ACOStackViewSpacing;
+ self.stackViewContainer = _container;
+ _container.backgroundColor = UIColor.whiteColor;
+ [mainview addSubview:_container];
+ _searchBar = [UISearchBar new];
+ [_searchBar sizeToFit];
+ _searchBar.delegate = self;
+ [_searchBar becomeFirstResponder];
+ _searchBar.text = [_choiceSetDelegate getSelectedText];
+ _searchBar.placeholder = _validator.placeHolder ?: @"Enter a search term";
+ _searchBar.accessibilityIdentifier = [NSString stringWithFormat:@"%@, %@", @"searchBar", [_choiceSetDelegate getChoiceSetId]];
+ self.searchBar = _searchBar;
+
+ _searchBarSeparator = [[UIView alloc] init];
+ self.searchBarSeparator = _searchBarSeparator;
+ _listView = [[UITableView alloc] init];
+ _listView.dataSource = self;
+ _listView.delegate = self;
+ _listView.accessibilityIdentifier = [NSString stringWithFormat:@"%@, %@", @"listView", [_choiceSetDelegate getChoiceSetId]];
+ _listView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
+ self.filteredListView = _listView;
+ [_container addArrangedSubview:_searchBar];
+ [_container addArrangedSubview:_searchBarSeparator];
+ [_container addArrangedSubview:_listView];
+
+ _loader = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleMedium];
+ _loader.translatesAutoresizingMaskIntoConstraints = NO;
+ _loader.hidesWhenStopped = YES;
+ _loader.hidden = YES;
+ self.loader = _loader;
+ _searchStateTitleLabel = [[UILabel alloc] init];
+ _searchStateTitleLabel.translatesAutoresizingMaskIntoConstraints = NO;
+ self.searchStateTitleLabel = _searchStateTitleLabel;
+ _searchStateImageView = [[UIImageView alloc] init];
+ _searchStateImageView.frame = CGRectMake((self.view.frame.size.width - ACOSearchImageViewWidth) / 2, (self.view.frame.size.height - ACOSearchImageViewHeight) / 2, ACOSearchImageViewWidth, ACOSearchImageViewHeight);
+ self.searchStateImageView = _searchStateImageView;
+ [self.view addSubview:_loader];
+ [self.view addSubview:_searchStateImageView];
+ [self.view addSubview:_searchStateTitleLabel];
+
+ [NSLayoutConstraint activateConstraints:@[
+ [[_container trailingAnchor] constraintEqualToAnchor:[self.view trailingAnchor]],
+ [[_container leadingAnchor] constraintEqualToAnchor:[self.view leadingAnchor]],
+ [[_container widthAnchor] constraintEqualToAnchor:[self.view widthAnchor]],
+ [[_container topAnchor] constraintEqualToAnchor:[self.view topAnchor]],
+ [[_searchBar leadingAnchor] constraintEqualToAnchor:[self.view leadingAnchor]
+ constant:ACOSearchBarPadding],
+ [[_searchBar trailingAnchor] constraintEqualToAnchor:[self.view trailingAnchor]
+ constant:-ACOSearchBarPadding],
+ [[_searchBarSeparator leadingAnchor] constraintEqualToAnchor:[self.view leadingAnchor]
+ constant:0],
+ [[_searchBarSeparator trailingAnchor] constraintEqualToAnchor:[self.view trailingAnchor]],
+ [[_listView leadingAnchor] constraintEqualToAnchor:[self.view leadingAnchor]],
+ [[_searchStateTitleLabel topAnchor] constraintEqualToAnchor:[_loader bottomAnchor]
+ constant:0],
+ [[_searchStateTitleLabel centerXAnchor] constraintEqualToAnchor:[self.view centerXAnchor]],
+ [[_searchStateTitleLabel topAnchor] constraintEqualToAnchor:[_searchStateImageView bottomAnchor]],
+ [[_loader centerXAnchor] constraintEqualToAnchor:[self.view centerXAnchor]],
+ [[_loader centerYAnchor] constraintEqualToAnchor:[self.view centerYAnchor]],
+ [[_searchStateImageView centerXAnchor] constraintEqualToAnchor:[self.view centerXAnchor]],
+ [[_searchStateImageView centerYAnchor] constraintEqualToAnchor:[self.view centerYAnchor]],
+ [[_listView bottomAnchor] constraintEqualToAnchor:[self.view bottomAnchor]
+ constant:-ACOListViewBottomPadding]
+ ]];
+
+ [_listView reloadData];
+ if (_searchBar.text) {
+ [self fetchChoicesWithQueryString:_searchBar.text];
+ } else {
+ [self resetFilteredList];
+ }
+
+ [self setupNavigationItemView];
+ ACRBaseCardElementRenderer *renderer = [[ACRRegistration getInstance] getRenderer:[NSNumber numberWithInt:(int)choiceSet->GetElementType()]];
+ if (renderer && [renderer respondsToSelector:@selector(configureVC:rootView:baseCardElement:hostConfig:)]) {
+ [renderer configureVC:self rootView:_rootView baseCardElement:_inputElem hostConfig:nil];
+ }
+}
+
+- (void)setupNavigationItemView
+{
+ BOOL shouldConfigure = YES;
+ if ([_rootView.acrActionDelegate respondsToSelector:@selector(shouldConfigureNavigationItemViewWithVC:)]) {
+ shouldConfigure = [_rootView.acrActionDelegate shouldConfigureNavigationItemViewWithVC:self];
+ }
+
+ if (!shouldConfigure) {
+ return;
+ }
+
+ [self.navigationItem setTitle:_typeaheadViewTitle];
+ UIImage *image = [UIImage systemImageNamed:@"chevron.backward"];
+ UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:image
+ style:UIBarButtonItemStylePlain
+ target:self
+ action:@selector(navigateBack)];
+ self.navigationItem.leftBarButtonItem = backButton;
+
+ if (_searchBar.text != nil && _searchBar.text.length) {
+ UIImage *rightImage = [UIImage systemImageNamed:@"checkmark"];
+ UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithImage:rightImage
+ style:UIBarButtonItemStylePlain
+ target:self
+ action:@selector(checkmarkButtonClicked)];
+ self.navigationItem.rightBarButtonItem = rightBarButton;
+ }
+}
+
+- (void)navigateBack
+{
+ [self dismiss];
+}
+
+- (void)checkmarkButtonClicked
+{
+ [self dismiss];
+ [_choiceSetDelegate updateSelectedChoiceInTextField:_searchBar.text];
+}
+
+- (void)dismiss
+{
+ [self dismissViewControllerAnimated:NO completion:nil];
+}
+
+#pragma mark - UISearchBarDelegate Methods
+
+- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
+{
+ if ([searchBar.text length] == 0) {
+ [self resetFilteredList];
+ }
+}
+
+- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
+{
+ NSString *queryString = [_searchBar.text stringByReplacingCharactersInRange:range
+ withString:text];
+ [self fetchChoicesWithQueryString:queryString];
+ [_listView reloadData];
+ return YES;
+}
+
+
+- (void)fetchChoicesWithQueryString:(NSString *)queryString
+{
+ switch (_dataSourceType) {
+ case staticDataSource:
+ [_filteredDataSource updateFilteredListForStaticTypeahead:queryString];
+ break;
+ case dynamicDataSource:
+ _searchStateTitleLabel.text = @"Loading options";
+ _searchStateTitleLabel.hidden = NO;
+ _searchStateImageView.hidden = YES;
+ _filteredListView.hidden = YES;
+ if (![_loader isAnimating]) {
+ [_loader startAnimating];
+ }
+ [_dynamicChoicesService fetchChoicesFromDynamicSourceWithSearchQuery:queryString];
+ break;
+ default:
+ break;
+ }
+}
+
+- (void)resetFilteredList
+{
+ _searchBar.text = @"";
+ if (@available(iOS 16.0, *)) {
+ self.navigationItem.rightBarButtonItem.hidden = YES;
+ }
+ [_choiceSetDelegate updateSelectedChoiceInTextField:@""];
+ [_filteredDataSource resetFilter];
+ [self configureSearchStateUI:_filteredDataSource.count ? displayingResults : zeroState];
+}
+
+#pragma mark - ACOTypeaheadDynamicChoicesService Methods
+
+- (void)updateTypeaheadUIWithSearchText:(NSString *)searchText dynamicChoices:(NSDictionary *)choices withError:(NSError *)error
+{
+ __weak __typeof(self) weakSelf = self;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ __strong __typeof(self) strongSelf = weakSelf;
+ if (!error) {
+ [strongSelf->_loader stopAnimating];
+ [strongSelf->_filteredDataSource updateFilteredListForStaticAndDynamicTypeahead:searchText dynamicChoices:choices];
+ [strongSelf->_validator updateDynamicTitleMap:choices];
+ if (strongSelf->_filteredDataSource.count) {
+ [strongSelf configureSearchStateUI:displayingResults];
+ } else if (![searchText length]) {
+ [strongSelf configureSearchStateUI:zeroState];
+ } else {
+ [strongSelf configureSearchStateUI:displayingInvalidSearchError];
+ }
+ } else {
+ [strongSelf configureSearchStateUI:displayingGenericError];
+ }
+
+ if (@available(iOS 16.0, *)) {
+ strongSelf.navigationItem.rightBarButtonItem.hidden = YES;
+ if ([strongSelf->_filteredDataSource findMatch:searchText]) {
+ strongSelf.navigationItem.rightBarButtonItem.hidden = NO;
+ }
+ }
+ });
+}
+
+- (void)configureSearchStateUI:(TSTypeaehadSearchViewState)searchViewState
+{
+ _searchStateImageView.hidden = NO;
+ _searchStateTitleLabel.hidden = NO;
+ _filteredListView.hidden = YES;
+ switch (searchViewState) {
+ case zeroState:
+ _searchStateTitleLabel.text = _searchStateParams.zeroStateParams.title;
+ break;
+ case displayingResults:
+ _searchStateTitleLabel.hidden = YES;
+ _searchStateImageView.hidden = YES;
+ _filteredListView.hidden = NO;
+ break;
+ case displayingGenericError:
+ _searchStateTitleLabel.text = _searchStateParams.errorStateParams.title;
+ break;
+ case displayingInvalidSearchError:
+ _searchStateTitleLabel.text = _searchStateParams.noResultStateParams.title;
+ break;
+ default:
+ break;
+ }
+ [_listView reloadData];
+ if ([_rootView.acrActionDelegate respondsToSelector:@selector(didUpdateTypeaheadSearchViewController:searchStateImageView:searchViewState:)]) {
+ [_rootView.acrActionDelegate didUpdateTypeaheadSearchViewController:self searchStateImageView:_searchStateImageView searchViewState:searchViewState];
+ }
+}
+
+#pragma mark - UITableViewDelegate Methods
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ return _filteredDataSource.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"filterred-cell"];
+ if (!cell) {
+ cell = [[UITableViewCell alloc] init];
+ }
+ NSString *resultText = [_filteredDataSource getItemAt:indexPath.row];
+ NSRange highlightedRanges = [_filteredDataSource getHighlightRangeForSearchText:_searchBar.text resultText:resultText];
+ NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:resultText];
+ [attrString beginEditing];
+ [attrString addAttributes:@{
+ NSFontAttributeName : [UIFont boldSystemFontOfSize:cell.textLabel.font.pointSize]
+ }
+ range:highlightedRanges];
+ [attrString endEditing];
+ cell.textLabel.attributedText = attrString;
+ cell.textLabel.numberOfLines = _wrapLines;
+ cell.accessibilityLabel = [NSString stringWithFormat:@"%@, %@", _typeaheadViewTitle, cell.textLabel.text];
+ cell.accessibilityValue = [NSString stringWithFormat:@"%ld of %ld", indexPath.row + 1, [self tableView:tableView numberOfRowsInSection:0]];
+ cell.accessibilityIdentifier = [NSString stringWithFormat:@"%@, %@", [_choiceSetDelegate getChoiceSetId], cell.textLabel.text];
+ cell.accessibilityTraits = UIAccessibilityTraitButton;
+ return cell;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ [tableView deselectRowAtIndexPath:indexPath animated:NO];
+ _searchBar.text = [_filteredDataSource getItemAt:indexPath.row];
+ [_choiceSetDelegate updateSelectedChoiceInTextField:[_filteredDataSource getItemAt:indexPath.row]];
+ [self dismiss];
+ [self resignFirstResponder];
+}
+
+@end
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRViewController.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRViewController.h
index 4750cf7c99..08bcd40c74 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRViewController.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRViewController.h
@@ -5,10 +5,17 @@
// Copyright © 2017 Microsoft. All rights reserved.
//
-#import "ACOAdaptiveCard.h"
-#import "ACOHostConfig.h"
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOWarning.h"
#import "ACRActionDelegate.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
+#import "ACOAdaptiveCard.h"
+#import "ACOHostConfig.h"
#import
#import
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/AdaptiveCards.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/AdaptiveCards.h
index 7cde6d6ca7..71b1ba6a7b 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/AdaptiveCards.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/AdaptiveCards.h
@@ -12,6 +12,8 @@ FOUNDATION_EXPORT double AdaptiveCardsFrameworkVersionNumber;
//! Project version string for AFramework.
FOUNDATION_EXPORT const unsigned char AdaptiveCarsFrameworkVersionString[];
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOActionOverflow.h"
#import "ACOAdaptiveCard.h"
#import "ACOAdaptiveCardParseResult.h"
@@ -76,3 +78,70 @@ FOUNDATION_EXPORT const unsigned char AdaptiveCarsFrameworkVersionString[];
#import "ACRTextView.h"
#import "ACRToggleInputView.h"
#import "ACRView.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+#endif
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOActionOverflowPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOActionOverflowPrivate.h
index ae6b1c983f..cd85eee01b 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOActionOverflowPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOActionOverflowPrivate.h
@@ -5,8 +5,15 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOBaseActionElement.h"
#import "BaseActionElement.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
#import
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAdaptiveCardPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAdaptiveCardPrivate.h
index d8cab7245d..1df9ab8d85 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAdaptiveCardPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAdaptiveCardPrivate.h
@@ -5,8 +5,15 @@
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOAdaptiveCard.h"
#import "SharedAdaptiveCard.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
@interface ACOAdaptiveCard ()
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthCardButtonPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthCardButtonPrivate.h
index 7bfe143ce5..a9aa353180 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthCardButtonPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthCardButtonPrivate.h
@@ -5,8 +5,15 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOAuthCardButton.h"
#import "AuthCardButton.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthenticationPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthenticationPrivate.h
index c08ed823be..69d108ddc4 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthenticationPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOAuthenticationPrivate.h
@@ -5,8 +5,15 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOAuthentication.h"
#import "Authentication.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseActionElementPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseActionElementPrivate.h
index 5aeffdb326..e2099726be 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseActionElementPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseActionElementPrivate.h
@@ -4,8 +4,15 @@
//
// Copyright © 2017 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOBaseActionElement.h"
#import "BaseActionElement.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseCardElementPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseCardElementPrivate.h
index 4e188af6a0..31adec5fa4 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseCardElementPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOBaseCardElementPrivate.h
@@ -4,8 +4,15 @@
//
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOBaseCardElement.h"
#import "BaseCardElement.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOHostConfigPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOHostConfigPrivate.h
index 2c8a346dce..8ec2fe38c0 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOHostConfigPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOHostConfigPrivate.h
@@ -4,6 +4,8 @@
//
// Copyright © 2017 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOBaseActionElement.h"
#import "ACOBaseCardElement.h"
#import "ACOHostConfig.h"
@@ -11,6 +13,16 @@
#import "ACREnums.h"
#import "HostConfig.h"
#import "TextBlock.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#endif
#import
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOMediaEventPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOMediaEventPrivate.h
index 6e97c13020..5efdc2425a 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOMediaEventPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOMediaEventPrivate.h
@@ -5,10 +5,19 @@
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOMediaEvent.h"
#import "Media.h"
#import "MediaSource.h"
#import "SharedAdaptiveCard.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#import
+#import
+#endif
#import
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOParseContextPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOParseContextPrivate.h
index 8fd0e84232..d1419b4a21 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOParseContextPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOParseContextPrivate.h
@@ -4,8 +4,15 @@
//
// Copyright © 2019 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOParseContext.h"
#import "ParseContext.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORefreshPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORefreshPrivate.h
index 7389277ae3..69ebbc34d8 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORefreshPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORefreshPrivate.h
@@ -5,8 +5,15 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACORefresh.h"
#import "Refresh.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
using namespace AdaptiveCards;
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORemoteResourceInformationPrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORemoteResourceInformationPrivate.h
index ceb86efb52..e47ccf7014 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORemoteResourceInformationPrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACORemoteResourceInformationPrivate.h
@@ -4,8 +4,15 @@
//
// Copyright © 2018 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACORemoteResourceInformation.h"
#import "RemoteResourceInformation.h"
+#else
+/// Cocoapods Imports
+#import
+#import
+#endif
@interface ACORemoteResourceInformation ()
diff --git a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOTokenExchangeResourcePrivate.h b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOTokenExchangeResourcePrivate.h
index e0cb3b66f2..6fc22ec26d 100644
--- a/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOTokenExchangeResourcePrivate.h
+++ b/source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/PrivateHeaders/ACOTokenExchangeResourcePrivate.h
@@ -5,8 +5,15 @@
// Copyright © 2021 Microsoft. All rights reserved.
//
+#ifdef SWIFT_PACKAGE
+/// Swift Package Imports
#import "ACOTokenExchangeResource.h"
#import "TokenExchangeResource.h"
+#else
+/// Cocoapods Imports
+#import
+#import