diff --git a/README.md b/README.md
index 4b733217fe..0e898e0460 100644
--- a/README.md
+++ b/README.md
@@ -35,15 +35,17 @@ We release the Adaptive Cards products on the third week of each month, assuming
|Product|Last Release Date|Next Release Date|
|---|---|---|
-|Website|4/21/2023|7/17/2023|
+|Website|3/18/2024|4/22/2024|
|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|
+|XAML Renderer|2/2/2024|3/2/2024|
+|XAML Object Model|2/2/2024|3/2/2024|
+|WinUI 3 Renderer|2/2/2024|3/2/2024|
+|WinUI 3 Object Model|2/2/2024|3/2/2024|
+|C++/WinRT Templating|2/2/2024|3/2/2024|
+|C#/WinRT Templating|2/2/2024|3/2/2024|
|.NET Renderer|12/1/2022|7/17/2023|
|.NET Templating|3/7/2023|7/17/2023|
@@ -173,64 +175,64 @@ the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) o
|Action IsEnabled|v1.5|iOS| :white_check_mark: | :white_check_mark:|
|Action IsEnabled|v1.5|Android| :white_check_mark: | :white_check_mark:|
|Action IsEnabled|v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|Action IsEnabled|v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|Action IsEnabled|v1.5|.NET| :white_check_mark: | :x:|
|Action Mode|v1.5|JS| :white_check_mark: | :white_check_mark:|
|Action Mode|v1.5|iOS| :white_check_mark: | :white_check_mark:|
|Action Mode|v1.5|Android| :white_check_mark: | :white_check_mark:|
|Action Mode|v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|Action Mode|v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|Action Mode|v1.5|.NET| :white_check_mark: | :x:|
|Action/SelectAction ToolTip|v1.5|JS| :white_check_mark: | :white_check_mark:|
|Action/SelectAction ToolTip|v1.5|iOS| :white_check_mark: | :white_check_mark:|
|Action/SelectAction ToolTip|v1.5|Android| :white_check_mark: | :white_check_mark:|
|Action/SelectAction ToolTip|v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|Action/SelectAction ToolTip|v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|Action/SelectAction ToolTip|v1.5|.NET| :white_check_mark: | :x:|
|Input.ChoiceSet Filtered Style |v1.5|JS| :white_check_mark: | :white_check_mark:|
|Input.ChoiceSet Filtered Style |v1.5|iOS| :white_check_mark: | :white_check_mark:|
|Input.ChoiceSet Filtered Style |v1.5|Android| :white_check_mark: | :white_check_mark:|
|Input.ChoiceSet Filtered Style |v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|Input.ChoiceSet Filtered Style |v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|Input.ChoiceSet Filtered Style |v1.5|.NET| :white_check_mark: | :x:|
|Input.Text Password Style |v1.5|JS| :white_check_mark: | :white_check_mark:|
|Input.Text Password Style |v1.5|iOS| :white_check_mark: | :white_check_mark:|
|Input.Text Password Style |v1.5|Android| :white_check_mark: | :white_check_mark:|
|Input.Text Password Style |v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|Input.Text Password Style |v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|Input.Text Password Style |v1.5|.NET| :white_check_mark: | :x:|
|TextBlock Heading Style|v1.5|JS| :white_check_mark: | :white_check_mark:|
|TextBlock Heading Style|v1.5|iOS| :white_check_mark: | :white_check_mark:|
|TextBlock Heading Style|v1.5|Android| :white_check_mark: | :white_check_mark:|
|TextBlock Heading Style|v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|TextBlock Heading Style|v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|TextBlock Heading Style|v1.5|.NET| :white_check_mark: | :x:|
|RTL |v1.5|JS| :white_check_mark: | :white_check_mark:|
|RTL |v1.5|iOS| :white_check_mark: | :white_check_mark:|
|RTL |v1.5|Android| :white_check_mark: | :white_check_mark:|
|RTL |v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|RTL |v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|RTL |v1.5|.NET| :white_check_mark: | :x:|
|Table |v1.5|JS| :white_check_mark: | :white_check_mark:|
|Table |v1.5|iOS| :white_check_mark: | :white_check_mark:|
|Table |v1.5|Android| :white_check_mark: | :white_check_mark:|
|Table |v1.5|XAML| :white_check_mark: | :white_check_mark:|
-|Table |v1.5|.NET| :white_check_mark: | :negative_squared_cross_mark:|
+|Table |v1.5|.NET| :white_check_mark: | :x:|
|Carousel|v1.6|JS| :white_check_mark: | :white_check_mark:|
-|Carousel|v1.6|iOS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Carousel|v1.6|Android| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Carousel|v1.6|XAML| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Carousel|v1.6|.NET| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
+|Carousel|v1.6|iOS| :x: | :x:|
+|Carousel|v1.6|Android| :x: | :x:|
+|Carousel|v1.6|XAML| :x: | :x:|
+|Carousel|v1.6|.NET| :x: | :x:|
|ImageSet Stacked Presentation Style|v1.6|JS| :white_check_mark: | :white_check_mark:|
-|ImageSet Stacked Presentation Style|v1.6|iOS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|ImageSet Stacked Presentation Style|v1.6|Android| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|ImageSet Stacked Presentation Style|v1.6|XAML| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|ImageSet Stacked Presentation Style|v1.6|.NET| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Dynamic Type Ahead Search|v1.6|JS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Dynamic Type Ahead Search|v1.6|iOS| :white_check_mark: | :negative_squared_cross_mark:|
-|Dynamic Type Ahead Search|v1.6|Android| :white_check_mark: | :negative_squared_cross_mark:|
-|Dynamic Type Ahead Search|v1.6|XAML| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Dynamic Type Ahead Search|v1.6|.NET| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Label Position|v1.6|JS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Label Position|v1.6|iOS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Label Position|v1.6|Android| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Label Position|v1.6|XAML| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Label Position|v1.6|.NET| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Inline Editable Input Style|v1.6|JS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Inline Editable Input Style|v1.6|iOS| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Inline Editable Input Style|v1.6|Android| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Inline Editable Input Style|v1.6|XAML| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
-|Inline Editable Input Style|v1.6|.NET| :negative_squared_cross_mark: | :negative_squared_cross_mark:|
+|ImageSet Stacked Presentation Style|v1.6|iOS| :x: | :x:|
+|ImageSet Stacked Presentation Style|v1.6|Android| :x: | :x:|
+|ImageSet Stacked Presentation Style|v1.6|XAML| :x: | :x:|
+|ImageSet Stacked Presentation Style|v1.6|.NET| :x: | :x:|
+|Dynamic Type Ahead Search|v1.6|JS| :x: | :x:|
+|Dynamic Type Ahead Search|v1.6|iOS| :white_check_mark: | :x:|
+|Dynamic Type Ahead Search|v1.6|Android| :white_check_mark: | :x:|
+|Dynamic Type Ahead Search|v1.6|XAML| :x: | :x:|
+|Dynamic Type Ahead Search|v1.6|.NET| :x: | :x:|
+|Label Position|v1.6|JS| :x: | :x:|
+|Label Position|v1.6|iOS| :x: | :x:|
+|Label Position|v1.6|Android| :x: | :x:|
+|Label Position|v1.6|XAML| :x: | :x:|
+|Label Position|v1.6|.NET| :x: | :x:|
+|Inline Editable Input Style|v1.6|JS| :x: | :x:|
+|Inline Editable Input Style|v1.6|iOS| :x: | :x:|
+|Inline Editable Input Style|v1.6|Android| :x: | :x:|
+|Inline Editable Input Style|v1.6|XAML| :x: | :x:|
+|Inline Editable Input Style|v1.6|.NET| :x: | :x:|
diff --git a/samples/HostConfig/viva-connections-dark.json b/samples/HostConfig/viva-connections-dark.json
index 3b28322c6b..97e615971f 100644
--- a/samples/HostConfig/viva-connections-dark.json
+++ b/samples/HostConfig/viva-connections-dark.json
@@ -50,6 +50,9 @@
}
}
},
+ "textBlock": {
+ "headingLevel": 2
+ },
"containerStyles": {
"default": {
"backgroundColor": "#1b1a19",
diff --git a/samples/HostConfig/viva-connections-light.json b/samples/HostConfig/viva-connections-light.json
index bbab29a922..5a70522303 100644
--- a/samples/HostConfig/viva-connections-light.json
+++ b/samples/HostConfig/viva-connections-light.json
@@ -50,6 +50,9 @@
}
}
},
+ "textBlock": {
+ "headingLevel": 2
+ },
"containerStyles": {
"default": {
"backgroundColor": "#FFFFFF",
diff --git a/samples/Templates/Scenarios/Agenda.template.json b/samples/Templates/Scenarios/Agenda.template.json
index 57e45ba533..49392e4306 100644
--- a/samples/Templates/Scenarios/Agenda.template.json
+++ b/samples/Templates/Scenarios/Agenda.template.json
@@ -65,7 +65,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/LocationBlue_B.png",
+ "url": "https://adaptivecards.io/content/LocationBlue_B.png",
"altText": "Location B"
}
],
@@ -107,7 +107,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/LocationRed_C.png",
+ "url": "https://adaptivecards.io/content/LocationRed_C.png",
"altText": "Location C"
}
],
@@ -152,7 +152,7 @@
{
"type": "Image",
"horizontalAlignment": "left",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Conflict.png",
+ "url": "https://adaptivecards.io/content/Conflict.png",
"altText": "Calendar conflict"
}
],
@@ -185,7 +185,7 @@
{
"type": "Column",
"backgroundImage": {
- "url": "https://messagecardplayground.azurewebsites.net/assets/SmallVerticalLineGray.png",
+ "url": "https://adaptivecards.io/content/SmallVerticalLineGray.png",
"fillMode": "repeatVertically",
"horizontalAlignment": "center"
},
@@ -217,7 +217,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/location_gray.png",
+ "url": "https://adaptivecards.io/content/location_gray.png",
"altText": "Location"
}
],
@@ -243,19 +243,19 @@
"images": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/person_w1.png",
+ "url": "https://adaptivecards.io/content/person_w1.png",
"size": "small",
"altText": "Person with bangs"
},
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/person_m1.png",
+ "url": "https://adaptivecards.io/content/person_m1.png",
"size": "small",
"altText": "Person with glasses and short hair"
},
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/person_w2.png",
+ "url": "https://adaptivecards.io/content/person_w2.png",
"size": "small",
"altText": "Person smiling"
}
@@ -270,7 +270,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/power_point.png",
+ "url": "https://adaptivecards.io/content/power_point.png",
"altText": "Powerpoint presentation"
}
],
@@ -305,7 +305,7 @@
{
"type": "Column",
"backgroundImage": {
- "url": "https://messagecardplayground.azurewebsites.net/assets/SmallVerticalLineGray.png",
+ "url": "https://adaptivecards.io/content/SmallVerticalLineGray.png",
"fillMode": "repeatVertically",
"horizontalAlignment": "center"
},
@@ -313,7 +313,7 @@
{
"type": "Image",
"horizontalAlignment": "center",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Gray_Dot.png",
+ "url": "https://adaptivecards.io/content/Gray_Dot.png",
"altText": "Gray dot"
}
],
@@ -331,7 +331,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/car.png",
+ "url": "https://adaptivecards.io/content/car.png",
"altText": "Travel by car"
}
],
@@ -382,7 +382,7 @@
{
"type": "Column",
"backgroundImage": {
- "url": "https://messagecardplayground.azurewebsites.net/assets/SmallVerticalLineGray.png",
+ "url": "https://adaptivecards.io/content/SmallVerticalLineGray.png",
"fillMode": "repeatVertically",
"horizontalAlignment": "center"
},
@@ -390,7 +390,7 @@
{
"type": "Image",
"horizontalAlignment": "center",
- "url": "https://messagecardplayground.azurewebsites.net/assets/CircleBlue_flight.png",
+ "url": "https://adaptivecards.io/content/CircleBlue_flight.png",
"altText": "Location B: Flight"
}
],
@@ -414,7 +414,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/location_gray.png",
+ "url": "https://adaptivecards.io/content/location_gray.png",
"altText": "Location"
}
],
@@ -435,7 +435,7 @@
},
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/SeaTacMap.png",
+ "url": "https://adaptivecards.io/content/SeaTacMap.png",
"size": "stretch",
"altText": "Map of the Seattle-Tacoma airport"
}
diff --git a/samples/Templates/Scenarios/CarouselTemplatedPages.data.json b/samples/Templates/Scenarios/CarouselTemplatedPages.data.json
index 789986c258..eef515019f 100644
--- a/samples/Templates/Scenarios/CarouselTemplatedPages.data.json
+++ b/samples/Templates/Scenarios/CarouselTemplatedPages.data.json
@@ -13,7 +13,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "stretch",
"altText": "Mostly cloudy weather"
}
@@ -69,7 +69,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Drizzle-Square.png",
+ "url": "https://adaptivecards.io/content/Drizzle-Square.png",
"altText": "Drizzly weather"
},
{
@@ -106,7 +106,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -142,7 +142,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -178,7 +178,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -400,7 +400,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "small",
"altText": "Mostly cloudy weather"
}
diff --git a/samples/Templates/Scenarios/FlightDetails.template.json b/samples/Templates/Scenarios/FlightDetails.template.json
index ac155f15f0..fa3ded1373 100644
--- a/samples/Templates/Scenarios/FlightDetails.template.json
+++ b/samples/Templates/Scenarios/FlightDetails.template.json
@@ -15,12 +15,12 @@
"items": [
{
"type": "Container",
- "backgroundImage": "https://messagecardplayground.azurewebsites.net/assets/TxP_Background.png",
+ "backgroundImage": "https://adaptivecards.io/content/TxP_Background.png",
"items": [
{
"type": "Image",
"horizontalAlignment": "center",
- "url": "https://messagecardplayground.azurewebsites.net/assets/TxP_Flight.png",
+ "url": "https://adaptivecards.io/content/TxP_Flight.png",
"altText": "Departing airplane"
}
],
@@ -95,8 +95,9 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/smallairplane.png",
- "height": "16px"
+ "url": "https://adaptivecards.io/content/smallairplane.png",
+ "height": "16px",
+ "altText": "Flight to"
}
],
"width": "auto"
diff --git a/samples/Templates/Scenarios/InputFormWithRTL.template.json b/samples/Templates/Scenarios/InputFormWithRTL.template.json
index 3b28a82b89..c5b03f87b6 100644
--- a/samples/Templates/Scenarios/InputFormWithRTL.template.json
+++ b/samples/Templates/Scenarios/InputFormWithRTL.template.json
@@ -64,6 +64,7 @@
{
"type": "Action.ShowCard",
"title": "عربي",
+ "tooltip": "Arabic",
"card": {
"type": "AdaptiveCard",
"rtl": true,
diff --git a/samples/Templates/Scenarios/WeatherCompact.template.json b/samples/Templates/Scenarios/WeatherCompact.template.json
index 915defb0c9..386f7d2064 100644
--- a/samples/Templates/Scenarios/WeatherCompact.template.json
+++ b/samples/Templates/Scenarios/WeatherCompact.template.json
@@ -27,7 +27,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "small",
"altText": "Mostly cloudy weather"
}
diff --git a/samples/Templates/Scenarios/WeatherLarge.data.json b/samples/Templates/Scenarios/WeatherLarge.data.json
index 2edc3090c7..b0eaf263d1 100644
--- a/samples/Templates/Scenarios/WeatherLarge.data.json
+++ b/samples/Templates/Scenarios/WeatherLarge.data.json
@@ -26,7 +26,7 @@
"snow": 0,
"uv": 1.74992,
"weather": {
- "icon": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "icon": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"code": 803,
"description": "Broken clouds"
},
@@ -69,7 +69,7 @@
"snow": 0,
"uv": 2.93193,
"weather": {
- "icon": "https://messagecardplayground.azurewebsites.net/assets/Drizzle-Square.png",
+ "icon": "https://adaptivecards.io/content/Drizzle-Square.png",
"code": 803,
"description": "Broken clouds"
},
@@ -112,7 +112,7 @@
"snow": 0,
"uv": 1.10983,
"weather": {
- "icon": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "icon": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"code": 804,
"description": "Overcast clouds"
},
@@ -155,7 +155,7 @@
"snow": 0,
"uv": 0.989995,
"weather": {
- "icon": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "icon": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"code": 804,
"description": "Overcast clouds"
},
@@ -198,7 +198,7 @@
"snow": 0,
"uv": 1.06772,
"weather": {
- "icon": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "icon": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"code": 804,
"description": "Overcast clouds"
},
diff --git a/samples/Templates/Scenarios/WeatherLarge.template.json b/samples/Templates/Scenarios/WeatherLarge.template.json
index 2df9c3d40c..95ac526e5e 100644
--- a/samples/Templates/Scenarios/WeatherLarge.template.json
+++ b/samples/Templates/Scenarios/WeatherLarge.template.json
@@ -3,7 +3,7 @@
"type": "AdaptiveCard",
"version": "1.5",
"speak": "Weather forecast for ${formatEpoch(data[0].sunrise_ts, 'dddd')} is high of ${formatNumber(data[0].app_max_temp / 5 * 9 + 32, 0)} and low of ${formatNumber(data[0].app_min_temp / 5 * 9 + 32, 0)} degrees with a ${formatNumber(data[0].precip * 100, 0)}% chance of rainWinds will be ${formatNumber(data[0].wind_gust_spd, 0)} mph from the ${data[0].wind_cdir}",
- "backgroundImage": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Background.jpg",
+ "backgroundImage": "https://adaptivecards.io/content/Mostly%20Cloudy-Background.jpg",
"body": [
{
"type": "ColumnSet",
@@ -14,7 +14,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "stretch",
"altText": "Mostly cloudy weather"
}
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.3/Elements/Input.Text.InlineAction.json b/samples/v1.3/Elements/Input.Text.InlineAction.json
index f8d1237529..792805d7c4 100644
--- a/samples/v1.3/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.3",
+ "version": "1.5",
"body": [
{
"type": "Input.Text",
diff --git a/samples/v1.5/Scenarios/Agenda.json b/samples/v1.5/Scenarios/Agenda.json
index 6645229b00..5bf7e9dee9 100644
--- a/samples/v1.5/Scenarios/Agenda.json
+++ b/samples/v1.5/Scenarios/Agenda.json
@@ -65,7 +65,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/LocationBlue_B.png",
+ "url": "https://adaptivecards.io/content/LocationBlue_B.png",
"altText": "Location B"
}
],
@@ -107,7 +107,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/LocationRed_C.png",
+ "url": "https://adaptivecards.io/content/LocationRed_C.png",
"altText": "Location C"
}
],
@@ -152,7 +152,7 @@
{
"type": "Image",
"horizontalAlignment": "left",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Conflict.png",
+ "url": "https://adaptivecards.io/content/Conflict.png",
"altText": "Calendar conflict"
}
],
@@ -185,7 +185,7 @@
{
"type": "Column",
"backgroundImage": {
- "url": "https://messagecardplayground.azurewebsites.net/assets/SmallVerticalLineGray.png",
+ "url": "https://adaptivecards.io/content/SmallVerticalLineGray.png",
"fillMode": "repeatVertically",
"horizontalAlignment": "center"
},
@@ -243,19 +243,19 @@
"images": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/person_w1.png",
+ "url": "https://adaptivecards.io/content/person_w1.png",
"size": "small",
"altText": "Person with bangs"
},
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/person_m1.png",
+ "url": "https://adaptivecards.io/content/person_m1.png",
"size": "small",
"altText": "Person with glasses and short hair"
},
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/person_w2.png",
+ "url": "https://adaptivecards.io/content/person_w2.png",
"size": "small",
"altText": "Person smiling"
}
@@ -270,7 +270,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/power_point.png",
+ "url": "https://adaptivecards.io/content/power_point.png",
"altText": "Powerpoint presentation"
}
],
@@ -305,7 +305,7 @@
{
"type": "Column",
"backgroundImage": {
- "url": "https://messagecardplayground.azurewebsites.net/assets/SmallVerticalLineGray.png",
+ "url": "https://adaptivecards.io/content/SmallVerticalLineGray.png",
"fillMode": "repeatVertically",
"horizontalAlignment": "center"
},
@@ -313,7 +313,7 @@
{
"type": "Image",
"horizontalAlignment": "center",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Gray_Dot.png",
+ "url": "https://adaptivecards.io/content/Gray_Dot.png",
"altText": "In transit"
}
],
@@ -382,7 +382,7 @@
{
"type": "Column",
"backgroundImage": {
- "url": "https://messagecardplayground.azurewebsites.net/assets/SmallVerticalLineGray.png",
+ "url": "https://adaptivecards.io/content/SmallVerticalLineGray.png",
"fillMode": "repeatVertically",
"horizontalAlignment": "center"
},
@@ -390,7 +390,7 @@
{
"type": "Image",
"horizontalAlignment": "center",
- "url": "https://messagecardplayground.azurewebsites.net/assets/CircleBlue_flight.png",
+ "url": "https://adaptivecards.io/content/CircleBlue_flight.png",
"altText": "Location B: Flight"
}
],
@@ -435,7 +435,7 @@
},
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/SeaTacMap.png",
+ "url": "https://adaptivecards.io/content/SeaTacMap.png",
"size": "Stretch",
"altText": "Map of the Seattle-Tacoma airport"
}
diff --git a/samples/v1.5/Scenarios/FlightDetails.json b/samples/v1.5/Scenarios/FlightDetails.json
index 4707865a20..55d48c5170 100644
--- a/samples/v1.5/Scenarios/FlightDetails.json
+++ b/samples/v1.5/Scenarios/FlightDetails.json
@@ -15,12 +15,12 @@
"items": [
{
"type": "Container",
- "backgroundImage": "https://messagecardplayground.azurewebsites.net/assets/TxP_Background.png",
+ "backgroundImage": "https://adaptivecards.io/content/TxP_Background.png",
"items": [
{
"type": "Image",
"horizontalAlignment": "center",
- "url": "https://messagecardplayground.azurewebsites.net/assets/TxP_Flight.png",
+ "url": "https://adaptivecards.io/content/TxP_Flight.png",
"altText": "Departing airplane"
}
],
@@ -94,7 +94,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/smallairplane.png",
+ "url": "https://adaptivecards.io/content/smallairplane.png",
"height": "16px",
"altText": "Flight to"
}
diff --git a/samples/v1.5/Scenarios/InputFormWithRTL.json b/samples/v1.5/Scenarios/InputFormWithRTL.json
index 97b0036b72..76272cb155 100644
--- a/samples/v1.5/Scenarios/InputFormWithRTL.json
+++ b/samples/v1.5/Scenarios/InputFormWithRTL.json
@@ -64,6 +64,7 @@
{
"type": "Action.ShowCard",
"title": "عربي",
+ "tooltip": "Arabic",
"card": {
"type": "AdaptiveCard",
"rtl": true,
diff --git a/samples/v1.5/Scenarios/WeatherCompact.json b/samples/v1.5/Scenarios/WeatherCompact.json
index 67dd079bcb..a14e826924 100644
--- a/samples/v1.5/Scenarios/WeatherCompact.json
+++ b/samples/v1.5/Scenarios/WeatherCompact.json
@@ -27,7 +27,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "small",
"altText": "Mostly cloudy weather"
}
diff --git a/samples/v1.5/Scenarios/WeatherLarge.json b/samples/v1.5/Scenarios/WeatherLarge.json
index ef54a5b403..af1fb03f5e 100644
--- a/samples/v1.5/Scenarios/WeatherLarge.json
+++ b/samples/v1.5/Scenarios/WeatherLarge.json
@@ -3,7 +3,7 @@
"type": "AdaptiveCard",
"version": "1.5",
"speak": "Weather forecast for Monday is high of 62 and low of 42 degrees with a 20% chance of rainWinds will be 5 mph from the northeast",
- "backgroundImage": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Background.jpg",
+ "backgroundImage": "https://adaptivecards.io/content/Mostly%20Cloudy-Background.jpg",
"body": [
{
"type": "ColumnSet",
@@ -14,7 +14,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "stretch",
"altText": "Mostly cloudy weather"
}
@@ -76,7 +76,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Drizzle-Square.png",
+ "url": "https://adaptivecards.io/content/Drizzle-Square.png",
"altText": "Drizzly weather"
},
{
@@ -115,7 +115,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -154,7 +154,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -193,7 +193,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
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.6/Elements/Carousel.ScenarioCards.Timer.json b/samples/v1.6/Elements/Carousel.ScenarioCards.Timer.json
index 094c869c3e..11f284422b 100644
--- a/samples/v1.6/Elements/Carousel.ScenarioCards.Timer.json
+++ b/samples/v1.6/Elements/Carousel.ScenarioCards.Timer.json
@@ -20,7 +20,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "stretch",
"altText": "Mostly cloudy weather"
}
@@ -76,7 +76,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Drizzle-Square.png",
+ "url": "https://adaptivecards.io/content/Drizzle-Square.png",
"altText": "Drizzly weather"
},
{
@@ -113,7 +113,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -149,7 +149,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -185,7 +185,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -405,7 +405,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "small",
"altText": "Mostly cloudy weather"
}
diff --git a/samples/v1.6/Elements/Carousel.ScenarioCards.json b/samples/v1.6/Elements/Carousel.ScenarioCards.json
index 37cf16f5cb..0b6ba668a7 100644
--- a/samples/v1.6/Elements/Carousel.ScenarioCards.json
+++ b/samples/v1.6/Elements/Carousel.ScenarioCards.json
@@ -19,7 +19,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "stretch",
"altText": "Mostly cloudy weather"
}
@@ -75,7 +75,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Drizzle-Square.png",
+ "url": "https://adaptivecards.io/content/Drizzle-Square.png",
"altText": "Drizzly weather"
},
{
@@ -112,7 +112,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -148,7 +148,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -184,7 +184,7 @@
{
"type": "Image",
"size": "auto",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"altText": "Mostly cloudy weather"
},
{
@@ -404,7 +404,7 @@
"items": [
{
"type": "Image",
- "url": "https://messagecardplayground.azurewebsites.net/assets/Mostly%20Cloudy-Square.png",
+ "url": "https://adaptivecards.io/content/Mostly%20Cloudy-Square.png",
"size": "small",
"altText": "Mostly cloudy weather"
}
diff --git a/schemas/src/elements/ImageSet.json b/schemas/src/elements/ImageSet.json
index 453a5f1e4e..43ebec63d3 100644
--- a/schemas/src/elements/ImageSet.json
+++ b/schemas/src/elements/ImageSet.json
@@ -12,6 +12,11 @@
"type": "ImageSize",
"default":"medium",
"description": "Controls the approximate size of each image. The physical dimensions will vary per host. Auto and stretch are not supported for ImageSet. The size will default to medium if those values are set."
- }
+ },
+ "style": {
+ "type": "ImageSetStyle",
+ "version": "1.6",
+ "description": "Controls how the images in the `ImageSet` are displayed."
+ }
}
}
diff --git a/schemas/src/enums/ImageSetStyle.json b/schemas/src/enums/ImageSetStyle.json
new file mode 100644
index 0000000000..7bc010f622
--- /dev/null
+++ b/schemas/src/enums/ImageSetStyle.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "https://raw.githubusercontent.com/microsoft/AdaptiveCards/6f39aedce45864ae1067ed44a5551dc973790bb5/source/nodejs/typed-schema/schema/lib/Type.json",
+ "classType": "Enum",
+ "description": "Controls how an `ImageSet` is displayed.",
+ "version": "1.6",
+ "values": [
+ {
+ "value": "default",
+ "description": "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio."
+ },
+ {
+ "value": "stacked",
+ "description": "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos)."
+ },
+ {
+ "value": "grid",
+ "description": "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space."
+ }
+ ]
+}
diff --git a/schemas/src/enums/TextBlockStyle.json b/schemas/src/enums/TextBlockStyle.json
index d0ca4a6f0e..439f2b4cf1 100644
--- a/schemas/src/enums/TextBlockStyle.json
+++ b/schemas/src/enums/TextBlockStyle.json
@@ -6,11 +6,11 @@
"values": [
{
"value": "default",
- "description": "This is the default style which provide no special styling or behavior."
+ "description": "This is the default style which provides no special styling or behavior."
},
{
"value": "heading",
- "description": "The TextBlock is a heading. This will apply the heading styling defaults and mark the text block as a heading for accessiblity."
+ "description": "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity."
}
]
}
diff --git a/source/dotnet/AdaptiveCards.Visualizer.Wpf.sln b/source/dotnet/AdaptiveCards.Visualizer.Wpf.sln
index 478cc19960..388e501dee 100644
--- a/source/dotnet/AdaptiveCards.Visualizer.Wpf.sln
+++ b/source/dotnet/AdaptiveCards.Visualizer.Wpf.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29317.48
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34408.163
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards", "Library\AdaptiveCards\AdaptiveCards.csproj", "{D40ACA37-F5EA-4D3F-B443-CE714AA479A1}"
EndProject
@@ -15,6 +15,13 @@ Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "AdaptiveCards.Sample.WPFVis
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Templating", "Library\AdaptiveCards.Templating\AdaptiveCards.Templating.csproj", "{83599799-97B3-4B42-A580-B4CA81DD54CF}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateCppConsoleTestApp", "Library\CppConsoleApp\CppConsoleApp.vcxproj", "{ED459EEC-7211-403E-8C08-78A43A05A7BE}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847} = {3F9B2B81-512C-4276-A06D-69A8C30DE847}
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Template", "Library\AdaptiveCards.Templating.CSharp.WinRT\AdaptiveCards.Template.csproj", "{3F9B2B81-512C-4276-A06D-69A8C30DE847}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -103,6 +110,30 @@ Global
{83599799-97B3-4B42-A580-B4CA81DD54CF}.Release|x64.Build.0 = Release|Any CPU
{83599799-97B3-4B42-A580-B4CA81DD54CF}.Release|x86.ActiveCfg = Release|Any CPU
{83599799-97B3-4B42-A580-B4CA81DD54CF}.Release|x86.Build.0 = Release|Any CPU
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Debug|Any CPU.Build.0 = Debug|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Debug|x64.ActiveCfg = Debug|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Debug|x64.Build.0 = Debug|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Debug|x86.ActiveCfg = Debug|Win32
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Debug|x86.Build.0 = Debug|Win32
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Release|Any CPU.ActiveCfg = Release|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Release|Any CPU.Build.0 = Release|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Release|x64.ActiveCfg = Release|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Release|x64.Build.0 = Release|x64
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Release|x86.ActiveCfg = Release|Win32
+ {ED459EEC-7211-403E-8C08-78A43A05A7BE}.Release|x86.Build.0 = Release|Win32
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Debug|Any CPU.Build.0 = Debug|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Debug|x64.ActiveCfg = Debug|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Debug|x64.Build.0 = Debug|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Debug|x86.ActiveCfg = Debug|x86
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Debug|x86.Build.0 = Debug|x86
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Release|Any CPU.ActiveCfg = Release|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Release|Any CPU.Build.0 = Release|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Release|x64.ActiveCfg = Release|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Release|x64.Build.0 = Release|x64
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Release|x86.ActiveCfg = Release|x86
+ {3F9B2B81-512C-4276-A06D-69A8C30DE847}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/source/dotnet/AdaptiveCards.sln b/source/dotnet/AdaptiveCards.sln
index 0d50869377..185322188f 100644
--- a/source/dotnet/AdaptiveCards.sln
+++ b/source/dotnet/AdaptiveCards.sln
@@ -33,24 +33,28 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
Ad-Hoc|ARM = Ad-Hoc|ARM
+ Ad-Hoc|ARM64 = Ad-Hoc|ARM64
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|ARM64 = AppStore|ARM64
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|ARM64 = Debug|ARM64
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|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
@@ -61,6 +65,8 @@ Global
{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|ARM64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|ARM64.Build.0 = Release|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
@@ -73,6 +79,8 @@ Global
{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|ARM64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|ARM64.Build.0 = Release|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
@@ -85,6 +93,8 @@ Global
{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|ARM64.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|ARM64.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
@@ -97,6 +107,8 @@ Global
{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|ARM64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|ARM64.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
@@ -109,6 +121,8 @@ Global
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -121,6 +135,8 @@ Global
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|Any CPU.Build.0 = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|ARM.ActiveCfg = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|ARM.Build.0 = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|ARM64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|ARM64.Build.0 = Debug|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhone.Build.0 = Release|Any CPU
{96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -133,6 +149,8 @@ Global
{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|ARM64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|ARM64.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
@@ -145,6 +163,8 @@ Global
{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|ARM64.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|ARM64.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
@@ -157,6 +177,8 @@ Global
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -169,6 +191,8 @@ Global
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|ARM64.Build.0 = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|iPhone.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -181,6 +205,8 @@ Global
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|Any CPU.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|ARM.ActiveCfg = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|ARM.Build.0 = Debug|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|ARM64.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|iPhone.Build.0 = Debug|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -193,6 +219,8 @@ Global
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|Any CPU.Build.0 = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|ARM.ActiveCfg = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|ARM.Build.0 = Release|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|ARM64.Build.0 = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|iPhone.ActiveCfg = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|iPhone.Build.0 = Release|Any CPU
{385BFAAD-07E0-4DBF-844D-9EE12EFC0799}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -205,6 +233,8 @@ Global
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -217,6 +247,8 @@ Global
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|ARM64.Build.0 = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|iPhone.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -229,6 +261,8 @@ Global
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|ARM.Build.0 = Debug|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|ARM64.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|iPhone.Build.0 = Debug|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -241,6 +275,8 @@ Global
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|Any CPU.Build.0 = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|ARM.ActiveCfg = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|ARM.Build.0 = Release|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|ARM64.Build.0 = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|iPhone.ActiveCfg = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|iPhone.Build.0 = Release|Any CPU
{4741ABEC-33B0-424F-B5F1-464EC31AEEBD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -253,6 +289,8 @@ Global
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -265,6 +303,8 @@ Global
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|ARM64.Build.0 = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|iPhone.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -277,6 +317,8 @@ Global
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|ARM.ActiveCfg = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|ARM.Build.0 = Debug|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|ARM64.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|iPhone.Build.0 = Debug|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -289,6 +331,8 @@ Global
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|Any CPU.Build.0 = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|ARM.ActiveCfg = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|ARM.Build.0 = Release|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|ARM64.Build.0 = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|iPhone.ActiveCfg = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|iPhone.Build.0 = Release|Any CPU
{4DB2C1D1-630A-4445-95F3-4E342ABD9342}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -301,6 +345,8 @@ Global
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -313,6 +359,8 @@ Global
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|ARM64.Build.0 = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|iPhone.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -325,6 +373,8 @@ Global
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|ARM.ActiveCfg = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|ARM.Build.0 = Debug|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|ARM64.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|iPhone.Build.0 = Debug|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -337,6 +387,8 @@ Global
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|Any CPU.Build.0 = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|ARM.ActiveCfg = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|ARM.Build.0 = Release|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|ARM64.Build.0 = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|iPhone.ActiveCfg = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|iPhone.Build.0 = Release|Any CPU
{BCFC1329-903B-4440-ABE1-160C22A3AE23}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -349,6 +401,8 @@ Global
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -361,6 +415,8 @@ Global
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|ARM64.Build.0 = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|iPhone.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -373,6 +429,8 @@ Global
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|ARM.ActiveCfg = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|ARM.Build.0 = Debug|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|ARM64.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|iPhone.Build.0 = Debug|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -385,6 +443,8 @@ Global
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|Any CPU.Build.0 = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|ARM.ActiveCfg = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|ARM.Build.0 = Release|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|ARM64.Build.0 = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|iPhone.ActiveCfg = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|iPhone.Build.0 = Release|Any CPU
{03C99D2B-D6FC-4DBE-880C-5B1A4024DD67}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -399,6 +459,9 @@ Global
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|ARM.Deploy.0 = Debug|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|ARM64.Deploy.0 = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Ad-Hoc|iPhone.Deploy.0 = Debug|Any CPU
@@ -417,6 +480,9 @@ Global
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|ARM.Build.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|ARM.Deploy.0 = Debug|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|ARM64.Build.0 = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|ARM64.Deploy.0 = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|iPhone.Build.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.AppStore|iPhone.Deploy.0 = Debug|Any CPU
@@ -435,6 +501,9 @@ Global
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|ARM.ActiveCfg = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|ARM.Build.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|ARM.Deploy.0 = Debug|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|iPhone.Build.0 = Debug|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Debug|iPhone.Deploy.0 = Debug|Any CPU
@@ -453,6 +522,9 @@ Global
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|ARM.ActiveCfg = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|ARM.Build.0 = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|ARM.Deploy.0 = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|ARM64.Build.0 = Release|Any CPU
+ {71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|ARM64.Deploy.0 = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|iPhone.ActiveCfg = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|iPhone.Build.0 = Release|Any CPU
{71340F5E-2B3B-4F1D-B113-236BBB0D7632}.Release|iPhone.Deploy.0 = Release|Any CPU
@@ -469,6 +541,8 @@ Global
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -481,6 +555,8 @@ Global
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|ARM64.Build.0 = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|iPhone.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -493,6 +569,8 @@ Global
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|ARM.Build.0 = Debug|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|ARM64.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|iPhone.Build.0 = Debug|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -505,6 +583,8 @@ Global
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|Any CPU.Build.0 = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|ARM.ActiveCfg = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|ARM.Build.0 = Release|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|ARM64.Build.0 = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|iPhone.ActiveCfg = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|iPhone.Build.0 = Release|Any CPU
{F36E1451-6A16-4E83-B7B3-90024BF36B4C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
@@ -517,6 +597,8 @@ Global
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -529,6 +611,8 @@ Global
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|ARM64.ActiveCfg = Release|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|ARM64.Build.0 = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|iPhone.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -541,6 +625,8 @@ Global
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|ARM.Build.0 = Debug|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|ARM64.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|iPhone.Build.0 = Debug|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
@@ -553,6 +639,8 @@ Global
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|Any CPU.Build.0 = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|ARM.ActiveCfg = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|ARM.Build.0 = Release|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|ARM64.Build.0 = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|iPhone.ActiveCfg = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|iPhone.Build.0 = Release|Any CPU
{9E7E5953-A5B4-4867-9A06-046A754AFAC1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
diff --git a/source/dotnet/AdaptiveCardsNet6.sln b/source/dotnet/AdaptiveCardsNet6.sln
index d09b11cd76..fef66d1fe0 100644
--- a/source/dotnet/AdaptiveCardsNet6.sln
+++ b/source/dotnet/AdaptiveCardsNet6.sln
@@ -7,7 +7,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{C443
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}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards", "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
@@ -21,28 +21,34 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Sample.WPFVis
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Templating.Net6", "Library\AdaptiveCards.Templating.Net6\AdaptiveCards.Templating.Net6.csproj", "{615381C8-0ADC-4CBE-B827-2E71497B1970}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdaptiveCards.Template", "Library\AdaptiveCards.Templating.CSharp.WinRT\AdaptiveCards.Template.csproj", "{6442BCA3-1451-4145-A8BC-F50C7A1E1352}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
Ad-Hoc|ARM = Ad-Hoc|ARM
+ Ad-Hoc|arm64 = Ad-Hoc|arm64
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|arm64 = AppStore|arm64
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|arm64 = Debug|arm64
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|arm64 = Release|arm64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
@@ -53,6 +59,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Ad-Hoc|arm64.Build.0 = Release|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
@@ -65,6 +73,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.AppStore|arm64.Build.0 = Release|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
@@ -77,6 +87,8 @@ Global
{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|arm64.ActiveCfg = Debug|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Debug|arm64.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
@@ -89,6 +101,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {FC4A3527-05A2-4297-98D3-CB1CB512FFDA}.Release|arm64.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
@@ -101,6 +115,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Ad-Hoc|arm64.Build.0 = Release|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
@@ -113,6 +129,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.AppStore|arm64.Build.0 = Release|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
@@ -125,6 +143,8 @@ Global
{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|arm64.ActiveCfg = Debug|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Debug|arm64.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
@@ -137,6 +157,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {34F849F9-E349-4237-B7CB-A63884DAB39D}.Release|arm64.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
@@ -149,6 +171,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Ad-Hoc|arm64.Build.0 = Release|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
@@ -161,6 +185,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.AppStore|arm64.Build.0 = Release|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
@@ -173,6 +199,8 @@ Global
{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|arm64.ActiveCfg = Debug|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Debug|arm64.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
@@ -185,6 +213,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {925EA86A-0B9F-4277-B05C-A3586DA3CA4D}.Release|arm64.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
@@ -197,6 +227,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Ad-Hoc|arm64.Build.0 = Release|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
@@ -209,6 +241,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.AppStore|arm64.Build.0 = Release|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
@@ -221,6 +255,8 @@ Global
{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|arm64.ActiveCfg = Debug|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Debug|arm64.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
@@ -233,6 +269,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {96144C6C-2E37-4A84-95AB-7F01D9222F2F}.Release|arm64.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
@@ -245,6 +283,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Ad-Hoc|arm64.Build.0 = Release|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
@@ -257,6 +297,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.AppStore|arm64.Build.0 = Release|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
@@ -269,6 +311,8 @@ Global
{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|arm64.ActiveCfg = Debug|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Debug|arm64.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
@@ -281,6 +325,8 @@ Global
{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|arm64.ActiveCfg = Release|Any CPU
+ {615381C8-0ADC-4CBE-B827-2E71497B1970}.Release|arm64.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
@@ -289,6 +335,62 @@ Global
{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
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|arm64.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|arm64.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|arm64.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|arm64.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|x64.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.AppStore|x86.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|ARM.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|arm64.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|arm64.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|x64.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Debug|x86.Build.0 = Debug|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|ARM.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|ARM.Build.0 = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|arm64.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|arm64.Build.0 = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|iPhone.Build.0 = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|x64.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|x64.Build.0 = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|x86.ActiveCfg = Release|Any CPU
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -299,6 +401,7 @@ Global
{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}
+ {6442BCA3-1451-4145-A8BC-F50C7A1E1352} = {C7727147-4AD9-4005-A8D0-EEEED82347D3}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {252F0196-794B-4F99-967E-81962ADF58DD}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/AdaptiveCards.Template.csproj b/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/AdaptiveCards.Template.csproj
new file mode 100644
index 0000000000..6cd57416b6
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/AdaptiveCards.Template.csproj
@@ -0,0 +1,43 @@
+
+
+
+ net6.0-windows10.0.19041.0
+ Microsoft
+ Adaptive Card Template for WinRT
+ This library implements classes for building and serializing adaptive card objects
+ AdaptiveCards.Template
+ false
+ adaptivecardstemplatewinrt
+ 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.
+ enable
+ enable
+
+
+
+ true
+ True
+ ../../../../35MSSharedLib1024.snk
+ $(AssemblyOriginatorKeyFilePath)
+ True
+ AnyCPU
+
+
+
+
+ True
+ \
+
+
+
+
+
+
+
+
+
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/AdaptiveCardsTemplate.cs b/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/AdaptiveCardsTemplate.cs
new file mode 100644
index 0000000000..d11ca45ab8
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/AdaptiveCardsTemplate.cs
@@ -0,0 +1,34 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+// AdaptiveCards template windows runtime component library
+namespace AdaptiveCards.Template
+{
+ ///
+ /// AdaptiveCards template windows runtime component library
+ ///
+ public sealed class AdaptiveCardTemplate
+ {
+ ///
+ /// Given a JSON template, create a AdaptiveCardTemplate object that can be used to expand the template
+ ///
+ /// JSON serialized AdaptiveCard Template
+ public AdaptiveCardTemplate(String jsonTemplate)
+ {
+ adaptiveCardTemplate = new AdaptiveCards.Templating.AdaptiveCardTemplate(jsonTemplate);
+ }
+
+ ///
+ /// Expands the template with the given data
+ ///
+ /// JSON serialized data for AdaptiveCard template
+ ///
+ public string Expand(String rootData)
+ {
+ return adaptiveCardTemplate.Expand(rootData);
+ }
+
+ private AdaptiveCards.Templating.AdaptiveCardTemplate adaptiveCardTemplate;
+
+ }
+}
diff --git a/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/EULA-Windows.txt b/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/EULA-Windows.txt
new file mode 100644
index 0000000000..a224e46549
--- /dev/null
+++ b/source/dotnet/Library/AdaptiveCards.Templating.CSharp.WinRT/EULA-Windows.txt
@@ -0,0 +1,40 @@
+MICROSOFT SOFTWARE LICENSE TERMS
+MICROSOFT ADAPTIVECARDS
+________________________________________
+IF YOU LIVE IN (OR ARE A BUSINESS WITH A PRINCIPAL PLACE OF BUSINESS IN) THE UNITED STATES, PLEASE READ THE “BINDING ARBITRATION AND CLASS ACTION WAIVER” SECTION BELOW. IT AFFECTS HOW DISPUTES ARE RESOLVED.
+________________________________________
+These license terms are an agreement between you and Microsoft Corporation (or one of its affiliates). They apply to the software named above and any Microsoft services or software updates (except to the extent such services or updates are accompanied by new or additional terms, in which case those different terms apply prospectively and do not alter your or Microsoft’s rights relating to pre-updated software or services).
+
+IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS.
+
+1. INSTALLATION AND USE RIGHTS.
+a) General. Subject to the terms of this agreement, you may install and use any number of copies of the software to develop and test your applications, solely for use on Windows.
+b) Included Microsoft Applications. The software may include other Microsoft applications. These license terms apply to those included applications, if any, unless other license terms are provided with the other Microsoft applications.
+c) Microsoft Platforms. The software may include components from Microsoft Windows. These components are governed by separate agreements and their own product support policies, as described in the license terms found in the installation directory for that component or in the “Licenses” folder accompanying the software.
+d) Third Party Components. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software.
+2. DATA.
+a) Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation. There are also some features in the software that may enable you to collect data from users of your applications. If you use these features to enable data collection in your applications, you must comply with applicable law, including providing appropriate notices to users of your applications. You can learn more about data collection and use in the help documentation and the privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices.
+b) Processing of Personal Data. To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at https://docs.microsoft.com/en-us/legal/gdpr.
+3. SCOPE OF LICENSE. The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to):
+a) work around any technical limitations in the software that only allow you to use it in certain ways;
+b) reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and to the extent required by third party licensing terms governing use of certain open source components that may be included in the software;
+c) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;
+d) use the software in any way that is against the law or to create or propagate malware; or
+e) share, publish, distribute, or lease the software, provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party.
+4. EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting.
+5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind.
+6. UPDATES. The software may periodically check for updates, and download and install them for you. You may obtain updates only from Microsoft or authorized sources. Microsoft may need to update your system to provide you with updates. You agree to receive these automatic updates without any additional notice. Updates may not include or support all existing software features, services, or peripheral devices.
+7. BINDING ARBITRATION AND CLASS ACTION WAIVER. This Section applies if you live in (or, if a business, your principal place of business is in) the United States. If you and Microsoft have a dispute, you and Microsoft agree to try for 60 days to resolve it informally. If you and Microsoft can’t, you and Microsoft agree to binding individual arbitration before the American Arbitration Association under the Federal Arbitration Act (“FAA”), and not to sue in court in front of a judge or jury. Instead, a neutral arbitrator will decide. Class action lawsuits, class-wide arbitrations, private attorney-general actions, and any other proceeding where someone acts in a representative capacity are not allowed; nor is combining individual proceedings without the consent of all parties. The complete Arbitration Agreement contains more terms and is at https://aka.ms/arb-agreement-4. You and Microsoft agree to these terms.
+8. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software.
+9. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles, except that the FAA governs everything related to arbitration. If you acquired the software in any other country, its laws apply, except that the FAA governs everything related to arbitration. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court (excluding arbitration). If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court (excluding arbitration).
+10. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you:
+a) Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights.
+b) Canada. If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software.
+c) Germany and Austria.
+i. Warranty. The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software.
+ii. Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law.
+Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence.
+11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+12. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES.
+This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law.
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages.
diff --git a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj
index e1a2cc3f4f..0c47c7896b 100644
--- a/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj
+++ b/source/dotnet/Library/AdaptiveCards.Templating/AdaptiveCards.Templating.csproj
@@ -54,10 +54,6 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
diff --git a/source/dotnet/Library/AdaptiveCards/AdaptiveTableCell.cs b/source/dotnet/Library/AdaptiveCards/AdaptiveTableCell.cs
index b1b58608a4..c817157f7b 100644
--- a/source/dotnet/Library/AdaptiveCards/AdaptiveTableCell.cs
+++ b/source/dotnet/Library/AdaptiveCards/AdaptiveTableCell.cs
@@ -16,5 +16,11 @@ public class AdaptiveTableCell : AdaptiveContainer
{
///
public new const string TypeName = "TableCell";
+
+ ///
+#if !NETSTANDARD1_3
+ [XmlIgnore]
+#endif
+ public override string Type { get; set; } = TypeName;
}
}
diff --git a/source/dotnet/Library/CppConsoleApp/CppConsoleApp.vcxproj b/source/dotnet/Library/CppConsoleApp/CppConsoleApp.vcxproj
new file mode 100644
index 0000000000..3a56602625
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/CppConsoleApp.vcxproj
@@ -0,0 +1,149 @@
+
+
+
+
+ true
+ true
+ true
+ true
+ 15.0
+ {ed459eec-7211-403e-8c08-78a43a05a7be}
+ Win32Proj
+ CppConsoleApp
+ 10.0.22621.0
+ 10.0.17134.0
+ TemplateCppConsoleTestApp
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ Debug
+ arm64
+
+
+ Release
+ arm64
+
+
+
+ Application
+ v143
+ v142
+ v141
+ v140
+ Unicode
+
+
+ true
+ false
+
+
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Use
+ pch.h
+ $(IntDir)pch.pch
+ _CONSOLE;WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ Level4
+ true
+ Guard
+ %(AdditionalOptions) /permissive- /bigobj
+
+
+
+
+ Disabled
+ _DEBUG;%(PreprocessorDefinitions)
+ ProgramDatabase
+
+
+ Console
+ false
+ /profile /DEBUGTYPE:FIXUP %(AdditionalOptions)
+ $(VC_LibraryPath_VC_OneCore_CurrentPlatform_spectre);%(AdditionalLibraryDirectories)
+
+
+
+
+ WIN32;%(PreprocessorDefinitions)
+ ProgramDatabase
+
+
+
+
+ MaxSpeed
+ true
+ true
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+ Create
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/CppConsoleApp/CppConsoleApp.vcxproj.filters b/source/dotnet/Library/CppConsoleApp/CppConsoleApp.vcxproj.filters
new file mode 100644
index 0000000000..d7a0e362c4
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/CppConsoleApp.vcxproj.filters
@@ -0,0 +1,37 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/CppConsoleApp/PropertySheet.props b/source/dotnet/Library/CppConsoleApp/PropertySheet.props
new file mode 100644
index 0000000000..b0c622690f
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/PropertySheet.props
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/CppConsoleApp/TemplateCppConsoleTestApp.exe.manifest b/source/dotnet/Library/CppConsoleApp/TemplateCppConsoleTestApp.exe.manifest
new file mode 100644
index 0000000000..0bc75b9f19
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/TemplateCppConsoleTestApp.exe.manifest
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/CppConsoleApp/main.cpp b/source/dotnet/Library/CppConsoleApp/main.cpp
new file mode 100644
index 0000000000..b645936893
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/main.cpp
@@ -0,0 +1,25 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+#include "pch.h"
+
+using namespace winrt;
+using namespace Windows::Foundation;
+
+// Sample Test App for AdaptiveCards.Template project which is a C#/WinRT component
+int main()
+{
+ init_apartment();
+
+ hstring input{
+ L"{\"type\": \"AdaptiveCard\",\"body\": [{\"type\": \"TextBlock\",\"text\": \"Hello, ${hi}!\"}]}"};
+
+ AdaptiveCards::Template::AdaptiveCardTemplate adaptiveCardTemplate{ input };
+
+ hstring data{ L"{\"hi\": \"world\"}" };
+ auto result = adaptiveCardTemplate.Expand(data);
+
+ std::cout << "Expanded: " << to_string(result) << std::endl;
+
+ return 0;
+};
diff --git a/source/dotnet/Library/CppConsoleApp/packages.config b/source/dotnet/Library/CppConsoleApp/packages.config
new file mode 100644
index 0000000000..45dabe972c
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/source/dotnet/Library/CppConsoleApp/pch.cpp b/source/dotnet/Library/CppConsoleApp/pch.cpp
new file mode 100644
index 0000000000..0fc36776c8
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/pch.cpp
@@ -0,0 +1,3 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+#include "pch.h"
diff --git a/source/dotnet/Library/CppConsoleApp/pch.h b/source/dotnet/Library/CppConsoleApp/pch.h
new file mode 100644
index 0000000000..48902e1646
--- /dev/null
+++ b/source/dotnet/Library/CppConsoleApp/pch.h
@@ -0,0 +1,9 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+#pragma once
+
+#include
+
+#include
+#include
+#include
diff --git a/source/nodejs/ac-typed-schema/src/markdown/languages/de.json b/source/nodejs/ac-typed-schema/src/markdown/languages/de.json
index 7c3ee5b232..b37b93b955 100644
--- a/source/nodejs/ac-typed-schema/src/markdown/languages/de.json
+++ b/source/nodejs/ac-typed-schema/src/markdown/languages/de.json
@@ -257,5 +257,11 @@
"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.": "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.",
"[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.": "[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.",
"[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.": "[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.",
- "[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.": "[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."
+ "[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.": "[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.",
+ "This is the default style which provides no special styling or behavior.": "This is the default style which provides no special styling or behavior.",
+ "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity.": "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity.",
+ "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio.": "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio.",
+ "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos).": "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos).",
+ "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space.": "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space.",
+ "Controls how the images in the `ImageSet` are displayed.": "Controls how the images in the `ImageSet` are displayed."
}
\ No newline at end of file
diff --git a/source/nodejs/ac-typed-schema/src/markdown/languages/en.json b/source/nodejs/ac-typed-schema/src/markdown/languages/en.json
index 7c3ee5b232..b37b93b955 100644
--- a/source/nodejs/ac-typed-schema/src/markdown/languages/en.json
+++ b/source/nodejs/ac-typed-schema/src/markdown/languages/en.json
@@ -257,5 +257,11 @@
"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.": "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.",
"[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.": "[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.",
"[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.": "[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.",
- "[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.": "[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."
+ "[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.": "[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.",
+ "This is the default style which provides no special styling or behavior.": "This is the default style which provides no special styling or behavior.",
+ "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity.": "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity.",
+ "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio.": "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio.",
+ "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos).": "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos).",
+ "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space.": "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space.",
+ "Controls how the images in the `ImageSet` are displayed.": "Controls how the images in the `ImageSet` are displayed."
}
\ No newline at end of file
diff --git a/source/nodejs/ac-typed-schema/src/markdown/languages/sp.json b/source/nodejs/ac-typed-schema/src/markdown/languages/sp.json
index 7c3ee5b232..b37b93b955 100644
--- a/source/nodejs/ac-typed-schema/src/markdown/languages/sp.json
+++ b/source/nodejs/ac-typed-schema/src/markdown/languages/sp.json
@@ -257,5 +257,11 @@
"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.": "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.",
"[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.": "[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.",
"[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.": "[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.",
- "[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.": "[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."
+ "[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.": "[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.",
+ "This is the default style which provides no special styling or behavior.": "This is the default style which provides no special styling or behavior.",
+ "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity.": "The `TextBlock` is a heading. This will apply the heading styling defaults and mark the `TextBlock` as a heading for accessiblity.",
+ "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio.": "This is the default style for `ImageSet`. Images are displayed in their original aspect ratio.",
+ "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos).": "Display images in this `ImageSet` stack on top of each other (similar to a stack of photos).",
+ "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space.": "Display images in a grid. They are all shown at the same size. Images are clipped as needed to fit in the available space.",
+ "Controls how the images in the `ImageSet` are displayed.": "Controls how the images in the `ImageSet` are displayed."
}
\ No newline at end of file
diff --git a/source/nodejs/adaptivecards-aaf-testapp/webpack.config.js b/source/nodejs/adaptivecards-aaf-testapp/webpack.config.js
index 523c8b66fc..e3d33d44e4 100644
--- a/source/nodejs/adaptivecards-aaf-testapp/webpack.config.js
+++ b/source/nodejs/adaptivecards-aaf-testapp/webpack.config.js
@@ -3,47 +3,48 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = (env, argv) => {
- const mode = argv.mode || 'development';
- const devMode = mode === "development";
+ const mode = argv.mode || 'development';
+ const devMode = mode === "development";
- console.info('running webpack with mode:', mode);
+ console.info('running webpack with mode:', mode);
- return {
- mode: mode,
- entry: {
- "adaptivecards-aaf-testapp": "./src/app.ts",
- },
- output: {
- path: path.resolve(__dirname, "dist"),
- filename: devMode ? "[name].js" : "[name].min.js",
- },
- resolve: {
- extensions: [".ts", ".tsx", ".js"]
- },
- module: {
- rules: [{
- test: /\.ts$/,
- loader: "ts-loader",
- exclude: /(node_modules|__tests__)/
- },
- {
- test: /\.css$/,
- use: [
- 'style-loader',
- MiniCssExtractPlugin.loader,
- 'css-loader'
- ]
- }
- ]
- },
- plugins: [
+ return {
+ mode: mode,
+ entry: {
+ "adaptivecards-aaf-testapp": "./src/app.ts",
+ },
+ output: {
+ path: path.resolve(__dirname, "dist"),
+ hashFunction: "xxhash64",
+ filename: devMode ? "[name].js" : "[name].min.js",
+ },
+ resolve: {
+ extensions: [".ts", ".tsx", ".js"]
+ },
+ module: {
+ rules: [{
+ test: /\.ts$/,
+ loader: "ts-loader",
+ exclude: /(node_modules|__tests__)/
+ },
+ {
+ test: /\.css$/,
+ use: [
+ 'style-loader',
+ MiniCssExtractPlugin.loader,
+ 'css-loader'
+ ]
+ }
+ ]
+ },
+ plugins: [
new HtmlWebpackPlugin({
- title: "AAF JavaScript Runtime test application",
- template: "./index.html"
- }),
+ title: "AAF JavaScript Runtime test application",
+ template: "./index.html"
+ }),
new MiniCssExtractPlugin({
- filename: '[name].css'
- })
- ]
- }
+ filename: '[name].css'
+ })
+ ]
+ }
}
diff --git a/source/nodejs/adaptivecards-controls/src/adaptivecards-controls.css b/source/nodejs/adaptivecards-controls/src/adaptivecards-controls.css
index a638c0e742..45e7ca448d 100644
--- a/source/nodejs/adaptivecards-controls/src/adaptivecards-controls.css
+++ b/source/nodejs/adaptivecards-controls/src/adaptivecards-controls.css
@@ -134,12 +134,12 @@
}
.ms-ctrl-dropdown:hover {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
@media (forced-colors: none) {
.ms-ctrl-dropdown:focus {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
outline: 0;
}
}
@@ -166,7 +166,7 @@
}
.ms-ctrl-dropdown-button:hover {
- color: #0078D7;
+ color: #0072CC;
}
.ms-ctrl-dropdown-item {
@@ -250,7 +250,7 @@
.ms-ctrl-calendarDay.selected {
color: white;
- background-color: #0078D7;
+ background-color: #0072CC;
}
.ms-calendarPopup {
@@ -268,11 +268,11 @@
}
.ms-ctrl-datePicker:hover {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
.ms-ctrl-datePicker:focus {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
outline: 0;
}
@@ -321,8 +321,8 @@
.ms-ctrl-checkbox input[type=checkbox]:checked+label::before {
content: "";
- border: 1px solid #0078D7;
- background-color: #0078D7;
+ border: 1px solid #0072CC;
+ background-color: #0072CC;
}
.ms-ctrl-checkbox input[type=checkbox]:checked+label::after {
@@ -387,7 +387,7 @@
}
.ms-ctrl-radiobutton input[type=radio]:checked+label::before {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
.ms-ctrl-radiobutton input[type=radio]+label::after {
@@ -406,7 +406,7 @@
left: 4px;
width: 8px;
height: 8px;
- background-color: #0078D7;
+ background-color: #0072CC;
border-radius: 50%;
transition-property: top, left, right, width, height;
transition-duration: 150ms;
@@ -446,9 +446,9 @@
}
.ms-ctrl-textbox:hover {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
.ms-ctrl-textbox:focus, .ms-ctrl-textbox:active {
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
diff --git a/source/nodejs/adaptivecards-controls/src/popupmenu.ts b/source/nodejs/adaptivecards-controls/src/popupmenu.ts
index 4eef2b54eb..80dcbad68d 100644
--- a/source/nodejs/adaptivecards-controls/src/popupmenu.ts
+++ b/source/nodejs/adaptivecards-controls/src/popupmenu.ts
@@ -14,6 +14,12 @@ export class PopupMenu extends PopupControl {
super();
}
+ focus() {
+ if (this._renderedItems.length >= 1) {
+ this._renderedItems[0].focus();
+ }
+ }
+
protected renderContent(): HTMLElement {
var element = document.createElement("div");
element.className = "ms-ctrl ms-popup";
diff --git a/source/nodejs/adaptivecards-controls/webpack.config.js b/source/nodejs/adaptivecards-controls/webpack.config.js
index 8b1b3a5b28..3b18f8bbae 100644
--- a/source/nodejs/adaptivecards-controls/webpack.config.js
+++ b/source/nodejs/adaptivecards-controls/webpack.config.js
@@ -3,63 +3,64 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
module.exports = (env, argv) => {
- const mode = argv.mode || 'development';
- const devMode = mode === "development";
+ const mode = argv.mode || 'development';
+ const devMode = mode === "development";
- console.info('running webpack with mode:', mode);
+ console.info('running webpack with mode:', mode);
- return {
- mode: mode,
- entry: {
- "adaptivecards-controls": "./src/adaptivecards-controls.ts",
- },
- output: {
- path: path.resolve(__dirname, "./dist"),
- filename: devMode ? "[name].js" : "[name].min.js",
- libraryTarget: "umd",
- library: "ACControls",
- umdNamedDefine: true,
- publicPath: "/dist/",
- globalObject: "this"
- },
- devtool: devMode ? "inline-source-map" : "source-map",
- resolve: {
- extensions: [".ts", ".tsx", ".js"]
- },
- module: {
- rules: [
- {
- test: /\.ts$/,
- loader: "ts-loader",
- exclude: /(node_modules|__tests__)/
- },
- {
- test: /\.css$/,
- use: [
- 'style-loader',
- MiniCssExtractPlugin.loader,
- 'css-loader'
- ]
- }
- ]
- },
- plugins: [
- new MiniCssExtractPlugin({
- filename: 'adaptivecards-controls.css',
- }),
- new CopyWebpackPlugin({
- patterns: [{
- from: 'src/adaptivecards-controls.css',
- to: '../lib/[name][ext]'
- },
- {
- from: 'src/adaptivecards-controls.css',
- to: '../dist/[name][ext]'
- }],
- options: {
- concurrency: 8
- }
- })
- ]
- };
+ return {
+ mode: mode,
+ entry: {
+ "adaptivecards-controls": "./src/adaptivecards-controls.ts",
+ },
+ output: {
+ path: path.resolve(__dirname, "./dist"),
+ filename: devMode ? "[name].js" : "[name].min.js",
+ hashFunction: "xxhash64",
+ libraryTarget: "umd",
+ library: "ACControls",
+ umdNamedDefine: true,
+ publicPath: "/dist/",
+ globalObject: "this"
+ },
+ devtool: devMode ? "inline-source-map" : "source-map",
+ resolve: {
+ extensions: [".ts", ".tsx", ".js"]
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ loader: "ts-loader",
+ exclude: /(node_modules|__tests__)/
+ },
+ {
+ test: /\.css$/,
+ use: [
+ 'style-loader',
+ MiniCssExtractPlugin.loader,
+ 'css-loader'
+ ]
+ }
+ ]
+ },
+ plugins: [
+ new MiniCssExtractPlugin({
+ filename: 'adaptivecards-controls.css',
+ }),
+ new CopyWebpackPlugin({
+ patterns: [{
+ from: 'src/adaptivecards-controls.css',
+ to: '../lib/[name][ext]'
+ },
+ {
+ from: 'src/adaptivecards-controls.css',
+ to: '../dist/[name][ext]'
+ }],
+ options: {
+ concurrency: 8
+ }
+ })
+ ]
+ };
};
diff --git a/source/nodejs/adaptivecards-designer-app/webpack.config.js b/source/nodejs/adaptivecards-designer-app/webpack.config.js
index 413b6d8890..11bca67c36 100644
--- a/source/nodejs/adaptivecards-designer-app/webpack.config.js
+++ b/source/nodejs/adaptivecards-designer-app/webpack.config.js
@@ -5,72 +5,73 @@ const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = (env, argv) => {
- const mode = argv.mode || 'development';
- const devMode = mode === "development";
+ const mode = argv.mode || 'development';
+ const devMode = mode === "development";
- console.info('running webpack with mode:', mode);
+ console.info('running webpack with mode:', mode);
- return {
- mode: mode,
- entry: {
- "adaptivecards-designer-app": "./src/app.ts",
- },
- output: {
- path: path.resolve(__dirname, "dist"),
- filename: devMode ? "[name].js" : "[name].min.js",
- },
- resolve: {
- extensions: [".ts", ".tsx", ".js"]
- },
- module: {
- rules: [
- {
- test: /\.ts$/,
- loader: "ts-loader",
- exclude: /(node_modules|__tests__)/
- },
- {
- test: /\.ttf$/,
- loader: "file-loader"
- },
- {
- test: /\.css$/,
- use: [
- devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
- 'css-loader'
- ]
- },
- {
- test: /\.svg$/,
- type: 'asset/resource'
- }
- ]
- },
- plugins: [
- new CopyWebpackPlugin({
- patterns: [
- {
- from: 'node_modules/adaptivecards-designer/src/containers/**/*',
- to: 'containers/[name][ext]'
- },
- {
- // the designer expects to find its CSS here. an alternative for a consumer would
- // be to make sure they load it themselves.
- from: 'node_modules/adaptivecards-designer/dist/adaptivecards-designer.css',
- to: 'adaptivecards-designer.css'
- }
- ]
- }),
- new HtmlWebpackPlugin({
- title: "Adaptive Cards Designer",
- template: "./index.html"
- }),
- new MiniCssExtractPlugin({
- filename: '[name].css'
- }),
- new MonacoWebpackPlugin({
- languages: ['json']
- })
- ]
- }
+ return {
+ mode: mode,
+ entry: {
+ "adaptivecards-designer-app": "./src/app.ts",
+ },
+ output: {
+ path: path.resolve(__dirname, "dist"),
+ hashFunction: "xxhash64",
+ filename: devMode ? "[name].js" : "[name].min.js",
+ },
+ resolve: {
+ extensions: [".ts", ".tsx", ".js"]
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ loader: "ts-loader",
+ exclude: /(node_modules|__tests__)/
+ },
+ {
+ test: /\.ttf$/,
+ loader: "file-loader"
+ },
+ {
+ test: /\.css$/,
+ use: [
+ devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
+ 'css-loader'
+ ]
+ },
+ {
+ test: /\.svg$/,
+ type: 'asset/resource'
+ }
+ ]
+ },
+ plugins: [
+ new CopyWebpackPlugin({
+ patterns: [
+ {
+ from: 'node_modules/adaptivecards-designer/src/containers/**/*',
+ to: 'containers/[name][ext]'
+ },
+ {
+ // the designer expects to find its CSS here. an alternative for a consumer would
+ // be to make sure they load it themselves.
+ from: 'node_modules/adaptivecards-designer/dist/adaptivecards-designer.css',
+ to: 'adaptivecards-designer.css'
+ }
+ ]
+ }),
+ new HtmlWebpackPlugin({
+ title: "Adaptive Cards Designer",
+ template: "./index.html"
+ }),
+ new MiniCssExtractPlugin({
+ filename: '[name].css'
+ }),
+ new MonacoWebpackPlugin({
+ languages: ['json']
+ })
+ ]
+ }
}
diff --git a/source/nodejs/adaptivecards-designer/src/adaptivecards-designer.css b/source/nodejs/adaptivecards-designer/src/adaptivecards-designer.css
index c37a1e0c13..8628b38197 100644
--- a/source/nodejs/adaptivecards-designer/src/adaptivecards-designer.css
+++ b/source/nodejs/adaptivecards-designer/src/adaptivecards-designer.css
@@ -78,6 +78,7 @@
overflow-y: auto;
overflow-x: hidden;
padding-top: 6px;
+ padding-bottom: 6px;
background-color: white;
}
@@ -444,6 +445,7 @@
.acd-icon-chevronDown::before {
content: "\E70D";
+ line-height: 16px;
}
.acd-icon-chevronUp::before {
@@ -452,6 +454,7 @@
.acd-icon-chevronRight::before {
content: "\E76C";
+ line-height: 16px;
}
.acd-icon-chevronLeft::before {
@@ -773,7 +776,6 @@
pointer-events: all !important;
height: 20px;
border-radius: 0;
- outline: none;
}
.acd-peerButton.fixedWidth {
@@ -850,6 +852,14 @@
cursor: pointer;
}
+.acd-treeView li:focus-visible {
+ outline: none;
+}
+
+.acd-treeView li:focus-visible > .acd-tree-item {
+ outline: 1px solid #2D7BB7;
+}
+
.acd-tree-item.selected {
background-color: #BCE2FF;
}
@@ -1120,16 +1130,16 @@ a.default-ac-anchor:visited:active {
}
.default-ac-pushButton.subdued:hover {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
@media (forced-colors: none) {
.default-ac-pushButton.expanded {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
}
diff --git a/source/nodejs/adaptivecards-designer/src/base-tree-item.ts b/source/nodejs/adaptivecards-designer/src/base-tree-item.ts
index 54b5592007..5bb1abf295 100644
--- a/source/nodejs/adaptivecards-designer/src/base-tree-item.ts
+++ b/source/nodejs/adaptivecards-designer/src/base-tree-item.ts
@@ -77,10 +77,61 @@ export abstract class BaseTreeItem extends DraggableElement {
}
}
+ protected itemInvoked() {
+ if (this.onItemInvoked) {
+ this.onItemInvoked(this);
+ }
+ }
+
private getExpandCollapseAriaText() : string {
return (this._isExpanded ? "collapse" : "expand") + " " + this.getLabelText() + " element";
}
+ // collapse node or navigate to parent, if present
+ private handleKeyboardLeftNav(): void {
+ if (this._isExpanded && this.getChildCount() > 0) {
+ // if we're an expanded node that has children, collapse the node.
+ this._isExpanded = false;
+ this.updateLayout();
+ this._rootElement.tabIndex = 0;
+ this._rootElement.focus();
+ }
+ else {
+ // otherwise, we need to find the nearest ancestor treeitem or the root of the tree
+ const nearestTreeItem = this._rootElement.parentElement.closest("[role='treeitem'], [role='tree']");
+ const roleAttr = nearestTreeItem?.getAttribute("role");
+ if (roleAttr === "treeitem") {
+ nearestTreeItem.tabIndex = 0;
+ nearestTreeItem.focus();
+ this._rootElement.tabIndex = -1;
+ }
+ else if (roleAttr == "tree")
+ {
+ // only element higher up is the root DOM element of the tree, meaning `this`
+ // represents the root node of the tree. set tabIndex so keyboard users can
+ // tab back in.
+ this._rootElement.tabIndex = 0;
+ this._rootElement.focus();
+ }
+ }
+ }
+
+ // expand child nodes or navigate to first child, if present
+ private handleKeyboardRightNav(): void {
+ if (this.getChildCount() > 0) {
+ if (this._isExpanded) {
+ const childToFocus = this._childContainerElement.firstElementChild;
+ childToFocus.tabIndex = 0;
+ childToFocus.focus();
+ this._rootElement.tabIndex = -1;
+ }
+ else {
+ this._isExpanded = true;
+ this.updateLayout();
+ }
+ }
+ }
+
protected internalRender(): HTMLElement {
const hasChildren = (this.getChildCount() > 0);
@@ -92,7 +143,7 @@ export abstract class BaseTreeItem extends DraggableElement {
this._rootElement.setAttribute("aria-labelledby", labelId);
this._rootElement.setAttribute("aria-level", this._level.toString());
this._rootElement.setAttribute("aria-current", this._isSelected.toString());
- this._rootElement.tabIndex = 0;
+ this._rootElement.tabIndex = -1;
if (hasChildren) {
this._rootElement.setAttribute("aria-expanded", this._isExpanded.toString());
@@ -100,35 +151,49 @@ export abstract class BaseTreeItem extends DraggableElement {
this._rootElement.setAttribute("role", "treeitem");
this._rootElement.onclick = () => { this.click; };
+ this._rootElement.onfocus = () => { this.setIsSelected(true, false); };
this._rootElement.onkeydown = (e: KeyboardEvent) => {
- if (e.key === Constants.keys.enter || e.key === Constants.keys.space) {
- this.setIsSelected(!this.isSelected, !this.isSelected);
- this._rootElement.focus();
+ let handled = true;
+ switch (e.key) {
+ case Constants.keys.enter: {
+ this.itemInvoked();
+ break;
+ }
+
+ case Constants.keys.left: {
+ this.handleKeyboardLeftNav();
+ break;
+ }
+
+ case Constants.keys.right: {
+ this.handleKeyboardRightNav();
+ break;
+ }
+
+ default: {
+ handled = false;
+ }
+ }
+
+ if (handled) {
e.preventDefault();
e.cancelBubble = true;
}
- }
+ };
this._treeItemElement = document.createElement("div");
this._treeItemElement.classList.add("acd-tree-item");
this._treeItemElement.style.display = "flex";
this._treeItemElement.style.alignItems = "center";
this._treeItemElement.style.paddingLeft = this.getIndentationLevelIncrement() * (1 + this.level) + "px";
+ this._treeItemElement.classList.toggle("selected", this._isSelected);
- if (this._isSelected) {
- this._treeItemElement.classList.add("selected");
- }
-
- if (hasChildren) {
- this._treeItemElement.setAttribute("role", "treeitem");
- }
this._treeItemElement.setAttribute("aria-labelledby", labelId);
this._expandCollapseElement = document.createElement("div");
this._expandCollapseElement.classList.add("acd-tree-item-expandCollapseButton");
this._expandCollapseElement.style.flex = "0 0 auto";
this._expandCollapseElement.style.visibility = hasChildren ? "visible" : "hidden";
- this._expandCollapseElement.tabIndex = 0;
this._expandCollapseElement.setAttribute("role", "button");
this._expandCollapseElement.setAttribute("aria-label", this.getExpandCollapseAriaText());
@@ -141,18 +206,6 @@ export abstract class BaseTreeItem extends DraggableElement {
e.preventDefault();
}
- this._expandCollapseElement.onkeydown = (e: KeyboardEvent) => {
- if (e.key === Constants.keys.enter || e.key === Constants.keys.space) {
- this._isExpanded = !this._isExpanded;
-
- this.updateLayout();
- this._expandCollapseElement.focus();
-
- e.preventDefault();
- e.cancelBubble = true;
- }
- }
-
this._treeItemElement.appendChild(this._expandCollapseElement);
let textElement = document.createElement("div");
@@ -163,6 +216,7 @@ export abstract class BaseTreeItem extends DraggableElement {
textElement.style.whiteSpace = "nowrap";
textElement.style.textOverflow = "ellipsis";
textElement.style.overflow = "hidden";
+ textElement.style.marginRight = "8px";
if (this.getIconClass()) {
let iconElement = document.createElement("div");
@@ -219,6 +273,8 @@ export abstract class BaseTreeItem extends DraggableElement {
onSelectedChange: (sender: BaseTreeItem) => void;
+ onItemInvoked: (sender: BaseTreeItem) => void;
+
constructor(isExpanded: boolean = true) {
super();
@@ -232,17 +288,9 @@ export abstract class BaseTreeItem extends DraggableElement {
if (this.getChildCount() > 0) {
this._rootElement.setAttribute("aria-expanded", this._isExpanded.toString());
this._expandCollapseElement.setAttribute("aria-label", this.getExpandCollapseAriaText());
-
- if (this._isExpanded) {
- this._childContainerElement?.classList.remove("acd-hidden");
- this._expandCollapseElement.classList.remove(BaseTreeItem.collapsedIconClass);
- this._expandCollapseElement.classList.add(BaseTreeItem.expandedIconClass);
- }
- else {
- this._childContainerElement?.classList.add("acd-hidden");
- this._expandCollapseElement.classList.add(BaseTreeItem.collapsedIconClass);
- this._expandCollapseElement.classList.remove(BaseTreeItem.expandedIconClass);
- }
+ this._expandCollapseElement.classList.toggle(BaseTreeItem.expandedIconClass, this._isExpanded);
+ this._expandCollapseElement.classList.toggle(BaseTreeItem.collapsedIconClass, !this._isExpanded);
+ this._childContainerElement?.classList.toggle("acd-hidden", !this._isExpanded);
}
}
diff --git a/source/nodejs/adaptivecards-designer/src/card-designer-surface.ts b/source/nodejs/adaptivecards-designer/src/card-designer-surface.ts
index 4898490f0e..fe801cef8f 100644
--- a/source/nodejs/adaptivecards-designer/src/card-designer-surface.ts
+++ b/source/nodejs/adaptivecards-designer/src/card-designer-surface.ts
@@ -166,9 +166,12 @@ class DragHandle extends DraggableElement {
let element = document.createElement("div");
element.classList.add("acd-peerButton", "acd-peerButton-icon", "fixedWidth", "circular", "acd-icon-drag");
element.title = "Drag to move this element";
+ element.setAttribute("aria-label", "Drag to move this element");
+ element.setAttribute("role", "button");
element.style.visibility = "hidden";
element.style.position = "absolute";
element.style.zIndex = "500";
+ element.tabIndex = 0;
return element;
}
@@ -227,6 +230,24 @@ export class CardDesignerSurface {
this._dragHandle.renderedElement.style.visibility = this._selectedPeer.isDraggable() ? "visible" : "hidden";
this._removeCommandElement.style.visibility = this._selectedPeer.canBeRemoved() ? "visible" : "hidden";
this._peerCommandsHostElement.style.visibility = this._peerCommandsHostElement.childElementCount > 0 ? "visible" : "hidden";
+
+ // Remove from tree
+ if (this._designerSurface.contains(this._dragHandle.renderedElement)) {
+ this._designerSurface.removeChild(this._dragHandle.renderedElement);
+ }
+
+ if (this._designerSurface.contains(this._removeCommandElement)) {
+ this._designerSurface.removeChild(this._removeCommandElement);
+ }
+
+ if (this._designerSurface.contains(this._peerCommandsHostElement)) {
+ this._designerSurface.removeChild(this._peerCommandsHostElement);
+ }
+
+ // Insert to the correct location
+ this._selectedPeer.renderedElement.after(this._dragHandle.renderedElement);
+ this._dragHandle.renderedElement.after(this._removeCommandElement);
+ this._removeCommandElement.after(this._peerCommandsHostElement);
}
else {
this._dragHandle.renderedElement.style.visibility = "hidden";
@@ -791,12 +812,20 @@ export class CardDesignerSurface {
this._removeCommandElement = document.createElement("div");
this._removeCommandElement.classList.add("acd-peerButton", "acd-peerButton-icon", "fixedWidth", "circular", "acd-icon-remove");
this._removeCommandElement.title = "Remove";
+ this._removeCommandElement.setAttribute("aria-label", "Remove");
+ this._removeCommandElement.setAttribute("role", "button");
this._removeCommandElement.style.visibility = "hidden";
this._removeCommandElement.style.position = "absolute";
this._removeCommandElement.style.zIndex = "500";
+ this._removeCommandElement.tabIndex = 0;
this._removeCommandElement.onclick = (e) => {
this.removeSelected();
}
+ this._removeCommandElement.onkeyup = (e: KeyboardEvent) => {
+ if (e.key === Constants.keys.enter) {
+ this.removeSelected();
+ }
+ };
this._dragHandle = new DragHandle();
this._dragHandle.onStartDrag = (sender) => {
@@ -813,10 +842,6 @@ export class CardDesignerSurface {
this._peerCommandsHostElement.style.zIndex = "500";
this._peerCommandsHostElement.style.pointerEvents = "none";
- this._designerSurface.appendChild(this._dragHandle.renderedElement);
- this._designerSurface.appendChild(this._removeCommandElement);
- this._designerSurface.appendChild(this._peerCommandsHostElement);
-
this.updateLayout();
// If we have a persistent selected peer, select the peer
diff --git a/source/nodejs/adaptivecards-designer/src/card-designer.ts b/source/nodejs/adaptivecards-designer/src/card-designer.ts
index 9f656f8892..f55fc29100 100644
--- a/source/nodejs/adaptivecards-designer/src/card-designer.ts
+++ b/source/nodejs/adaptivecards-designer/src/card-designer.ts
@@ -108,6 +108,18 @@ export class CardDesigner extends Designer.DesignContext {
}
else {
let treeView = new TreeView(this.designerSurface.rootPeer.treeItem);
+ treeView.onItemInvoked = () => {
+ const propertySheetHosts = document.getElementsByClassName("acd-propertySheet-host");
+ if (propertySheetHosts.length === 1) {
+ const propertySheetHost = propertySheetHosts[0];
+
+ // get focusable children
+ const focusableElements = propertySheetHost.querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex="0"]');
+ if (focusableElements.length > 0) {
+ (focusableElements[0]).focus();
+ }
+ }
+ };
this._treeViewToolbox.content.appendChild(treeView.render());
}
diff --git a/source/nodejs/adaptivecards-designer/src/containers/bf-image/bf-image-container.css b/source/nodejs/adaptivecards-designer/src/containers/bf-image/bf-image-container.css
index 712183268b..97ea95e044 100644
--- a/source/nodejs/adaptivecards-designer/src/containers/bf-image/bf-image-container.css
+++ b/source/nodejs/adaptivecards-designer/src/containers/bf-image/bf-image-container.css
@@ -25,7 +25,7 @@
text-align: center;
vertical-align: middle;
cursor: pointer;
- background-color: #0078d7;
+ background-color: #0072cc;
color: white;
-webkit-user-select: none;
-moz-user-select: none;
@@ -67,7 +67,7 @@
cursor: pointer;
border: none;
padding: 0;
- color: #0078d7;
+ color: #0072cc;
background-color: transparent;
-webkit-user-select: none;
-moz-user-select: none;
diff --git a/source/nodejs/adaptivecards-designer/src/containers/default/adaptivecards-defaulthost.css b/source/nodejs/adaptivecards-designer/src/containers/default/adaptivecards-defaulthost.css
index 36f1db91a4..3733a0d872 100644
--- a/source/nodejs/adaptivecards-designer/src/containers/default/adaptivecards-defaulthost.css
+++ b/source/nodejs/adaptivecards-designer/src/containers/default/adaptivecards-defaulthost.css
@@ -116,7 +116,7 @@ a.ac-anchor:visited:active {
}
.ac-pushButton.style-positive {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
}
diff --git a/source/nodejs/adaptivecards-designer/src/containers/outlook/outlook-container.css b/source/nodejs/adaptivecards-designer/src/containers/outlook/outlook-container.css
index f2ce568852..ad6d44323a 100644
--- a/source/nodejs/adaptivecards-designer/src/containers/outlook/outlook-container.css
+++ b/source/nodejs/adaptivecards-designer/src/containers/outlook/outlook-container.css
@@ -106,7 +106,7 @@ a.ac-anchor:visited:active {
}
.ac-pushButton:hover {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
border: 1px solid #73C1FD;
}
@@ -118,9 +118,9 @@ a.ac-anchor:visited:active {
}
.ac-pushButton.style-positive {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
.ac-pushButton.style-positive:hover, .ac-pushButton.style-positive:active {
@@ -145,16 +145,16 @@ a.ac-anchor:visited:active {
}
.ac-pushButton.subdued:hover {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
@media (forced-colors: none) {
.ac-pushButton.expanded {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
- border: 1px solid #0078D7;
+ border: 1px solid #0072CC;
}
}
diff --git a/source/nodejs/adaptivecards-designer/src/containers/skype/skype-container.css b/source/nodejs/adaptivecards-designer/src/containers/skype/skype-container.css
index 43a365e813..229c45dcc3 100644
--- a/source/nodejs/adaptivecards-designer/src/containers/skype/skype-container.css
+++ b/source/nodejs/adaptivecards-designer/src/containers/skype/skype-container.css
@@ -114,16 +114,16 @@ a.ac-anchor:visited:active {
padding: 4px 10px 6px 10px;
height: 31px;
background-color: white;
- color: #0078d7;
+ color: #0072cc;
}
.ac-pushButton:hover {
- background-color: #0078d7;
+ background-color: #0072cc;
color: #fff;
}
.ac-pushButton:active {
- background-color: #0078d7;
+ background-color: #0072cc;
color: #fff;
}
diff --git a/source/nodejs/adaptivecards-designer/src/containers/webchat/webchat-container.css b/source/nodejs/adaptivecards-designer/src/containers/webchat/webchat-container.css
index d95a14ffe7..5d5d8f199a 100644
--- a/source/nodejs/adaptivecards-designer/src/containers/webchat/webchat-container.css
+++ b/source/nodejs/adaptivecards-designer/src/containers/webchat/webchat-container.css
@@ -91,7 +91,7 @@ a.ac-anchor:visited:active {
}
.ac-pushButton.style-positive {
- background-color: #0078D7;
+ background-color: #0072CC;
color: white;
}
diff --git a/source/nodejs/adaptivecards-designer/src/designer-peers.ts b/source/nodejs/adaptivecards-designer/src/designer-peers.ts
index 77a911bd03..bf386608b5 100644
--- a/source/nodejs/adaptivecards-designer/src/designer-peers.ts
+++ b/source/nodejs/adaptivecards-designer/src/designer-peers.ts
@@ -1257,6 +1257,16 @@ export abstract class DesignerPeer extends DraggableElement {
this.renderedElement.style.left = clientRect.left + "px";
this.renderedElement.style.top = clientRect.top + "px";
}
+
+ this.updateAriaProperties();
+ }
+
+ protected updateAriaProperties() {
+ if (this._children.length === 0 && this.getCardObject() instanceof Adaptive.CardElementContainer) {
+ this.renderedElement.setAttribute("aria-label", "Empty " + this.getCardObject().getJsonTypeName());
+ } else {
+ this.renderedElement.setAttribute("aria-label", this.getCardObject().getJsonTypeName());
+ }
}
protected createInplaceEditor(): DesignerPeerInplaceEditor {
@@ -2170,6 +2180,7 @@ export class AdaptiveCardPeer extends TypedCardElementPeer {
- this._selectedField = (this._treeView.selectedItem as DataTreeItem).field;
-
- if (this._selectedField) {
- this.closePopup(false);
- }
+ this._treeView.onItemInvoked = (sender) => {
+ this._selectedField = (sender as DataTreeItem).field;
+ this.closePopup(false);
};
element.appendChild(this._treeView.render());
diff --git a/source/nodejs/adaptivecards-designer/src/peer-command.ts b/source/nodejs/adaptivecards-designer/src/peer-command.ts
index e1ae9a1962..9e113798d8 100644
--- a/source/nodejs/adaptivecards-designer/src/peer-command.ts
+++ b/source/nodejs/adaptivecards-designer/src/peer-command.ts
@@ -7,7 +7,10 @@ export class PeerCommand {
let buttonElement = document.createElement("button");
buttonElement.classList.add("acd-peerButton");
buttonElement.type = "button";
+ buttonElement.setAttribute("role", "button");
buttonElement.title = this.toolTip ? this.toolTip : this.name;
+ buttonElement.setAttribute("aria-label", this.toolTip ?? this.name);
+ buttonElement.tabIndex = 0;
if (this.iconClass) {
let iconElement = document.createElement("div");
diff --git a/source/nodejs/adaptivecards-designer/src/tree-view.ts b/source/nodejs/adaptivecards-designer/src/tree-view.ts
index 0cdaf37a8c..115124cf6f 100644
--- a/source/nodejs/adaptivecards-designer/src/tree-view.ts
+++ b/source/nodejs/adaptivecards-designer/src/tree-view.ts
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import { BaseTreeItem } from "./base-tree-item";
+import { Constants } from "adaptivecards-controls";
export class TreeView {
private _selectedItem: BaseTreeItem = undefined;
@@ -9,31 +10,98 @@ export class TreeView {
treeItem.onSelectedChange = (sender: BaseTreeItem) => {
this.selectedItem = sender;
};
+ treeItem.onItemInvoked = (treeItem: BaseTreeItem) => {
+ this.itemInvoked(treeItem);
+ };
for (let i = 0; i < treeItem.getChildCount(); i++) {
this.setupTreeItemEvents(treeItem.getChildAt(i));
}
}
+ private getVisibleTreeItems() : HTMLElement[] | null
+ {
+ // get all treeitem nodes in this view
+ const treeItems = (Array.from(this.rootItem?.renderedElement?.querySelectorAll(":scope [role='treeitem']")));
+
+ // filter out any hidden nodes (i.e. collapsed children). `[role='tree']` here is to prevent
+ // looking outside of the tree.
+ return treeItems?.filter((el) => !((el.parentElement.closest(".acd-hidden, [role='tree']"))?.classList.contains("acd-hidden")));
+ }
+
+ private static moveFocus(from: HTMLElement, to: HTMLElement): void
+ {
+ to.tabIndex = 0;
+ to.focus();
+ from.tabIndex = -1;
+ }
+
protected selectedItemChanged() {
if (this.onSelectedItemChanged) {
this.onSelectedItemChanged(this);
}
}
- focus() {
- if (this.rootItem) {
- this.rootItem.focus();
+ protected itemInvoked(sender: BaseTreeItem) {
+ if (this.onItemInvoked) {
+ this.onItemInvoked(sender);
}
}
+ focus() {
+ this.rootItem?.focus();
+ }
+
render(): HTMLElement {
let treeRoot = document.createElement("ul");
treeRoot.style.paddingLeft = "0";
treeRoot.style.listStyleType = "none";
treeRoot.className = "acd-treeView";
treeRoot.setAttribute("role", "tree");
- treeRoot.appendChild(this.rootItem.render());
+ treeRoot.onkeydown = (e: KeyboardEvent) => {
+ const currentElement = e.target as HTMLElement;
+ let handled = true;
+ switch (e.key) {
+ case Constants.keys.up: {
+ const treeItems = this.getVisibleTreeItems();
+ const index = treeItems.findIndex((el) => el === currentElement);
+ if (index > 0) {
+ let nextElement = treeItems.at(index - 1);
+ TreeView.moveFocus(currentElement, nextElement);
+ }
+ else {
+ // on first child of tree root, so pressing up should focus the root
+ TreeView.moveFocus(currentElement, this.rootItem.renderedElement);
+ }
+
+ break;
+ }
+
+ case Constants.keys.down: {
+ const treeItems = this.getVisibleTreeItems();
+ const index = treeItems.findIndex((el) => el === currentElement);
+ if (index + 1 < treeItems.length) {
+ const nextElement = treeItems.at(index + 1);
+ TreeView.moveFocus(currentElement, nextElement);
+ }
+
+ break;
+ }
+
+ default: {
+ handled = false;
+ }
+ }
+
+ if (handled) {
+ e.cancelBubble = true;
+ e.preventDefault();
+ }
+ };
+
+ const rootItemElement = this.rootItem.render();
+ rootItemElement.tabIndex = 0;
+ treeRoot.appendChild(rootItemElement);
this.setupTreeItemEvents(this.rootItem);
@@ -42,6 +110,8 @@ export class TreeView {
onSelectedItemChanged: (sender: TreeView) => void;
+ onItemInvoked: (item: BaseTreeItem) => void;
+
constructor(readonly rootItem: BaseTreeItem) { }
get selectedItem(): BaseTreeItem {
diff --git a/source/nodejs/adaptivecards-designer/webpack.config.js b/source/nodejs/adaptivecards-designer/webpack.config.js
index de4ad3a21d..fa61bc70d5 100644
--- a/source/nodejs/adaptivecards-designer/webpack.config.js
+++ b/source/nodejs/adaptivecards-designer/webpack.config.js
@@ -6,136 +6,137 @@ const ConcatPlugin = require('webpack-concat-files-plugin');
const Dotenv = require('dotenv-webpack');
module.exports = (env, argv) => {
- const mode = argv.mode || 'development';
- const devMode = mode === "development";
+ const mode = argv.mode || 'development';
+ const devMode = mode === "development";
- console.info('running webpack with mode:', mode);
+ console.info('running webpack with mode:', mode);
- return {
- mode: mode,
- entry: {
- "adaptivecards-designer": "./src/adaptivecards-designer.ts",
- "adaptivecards-designer-standalone": "./src/adaptivecards-designer-standalone.ts"
- },
- output: {
- path: path.resolve(__dirname, "./dist"),
- filename: devMode ? "[name].js" : "[name].min.js",
- libraryTarget: "umd",
- library: "ACDesigner",
- globalObject: "this"
- },
- devtool: devMode ? "inline-source-map" : "source-map",
- devServer: {
- static: './dist'
- },
- resolve: {
- extensions: [".ts", ".tsx", ".js"]
- },
- module: {
- rules: [
- {
- test: /\.ts$/,
- loader: "ts-loader",
- exclude: /(node_modules|__tests__)/
- },
- {
- test: /\.css$/,
- use: [
- 'style-loader',
- MiniCssExtractPlugin.loader,
- 'css-loader'
- ]
- },
- {
- test: /\.svg$/,
- type: 'asset/inline'
- }
- ]
- },
- plugins: [
- new Dotenv(),
- new HtmlWebpackPlugin({
- title: "Adaptive Cards Designer (No Microsoft Hosts)",
- template: "./noHosts.html",
- filename: "noHosts.html",
- chunks: ["adaptivecards-designer-standalone"]
- }),
- new HtmlWebpackPlugin({
- title: "Adaptive Cards Designer",
- template: "./index.html",
- filename: "index.html",
- chunks: ["adaptivecards-designer"]
- }),
- new HtmlWebpackPlugin({
- title: "Adaptive Cards Designer (Preview Features)",
- template: "./previewFeatures.html",
- filename: "previewFeatures.html",
- chunks: ["adaptivecards-designer"]
- }),
- new HtmlWebpackPlugin({
- title: "Adaptive Cards Designer (No Microsoft Hosts)",
- template: "./noHosts.html",
- filename: "noHosts.html",
- chunks: ["adaptivecards-designer-standalone"]
- }),
- new MiniCssExtractPlugin({
- filename: '[name].css'
- }),
- new ConcatPlugin({
- bundles: [
- {
- dest: 'dist/adaptivecards-designer.css',
- src: [
- './node_modules/adaptivecards-controls/dist/adaptivecards-controls.css',
- './node_modules/adaptivecards/dist/adaptivecards-carousel.css',
- './src/adaptivecards-designer.css'
- ]
- }
- ]
- }),
- new CopyWebpackPlugin({
- patterns: [{
- from: 'src/containers/default/adaptivecards-defaulthost.css',
- to: '.'
- },
- {
- from: 'src/containers/**/*.css',
- to: 'containers/[name][ext]'
- },
- {
- from: 'src/containers/**/*.png',
- to: 'containers/[name][ext]'
- },
- {
- from: 'src/containers/**/*.jpg',
- to: 'containers/[name][ext]'
- },
- {
- from: 'src/assets/*.*',
- to: '../lib/assets/[name][ext]'
- }],
- options: {
- concurrency: 8
- }
- })
- ],
- externals: {
- ///^monaco-editor/ // <-- NOT WORKING for some reason
- "adaptivecards": {
- commonjs2: "adaptivecards",
- commonjs: "adaptivecards",
- root: "AdaptiveCards"
- },
- "adaptive-expressions": {
- commonjs2: "adaptive-expressions",
- commonjs: "adaptive-expressions",
- root: "AEL"
- },
- "adaptivecards-templating": {
- commonjs2: "adaptivecards-templating",
- commonjs: "adaptivecards-templating",
- root: "ACData"
- }
- }
- }
+ return {
+ mode: mode,
+ entry: {
+ "adaptivecards-designer": "./src/adaptivecards-designer.ts",
+ "adaptivecards-designer-standalone": "./src/adaptivecards-designer-standalone.ts"
+ },
+ output: {
+ path: path.resolve(__dirname, "./dist"),
+ filename: devMode ? "[name].js" : "[name].min.js",
+ hashFunction: "xxhash64",
+ libraryTarget: "umd",
+ library: "ACDesigner",
+ globalObject: "this"
+ },
+ devtool: devMode ? "inline-source-map" : "source-map",
+ devServer: {
+ static: './dist'
+ },
+ resolve: {
+ extensions: [".ts", ".tsx", ".js"]
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ loader: "ts-loader",
+ exclude: /(node_modules|__tests__)/
+ },
+ {
+ test: /\.css$/,
+ use: [
+ 'style-loader',
+ MiniCssExtractPlugin.loader,
+ 'css-loader'
+ ]
+ },
+ {
+ test: /\.svg$/,
+ type: 'asset/inline'
+ }
+ ]
+ },
+ plugins: [
+ new Dotenv(),
+ new HtmlWebpackPlugin({
+ title: "Adaptive Cards Designer (No Microsoft Hosts)",
+ template: "./noHosts.html",
+ filename: "noHosts.html",
+ chunks: ["adaptivecards-designer-standalone"]
+ }),
+ new HtmlWebpackPlugin({
+ title: "Adaptive Cards Designer",
+ template: "./index.html",
+ filename: "index.html",
+ chunks: ["adaptivecards-designer"]
+ }),
+ new HtmlWebpackPlugin({
+ title: "Adaptive Cards Designer (Preview Features)",
+ template: "./previewFeatures.html",
+ filename: "previewFeatures.html",
+ chunks: ["adaptivecards-designer"]
+ }),
+ new HtmlWebpackPlugin({
+ title: "Adaptive Cards Designer (No Microsoft Hosts)",
+ template: "./noHosts.html",
+ filename: "noHosts.html",
+ chunks: ["adaptivecards-designer-standalone"]
+ }),
+ new MiniCssExtractPlugin({
+ filename: '[name].css'
+ }),
+ new ConcatPlugin({
+ bundles: [
+ {
+ dest: 'dist/adaptivecards-designer.css',
+ src: [
+ './node_modules/adaptivecards-controls/dist/adaptivecards-controls.css',
+ './node_modules/adaptivecards/dist/adaptivecards-carousel.css',
+ './src/adaptivecards-designer.css'
+ ]
+ }
+ ]
+ }),
+ new CopyWebpackPlugin({
+ patterns: [{
+ from: 'src/containers/default/adaptivecards-defaulthost.css',
+ to: '.'
+ },
+ {
+ from: 'src/containers/**/*.css',
+ to: 'containers/[name][ext]'
+ },
+ {
+ from: 'src/containers/**/*.png',
+ to: 'containers/[name][ext]'
+ },
+ {
+ from: 'src/containers/**/*.jpg',
+ to: 'containers/[name][ext]'
+ },
+ {
+ from: 'src/assets/*.*',
+ to: '../lib/assets/[name][ext]'
+ }],
+ options: {
+ concurrency: 8
+ }
+ })
+ ],
+ externals: {
+ ///^monaco-editor/ // <-- NOT WORKING for some reason
+ "adaptivecards": {
+ commonjs2: "adaptivecards",
+ commonjs: "adaptivecards",
+ root: "AdaptiveCards"
+ },
+ "adaptive-expressions": {
+ commonjs2: "adaptive-expressions",
+ commonjs: "adaptive-expressions",
+ root: "AEL"
+ },
+ "adaptivecards-templating": {
+ commonjs2: "adaptivecards-templating",
+ commonjs: "adaptivecards-templating",
+ root: "ACData"
+ }
+ }
+ }
}
diff --git a/source/nodejs/adaptivecards-extras-designer/webpack.config.js b/source/nodejs/adaptivecards-extras-designer/webpack.config.js
index 04d1654691..c4fb22638e 100644
--- a/source/nodejs/adaptivecards-extras-designer/webpack.config.js
+++ b/source/nodejs/adaptivecards-extras-designer/webpack.config.js
@@ -1,58 +1,59 @@
const path = require("path");
module.exports = (env, argv) => {
- const mode = argv.mode || 'development';
- const devMode = mode === "development";
+ const mode = argv.mode || 'development';
+ const devMode = mode === "development";
- console.info('running webpack with mode:', mode);
+ console.info('running webpack with mode:', mode);
- return {
- mode: mode,
- entry: {
- "adaptivecards-extras-designer": "./src/adaptivecards-extras-designer.ts"
- },
- output: {
- path: path.resolve(__dirname, "./dist"),
- filename: devMode ? "[name].js" : "[name].min.js",
- library: "ACExtrasDesigner",
- libraryTarget: "umd",
- globalObject: "this",
- // umdNamedDefine: true
- },
- devtool: devMode ? "inline-source-map" : "source-map",
- devServer: {
- static: {
- directory: './dist'
- }
- },
- resolve: {
- extensions: [".ts", ".tsx", ".js"]
- },
- module: {
- rules: [
- {
- test: /\.ts$/,
- loader: "ts-loader",
- exclude: /(node_modules|__tests__)/
- }
- ]
- },
- externals: {
- "adaptivecards": {
- commonjs2: "adaptivecards",
- commonjs: "adaptivecards",
- root: "AdaptiveCards"
- },
- "adaptivecards-designer": {
- commonjs2: "adaptivecards-designer",
- commonjs: "adaptivecards-designer",
- root: "ACDesigner"
- },
- "adaptivecards-extras": {
- commonjs2: "adaptivecards-extras",
- commonjs: "adaptivecards-extras",
- root: "ACExtras"
- }
- }
- }
+ return {
+ mode: mode,
+ entry: {
+ "adaptivecards-extras-designer": "./src/adaptivecards-extras-designer.ts"
+ },
+ output: {
+ path: path.resolve(__dirname, "./dist"),
+ filename: devMode ? "[name].js" : "[name].min.js",
+ library: "ACExtrasDesigner",
+ hashFunction: "xxhash64",
+ libraryTarget: "umd",
+ globalObject: "this",
+ // umdNamedDefine: true
+ },
+ devtool: devMode ? "inline-source-map" : "source-map",
+ devServer: {
+ static: {
+ directory: './dist'
+ }
+ },
+ resolve: {
+ extensions: [".ts", ".tsx", ".js"]
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ loader: "ts-loader",
+ exclude: /(node_modules|__tests__)/
+ }
+ ]
+ },
+ externals: {
+ "adaptivecards": {
+ commonjs2: "adaptivecards",
+ commonjs: "adaptivecards",
+ root: "AdaptiveCards"
+ },
+ "adaptivecards-designer": {
+ commonjs2: "adaptivecards-designer",
+ commonjs: "adaptivecards-designer",
+ root: "ACDesigner"
+ },
+ "adaptivecards-extras": {
+ commonjs2: "adaptivecards-extras",
+ commonjs: "adaptivecards-extras",
+ root: "ACExtras"
+ }
+ }
+ }
}
diff --git a/source/nodejs/adaptivecards-extras/webpack.config.js b/source/nodejs/adaptivecards-extras/webpack.config.js
index 7daf277943..9a9e84c084 100644
--- a/source/nodejs/adaptivecards-extras/webpack.config.js
+++ b/source/nodejs/adaptivecards-extras/webpack.config.js
@@ -1,48 +1,49 @@
const path = require("path");
module.exports = (env, argv) => {
- const mode = argv.mode || 'development';
- const devMode = mode === "development";
+ const mode = argv.mode || 'development';
+ const devMode = mode === "development";
- console.info('running webpack with mode:', mode);
+ console.info('running webpack with mode:', mode);
- return {
- mode: mode,
- entry: {
- "adaptivecards-extras": "./src/adaptivecards-extras.ts"
- },
- output: {
- path: path.resolve(__dirname, "./dist"),
- filename: devMode ? "[name].js" : "[name].min.js",
- library: "ACExtras",
- libraryTarget: "umd",
- globalObject: "this",
- // umdNamedDefine: true
- },
- devtool: devMode ? "inline-source-map" : "source-map",
- devServer: {
- static: {
- directory: './dist'
- }
- },
- resolve: {
- extensions: [".ts", ".tsx", ".js"]
- },
- module: {
- rules: [
- {
- test: /\.ts$/,
- loader: "ts-loader",
- exclude: /(node_modules|__tests__)/
- }
- ]
- },
- externals: {
- "adaptivecards": {
- commonjs2: "adaptivecards",
- commonjs: "adaptivecards",
- root: "AdaptiveCards"
- }
- }
- }
+ return {
+ mode: mode,
+ entry: {
+ "adaptivecards-extras": "./src/adaptivecards-extras.ts"
+ },
+ output: {
+ path: path.resolve(__dirname, "./dist"),
+ filename: devMode ? "[name].js" : "[name].min.js",
+ hashFunction: "xxhash64",
+ library: "ACExtras",
+ libraryTarget: "umd",
+ globalObject: "this",
+ // umdNamedDefine: true
+ },
+ devtool: devMode ? "inline-source-map" : "source-map",
+ devServer: {
+ static: {
+ directory: './dist'
+ }
+ },
+ resolve: {
+ extensions: [".ts", ".tsx", ".js"]
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ loader: "ts-loader",
+ exclude: /(node_modules|__tests__)/
+ }
+ ]
+ },
+ externals: {
+ "adaptivecards": {
+ commonjs2: "adaptivecards",
+ commonjs: "adaptivecards",
+ root: "AdaptiveCards"
+ }
+ }
+ }
}
diff --git a/source/nodejs/adaptivecards-react/webpack.config.js b/source/nodejs/adaptivecards-react/webpack.config.js
index 38a9117cc9..0232fbf6e0 100644
--- a/source/nodejs/adaptivecards-react/webpack.config.js
+++ b/source/nodejs/adaptivecards-react/webpack.config.js
@@ -13,6 +13,7 @@ module.exports = (env, argv) => {
output: {
path: path.resolve(__dirname, './dist'),
filename: devMode ? '[name].js' : '[name].min.js',
+ hashFunction: "xxhash64",
libraryTarget: 'umd',
library: 'AdaptiveCards',
globalObject: 'this'
diff --git a/source/nodejs/adaptivecards-site/pages/_posts/2019/Community-Call-January.md b/source/nodejs/adaptivecards-site/pages/_posts/2019/Community-Call-January.md
index 865a0d6068..80bf1c66d9 100644
--- a/source/nodejs/adaptivecards-site/pages/_posts/2019/Community-Call-January.md
+++ b/source/nodejs/adaptivecards-site/pages/_posts/2019/Community-Call-January.md
@@ -27,7 +27,7 @@ Which can be delivered instantly into Microsoft Teams by using AtBot's integrati
Watch the call here.
-
+
Next month's call will be held on Thursday, February 14, 2019 at 9:00am PST. We look forward to talking to you then!
@@ -48,4 +48,4 @@ Adaptive Cards community call
Adaptive Cards feedback channels
- [Issues and feature requests](https://github.com/Microsoft/AdaptiveCards/issues)
-- [Technical questions](https://stackoverflow.com/questions/tagged/adaptive-cards)
\ No newline at end of file
+- [Technical questions](https://stackoverflow.com/questions/tagged/adaptive-cards)
diff --git a/source/nodejs/adaptivecards-site/pages/_posts/2020/Community-Call-March.md b/source/nodejs/adaptivecards-site/pages/_posts/2020/Community-Call-March.md
index 21c68f54d3..a8b951c127 100644
--- a/source/nodejs/adaptivecards-site/pages/_posts/2020/Community-Call-March.md
+++ b/source/nodejs/adaptivecards-site/pages/_posts/2020/Community-Call-March.md
@@ -25,7 +25,7 @@ On the **Admin Portal Dashboard**, users can see a summary of card management. U
On the **New Template** page, users can create and edit Adaptive Cards. Users can expect to create Adaptive Cards effortlessly since [Adaptive Cards Designer Tool](https://adaptivecards.io/designer/) is nicely embedded into the ACMS Admin Portal.
-![](https://developer.microsoft.com/en-us/office/blogs/wp-content/uploads/2020/03/A-screenshot-1024x522.png)
+![A screenshot of the ACMS New Template page.](https://developer.microsoft.com/en-us/office/blogs/wp-content/uploads/2020/03/A-screenshot-1024x522.pn)
If you click a card on the Dashboard, users will land in **Template View** page where they can check all the details of the card. They can share and publish cards here too! If users **publish** a card template, it can later be retrieved at "run-time" via the ACMS REST API.
diff --git a/source/nodejs/adaptivecards-site/themes/adaptivecards/layout/archive.ejs b/source/nodejs/adaptivecards-site/themes/adaptivecards/layout/archive.ejs
index d6a4be1a06..7a79c0e287 100644
--- a/source/nodejs/adaptivecards-site/themes/adaptivecards/layout/archive.ejs
+++ b/source/nodejs/adaptivecards-site/themes/adaptivecards/layout/archive.ejs
@@ -3,6 +3,77 @@ layout: layout
---
+
+