EmbedSample.Browser.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Runtime.InteropServices.JavaScript;
  3. using Avalonia.Platform;
  4. using Avalonia.Browser;
  5. using ControlCatalog.Pages;
  6. using System.Threading.Tasks;
  7. namespace ControlCatalog.Browser;
  8. public class EmbedSampleWeb : INativeDemoControl
  9. {
  10. public IPlatformHandle CreateControl(bool isSecond, IPlatformHandle parent, Func<IPlatformHandle> createDefault)
  11. {
  12. if (isSecond)
  13. {
  14. var iframe = EmbedInterop.CreateElement("iframe");
  15. iframe.SetProperty("src", "https://www.youtube.com/embed/kZCIporjJ70");
  16. return new JSObjectControlHandle(iframe);
  17. }
  18. else
  19. {
  20. var parentContainer = (JSObjectControlHandle)createDefault();
  21. AddButton(parentContainer.Object);
  22. return parentContainer;
  23. static async void AddButton(JSObject parent)
  24. {
  25. await JSHost.ImportAsync("embed.js", "./embed.js");
  26. EmbedInterop.AddAppButton(parent);
  27. }
  28. }
  29. }
  30. }
  31. internal static partial class EmbedInterop
  32. {
  33. [JSImport("globalThis.document.createElement")]
  34. public static partial JSObject CreateElement(string tagName);
  35. [JSImport("addAppButton", "embed.js")]
  36. public static partial void AddAppButton(JSObject parentObject);
  37. }