From 6a929b41e9d65326f983b40eb110fd12fa1424d0 Mon Sep 17 00:00:00 2001 From: Iakov Lilo Date: Wed, 22 Jan 2025 16:36:53 +1100 Subject: [PATCH 1/6] Add a template for Maui Hybrid project --- src/OpenSilver.CLI/.gitignore | 1 + .../.template.config/dotnetcli.host.json | 9 ++ .../.template.config/template.json | 151 +++++++++++++++++- .../OpenSilverApplication.sln | 11 ++ .../OpenSilverApplication.MauiHybrid/App.xaml | 17 ++ .../App.xaml.cs | 14 ++ .../Components/Index.cs | 20 +++ .../Components/Routes.razor | 5 + .../Components/_Imports.razor | 7 + .../MainPage.xaml | 13 ++ .../MainPage.xaml.cs | 9 ++ .../MauiProgram.cs | 38 +++++ .../OpenSilverApplication.MauiHybrid.csproj | 90 +++++++++++ .../Platforms/Android/AndroidManifest.xml | 6 + .../Android/AndroidWebViewHandler.cs | 13 ++ .../Platforms/Android/MainActivity.cs | 10 ++ .../Platforms/Android/MainApplication.cs | 15 ++ .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.cs | 9 ++ .../Platforms/MacCatalyst/Entitlements.plist | 14 ++ .../Platforms/MacCatalyst/Info.plist | 38 +++++ .../Platforms/MacCatalyst/Program.cs | 15 ++ .../Platforms/Windows/App.xaml | 8 + .../Platforms/Windows/App.xaml.cs | 24 +++ .../Platforms/Windows/Package.appxmanifest | 46 ++++++ .../Platforms/Windows/app.manifest | 15 ++ .../Platforms/iOS/AppDelegate.cs | 9 ++ .../Platforms/iOS/Info.plist | 32 ++++ .../Platforms/iOS/Program.cs | 15 ++ .../iOS/Resources/PrivacyInfo.xcprivacy | 51 ++++++ .../Properties/launchSettings.json | 8 + .../Resources/AppIcon/appicon.svg | 4 + .../Resources/AppIcon/appiconfg.svg | 8 + .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107280 bytes .../Resources/Images/dotnet_bot.svg | 93 +++++++++++ .../Resources/Raw/AboutAssets.txt | 15 ++ .../Resources/Splash/splash.svg | 8 + .../wwwroot/index.html | 23 +++ .../OpenSilver.CLI.Templates.csproj | 8 + .../Tools/TemplateTweaker/Program.cs | 88 ++++++++++ .../TemplateTweaker/TemplateTweaker.csproj | 6 + 41 files changed, 970 insertions(+), 2 deletions(-) create mode 100644 src/OpenSilver.CLI/.gitignore create mode 100644 src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Index.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Routes.razor create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/_Imports.razor create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MauiProgram.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidManifest.xml create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidWebViewHandler.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainActivity.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainApplication.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/Resources/values/colors.xml create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Entitlements.plist create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Info.plist create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Program.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/Package.appxmanifest create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/app.manifest create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/AppDelegate.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Info.plist create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Program.cs create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Resources/PrivacyInfo.xcprivacy create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Properties/launchSettings.json create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Raw/AboutAssets.txt create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Splash/splash.svg create mode 100644 src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html create mode 100644 src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs create mode 100644 src/OpenSilver.CLI/Tools/TemplateTweaker/TemplateTweaker.csproj diff --git a/src/OpenSilver.CLI/.gitignore b/src/OpenSilver.CLI/.gitignore new file mode 100644 index 0000000..9e108e4 --- /dev/null +++ b/src/OpenSilver.CLI/.gitignore @@ -0,0 +1 @@ +C#/**/**/OpenSilverApplication.MauiHybrid \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json new file mode 100644 index 0000000..ee00c1e --- /dev/null +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "mauiPlatforms": { + "longName": "mauiPlatforms", + "shortName": "mp" + } + } +} \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json index 3744723..de0a930 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json @@ -31,6 +31,12 @@ "exclude": [ "OpenSilverApplication.Simulator/**" ] + }, + { + "condition": "(mauiPlatformsBasic == '' && windowsTarget == '')", + "exclude": [ + "OpenSilverApplication.MauiHybrid/**" + ] } ] } @@ -41,6 +47,10 @@ { "path": "./OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj", "condition": "(operatingSystem == 'Windows_NT')" + }, + { + "path": "./OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj", + "condition": "(mauiPlatformsBasic != '' || windowsTarget != '')" } ], "symbols": { @@ -91,6 +101,36 @@ } ] }, + "mauiPlatforms": { + "type": "parameter", + "datatype": "choice", + "description": "Specifies which MAUI platforms to include.", + "allowMultipleValues": true, + "replaces": "$maui-platforms$", + "choices": [ + { + "choice": "android", + "description": "Android" + }, + { + "choice": "ios", + "description": "iOS" + }, + { + "choice": "macos", + "description": "macOS" + }, + { + "choice": "windows", + "description": "Windows" + }, + { + "choice": "all", + "description": "All supported platforms" + } + ] + }, + "openSilverPackageVersion": { "type": "generated", "generator": "constant", @@ -123,6 +163,14 @@ "value": "3.1.*" } }, + "openSilverMauiHybridPackageVersion": { + "type": "generated", + "generator": "constant", + "replaces": "$OpenSilverMauiHybridPackageVersion$", + "parameters": { + "value": "3.1.2" + } + }, "webAssemblyPackageVersion": { "type": "generated", "generator": "switch", @@ -186,14 +234,113 @@ }, "operatingSystem": { "type": "bind", - "binding": "env:OS" + "binding": "env:OS", + "defaultValue": "" + }, + "androidTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'android' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-android" + }, + { + "condition": "((mauiPlatforms == 'android' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-android" + } + ] + } + }, + "iosTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'ios' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-ios" + }, + { + "condition": "((mauiPlatforms == 'ios' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-ios" + } + ] + } + }, + "macosTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'macos' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-maccatalyst" + }, + { + "condition": "((mauiPlatforms == 'macos' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-maccatalyst" + } + ] + } + }, + "windowsTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "replaces": "$WindowsTarget$", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'windows' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-windows10.0.19041.0" + }, + { + "condition": "((mauiPlatforms == 'windows' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-windows10.0.19041.0" + } + ] + } + }, + "mauiPlatformsBasic": { + "type": "generated", + "generator": "join", + "replaces": "$MauiPlatformsBasic$", + "parameters": { + "symbols": [ + { + "type": "ref", + "value": "androidTarget" + }, + { + "type": "ref", + "value": "iosTarget" + }, + { + "type": "ref", + "value": "macosTarget" + } + ], + "removeEmptyValues": true, + "separator": ";" + } } + }, "guids": [ "79254849-EE14-42B2-82CB-07A7D4FA3205", "052AA0E1-BF65-4EE4-B6D3-112AE3350154", "E5006009-F128-4902-AD10-D55E7942946A", - "D59E1426-E892-4863-9C68-E437124A32F5" + "D59E1426-E892-4863-9C68-E437124A32F5", + "E98BBAFF-DE97-48FB-B99E-019727405EFE" ], "postActions": [ { diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln b/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln index a5eea7c..eec9b6f 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln @@ -11,6 +11,10 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.Simulator", "OpenSilverApplication.Simulator\OpenSilverApplication.Simulator.csproj", "{E5006009-F128-4902-AD10-D55E7942946A}" EndProject #endif +#if (mauiPlatformsBasic != '' || windowsTarget != '') +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverMauiHybridApp.MauiHybrid", "OpenSilverMauiHybridApp.MauiHybrid\OpenSilverMauiHybridApp.MauiHybrid.csproj", "{E98BBAFF-DE97-48FB-B99E-019727405EFE}" +EndProject +#endif Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -31,6 +35,13 @@ Global {E5006009-F128-4902-AD10-D55E7942946A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E5006009-F128-4902-AD10-D55E7942946A}.Release|Any CPU.Build.0 = Release|Any CPU #endif + #if (mauiPlatformsBasic != '' || windowsTarget != '') + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Release|Any CPU.Build.0 = Release|Any CPU + #endif EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml new file mode 100644 index 0000000..99e80ce --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml.cs new file mode 100644 index 0000000..979d3fc --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/App.xaml.cs @@ -0,0 +1,14 @@ +namespace OpenSilverApplication.MauiHybrid; + +public partial class App : Application +{ + public App() + { + InitializeComponent(); + } + + protected override Window CreateWindow(IActivationState? activationState) + { + return new Window(new MainPage()) { Title = "OpenSilverApplication.MauiHybrid" }; + } +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Index.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Index.cs new file mode 100644 index 0000000..ef9048f --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Index.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Components; +using OpenSilver.MauiHybrid.Runner; + +namespace OpenSilverApplication.MauiHybrid.Components +{ + [Route("/")] + public class Index : ComponentBase + { + [Inject] + private IMauiHybridRunner? Runner { get; set; } + + protected async override Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + ArgumentNullException.ThrowIfNull(Runner); + await Runner.RunApplicationAsync(); + } + } +} \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Routes.razor b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Routes.razor new file mode 100644 index 0000000..c5ad85a --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/Routes.razor @@ -0,0 +1,5 @@ + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/_Imports.razor b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/_Imports.razor new file mode 100644 index 0000000..a456ccb --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Components/_Imports.razor @@ -0,0 +1,7 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml new file mode 100644 index 0000000..9eeebd5 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml.cs new file mode 100644 index 0000000..3b836c6 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MainPage.xaml.cs @@ -0,0 +1,9 @@ +namespace OpenSilverApplication.MauiHybrid; + +public partial class MainPage : ContentPage +{ + public MainPage() + { + InitializeComponent(); + } +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MauiProgram.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MauiProgram.cs new file mode 100644 index 0000000..ce7ce37 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/MauiProgram.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Components.WebView.Maui; +using Microsoft.Extensions.Logging; +using OpenSilver.MauiHybrid.Runner; + +namespace OpenSilverApplication.MauiHybrid; + +public static class MauiProgram +{ + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }) + .ConfigureMauiHandlers(conf => + { +//-:cnd:noEmit +#if ANDROID + conf.AddHandler(); +#endif +//+:cnd:noEmit + }); + + builder.Services.AddScoped(); + builder.Services.AddMauiBlazorWebView(); +//-:cnd:noEmit +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); + builder.Logging.AddDebug(); +#endif +//+:cnd:noEmit + + return builder.Build(); + } +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj new file mode 100644 index 0000000..59f9244 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj @@ -0,0 +1,90 @@ + + + + + $MauiPlatformsBasic$ + + + $(TargetFrameworks);$WindowsTarget$ + + + $WindowsTarget$ + + + + + + + + Exe + OpenSilverApplication.MauiHybrid + true + true + enable + false + enable + + + OpenSilverApplication.MauiHybrid + + + com.companyname.opensilverapplication.mauihybrid + + + 1.0 + 1 + + + None + + 15.0 + 15.0 + 24.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidManifest.xml b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..dbf9e7e --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidWebViewHandler.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidWebViewHandler.cs new file mode 100644 index 0000000..2b0639e --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/AndroidWebViewHandler.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Components.WebView.Maui; + +namespace OpenSilverApplication.MauiHybrid; + +public class AndroidWebViewHandler : BlazorWebViewHandler +{ + protected override void ConnectHandler(global::Android.Webkit.WebView webView) + { + webView.Settings.SetSupportMultipleWindows(false); + + base.ConnectHandler(webView); + } +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainActivity.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..c2153bf --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainActivity.cs @@ -0,0 +1,10 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace OpenSilverApplication.MauiHybrid; + +[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] +public class MainActivity : MauiAppCompatActivity +{ +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainApplication.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..2e4ad89 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/MainApplication.cs @@ -0,0 +1,15 @@ +using Android.App; +using Android.Runtime; + +namespace OpenSilverApplication.MauiHybrid; + +[Application] +public class MainApplication : MauiApplication +{ + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/Resources/values/colors.xml b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..c04d749 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/AppDelegate.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000..ce7352e --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace OpenSilverApplication.MauiHybrid; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Entitlements.plist b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Entitlements.plist new file mode 100644 index 0000000..de4adc9 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Entitlements.plist @@ -0,0 +1,14 @@ + + + + + + + com.apple.security.app-sandbox + + + com.apple.security.network.client + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Info.plist b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..7b1e6e6 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + UIDeviceFamily + + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Program.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Program.cs new file mode 100644 index 0000000..42eb753 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace OpenSilverApplication.MauiHybrid; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml new file mode 100644 index 0000000..c90b507 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..f20f9cc --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/App.xaml.cs @@ -0,0 +1,24 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace OpenSilverApplication.MauiHybrid.WinUI; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : MauiWinUIApplication +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/Package.appxmanifest b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..90b4b6e --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,46 @@ + + + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/app.manifest b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/app.manifest new file mode 100644 index 0000000..4ecfb83 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/AppDelegate.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..ce7352e --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace OpenSilverApplication.MauiHybrid; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Info.plist b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Info.plist new file mode 100644 index 0000000..ecb7f71 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Program.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Program.cs new file mode 100644 index 0000000..766a87f --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace OpenSilverApplication.MauiHybrid; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..24ab3b4 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Platforms/iOS/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,51 @@ + + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Properties/launchSettings.json b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Properties/launchSettings.json new file mode 100644 index 0000000..4f85793 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "Project", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..9d63b65 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Fonts/OpenSans-Regular.ttf b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..68fcd9440d9aded241b756e24872f1eb0722b59c GIT binary patch literal 107280 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

