12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using System;
- using System.Runtime.InteropServices.JavaScript;
- using Avalonia.Platform;
- using Avalonia.Browser;
- using ControlCatalog.Pages;
- using System.Threading.Tasks;
- namespace ControlCatalog.Browser;
- public class EmbedSampleWeb : INativeDemoControl
- {
- public IPlatformHandle CreateControl(bool isSecond, IPlatformHandle parent, Func<IPlatformHandle> createDefault)
- {
- if (isSecond)
- {
- var iframe = EmbedInterop.CreateElement("iframe");
- iframe.SetProperty("src", "https://www.youtube.com/embed/kZCIporjJ70");
- return new JSObjectControlHandle(iframe);
- }
- else
- {
- var parentContainer = (JSObjectControlHandle)createDefault();
- AddButton(parentContainer.Object);
- return parentContainer;
- static async void AddButton(JSObject parent)
- {
- await JSHost.ImportAsync("embed.js", "../embed.js");
- EmbedInterop.AddAppButton(parent);
- }
- }
- }
- }
- internal static partial class EmbedInterop
- {
- [JSImport("globalThis.document.createElement")]
- public static partial JSObject CreateElement(string tagName);
- [JSImport("addAppButton", "embed.js")]
- public static partial void AddAppButton(JSObject parentObject);
- }
|