EmbedSample.Browser.cs 1.2 KB

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