FtTe_~#Xxq1EyN(@m3Wm)X-EU$S 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 literal 0 HcmV?d00001 diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..abfaff2 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Raw/AboutAssets.txt b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..6de1c15 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with your package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Splash/splash.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Splash/splash.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html new file mode 100644 index 0000000..2af32b0 --- /dev/null +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html @@ -0,0 +1,23 @@ + + + + + + OpenSilverApplication.MauiHybrid + + + + + + +

+ +
Loading...
+
+
+ + + + + + \ No newline at end of file diff --git a/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj b/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj index a769390..26db473 100644 --- a/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj +++ b/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj @@ -36,4 +36,12 @@ + + + + \ No newline at end of file diff --git a/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs b/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs new file mode 100644 index 0000000..de595be --- /dev/null +++ b/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs @@ -0,0 +1,88 @@ +using System; +using System.IO; + +namespace TemplateTweaker +{ + public static class Program + { + public static void Main() + { + // If you have multiple "common" folders, list them all here: + var sourceFolders = new[] + { + "CommonProjectTemplates/OpenSilverApplication.MauiHybrid" + // Add more sources if needed... + }; + + // List all the template folders that should receive the "common" content: + var destinationFolders = new[] + { + "C#/OpenSilverApplication" + // Add more destinations if needed... + }; + + foreach (var sourceFolder in sourceFolders) + { + if (!Directory.Exists(sourceFolder)) + { + Console.WriteLine($"[WARN] Source folder not found: {sourceFolder}"); + continue; + } + + // We'll copy the entire directory named sourceFolder into each destination. + // For example, if sourceFolder = "CommonProjectTemplates", + // it ends up as e.g. Template1/CommonProjectTemplates + var subfolderName = Path.GetFileName(sourceFolder); + + foreach (var destFolder in destinationFolders) + { + if (!Directory.Exists(destFolder)) + { + Console.WriteLine($"[WARN] Destination folder not found: {destFolder}"); + continue; + } + + var finalPath = Path.Combine(destFolder, subfolderName); + + // 1) Remove any existing folder to avoid stale files + if (Directory.Exists(finalPath)) + { + Console.WriteLine($"Removing existing folder: {finalPath}"); + Directory.Delete(finalPath, recursive: true); + } + + // 2) Copy the folder + Console.WriteLine($"Copying '{sourceFolder}' into '{destFolder}'..."); + DirectoryCopy(sourceFolder, finalPath); + } + } + + Console.WriteLine("All done!"); + } + + /// + /// Recursively copies a directory (all subdirs/files) to a new location. + /// + private static void DirectoryCopy(string sourceDir, string destDir) + { + // Create destination directory + Directory.CreateDirectory(destDir); + + // Copy all files in the current level + foreach (var file in Directory.GetFiles(sourceDir)) + { + var fileName = Path.GetFileName(file); + var destFile = Path.Combine(destDir, fileName); + File.Copy(file, destFile, overwrite: true); + } + + // Copy all subdirectories (recursively) + foreach (var subDir in Directory.GetDirectories(sourceDir)) + { + var subDirName = Path.GetFileName(subDir); + var destSubDir = Path.Combine(destDir, subDirName); + DirectoryCopy(subDir, destSubDir); + } + } + } +} diff --git a/src/OpenSilver.CLI/Tools/TemplateTweaker/TemplateTweaker.csproj b/src/OpenSilver.CLI/Tools/TemplateTweaker/TemplateTweaker.csproj new file mode 100644 index 0000000..aa2c637 --- /dev/null +++ b/src/OpenSilver.CLI/Tools/TemplateTweaker/TemplateTweaker.csproj @@ -0,0 +1,6 @@ + + + Exe + net9.0 + + \ No newline at end of file From 0c4618857c0234d13b5fb77c32f23cf0be8920c7 Mon Sep 17 00:00:00 2001 From: Iakov Lilo Date: Thu, 23 Jan 2025 12:01:10 +1100 Subject: [PATCH 2/6] Fix project name --- .../C#/OpenSilverApplication/OpenSilverApplication.sln | 2 +- .../OpenSilverApplication.MauiHybrid/wwwroot/index.html | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln b/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln index eec9b6f..d789cf2 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.sln @@ -12,7 +12,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.Simul EndProject #endif #if (mauiPlatformsBasic != '' || windowsTarget != '') -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverMauiHybridApp.MauiHybrid", "OpenSilverMauiHybridApp.MauiHybrid\OpenSilverMauiHybridApp.MauiHybrid.csproj", "{E98BBAFF-DE97-48FB-B99E-019727405EFE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.MauiHybrid", "OpenSilverApplication.MauiHybrid\OpenSilverApplication.MauiHybrid.csproj", "{E98BBAFF-DE97-48FB-B99E-019727405EFE}" EndProject #endif Global diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html index 2af32b0..bf11f7a 100644 --- a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/wwwroot/index.html @@ -9,15 +9,13 @@ - -
- -
Loading...
+
+
+ - \ No newline at end of file From f2e7538bd439504bfdb81f1094f1c1e7d35e2375 Mon Sep 17 00:00:00 2001 From: Iakov Lilo Date: Thu, 23 Jan 2025 14:33:20 +1100 Subject: [PATCH 3/6] Add MAUI Hybrid to F# and VB projects --- src/OpenSilver.CLI/.gitignore | 4 +- .../.template.config/template.json | 8 + .../OpenSilverApplication.MauiHybrid.csproj | 2 +- .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 167 +++++++++++++++++- .../OpenSilverApplication.sln | 43 +++-- .../OpenSilver.CLI.Templates.csproj | 4 + .../Tools/TemplateTweaker/Program.cs | 4 +- .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 167 +++++++++++++++++- .../OpenSilverApplication.sln | 43 +++-- 11 files changed, 413 insertions(+), 47 deletions(-) create mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json create mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/dotnetcli.host.json diff --git a/src/OpenSilver.CLI/.gitignore b/src/OpenSilver.CLI/.gitignore index 9e108e4..b36eeed 100644 --- a/src/OpenSilver.CLI/.gitignore +++ b/src/OpenSilver.CLI/.gitignore @@ -1 +1,3 @@ -C#/**/**/OpenSilverApplication.MauiHybrid \ No newline at end of file +C#/**/**/OpenSilverApplication.MauiHybrid +F#/**/**/OpenSilverApplication.MauiHybrid +VB/**/**/OpenSilverApplication.MauiHybrid \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json index de0a930..69a5498 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json @@ -131,6 +131,14 @@ ] }, + "langShortCode": { + "type": "generated", + "generator": "constant", + "replaces": "$LangShortCode$", + "parameters": { + "value": "cs" + } + }, "openSilverPackageVersion": { "type": "generated", "generator": "constant", diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj index 59f9244..1b448d4 100644 --- a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj @@ -84,7 +84,7 @@ - + diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json new file mode 100644 index 0000000..ee00c1e --- /dev/null +++ b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "mauiPlatforms": { + "longName": "mauiPlatforms", + "shortName": "mp" + } + } +} \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json index 33e6ba4..d398ae2 100644 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json +++ b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json @@ -31,6 +31,12 @@ "exclude": [ "OpenSilverApplication.Simulator/**" ] + }, + { + "condition": "(mauiPlatformsBasic == '' && windowsTarget == '')", + "exclude": [ + "OpenSilverApplication.MauiHybrid/**" + ] } ] } @@ -41,6 +47,10 @@ { "path": "./OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj", "condition": "(operatingSystem == 'Windows_NT')" + }, + { + "path": "./OpenSilverApplication.MauiHybrid/OpenSilverApplication.MauiHybrid.csproj", + "condition": "(mauiPlatformsBasic != '' || windowsTarget != '')" } ], "symbols": { @@ -91,6 +101,44 @@ } ] }, + "mauiPlatforms": { + "type": "parameter", + "datatype": "choice", + "description": "Specifies which MAUI platforms to include.", + "allowMultipleValues": true, + "replaces": "$maui-platforms$", + "choices": [ + { + "choice": "android", + "description": "Android" + }, + { + "choice": "ios", + "description": "iOS" + }, + { + "choice": "macos", + "description": "macOS" + }, + { + "choice": "windows", + "description": "Windows" + }, + { + "choice": "all", + "description": "All supported platforms" + } + ] + }, + + "langShortCode": { + "type": "generated", + "generator": "constant", + "replaces": "$LangShortCode$", + "parameters": { + "value": "fs" + } + }, "openSilverPackageVersion": { "type": "generated", "generator": "constant", @@ -123,6 +171,14 @@ "value": "3.1.*" } }, + "openSilverMauiHybridPackageVersion": { + "type": "generated", + "generator": "constant", + "replaces": "$OpenSilverMauiHybridPackageVersion$", + "parameters": { + "value": "3.1.2" + } + }, "webAssemblyPackageVersion": { "type": "generated", "generator": "switch", @@ -186,14 +242,113 @@ }, "operatingSystem": { "type": "bind", - "binding": "env:OS" + "binding": "env:OS", + "defaultValue": "" + }, + "androidTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'android' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-android" + }, + { + "condition": "((mauiPlatforms == 'android' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-android" + } + ] + } + }, + "iosTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'ios' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-ios" + }, + { + "condition": "((mauiPlatforms == 'ios' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-ios" + } + ] + } + }, + "macosTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'macos' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-maccatalyst" + }, + { + "condition": "((mauiPlatforms == 'macos' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-maccatalyst" + } + ] + } + }, + "windowsTarget": { + "type": "generated", + "generator": "switch", + "datatype": "string", + "replaces": "$WindowsTarget$", + "parameters": { + "evaluator": "C++", + "cases": [ + { + "condition": "((mauiPlatforms == 'windows' || mauiPlatforms == 'all') && targetFramework == 'net8.0')", + "value": "net8.0-windows10.0.19041.0" + }, + { + "condition": "((mauiPlatforms == 'windows' || mauiPlatforms == 'all') && targetFramework == 'net9.0')", + "value": "net9.0-windows10.0.19041.0" + } + ] + } + }, + "mauiPlatformsBasic": { + "type": "generated", + "generator": "join", + "replaces": "$MauiPlatformsBasic$", + "parameters": { + "symbols": [ + { + "type": "ref", + "value": "androidTarget" + }, + { + "type": "ref", + "value": "iosTarget" + }, + { + "type": "ref", + "value": "macosTarget" + } + ], + "removeEmptyValues": true, + "separator": ";" + } } + }, "guids": [ - "41168522-4247-4181-BE6B-CD561E266F1B", - "88992088-C7C5-47CF-87AB-FC26135729B8", - "AE40C775-AAE2-4310-8566-AA1EB3F79F04", - "B9762355-C28A-465A-91A1-9BE8B02EAC72" + "79254849-EE14-42B2-82CB-07A7D4FA3205", + "052AA0E1-BF65-4EE4-B6D3-112AE3350154", + "E5006009-F128-4902-AD10-D55E7942946A", + "D59E1426-E892-4863-9C68-E437124A32F5", + "E98BBAFF-DE97-48FB-B99E-019727405EFE" ], "postActions": [ { @@ -208,4 +363,4 @@ "continueOnError": true } ] -} \ No newline at end of file +} diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.sln b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.sln index 8b8351c..d5f488b 100644 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.sln +++ b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.sln @@ -3,39 +3,50 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.9.34310.174 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.Browser", "OpenSilverApplication.Browser\OpenSilverApplication.Browser.csproj", "{41168522-4247-4181-BE6B-CD561E266F1B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.Browser", "OpenSilverApplication.Browser\OpenSilverApplication.Browser.csproj", "{79254849-EE14-42B2-82CB-07A7D4FA3205}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenSilverApplication", "OpenSilverApplication\OpenSilverApplication.fsproj", "{052AA0E1-BF65-4EE4-B6D3-112AE3350154}" EndProject #if (operatingSystem == 'Windows_NT') -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.Simulator", "OpenSilverApplication.Simulator\OpenSilverApplication.Simulator.csproj", "{88992088-C7C5-47CF-87AB-FC26135729B8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.Simulator", "OpenSilverApplication.Simulator\OpenSilverApplication.Simulator.csproj", "{E5006009-F128-4902-AD10-D55E7942946A}" EndProject #endif -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenSilverApplication", "OpenSilverApplication\OpenSilverApplication.fsproj", "{AE40C775-AAE2-4310-8566-AA1EB3F79F04}" +#if (mauiPlatformsBasic != '' || windowsTarget != '') +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverApplication.MauiHybrid", "OpenSilverApplication.MauiHybrid\OpenSilverApplication.MauiHybrid.csproj", "{E98BBAFF-DE97-48FB-B99E-019727405EFE}" EndProject +#endif Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {41168522-4247-4181-BE6B-CD561E266F1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41168522-4247-4181-BE6B-CD561E266F1B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41168522-4247-4181-BE6B-CD561E266F1B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41168522-4247-4181-BE6B-CD561E266F1B}.Release|Any CPU.Build.0 = Release|Any CPU + {79254849-EE14-42B2-82CB-07A7D4FA3205}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {79254849-EE14-42B2-82CB-07A7D4FA3205}.Debug|Any CPU.Build.0 = Debug|Any CPU + {79254849-EE14-42B2-82CB-07A7D4FA3205}.Release|Any CPU.ActiveCfg = Release|Any CPU + {79254849-EE14-42B2-82CB-07A7D4FA3205}.Release|Any CPU.Build.0 = Release|Any CPU + {052AA0E1-BF65-4EE4-B6D3-112AE3350154}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {052AA0E1-BF65-4EE4-B6D3-112AE3350154}.Debug|Any CPU.Build.0 = Debug|Any CPU + {052AA0E1-BF65-4EE4-B6D3-112AE3350154}.Release|Any CPU.ActiveCfg = Release|Any CPU + {052AA0E1-BF65-4EE4-B6D3-112AE3350154}.Release|Any CPU.Build.0 = Release|Any CPU #if (operatingSystem == 'Windows_NT') - {88992088-C7C5-47CF-87AB-FC26135729B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88992088-C7C5-47CF-87AB-FC26135729B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {88992088-C7C5-47CF-87AB-FC26135729B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {88992088-C7C5-47CF-87AB-FC26135729B8}.Release|Any CPU.Build.0 = Release|Any CPU + {E5006009-F128-4902-AD10-D55E7942946A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5006009-F128-4902-AD10-D55E7942946A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5006009-F128-4902-AD10-D55E7942946A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5006009-F128-4902-AD10-D55E7942946A}.Release|Any CPU.Build.0 = Release|Any CPU + #endif + #if (mauiPlatformsBasic != '' || windowsTarget != '') + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E98BBAFF-DE97-48FB-B99E-019727405EFE}.Release|Any CPU.Build.0 = Release|Any CPU #endif - {AE40C775-AAE2-4310-8566-AA1EB3F79F04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AE40C775-AAE2-4310-8566-AA1EB3F79F04}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AE40C775-AAE2-4310-8566-AA1EB3F79F04}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AE40C775-AAE2-4310-8566-AA1EB3F79F04}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B9762355-C28A-465A-91A1-9BE8B02EAC72} + SolutionGuid = {D59E1426-E892-4863-9C68-E437124A32F5} EndGlobalSection EndGlobal diff --git a/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj b/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj index 26db473..305a5c5 100644 --- a/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj +++ b/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj @@ -36,6 +36,10 @@ + + + + - diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg index 9d63b65..2d846c2 100644 --- a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appicon.svg @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg index 21dfb25..d214073 100644 --- a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/AppIcon/appiconfg.svg @@ -1,8 +1,3 @@ - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg deleted file mode 100644 index abfaff2..0000000 --- a/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.MauiHybrid/Resources/Images/dotnet_bot.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From f5bcb911b79451701574088280c8a661db6df888 Mon Sep 17 00:00:00 2001 From: Iakov Lilo Date: Fri, 24 Jan 2025 13:42:46 +1100 Subject: [PATCH 5/6] Use MAUI Hybrid preview package version, hide Maui Platforms parameter --- .../OpenSilverApplication/.template.config/dotnetcli.host.json | 3 ++- .../C#/OpenSilverApplication/.template.config/template.json | 2 +- .../OpenSilverApplication/.template.config/dotnetcli.host.json | 3 ++- .../F#/OpenSilverApplication/.template.config/template.json | 2 +- src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj | 2 +- .../OpenSilverApplication/.template.config/dotnetcli.host.json | 3 ++- .../VB/OpenSilverApplication/.template.config/template.json | 2 +- 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json index ee00c1e..8f6f20a 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/dotnetcli.host.json @@ -3,7 +3,8 @@ "symbolInfo": { "mauiPlatforms": { "longName": "mauiPlatforms", - "shortName": "mp" + "shortName": "mp", + "isHidden": true } } } \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json index 69a5498..808c517 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json +++ b/src/OpenSilver.CLI/C#/OpenSilverApplication/.template.config/template.json @@ -176,7 +176,7 @@ "generator": "constant", "replaces": "$OpenSilverMauiHybridPackageVersion$", "parameters": { - "value": "3.1.2" + "value": "3.2.0-preview-2025-01-23-143554-64fb2e70" } }, "webAssemblyPackageVersion": { diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json index ee00c1e..8f6f20a 100644 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json +++ b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/dotnetcli.host.json @@ -3,7 +3,8 @@ "symbolInfo": { "mauiPlatforms": { "longName": "mauiPlatforms", - "shortName": "mp" + "shortName": "mp", + "isHidden": true } } } \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json index d398ae2..b1c7b4b 100644 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json +++ b/src/OpenSilver.CLI/F#/OpenSilverApplication/.template.config/template.json @@ -176,7 +176,7 @@ "generator": "constant", "replaces": "$OpenSilverMauiHybridPackageVersion$", "parameters": { - "value": "3.1.2" + "value": "3.2.0-preview-2025-01-23-143554-64fb2e70" } }, "webAssemblyPackageVersion": { diff --git a/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj b/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj index 305a5c5..2bbb795 100644 --- a/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj +++ b/src/OpenSilver.CLI/OpenSilver.CLI.Templates.csproj @@ -12,7 +12,7 @@ Template - 3.1.3 + 3.1.4 OpenSilver.Templates Opensilver CLI templates Userware diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/dotnetcli.host.json b/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/dotnetcli.host.json index ee00c1e..8f6f20a 100644 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/dotnetcli.host.json +++ b/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/dotnetcli.host.json @@ -3,7 +3,8 @@ "symbolInfo": { "mauiPlatforms": { "longName": "mauiPlatforms", - "shortName": "mp" + "shortName": "mp", + "isHidden": true } } } \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/template.json b/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/template.json index b06cfb7..1ab4b91 100644 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/template.json +++ b/src/OpenSilver.CLI/VB/OpenSilverApplication/.template.config/template.json @@ -176,7 +176,7 @@ "generator": "constant", "replaces": "$OpenSilverMauiHybridPackageVersion$", "parameters": { - "value": "3.1.2" + "value": "3.2.0-preview-2025-01-23-143554-64fb2e70" } }, "webAssemblyPackageVersion": { From e13630a27fabb4dc5ab67c50f9125b1cea740173 Mon Sep 17 00:00:00 2001 From: Iakov Lilo Date: Fri, 24 Jan 2025 13:46:26 +1100 Subject: [PATCH 6/6] Remove duplicated projects --- src/OpenSilver.CLI/.gitignore | 6 +- .../OpenSilverApplication.Simulator.csproj | 16 -- .../OpenSilverApplication.Browser/App.cs | 0 .../OpenSilverApplication.Browser.csproj | 2 +- .../Pages/Index.cs | 0 .../OpenSilverApplication.Browser/Program.cs | 0 .../Properties/launchSettings.json | 0 .../wwwroot/favicon.ico | Bin .../wwwroot/index.html | 0 .../wwwroot/loading-indicator.css | 0 .../wwwroot/modern/loading-animation.js | 0 .../wwwroot/modern/loading-indicator.css | 0 .../OpenSilverApplication.Simulator.csproj | 2 +- .../Startup.cs | 0 .../OpenSilverApplication.Browser/App.cs | 42 ----- .../OpenSilverApplication.Browser.csproj | 26 --- .../Pages/Index.cs | 21 --- .../OpenSilverApplication.Browser/Program.cs | 16 -- .../Properties/launchSettings.json | 30 ---- .../wwwroot/favicon.ico | Bin 128052 -> 0 bytes .../wwwroot/index.html | 109 ------------ .../wwwroot/loading-indicator.css | 165 ------------------ .../wwwroot/modern/loading-animation.js | 115 ------------ .../wwwroot/modern/loading-indicator.css | 70 -------- .../OpenSilverApplication.Simulator.csproj | 16 -- .../Startup.cs | 14 -- .../Tools/TemplateTweaker/Program.cs | 2 + .../OpenSilverApplication.Browser/App.cs | 42 ----- .../OpenSilverApplication.Browser.csproj | 26 --- .../Pages/Index.cs | 21 --- .../OpenSilverApplication.Browser/Program.cs | 16 -- .../Properties/launchSettings.json | 30 ---- .../wwwroot/favicon.ico | Bin 128052 -> 0 bytes .../wwwroot/index.html | 109 ------------ .../wwwroot/loading-indicator.css | 165 ------------------ .../wwwroot/modern/loading-animation.js | 115 ------------ .../wwwroot/modern/loading-indicator.css | 70 -------- .../Startup.cs | 14 -- 38 files changed, 7 insertions(+), 1253 deletions(-) delete mode 100644 src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/App.cs (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj (96%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/Pages/Index.cs (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/Program.cs (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/Properties/launchSettings.json (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/wwwroot/favicon.ico (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/wwwroot/index.html (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/wwwroot/loading-indicator.css (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js (100%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css (100%) rename src/OpenSilver.CLI/{VB/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj (91%) rename src/OpenSilver.CLI/{C#/OpenSilverApplication => CommonProjectTemplates}/OpenSilverApplication.Simulator/Startup.cs (100%) delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/App.cs delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj delete mode 100644 src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/App.cs delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css delete mode 100644 src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs diff --git a/src/OpenSilver.CLI/.gitignore b/src/OpenSilver.CLI/.gitignore index b36eeed..aebedfb 100644 --- a/src/OpenSilver.CLI/.gitignore +++ b/src/OpenSilver.CLI/.gitignore @@ -1,3 +1,3 @@ -C#/**/**/OpenSilverApplication.MauiHybrid -F#/**/**/OpenSilverApplication.MauiHybrid -VB/**/**/OpenSilverApplication.MauiHybrid \ No newline at end of file +C#/**/OpenSilverApplication.* +F#/**/OpenSilverApplication.* +VB/**/OpenSilverApplication.* \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj b/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj deleted file mode 100644 index 826f049..0000000 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - WinExe - net9.0-windows - - - - - - - - - - - \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/App.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/App.cs similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/App.cs rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/App.cs diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj similarity index 96% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj index 4aa7954..620f87d 100644 --- a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/Pages/Index.cs similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/Pages/Index.cs diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/Program.cs similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/Program.cs diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/Properties/launchSettings.json similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/Properties/launchSettings.json diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/favicon.ico similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/favicon.ico diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/index.html similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/index.html diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/loading-indicator.css similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/loading-indicator.css diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj similarity index 91% rename from src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj index 1b58f46..903b4a1 100644 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj +++ b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj @@ -10,7 +10,7 @@ - + \ No newline at end of file diff --git a/src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs b/src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Simulator/Startup.cs similarity index 100% rename from src/OpenSilver.CLI/C#/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs rename to src/OpenSilver.CLI/CommonProjectTemplates/OpenSilverApplication.Simulator/Startup.cs diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/App.cs b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/App.cs deleted file mode 100644 index 2a73757..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/App.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.CompilerServices; -using Microsoft.AspNetCore.Components.Rendering; -using Microsoft.AspNetCore.Components.Routing; - -namespace OpenSilverApplication.Browser -{ - public class App : ComponentBase - { - protected override void BuildRenderTree(RenderTreeBuilder builder) - { - builder.OpenComponent(0); - builder.AddAttribute(1, "AppAssembly", RuntimeHelpers.TypeCheck( - typeof(Program).Assembly - )); - builder.AddAttribute(2, "PreferExactMatches", RuntimeHelpers.TypeCheck( - true - )); - builder.AddAttribute(3, "Found", (RenderFragment)(routeData => builder2 => - { - builder2.OpenComponent(4); - builder2.AddAttribute(5, "RouteData", RuntimeHelpers.TypeCheck( - routeData - )); - builder2.CloseComponent(); - } - )); - builder.AddAttribute(7, "NotFound", (RenderFragment)(builder2 => - { - builder2.OpenComponent(8); - builder2.AddAttribute(9, "ChildContent", (RenderFragment)(builder3 => - { - builder3.AddMarkupContent(10, "

Sorry, there\'s nothing at this address.

"); - } - )); - builder2.CloseComponent(); - } - )); - builder.CloseComponent(); - } - } -} \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj deleted file mode 100644 index a91222c..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - net9.0 - 7 - true - false - - - - - - - - - - - - True - - - - - - - \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs deleted file mode 100644 index b9ba02e..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Rendering; -using System.Threading.Tasks; -using OpenSilver.WebAssembly; - -namespace OpenSilverApplication.Browser.Pages -{ - [Route("/")] - public class Index : ComponentBase - { - protected override void BuildRenderTree(RenderTreeBuilder __builder) - { - } - - protected async override Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - await Runner.RunApplicationAsync(); - } - } -} \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs deleted file mode 100644 index a654b19..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; -using System.Threading.Tasks; - -namespace OpenSilverApplication.Browser -{ - public class Program - { - public static async Task Main(string[] args) - { - var builder = WebAssemblyHostBuilder.CreateDefault(args); - builder.RootComponents.Add("#app"); - var host = builder.Build(); - await host.RunAsync(); - } - } -} diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json deleted file mode 100644 index e79929a..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:55591/", - "sslPort": 0 - } - }, - "profiles": { - "OpenSilverApplication.Browser": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "http://localhost:55592/" - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico deleted file mode 100644 index a4bff57dc00a25fdf5df329dd5c7afabc71050e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128052 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⁣+Q;iZ0G%Yob=vP_d;R4T7yR7cVH%b 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πk} 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 Slo^}*0ov*YYIQ1zsQ&|$m~=Y; diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html deleted file mode 100644 index f345f35..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - OpenSilverApplication - - - - - - - - - - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- - - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css deleted file mode 100644 index f85e049..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css +++ /dev/null @@ -1,165 +0,0 @@ -@keyframes loading-indicator-ball-anim { - 0% { - transform: translate(-50%, -50%) scale(0); - opacity: 0; - } - - 25% { - transform: translate(-50%, -50%) scale(1); - opacity: 1; - } - - 32% { - transform: translate(-50%, -50%) scale(0.5); - opacity: 0; - } - - 100% { - transform: translate(-50%, -50%) scale(0); - opacity: 0; - } -} - -body { - margin: 0; -} - -.loading-indicator-wrapper { - display: flex; - justify-content: center; - align-items: center; - width: 100vw; - height: 100vh; - background-color: #f0f0f0; /* Lighter background */ -} - -.loading-indicator { - position: relative; - width: 80px; - height: 80px; - pointer-events: none; -} - -.loading-indicator-ball { - will-change: transform, opacity; - position: absolute; - width: 16%; - height: 16%; - border-radius: 50%; - background: #3b8eea; /* Light blue */ - filter: blur(3px); /* Slightly lighter blur */ - opacity: 0; - animation: loading-indicator-ball-anim 9s infinite; -} - - .loading-indicator-ball:nth-child(1) { - left: 85.3553390593%; - top: 85.3553390593%; - animation-delay: 0s; - } - - .loading-indicator-ball:nth-child(2) { - left: 100%; - top: 50%; - animation-delay: 0.2s; - } - - .loading-indicator-ball:nth-child(3) { - left: 85.3553390593%; - top: 14.6446609407%; - --rotation: calc(-45deg * 3); - animation-delay: 0.4s; - } - - .loading-indicator-ball:nth-child(4) { - left: 50%; - top: 0%; - animation-delay: 0.6s; - } - - .loading-indicator-ball:nth-child(5) { - left: 14.6446609407%; - top: 14.6446609407%; - animation-delay: 0.8s; - } - - .loading-indicator-ball:nth-child(6) { - left: 0%; - top: 50%; - animation-delay: 1.0s; - } - - .loading-indicator-ball:nth-child(7) { - left: 14.6446609407%; - top: 85.3553390593%; - animation-delay: 1.2s; - } - - .loading-indicator-ball:nth-child(8) { - left: 50%; - top: 100%; - animation-delay: 1.4s; - } - - .loading-indicator-ball:nth-child(9) { - left: 50%; - top: 100%; - animation-delay: 4.5s; - } - - .loading-indicator-ball:nth-child(10) { - left: 14.6446609407%; - top: 85.3553390593%; - animation-delay: 4.7s; - } - - .loading-indicator-ball:nth-child(11) { - left: 0%; - top: 50%; - animation-delay: 4.9s; - } - - .loading-indicator-ball:nth-child(12) { - left: 14.6446609407%; - top: 14.6446609407%; - animation-delay: 5.1s; - } - - .loading-indicator-ball:nth-child(13) { - left: 50%; - top: 0%; - animation-delay: 5.3s; - } - - .loading-indicator-ball:nth-child(14) { - left: 85.3553390593%; - top: 14.6446609407%; - animation-delay: 5.5s; - } - - .loading-indicator-ball:nth-child(15) { - left: 100%; - top: 50%; - animation-delay: 5.7s; - } - - .loading-indicator-ball:nth-child(16) { - left: 85.3553390593%; - top: 85.3553390593%; - animation-delay: 5.9s; - } - -.loading-indicator-text { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; -} - - .loading-indicator-text:after { - content: var(--blazor-load-percentage-text, "Loading..."); - color: #555; /* Darker text for contrast */ - font-size: 1.2rem; - font-family: 'Arial', sans-serif; - } diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js deleted file mode 100644 index 2495622..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js +++ /dev/null @@ -1,115 +0,0 @@ -(function () { - let lastAnimationTime = 0; - const ANIMATION_THROTTLE_DELAY = 150; // Minimum time between animations - const ANIMATION_DURATION = 150; // Total animation duration - - const odometerClass = "opensilver-odometer"; - - function startLoader() { - const count = document.querySelectorAll("." + odometerClass); - const loader = document.querySelector(".opensilver-loader-progress-bar"); - const loaderProgress = document.querySelector(".opensilver-loader-progress"); - if (!count || !loader) return; - - loader.style.width = "0%"; - const observer = new MutationObserver(updateCount); - - function updateCount() { - const loadPercentageText = getComputedStyle(document.documentElement) - .getPropertyValue("--blazor-load-percentage-text") - .trim(); - const loadPercentage = parseInt(loadPercentageText.replace(/"/g, "")); - const currentValue = isNaN(loadPercentage) ? 0 : loadPercentage; - - // Always animate 100 regardless of throttling - if (currentValue === 100) { - animateCounter(currentValue, true); - loader.style.width = "100%"; - loaderProgress.style["border-right"] = "none"; - observer.disconnect(); - return; - } - - // Throttle animations to prevent too frequent updates - const now = Date.now(); - if (now - lastAnimationTime >= ANIMATION_THROTTLE_DELAY) { - animateCounter(currentValue); - lastAnimationTime = now; - } - - loader.style.width = currentValue + "%"; - } - - observer.observe(document.documentElement, { - attributes: true, - attributeFilter: ["style"], - }); - updateCount(); - } - - function animateCounter(newValue, force = false) { - const odometers = Array.from(document.querySelectorAll("." + odometerClass)); - const newValueString = String(newValue).padStart(3, "0"); - - for (let index = odometers.length - 1; index > -1; index--) { - const element = odometers[index]; - - if (force) { - const finalOdometer = document.createElement("div"); - finalOdometer.textContent = newValueString[index]; - finalOdometer.classList.add(odometerClass); - element.replaceWith(finalOdometer); - continue; - } - - if (element.textContent === "") { - element.textContent = "0"; - } - const currentValue = element.textContent || "0"; - - if (newValueString[index] !== currentValue) { - element.style.transition = `transform ${ANIMATION_DURATION}ms, opacity ${ANIMATION_DURATION}ms`; - element.style.transform = "translateY(-4px)"; - element.style.opacity = "0.5"; - - setTimeout(() => { - element.textContent = newValueString[index]; - element.style.transform = "translateY(4px)"; - element.style.opacity = "0.5"; - - setTimeout(() => { - element.style.transform = "translateY(0)"; - element.style.opacity = "1"; - }, ANIMATION_DURATION / 2); - }, ANIMATION_DURATION / 2); - } - }; - } - - function onDomReady() { - startLoader(); - startAnimations(); - } - - function startAnimations() { - const loaderProgress = document.querySelector(".opensilver-loader-progress"); - const counterContainer = document.querySelector(".opensilver-counter-container"); - - if (loaderProgress) { - loaderProgress.style.transition = "width 1.25s, opacity 1.25s"; - loaderProgress.style.width = "60vw"; - loaderProgress.style.opacity = "1"; - } - - if (counterContainer) { - counterContainer.style.transition = "opacity 0.3s"; - counterContainer.style.opacity = "1"; - } - } - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', onDomReady); - } else { - onDomReady(); - } -})(); \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css deleted file mode 100644 index 66c7776..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css +++ /dev/null @@ -1,70 +0,0 @@ -html body { - background: var(--opensilver-loading-background-color); -} - -.opensilver-loading-indicator { - position: fixed; - top: 0; - left: 0; - display: flex; - justify-content: center; - align-items: center; - pointer-events: none; - height: 100vh; - width: 100vw; - overflow: hidden; - background: var(--opensilver-loading-background-color); -} - -.opensilver-loading-indicator .opensilver-loader-container { - display: flex; - justify-content: center; - align-items: center; - gap: 8px; -} - -.opensilver-loading-indicator .opensilver-loader { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 10px; - width: 100%; - height: 100%; - margin-left: 20px; -} - -.opensilver-loading-indicator .opensilver-loader-progress { - display: flex; - justify-content: flex-start; - align-items: center; - width: 0; - max-width: 200px; - height: 4px; - border-radius: 12px; - background-color: var(--opensilver-loading-progress-bg); - border-bottom: 1px var(--opensilver-loading-progress-border-color) solid; - border-right: 1px var(--opensilver-loading-progress-border-color) solid; -} - -.opensilver-loading-indicator .opensilver-loader-progress-bar { - width: 0%; - height: 5px; - border-radius: 12px; - background-color: var(--opensilver-loading-progress-bar-color); -} - -.opensilver-loading-indicator .opensilver-counter-container { - align-self: end; - display: flex; - justify-content: end; - align-items: center; - font-family: sans-serif; - font-size: 0.8rem; - font-weight: 500; - width: 100%; - min-width: 26px; - line-height: 1; - gap: 1px; - color: var(--opensilver-loading-counter-color); -} diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj deleted file mode 100644 index 2234dd3..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/OpenSilverApplication.Simulator.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - WinExe - net9.0-windows - - - - - - - - - - - \ No newline at end of file diff --git a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs b/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs deleted file mode 100644 index 924abe0..0000000 --- a/src/OpenSilver.CLI/F#/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs +++ /dev/null @@ -1,14 +0,0 @@ -using OpenSilver.Simulator; -using System; - -namespace OpenSilverApplication.Simulator -{ - internal static class Startup - { - [STAThread] - static int Main(string[] args) - { - return SimulatorLauncher.Start(typeof(App)); - } - } -} diff --git a/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs b/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs index 8cb35d1..cad6e5c 100644 --- a/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs +++ b/src/OpenSilver.CLI/Tools/TemplateTweaker/Program.cs @@ -10,6 +10,8 @@ public static void Main() // If you have multiple "common" folders, list them all here: var sourceFolders = new[] { + "CommonProjectTemplates/OpenSilverApplication.Browser", + "CommonProjectTemplates/OpenSilverApplication.Simulator", "CommonProjectTemplates/OpenSilverApplication.MauiHybrid" // Add more sources if needed... }; diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/App.cs b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/App.cs deleted file mode 100644 index 2a73757..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/App.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.CompilerServices; -using Microsoft.AspNetCore.Components.Rendering; -using Microsoft.AspNetCore.Components.Routing; - -namespace OpenSilverApplication.Browser -{ - public class App : ComponentBase - { - protected override void BuildRenderTree(RenderTreeBuilder builder) - { - builder.OpenComponent(0); - builder.AddAttribute(1, "AppAssembly", RuntimeHelpers.TypeCheck( - typeof(Program).Assembly - )); - builder.AddAttribute(2, "PreferExactMatches", RuntimeHelpers.TypeCheck( - true - )); - builder.AddAttribute(3, "Found", (RenderFragment)(routeData => builder2 => - { - builder2.OpenComponent(4); - builder2.AddAttribute(5, "RouteData", RuntimeHelpers.TypeCheck( - routeData - )); - builder2.CloseComponent(); - } - )); - builder.AddAttribute(7, "NotFound", (RenderFragment)(builder2 => - { - builder2.OpenComponent(8); - builder2.AddAttribute(9, "ChildContent", (RenderFragment)(builder3 => - { - builder3.AddMarkupContent(10, "

Sorry, there\'s nothing at this address.

"); - } - )); - builder2.CloseComponent(); - } - )); - builder.CloseComponent(); - } - } -} \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj deleted file mode 100644 index f310836..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/OpenSilverApplication.Browser.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - net9.0 - 7 - true - false - - - - - - - - - - - - True - - - - - - - \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs deleted file mode 100644 index b9ba02e..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Pages/Index.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Rendering; -using System.Threading.Tasks; -using OpenSilver.WebAssembly; - -namespace OpenSilverApplication.Browser.Pages -{ - [Route("/")] - public class Index : ComponentBase - { - protected override void BuildRenderTree(RenderTreeBuilder __builder) - { - } - - protected async override Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - await Runner.RunApplicationAsync(); - } - } -} \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs deleted file mode 100644 index a654b19..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Program.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; -using System.Threading.Tasks; - -namespace OpenSilverApplication.Browser -{ - public class Program - { - public static async Task Main(string[] args) - { - var builder = WebAssemblyHostBuilder.CreateDefault(args); - builder.RootComponents.Add("#app"); - var host = builder.Build(); - await host.RunAsync(); - } - } -} diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json deleted file mode 100644 index e79929a..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:55591/", - "sslPort": 0 - } - }, - "profiles": { - "OpenSilverApplication.Browser": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "http://localhost:55592/" - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/favicon.ico deleted file mode 100644 index a4bff57dc00a25fdf5df329dd5c7afabc71050e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128052 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
^@hrEQE#o3K7)B7FNU+&$N?PBI#b!oHi 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⁣+Q;iZ0G%Yob=vP_d;R4T7yR7cVH%b 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πk} z0kRu?l%8vX6g(2+nL20}kdgcKr0kC3sd8(6!keEKQuT(msK4>yb98;Q8`7aqbHPB==vfu$xce2VsOHs-@UcB!`TY}>i@L#NJM8Cw z1Q=04x@iDx84sq`mo6*+W-Yvl0kbM2Hk-{j&GAOsUSb0h=*IHa(Gj*it9D(gRo}`Z z5R9>O3X9DB3$6pa1Uv3TRO_t0wHnH5hFm@^*@L%`s8k~Ui%0wRctP!)=Qu+}e0Wzs z--ooh^fkmu+6%{iC`f*e4ZA$j{~E$64`xC6@%_38u^imW}Vg3`mzPrAIOAMfjch1Gp_`E|n zVV7S=zhT7gE&AyK@OSZfrI9;$NF)+qjyJqY*l<41>|&(fj%U+;thEsZRfE%askI1x zAr~fizwXOT9-FR;ALK4dR?n;y0kc2SY6C=F2GE9_2G2+lojbCEz?F22Q0^!fk-9LI>S z!|_xOjr8pv6JEMJpco~5XPCYyr%{U!Kw;voObwooKcr^bCJ_QLBaZl;Hfz4sv&5xR z3p9`19nSbS^fS{odnfmBX-+lpr3&HFyT)x@7(^RfO*z#Yud-F>$0M_eXZVZQ{w zybVyO=DnmoO|>6S4SU|tUG?9FGGlvN&HhLERvy48_(X?T(e|m+bdJ!d>if-4TCl)M zq}bkr$`k2BLLy<1H;#C$yf1Iv0iR$(6W41J7Ah!bDtuz3G?9UpmPyAs3wgkyCXjmi z3VCaV$_%!LO({L%UU}v7jR4)ihpED@ZOO`~E_f;KUroej%1F;~;Nz^PI*i8H6_RXe z#;Hg_H;n}3oE6a7lkDGyvfH>*=cTJw>CHy6 zlTwM=zwj&_d>tBp!rG59by6dF@*WN+j3OvhRhKV#ZYG~W*tK3v?kkeYt?f*&F`Lm4 zhxa{$3$wtXTqGpx@1c6MXbsD{t^1!Z$pqVPmgGvjtCbZ*SbI0tCLtm~|L9ZrK%Z_h z37fH_Uy69oR^pWHX!ga(v)<7}Rbh4t>pb^>7f?KU4-XfY26}xCzCm8=NL>$`=Y^9D zmFE0-*S5;{*1niGYwA8rdz7bNQf!*YA3xCB^u*fkyeVdWc(OtfOi3I(ABM`7REf}5 zUA;jD>pmUr9L8}0fyy|w#A>rN?>)9j%+i<}<_WM!-T8b2uS^{T2z2{pK8R|liDGX; zkWdBay~T;^+9L02{<6EMusL|eFiLNGBK2?>yR!;oKTJS@i85`MO2Tr?2bX>z#lGyD zoAz}R4u|NW=6<)kz`6D!VI)0rY@jOtHU8N4p!HwsGMhyDt&T%($4aUVKa8LTpckV` zGLH2}`u2+?+|6Nb>9(7pVqHM-h2DPX4Q!I0IHY0Jf1w-8OvXQt%<*ofIdCFmQ5?(; zdnI&Pn%Zb5nqILhTwx}g7g4ZP63z5DcV@xj(gfCzrJ&DyL6X!WMlvL3wX#EE9p?y1 zR-S;us?lRJOpyzcR0VUfj+cIJyMObl3t&J)jQ_nO5ZAwCPb@i#8}=L(6d{g2R_Vo2 zIR5BJg>1%!yJfmScpg=|-+bd&0w$DxCw0QbVshT5t8gKUH^%nX0%l#fmTz*G3sDmFcFg{30d$=l)#mx@5k%#a4DScFo}b zOq~*Gka5nXvc}nYE)WG5medMRTM3I#l+dLGOaim5G8l>&Zy`3)%0Kofog!ChtQ$BG zJ(M-b^q=C3yYaeZQA{6(0ZLgnh7AHlPjlkWv_a0h_3F!HjjE=nC(rBqj5%=5l>*-BWv&ei_V_Vb*?~^85jS;w@Ve zV_{@{VJ~j;@}uC4h=VMWaEGE#g5B%&3;u_+qS>k&C5{=B8jQB4!c#GFDJnXq4L!U{ zkRptsE!hTioCwLKvT?0bCxs!~Kj-+fil6&XApXZ`YPDj(FSw{z%Qyf`)7hS?G4+|{ ze@`6Es|a6~`Zrhtm1vJK$!YwZ{Z$Y_6h}c#<^>l1uJ-|;6njkoNX-|aS(b|cjs7&d zhZMQrqYaT6C`K`7`Y;RNx8Rd`j@&2c@!0ha9ARUho}2b4skSeyB*PN#>ZR&t*C7aCD{DV}GnsqF9G2tH{hf7&eAs4c1{pYd0Cgi3eXb8g%Z3W z!GSg;vhF{3ieslNkF}L~O!#*_47mUKB-@ZFAjmci7IOXn)wAvY9qjbYonqE1NP44) Slo^}*0ov*YYIQ1zsQ&|$m~=Y; diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html deleted file mode 100644 index f345f35..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - OpenSilverApplication - - - - - - - - - - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- - - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css deleted file mode 100644 index f85e049..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/loading-indicator.css +++ /dev/null @@ -1,165 +0,0 @@ -@keyframes loading-indicator-ball-anim { - 0% { - transform: translate(-50%, -50%) scale(0); - opacity: 0; - } - - 25% { - transform: translate(-50%, -50%) scale(1); - opacity: 1; - } - - 32% { - transform: translate(-50%, -50%) scale(0.5); - opacity: 0; - } - - 100% { - transform: translate(-50%, -50%) scale(0); - opacity: 0; - } -} - -body { - margin: 0; -} - -.loading-indicator-wrapper { - display: flex; - justify-content: center; - align-items: center; - width: 100vw; - height: 100vh; - background-color: #f0f0f0; /* Lighter background */ -} - -.loading-indicator { - position: relative; - width: 80px; - height: 80px; - pointer-events: none; -} - -.loading-indicator-ball { - will-change: transform, opacity; - position: absolute; - width: 16%; - height: 16%; - border-radius: 50%; - background: #3b8eea; /* Light blue */ - filter: blur(3px); /* Slightly lighter blur */ - opacity: 0; - animation: loading-indicator-ball-anim 9s infinite; -} - - .loading-indicator-ball:nth-child(1) { - left: 85.3553390593%; - top: 85.3553390593%; - animation-delay: 0s; - } - - .loading-indicator-ball:nth-child(2) { - left: 100%; - top: 50%; - animation-delay: 0.2s; - } - - .loading-indicator-ball:nth-child(3) { - left: 85.3553390593%; - top: 14.6446609407%; - --rotation: calc(-45deg * 3); - animation-delay: 0.4s; - } - - .loading-indicator-ball:nth-child(4) { - left: 50%; - top: 0%; - animation-delay: 0.6s; - } - - .loading-indicator-ball:nth-child(5) { - left: 14.6446609407%; - top: 14.6446609407%; - animation-delay: 0.8s; - } - - .loading-indicator-ball:nth-child(6) { - left: 0%; - top: 50%; - animation-delay: 1.0s; - } - - .loading-indicator-ball:nth-child(7) { - left: 14.6446609407%; - top: 85.3553390593%; - animation-delay: 1.2s; - } - - .loading-indicator-ball:nth-child(8) { - left: 50%; - top: 100%; - animation-delay: 1.4s; - } - - .loading-indicator-ball:nth-child(9) { - left: 50%; - top: 100%; - animation-delay: 4.5s; - } - - .loading-indicator-ball:nth-child(10) { - left: 14.6446609407%; - top: 85.3553390593%; - animation-delay: 4.7s; - } - - .loading-indicator-ball:nth-child(11) { - left: 0%; - top: 50%; - animation-delay: 4.9s; - } - - .loading-indicator-ball:nth-child(12) { - left: 14.6446609407%; - top: 14.6446609407%; - animation-delay: 5.1s; - } - - .loading-indicator-ball:nth-child(13) { - left: 50%; - top: 0%; - animation-delay: 5.3s; - } - - .loading-indicator-ball:nth-child(14) { - left: 85.3553390593%; - top: 14.6446609407%; - animation-delay: 5.5s; - } - - .loading-indicator-ball:nth-child(15) { - left: 100%; - top: 50%; - animation-delay: 5.7s; - } - - .loading-indicator-ball:nth-child(16) { - left: 85.3553390593%; - top: 85.3553390593%; - animation-delay: 5.9s; - } - -.loading-indicator-text { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; -} - - .loading-indicator-text:after { - content: var(--blazor-load-percentage-text, "Loading..."); - color: #555; /* Darker text for contrast */ - font-size: 1.2rem; - font-family: 'Arial', sans-serif; - } diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js deleted file mode 100644 index 2495622..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-animation.js +++ /dev/null @@ -1,115 +0,0 @@ -(function () { - let lastAnimationTime = 0; - const ANIMATION_THROTTLE_DELAY = 150; // Minimum time between animations - const ANIMATION_DURATION = 150; // Total animation duration - - const odometerClass = "opensilver-odometer"; - - function startLoader() { - const count = document.querySelectorAll("." + odometerClass); - const loader = document.querySelector(".opensilver-loader-progress-bar"); - const loaderProgress = document.querySelector(".opensilver-loader-progress"); - if (!count || !loader) return; - - loader.style.width = "0%"; - const observer = new MutationObserver(updateCount); - - function updateCount() { - const loadPercentageText = getComputedStyle(document.documentElement) - .getPropertyValue("--blazor-load-percentage-text") - .trim(); - const loadPercentage = parseInt(loadPercentageText.replace(/"/g, "")); - const currentValue = isNaN(loadPercentage) ? 0 : loadPercentage; - - // Always animate 100 regardless of throttling - if (currentValue === 100) { - animateCounter(currentValue, true); - loader.style.width = "100%"; - loaderProgress.style["border-right"] = "none"; - observer.disconnect(); - return; - } - - // Throttle animations to prevent too frequent updates - const now = Date.now(); - if (now - lastAnimationTime >= ANIMATION_THROTTLE_DELAY) { - animateCounter(currentValue); - lastAnimationTime = now; - } - - loader.style.width = currentValue + "%"; - } - - observer.observe(document.documentElement, { - attributes: true, - attributeFilter: ["style"], - }); - updateCount(); - } - - function animateCounter(newValue, force = false) { - const odometers = Array.from(document.querySelectorAll("." + odometerClass)); - const newValueString = String(newValue).padStart(3, "0"); - - for (let index = odometers.length - 1; index > -1; index--) { - const element = odometers[index]; - - if (force) { - const finalOdometer = document.createElement("div"); - finalOdometer.textContent = newValueString[index]; - finalOdometer.classList.add(odometerClass); - element.replaceWith(finalOdometer); - continue; - } - - if (element.textContent === "") { - element.textContent = "0"; - } - const currentValue = element.textContent || "0"; - - if (newValueString[index] !== currentValue) { - element.style.transition = `transform ${ANIMATION_DURATION}ms, opacity ${ANIMATION_DURATION}ms`; - element.style.transform = "translateY(-4px)"; - element.style.opacity = "0.5"; - - setTimeout(() => { - element.textContent = newValueString[index]; - element.style.transform = "translateY(4px)"; - element.style.opacity = "0.5"; - - setTimeout(() => { - element.style.transform = "translateY(0)"; - element.style.opacity = "1"; - }, ANIMATION_DURATION / 2); - }, ANIMATION_DURATION / 2); - } - }; - } - - function onDomReady() { - startLoader(); - startAnimations(); - } - - function startAnimations() { - const loaderProgress = document.querySelector(".opensilver-loader-progress"); - const counterContainer = document.querySelector(".opensilver-counter-container"); - - if (loaderProgress) { - loaderProgress.style.transition = "width 1.25s, opacity 1.25s"; - loaderProgress.style.width = "60vw"; - loaderProgress.style.opacity = "1"; - } - - if (counterContainer) { - counterContainer.style.transition = "opacity 0.3s"; - counterContainer.style.opacity = "1"; - } - } - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', onDomReady); - } else { - onDomReady(); - } -})(); \ No newline at end of file diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css deleted file mode 100644 index 66c7776..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Browser/wwwroot/modern/loading-indicator.css +++ /dev/null @@ -1,70 +0,0 @@ -html body { - background: var(--opensilver-loading-background-color); -} - -.opensilver-loading-indicator { - position: fixed; - top: 0; - left: 0; - display: flex; - justify-content: center; - align-items: center; - pointer-events: none; - height: 100vh; - width: 100vw; - overflow: hidden; - background: var(--opensilver-loading-background-color); -} - -.opensilver-loading-indicator .opensilver-loader-container { - display: flex; - justify-content: center; - align-items: center; - gap: 8px; -} - -.opensilver-loading-indicator .opensilver-loader { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 10px; - width: 100%; - height: 100%; - margin-left: 20px; -} - -.opensilver-loading-indicator .opensilver-loader-progress { - display: flex; - justify-content: flex-start; - align-items: center; - width: 0; - max-width: 200px; - height: 4px; - border-radius: 12px; - background-color: var(--opensilver-loading-progress-bg); - border-bottom: 1px var(--opensilver-loading-progress-border-color) solid; - border-right: 1px var(--opensilver-loading-progress-border-color) solid; -} - -.opensilver-loading-indicator .opensilver-loader-progress-bar { - width: 0%; - height: 5px; - border-radius: 12px; - background-color: var(--opensilver-loading-progress-bar-color); -} - -.opensilver-loading-indicator .opensilver-counter-container { - align-self: end; - display: flex; - justify-content: end; - align-items: center; - font-family: sans-serif; - font-size: 0.8rem; - font-weight: 500; - width: 100%; - min-width: 26px; - line-height: 1; - gap: 1px; - color: var(--opensilver-loading-counter-color); -} diff --git a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs b/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs deleted file mode 100644 index 924abe0..0000000 --- a/src/OpenSilver.CLI/VB/OpenSilverApplication/OpenSilverApplication.Simulator/Startup.cs +++ /dev/null @@ -1,14 +0,0 @@ -using OpenSilver.Simulator; -using System; - -namespace OpenSilverApplication.Simulator -{ - internal static class Startup - { - [STAThread] - static int Main(string[] args) - { - return SimulatorLauncher.Start(typeof(App)); - } - } -}