diff --git a/_framework/Avalonia.Base.wasm b/_framework/Avalonia.Base.wasm index 48896f9..fce3034 100644 Binary files a/_framework/Avalonia.Base.wasm and b/_framework/Avalonia.Base.wasm differ diff --git a/_framework/Avalonia.Base.wasm.br b/_framework/Avalonia.Base.wasm.br index 5423aa5..d6b0abc 100644 Binary files a/_framework/Avalonia.Base.wasm.br and b/_framework/Avalonia.Base.wasm.br differ diff --git a/_framework/Avalonia.Base.wasm.gz b/_framework/Avalonia.Base.wasm.gz index 76a736d..bf9648d 100644 Binary files a/_framework/Avalonia.Base.wasm.gz and b/_framework/Avalonia.Base.wasm.gz differ diff --git a/_framework/Avalonia.Browser.wasm b/_framework/Avalonia.Browser.wasm index c86eefa..1fdd89f 100644 Binary files a/_framework/Avalonia.Browser.wasm and b/_framework/Avalonia.Browser.wasm differ diff --git a/_framework/Avalonia.Browser.wasm.br b/_framework/Avalonia.Browser.wasm.br index a74157a..f88ea7b 100644 Binary files a/_framework/Avalonia.Browser.wasm.br and b/_framework/Avalonia.Browser.wasm.br differ diff --git a/_framework/Avalonia.Browser.wasm.gz b/_framework/Avalonia.Browser.wasm.gz index f7d25a5..49812a6 100644 Binary files a/_framework/Avalonia.Browser.wasm.gz and b/_framework/Avalonia.Browser.wasm.gz differ diff --git a/_framework/Avalonia.Controls.ColorPicker.wasm b/_framework/Avalonia.Controls.ColorPicker.wasm index 78c406b..801d2b3 100644 Binary files a/_framework/Avalonia.Controls.ColorPicker.wasm and b/_framework/Avalonia.Controls.ColorPicker.wasm differ diff --git a/_framework/Avalonia.Controls.ColorPicker.wasm.br b/_framework/Avalonia.Controls.ColorPicker.wasm.br index ee5a573..b3e3816 100644 Binary files a/_framework/Avalonia.Controls.ColorPicker.wasm.br and b/_framework/Avalonia.Controls.ColorPicker.wasm.br differ diff --git a/_framework/Avalonia.Controls.ColorPicker.wasm.gz b/_framework/Avalonia.Controls.ColorPicker.wasm.gz index fdf61c8..7db627d 100644 Binary files a/_framework/Avalonia.Controls.ColorPicker.wasm.gz and b/_framework/Avalonia.Controls.ColorPicker.wasm.gz differ diff --git a/_framework/Avalonia.Controls.DataGrid.wasm b/_framework/Avalonia.Controls.DataGrid.wasm index 4b1861f..e3a075f 100644 Binary files a/_framework/Avalonia.Controls.DataGrid.wasm and b/_framework/Avalonia.Controls.DataGrid.wasm differ diff --git a/_framework/Avalonia.Controls.DataGrid.wasm.br b/_framework/Avalonia.Controls.DataGrid.wasm.br index 8c91064..49141e0 100644 Binary files a/_framework/Avalonia.Controls.DataGrid.wasm.br and b/_framework/Avalonia.Controls.DataGrid.wasm.br differ diff --git a/_framework/Avalonia.Controls.DataGrid.wasm.gz b/_framework/Avalonia.Controls.DataGrid.wasm.gz index 2d7dba8..24b647c 100644 Binary files a/_framework/Avalonia.Controls.DataGrid.wasm.gz and b/_framework/Avalonia.Controls.DataGrid.wasm.gz differ diff --git a/_framework/Avalonia.Controls.wasm b/_framework/Avalonia.Controls.wasm index 0c6069a..ff88819 100644 Binary files a/_framework/Avalonia.Controls.wasm and b/_framework/Avalonia.Controls.wasm differ diff --git a/_framework/Avalonia.Controls.wasm.br b/_framework/Avalonia.Controls.wasm.br index 8536e58..e2722b5 100644 Binary files a/_framework/Avalonia.Controls.wasm.br and b/_framework/Avalonia.Controls.wasm.br differ diff --git a/_framework/Avalonia.Controls.wasm.gz b/_framework/Avalonia.Controls.wasm.gz index 4d42383..ecdf148 100644 Binary files a/_framework/Avalonia.Controls.wasm.gz and b/_framework/Avalonia.Controls.wasm.gz differ diff --git a/_framework/Avalonia.DesignerSupport.wasm b/_framework/Avalonia.DesignerSupport.wasm index 21c2c81..c2c8659 100644 Binary files a/_framework/Avalonia.DesignerSupport.wasm and b/_framework/Avalonia.DesignerSupport.wasm differ diff --git a/_framework/Avalonia.DesignerSupport.wasm.br b/_framework/Avalonia.DesignerSupport.wasm.br index 62b03fb..b74dd92 100644 Binary files a/_framework/Avalonia.DesignerSupport.wasm.br and b/_framework/Avalonia.DesignerSupport.wasm.br differ diff --git a/_framework/Avalonia.DesignerSupport.wasm.gz b/_framework/Avalonia.DesignerSupport.wasm.gz index c75b5b1..6afa7af 100644 Binary files a/_framework/Avalonia.DesignerSupport.wasm.gz and b/_framework/Avalonia.DesignerSupport.wasm.gz differ diff --git a/_framework/Avalonia.Dialogs.wasm b/_framework/Avalonia.Dialogs.wasm index 96ee46e..0c14105 100644 Binary files a/_framework/Avalonia.Dialogs.wasm and b/_framework/Avalonia.Dialogs.wasm differ diff --git a/_framework/Avalonia.Dialogs.wasm.br b/_framework/Avalonia.Dialogs.wasm.br index f657992..bd461bb 100644 Binary files a/_framework/Avalonia.Dialogs.wasm.br and b/_framework/Avalonia.Dialogs.wasm.br differ diff --git a/_framework/Avalonia.Dialogs.wasm.gz b/_framework/Avalonia.Dialogs.wasm.gz index 6af463a..45a8647 100644 Binary files a/_framework/Avalonia.Dialogs.wasm.gz and b/_framework/Avalonia.Dialogs.wasm.gz differ diff --git a/_framework/Avalonia.Markup.Xaml.wasm b/_framework/Avalonia.Markup.Xaml.wasm index 3048586..9211f7f 100644 Binary files a/_framework/Avalonia.Markup.Xaml.wasm and b/_framework/Avalonia.Markup.Xaml.wasm differ diff --git a/_framework/Avalonia.Markup.Xaml.wasm.br b/_framework/Avalonia.Markup.Xaml.wasm.br index 143d3b4..0f5c277 100644 Binary files a/_framework/Avalonia.Markup.Xaml.wasm.br and b/_framework/Avalonia.Markup.Xaml.wasm.br differ diff --git a/_framework/Avalonia.Markup.Xaml.wasm.gz b/_framework/Avalonia.Markup.Xaml.wasm.gz index b89620a..d5be969 100644 Binary files a/_framework/Avalonia.Markup.Xaml.wasm.gz and b/_framework/Avalonia.Markup.Xaml.wasm.gz differ diff --git a/_framework/Avalonia.Markup.wasm b/_framework/Avalonia.Markup.wasm index 619cd96..02d186e 100644 Binary files a/_framework/Avalonia.Markup.wasm and b/_framework/Avalonia.Markup.wasm differ diff --git a/_framework/Avalonia.Markup.wasm.br b/_framework/Avalonia.Markup.wasm.br index 3a232e1..4fba49e 100644 Binary files a/_framework/Avalonia.Markup.wasm.br and b/_framework/Avalonia.Markup.wasm.br differ diff --git a/_framework/Avalonia.Markup.wasm.gz b/_framework/Avalonia.Markup.wasm.gz index 45724d9..8f065ad 100644 Binary files a/_framework/Avalonia.Markup.wasm.gz and b/_framework/Avalonia.Markup.wasm.gz differ diff --git a/_framework/Avalonia.Metal.wasm b/_framework/Avalonia.Metal.wasm index a27283b..32667e1 100644 Binary files a/_framework/Avalonia.Metal.wasm and b/_framework/Avalonia.Metal.wasm differ diff --git a/_framework/Avalonia.Metal.wasm.br b/_framework/Avalonia.Metal.wasm.br index 58546b1..5c2e3c3 100644 Binary files a/_framework/Avalonia.Metal.wasm.br and b/_framework/Avalonia.Metal.wasm.br differ diff --git a/_framework/Avalonia.Metal.wasm.gz b/_framework/Avalonia.Metal.wasm.gz index 07f66ae..c5bc21e 100644 Binary files a/_framework/Avalonia.Metal.wasm.gz and b/_framework/Avalonia.Metal.wasm.gz differ diff --git a/_framework/Avalonia.MicroCom.wasm b/_framework/Avalonia.MicroCom.wasm index 9efdca9..5176821 100644 Binary files a/_framework/Avalonia.MicroCom.wasm and b/_framework/Avalonia.MicroCom.wasm differ diff --git a/_framework/Avalonia.MicroCom.wasm.br b/_framework/Avalonia.MicroCom.wasm.br index 975e48e..148d92b 100644 Binary files a/_framework/Avalonia.MicroCom.wasm.br and b/_framework/Avalonia.MicroCom.wasm.br differ diff --git a/_framework/Avalonia.MicroCom.wasm.gz b/_framework/Avalonia.MicroCom.wasm.gz index c649aed..7e542dd 100644 Binary files a/_framework/Avalonia.MicroCom.wasm.gz and b/_framework/Avalonia.MicroCom.wasm.gz differ diff --git a/_framework/Avalonia.OpenGL.wasm b/_framework/Avalonia.OpenGL.wasm index ff68588..99c1378 100644 Binary files a/_framework/Avalonia.OpenGL.wasm and b/_framework/Avalonia.OpenGL.wasm differ diff --git a/_framework/Avalonia.OpenGL.wasm.br b/_framework/Avalonia.OpenGL.wasm.br index f82fa25..eab5ea7 100644 Binary files a/_framework/Avalonia.OpenGL.wasm.br and b/_framework/Avalonia.OpenGL.wasm.br differ diff --git a/_framework/Avalonia.OpenGL.wasm.gz b/_framework/Avalonia.OpenGL.wasm.gz index 5cadf0b..4652608 100644 Binary files a/_framework/Avalonia.OpenGL.wasm.gz and b/_framework/Avalonia.OpenGL.wasm.gz differ diff --git a/_framework/Avalonia.Remote.Protocol.wasm b/_framework/Avalonia.Remote.Protocol.wasm index e30eaed..a8fb643 100644 Binary files a/_framework/Avalonia.Remote.Protocol.wasm and b/_framework/Avalonia.Remote.Protocol.wasm differ diff --git a/_framework/Avalonia.Remote.Protocol.wasm.br b/_framework/Avalonia.Remote.Protocol.wasm.br index 62d7bb4..039d0f9 100644 Binary files a/_framework/Avalonia.Remote.Protocol.wasm.br and b/_framework/Avalonia.Remote.Protocol.wasm.br differ diff --git a/_framework/Avalonia.Remote.Protocol.wasm.gz b/_framework/Avalonia.Remote.Protocol.wasm.gz index c67608b..8967bb3 100644 Binary files a/_framework/Avalonia.Remote.Protocol.wasm.gz and b/_framework/Avalonia.Remote.Protocol.wasm.gz differ diff --git a/_framework/Avalonia.Skia.wasm b/_framework/Avalonia.Skia.wasm index ed6f81c..31c87a8 100644 Binary files a/_framework/Avalonia.Skia.wasm and b/_framework/Avalonia.Skia.wasm differ diff --git a/_framework/Avalonia.Skia.wasm.br b/_framework/Avalonia.Skia.wasm.br index 5cc8d86..e134428 100644 Binary files a/_framework/Avalonia.Skia.wasm.br and b/_framework/Avalonia.Skia.wasm.br differ diff --git a/_framework/Avalonia.Skia.wasm.gz b/_framework/Avalonia.Skia.wasm.gz index c5e4a2b..e06322b 100644 Binary files a/_framework/Avalonia.Skia.wasm.gz and b/_framework/Avalonia.Skia.wasm.gz differ diff --git a/_framework/Avalonia.Vulkan.wasm b/_framework/Avalonia.Vulkan.wasm index 5e56090..3216407 100644 Binary files a/_framework/Avalonia.Vulkan.wasm and b/_framework/Avalonia.Vulkan.wasm differ diff --git a/_framework/Avalonia.Vulkan.wasm.br b/_framework/Avalonia.Vulkan.wasm.br index e75bd1b..bb6892f 100644 Binary files a/_framework/Avalonia.Vulkan.wasm.br and b/_framework/Avalonia.Vulkan.wasm.br differ diff --git a/_framework/Avalonia.Vulkan.wasm.gz b/_framework/Avalonia.Vulkan.wasm.gz index 4229ff4..49f6054 100644 Binary files a/_framework/Avalonia.Vulkan.wasm.gz and b/_framework/Avalonia.Vulkan.wasm.gz differ diff --git a/_framework/Avalonia.wasm b/_framework/Avalonia.wasm index 073f0d5..bec7499 100644 Binary files a/_framework/Avalonia.wasm and b/_framework/Avalonia.wasm differ diff --git a/_framework/Avalonia.wasm.br b/_framework/Avalonia.wasm.br index ea0dad9..f60e972 100644 Binary files a/_framework/Avalonia.wasm.br and b/_framework/Avalonia.wasm.br differ diff --git a/_framework/Avalonia.wasm.gz b/_framework/Avalonia.wasm.gz index a571bf5..d6ea55e 100644 Binary files a/_framework/Avalonia.wasm.gz and b/_framework/Avalonia.wasm.gz differ diff --git a/_framework/CommunityToolkit.Mvvm.wasm b/_framework/CommunityToolkit.Mvvm.wasm index 33ca532..fc19eaa 100644 Binary files a/_framework/CommunityToolkit.Mvvm.wasm and b/_framework/CommunityToolkit.Mvvm.wasm differ diff --git a/_framework/CommunityToolkit.Mvvm.wasm.br b/_framework/CommunityToolkit.Mvvm.wasm.br index 4204a09..f959f9c 100644 Binary files a/_framework/CommunityToolkit.Mvvm.wasm.br and b/_framework/CommunityToolkit.Mvvm.wasm.br differ diff --git a/_framework/CommunityToolkit.Mvvm.wasm.gz b/_framework/CommunityToolkit.Mvvm.wasm.gz index 5794c67..a940e00 100644 Binary files a/_framework/CommunityToolkit.Mvvm.wasm.gz and b/_framework/CommunityToolkit.Mvvm.wasm.gz differ diff --git a/_framework/HarfBuzzSharp.wasm b/_framework/HarfBuzzSharp.wasm index 223163d..049b102 100644 Binary files a/_framework/HarfBuzzSharp.wasm and b/_framework/HarfBuzzSharp.wasm differ diff --git a/_framework/HarfBuzzSharp.wasm.br b/_framework/HarfBuzzSharp.wasm.br index ac969f7..c69a56d 100644 Binary files a/_framework/HarfBuzzSharp.wasm.br and b/_framework/HarfBuzzSharp.wasm.br differ diff --git a/_framework/HarfBuzzSharp.wasm.gz b/_framework/HarfBuzzSharp.wasm.gz index 5364cc1..f907a4d 100644 Binary files a/_framework/HarfBuzzSharp.wasm.gz and b/_framework/HarfBuzzSharp.wasm.gz differ diff --git a/_framework/Semi.Avalonia.ColorPicker.pdb.gz b/_framework/Semi.Avalonia.ColorPicker.pdb.gz index 78ab258..ae6c962 100644 Binary files a/_framework/Semi.Avalonia.ColorPicker.pdb.gz and b/_framework/Semi.Avalonia.ColorPicker.pdb.gz differ diff --git a/_framework/Semi.Avalonia.ColorPicker.wasm b/_framework/Semi.Avalonia.ColorPicker.wasm index 44a05ae..889e755 100644 Binary files a/_framework/Semi.Avalonia.ColorPicker.wasm and b/_framework/Semi.Avalonia.ColorPicker.wasm differ diff --git a/_framework/Semi.Avalonia.ColorPicker.wasm.br b/_framework/Semi.Avalonia.ColorPicker.wasm.br index ce4d30f..2cc267e 100644 Binary files a/_framework/Semi.Avalonia.ColorPicker.wasm.br and b/_framework/Semi.Avalonia.ColorPicker.wasm.br differ diff --git a/_framework/Semi.Avalonia.ColorPicker.wasm.gz b/_framework/Semi.Avalonia.ColorPicker.wasm.gz index 96360fc..45adeda 100644 Binary files a/_framework/Semi.Avalonia.ColorPicker.wasm.gz and b/_framework/Semi.Avalonia.ColorPicker.wasm.gz differ diff --git a/_framework/Semi.Avalonia.DataGrid.pdb.gz b/_framework/Semi.Avalonia.DataGrid.pdb.gz index 835337e..646ca85 100644 Binary files a/_framework/Semi.Avalonia.DataGrid.pdb.gz and b/_framework/Semi.Avalonia.DataGrid.pdb.gz differ diff --git a/_framework/Semi.Avalonia.DataGrid.wasm b/_framework/Semi.Avalonia.DataGrid.wasm index 4ca2424..9437823 100644 Binary files a/_framework/Semi.Avalonia.DataGrid.wasm and b/_framework/Semi.Avalonia.DataGrid.wasm differ diff --git a/_framework/Semi.Avalonia.DataGrid.wasm.br b/_framework/Semi.Avalonia.DataGrid.wasm.br index 803eb61..1db8186 100644 Binary files a/_framework/Semi.Avalonia.DataGrid.wasm.br and b/_framework/Semi.Avalonia.DataGrid.wasm.br differ diff --git a/_framework/Semi.Avalonia.DataGrid.wasm.gz b/_framework/Semi.Avalonia.DataGrid.wasm.gz index c31ea86..65c0a14 100644 Binary files a/_framework/Semi.Avalonia.DataGrid.wasm.gz and b/_framework/Semi.Avalonia.DataGrid.wasm.gz differ diff --git a/_framework/Semi.Avalonia.Demo.Web.pdb.gz b/_framework/Semi.Avalonia.Demo.Web.pdb.gz index 8558666..211652c 100644 Binary files a/_framework/Semi.Avalonia.Demo.Web.pdb.gz and b/_framework/Semi.Avalonia.Demo.Web.pdb.gz differ diff --git a/_framework/Semi.Avalonia.Demo.Web.wasm b/_framework/Semi.Avalonia.Demo.Web.wasm index 76526ba..1d3ec4e 100644 Binary files a/_framework/Semi.Avalonia.Demo.Web.wasm and b/_framework/Semi.Avalonia.Demo.Web.wasm differ diff --git a/_framework/Semi.Avalonia.Demo.Web.wasm.br b/_framework/Semi.Avalonia.Demo.Web.wasm.br index e246d53..3195107 100644 Binary files a/_framework/Semi.Avalonia.Demo.Web.wasm.br and b/_framework/Semi.Avalonia.Demo.Web.wasm.br differ diff --git a/_framework/Semi.Avalonia.Demo.Web.wasm.gz b/_framework/Semi.Avalonia.Demo.Web.wasm.gz index 88861c0..40774df 100644 Binary files a/_framework/Semi.Avalonia.Demo.Web.wasm.gz and b/_framework/Semi.Avalonia.Demo.Web.wasm.gz differ diff --git a/_framework/Semi.Avalonia.Demo.pdb.gz b/_framework/Semi.Avalonia.Demo.pdb.gz index bcfcd1b..8d46ec1 100644 Binary files a/_framework/Semi.Avalonia.Demo.pdb.gz and b/_framework/Semi.Avalonia.Demo.pdb.gz differ diff --git a/_framework/Semi.Avalonia.Demo.wasm b/_framework/Semi.Avalonia.Demo.wasm index 3556fdd..ef1b928 100644 Binary files a/_framework/Semi.Avalonia.Demo.wasm and b/_framework/Semi.Avalonia.Demo.wasm differ diff --git a/_framework/Semi.Avalonia.Demo.wasm.br b/_framework/Semi.Avalonia.Demo.wasm.br index 3633e0b..5b3d12d 100644 Binary files a/_framework/Semi.Avalonia.Demo.wasm.br and b/_framework/Semi.Avalonia.Demo.wasm.br differ diff --git a/_framework/Semi.Avalonia.Demo.wasm.gz b/_framework/Semi.Avalonia.Demo.wasm.gz index dd47571..1d33aca 100644 Binary files a/_framework/Semi.Avalonia.Demo.wasm.gz and b/_framework/Semi.Avalonia.Demo.wasm.gz differ diff --git a/_framework/Semi.Avalonia.pdb.gz b/_framework/Semi.Avalonia.pdb.gz index 0bc1aa5..69d4ee6 100644 Binary files a/_framework/Semi.Avalonia.pdb.gz and b/_framework/Semi.Avalonia.pdb.gz differ diff --git a/_framework/Semi.Avalonia.wasm b/_framework/Semi.Avalonia.wasm index 399adea..1b18bb0 100644 Binary files a/_framework/Semi.Avalonia.wasm and b/_framework/Semi.Avalonia.wasm differ diff --git a/_framework/Semi.Avalonia.wasm.br b/_framework/Semi.Avalonia.wasm.br index 9c4dc13..28747bc 100644 Binary files a/_framework/Semi.Avalonia.wasm.br and b/_framework/Semi.Avalonia.wasm.br differ diff --git a/_framework/Semi.Avalonia.wasm.gz b/_framework/Semi.Avalonia.wasm.gz index 72e6358..ef74265 100644 Binary files a/_framework/Semi.Avalonia.wasm.gz and b/_framework/Semi.Avalonia.wasm.gz differ diff --git a/_framework/SkiaSharp.wasm b/_framework/SkiaSharp.wasm index 38ab5af..4e919b4 100644 Binary files a/_framework/SkiaSharp.wasm and b/_framework/SkiaSharp.wasm differ diff --git a/_framework/SkiaSharp.wasm.br b/_framework/SkiaSharp.wasm.br index 4b3ec2b..b051175 100644 Binary files a/_framework/SkiaSharp.wasm.br and b/_framework/SkiaSharp.wasm.br differ diff --git a/_framework/SkiaSharp.wasm.gz b/_framework/SkiaSharp.wasm.gz index 43ac5d8..d089c63 100644 Binary files a/_framework/SkiaSharp.wasm.gz and b/_framework/SkiaSharp.wasm.gz differ diff --git a/_framework/System.Private.CoreLib.wasm b/_framework/System.Private.CoreLib.wasm index bad09bb..9c4cb44 100644 Binary files a/_framework/System.Private.CoreLib.wasm and b/_framework/System.Private.CoreLib.wasm differ diff --git a/_framework/System.Private.CoreLib.wasm.br b/_framework/System.Private.CoreLib.wasm.br index 193fc9a..68cb1ef 100644 Binary files a/_framework/System.Private.CoreLib.wasm.br and b/_framework/System.Private.CoreLib.wasm.br differ diff --git a/_framework/System.Private.CoreLib.wasm.gz b/_framework/System.Private.CoreLib.wasm.gz index f544a9d..f80eae9 100644 Binary files a/_framework/System.Private.CoreLib.wasm.gz and b/_framework/System.Private.CoreLib.wasm.gz differ diff --git a/_framework/avalonia.js b/_framework/avalonia.js index 90d7916..2eb2bd4 100755 --- a/_framework/avalonia.js +++ b/_framework/avalonia.js @@ -1,2 +1,2 @@ -var S=class{static getCaretCoordinates(e,t,r){var p,x;if(!O)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");let n=(p=r==null?void 0:r.debug)!=null?p:!1;if(n){let h=document.querySelector("#input-textarea-caret-position-mirror-div");h&&((x=h.parentNode)==null||x.removeChild(h))}let i=document.createElement("div");i.id="input-textarea-caret-position-mirror-div",document.body.appendChild(i);let o=i.style,s=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,a=e.nodeName==="INPUT";o.whiteSpace="pre-wrap",a||(o.wordWrap="break-word"),o.position="absolute",n||(o.visibility="hidden"),F.forEach(h=>{if(a&&h==="lineHeight")if(s.boxSizing==="border-box"){let T=parseInt(s.height),W=parseInt(s.paddingTop)+parseInt(s.paddingBottom)+parseInt(s.borderTopWidth)+parseInt(s.borderBottomWidth),I=W+parseInt(s.lineHeight);T>I?o.lineHeight=`${T-W}px`:T===I?o.lineHeight=s.lineHeight:o.lineHeight="0"}else o.lineHeight=s.height;else o[h]=s[h]}),R?e.scrollHeight>parseInt(s.height)&&(o.overflowY="scroll"):o.overflow="hidden",i.textContent=e.value.substring(0,t),a&&(i.textContent=i.textContent.replace(/\s/g,"\xA0"));let d=document.createElement("span");d.textContent=e.value.substring(t)||".",i.appendChild(d);let u={top:d.offsetTop+parseInt(s.borderTopWidth),left:d.offsetLeft+parseInt(s.borderLeftWidth),height:parseInt(s.lineHeight)};return n?d.style.backgroundColor="#aaa":document.body.removeChild(i),u}},F=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],O=typeof window!="undefined",R=O&&window.mozInnerScreenX!=null;var l=class{static get InputHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.InputHelper}static get DomHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.DomHelper}static get TimerHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.TimerHelper}static get CanvasHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.CanvasHelper}};async function G(){let c=await globalThis.getDotnetRuntime(0);if(c!=null)return l.resolvedExports=await c.getAssemblyExports("Avalonia.Browser.dll"),l.resolvedExports}l.exportsPromise=G();var L=class{static initializeBackgroundHandlers(){this.clipboardState===0&&(globalThis.addEventListener("paste",e=>{this.clipboardState===2&&this.resolveClipboard(e.clipboardData.getData("text"))}),this.clipboardState=1)}static async readClipboardText(e){if(e.navigator.clipboard.readText)return await e.navigator.clipboard.readText();try{return await new Promise((t,r)=>{this.clipboardState=2,this.resolveClipboard=t,this.rejectClipboard=r})}finally{this.clipboardState=1,this.resolveClipboard=null,this.rejectClipboard=null}}static async writeClipboardText(e,t){return await e.navigator.clipboard.writeText(t)}static subscribeInputEvents(e,t){let r=this.subscribeKeyEvents(e,t),n=this.subscribePointerEvents(e,t),i=this.subscribeTextEvents(e,t),o=this.subscribeDropEvents(e,t),s=this.subscribeKeyboardGeometryChange(e,t);return()=>{r(),n(),i(),o(),s()}}static subscribeKeyEvents(e,t){let r=i=>{l.InputHelper.OnKeyDown(t,i.code,i.key,this.getModifiers(i)),this.clipboardState!==2&&i.preventDefault()};e.addEventListener("keydown",r);let n=i=>{l.InputHelper.OnKeyUp(t,i.code,i.key,this.getModifiers(i)),i.preventDefault(),this.rejectClipboard&&this.rejectClipboard()};return e.addEventListener("keyup",n),()=>{e.removeEventListener("keydown",r),e.removeEventListener("keyup",n)}}static subscribeTextEvents(e,t){let r=s=>{l.InputHelper.OnCompositionStart(t)};e.addEventListener("compositionstart",r);let n=s=>{let a=s.getTargetRanges(),d=-1,u=-1;a.length>0&&(d=a[0].startOffset,u=a[0].endOffset),s.inputType==="insertCompositionText"&&(d=2,u=d+2),l.InputHelper.OnBeforeInput(t,s.inputType,d,u)};e.addEventListener("beforeinput",n);let i=s=>{l.InputHelper.OnCompositionUpdate(t,s.data)};e.addEventListener("compositionupdate",i);let o=s=>{l.InputHelper.OnCompositionEnd(t,s.data),s.preventDefault()};return e.addEventListener("compositionend",o),()=>{e.removeEventListener("compositionstart",r),e.removeEventListener("compositionupdate",i),e.removeEventListener("compositionend",o)}}static subscribePointerEvents(e,t){let r=a=>{l.InputHelper.OnPointerMove(t,a.pointerType,a.pointerId,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a),a),a.preventDefault()},n=a=>{l.InputHelper.OnPointerDown(t,a.pointerType,a.pointerId,a.button,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a)),a.preventDefault()},i=a=>{l.InputHelper.OnPointerUp(t,a.pointerType,a.pointerId,a.button,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a)),a.preventDefault()},o=a=>{l.InputHelper.OnPointerCancel(t,a.pointerType,a.pointerId,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a))},s=a=>{l.InputHelper.OnWheel(t,a.offsetX,a.offsetY,a.deltaX,a.deltaY,this.getModifiers(a)),a.preventDefault()};return e.addEventListener("pointermove",r),e.addEventListener("pointerdown",n),e.addEventListener("pointerup",i),e.addEventListener("wheel",s),e.addEventListener("pointercancel",o),()=>{e.removeEventListener("pointerover",r),e.removeEventListener("pointerdown",n),e.removeEventListener("pointerup",i),e.removeEventListener("pointercancel",o),e.removeEventListener("wheel",s)}}static subscribeDropEvents(e,t){let r=i=>{let o=i.dataTransfer;l.InputHelper.OnDragDrop(t,i.type,i.offsetX,i.offsetY,this.getModifiers(i),o==null?void 0:o.effectAllowed,o)},n=i=>{i.preventDefault(),r(i)};return e.addEventListener("dragover",n),e.addEventListener("dragenter",r),e.addEventListener("dragleave",r),e.addEventListener("drop",n),()=>{e.removeEventListener("dragover",n),e.removeEventListener("dragenter",r),e.removeEventListener("dragleave",r),e.removeEventListener("drop",n)}}static getCoalescedEvents(e){return e.getCoalescedEvents().flatMap(t=>[t.offsetX,t.offsetY,t.pressure,t.tiltX,t.tiltY,t.twist])}static subscribeKeyboardGeometryChange(e,t){if("virtualKeyboard"in navigator){let r=n=>{let i=e.getBoundingClientRect(),o=n.target.boundingRect;l.InputHelper.OnKeyboardGeometryChange(t,o.x-i.x,o.y-i.y,o.width,o.height)};return navigator.virtualKeyboard.addEventListener("geometrychange",r),()=>{navigator.virtualKeyboard.removeEventListener("geometrychange",r)}}return()=>{}}static clearInput(e){e.value=""}static focusElement(e){e.focus()}static setCursor(e,t){t==="default"?e.style.removeProperty("cursor"):e.style.cursor=t}static setBounds(e,t,r,n,i,o){e.style.left=t.toFixed(0)+"px",e.style.top=r.toFixed(0)+"px";let{left:s,top:a}=S.getCaretCoordinates(e,o);e.style.left=(t-s).toFixed(0)+"px",e.style.top=(r-a).toFixed(0)+"px"}static hide(e){e.style.display="none"}static show(e){e.style.display="block"}static setSurroundingText(e,t,r,n){!e||(e.value=t,e.setSelectionRange(r,n),e.style.width="20px",e.style.width=`${e.scrollWidth}px`)}static getModifiers(e){let t=0;e.ctrlKey&&(t|=2),e.altKey&&(t|=1),e.shiftKey&&(t|=4),e.metaKey&&(t|=8);let r=e.buttons;return r&&(r&1&&(t|=16),r&2&&(t|=e.type==="pen"?2048:32),r&4&&(t|=64),r&8&&(t|=128),r&16&&(t|=256),r&32&&(t|=1024)),t}static setPointerCapture(e,t){e.setPointerCapture(t)}static releasePointerCapture(e,t){e.hasPointerCapture(t)&&e.releasePointerCapture(t)}};L.clipboardState=0;var v=class{static getGlobalThis(){return globalThis}static addClass(e,t){e.classList.add(t)}static getFirstElementById(e,t){return(t instanceof Window?t.document:t.ownerDocument).getElementById(e)}static getFirstElementByClassName(e,t){let n=(t instanceof Window?t.document:t).getElementsByClassName(e);return n?n[0]:null}static createAvaloniaCanvas(e){var n;let t=(n=e.getAttribute("data-containerId"))!=null?n:"0000",r=document.createElement("canvas");return r.id=`canvas${t}`,r.classList.add("avalonia-canvas"),r.style.width="100%",r.style.height="100%",r.style.position="absolute",r}static attachCanvas(e,t){e.prepend(t)}static detachCanvas(e,t){e.removeChild(t)}static createAvaloniaHost(e){let t=Math.random().toString(36).replace(/[^a-z]+/g,"").substr(2,10);e.classList.add("avalonia-container"),e.tabIndex=0,e.setAttribute("data-containerId",t),e.oncontextmenu=function(){return!1},e.style.overflow="hidden",e.style.touchAction="none";let r=document.createElement("div");r.id=`nativeHost${t}`,r.classList.add("avalonia-native-host"),r.style.left="0px",r.style.top="0px",r.style.width="100%",r.style.height="100%",r.style.position="absolute";let n=document.createElement("input");return n.id=`inputElement${t}`,n.classList.add("avalonia-input-element"),n.autocapitalize="none",n.type="text",n.spellcheck=!1,n.style.padding="0",n.style.margin="0",n.style.borderWidth="0",n.style.position="absolute",n.style.overflow="hidden",n.style.borderStyle="hidden",n.style.outline="none",n.style.background="transparent",n.style.color="transparent",n.style.display="none",n.style.height="20px",n.style.zIndex="-1",n.onpaste=function(){return!1},n.oncopy=function(){return!1},n.oncut=function(){return!1},e.prepend(n),e.prepend(r),{host:e,nativeHost:r,inputElement:n}}static isFullscreen(e){return e.document.fullscreenElement!=null}static async setFullscreen(e,t){t?await e.document.documentElement.requestFullscreen():await e.document.exitFullscreen()}static initGlobalDomEvents(e){if(e.document.documentElement.style.setProperty("--av-sat","env(safe-area-inset-top)"),e.document.documentElement.style.setProperty("--av-sar","env(safe-area-inset-right)"),e.document.documentElement.style.setProperty("--av-sab","env(safe-area-inset-bottom)"),e.document.documentElement.style.setProperty("--av-sal","env(safe-area-inset-left)"),e.matchMedia!==void 0){let t=e.matchMedia("(prefers-color-scheme: dark)"),r=e.matchMedia("(prefers-contrast: more)");t.addEventListener("change",n=>{l.DomHelper.DarkModeChanged(n.matches,r.matches)}),r.addEventListener("change",n=>{l.DomHelper.DarkModeChanged(t.matches,n.matches)})}e.document.addEventListener("visibilitychange",()=>{l.DomHelper.DocumentVisibilityChanged(e.document.visibilityState)}),e.document.visibilityState==="visible"&&e.setTimeout(()=>{l.DomHelper.DocumentVisibilityChanged(e.document.visibilityState)},10)}static getSafeAreaPadding(e){let t=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sat")),r=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sab")),n=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sal")),i=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sar"));return[n,t,r,i]}static getDarkMode(e){if(e.matchMedia===void 0)return[0,0];let t=e.matchMedia("(prefers-color-scheme: dark)"),r=e.matchMedia("(prefers-contrast: more)");return[t.matches?1:0,r.matches?1:0]}};var M=class{static hasNativeFilePicker(){return"showSaveFilePicker"in globalThis}static isMobile(){var i;let e=(i=globalThis.navigator)==null?void 0:i.userAgentData;if(e)return e.mobile;let t=navigator.userAgent,r=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,n=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i;return r.test(t)||n.test(t.substr(0,4))}static isTv(){return navigator.userAgent.includes("SmartTV")}};var N=typeof SharedArrayBuffer!="undefined";function U(c){return N&&c[Symbol.toStringTag]==="SharedArrayBuffer"}var P=class{static async seek(e,t){return await e.seek(t)}static async truncate(e,t){return await e.truncate(t)}static async close(e){return await e.close()}static async write(e,t,r,n){var s;let i=(s=globalThis.getDotnetRuntime(0))==null?void 0:s.localHeapViewU8(),o;if(t._pointer>0&&t._length>0&&i&&!U(i.buffer))o=new Uint8Array(i.buffer,t._pointer+r,n);else{let a=new Uint8Array(n);t.copyTo(a,r),o=t}return await e.write(o)}static byteLength(e){return e.size}static async sliceArrayBuffer(e,t,r){let n=await e.slice(t,t+r).arrayBuffer();return new Uint8Array(n)}static toMemoryView(e){return e}};var k=class{},B=class{static createDefaultChild(e){return document.createElement("div")}static createAttachment(){return new k}static initializeWithChildHandle(e,t){e._child=t,e._child.style.position="absolute"}static attachTo(e,t){e._host&&e._child&&e._host.removeChild(e._child),e._host=t,e._host&&e._child&&e._host.appendChild(e._child)}static showInBounds(e,t,r,n,i){e._child&&(e._child.style.top=`${r}px`,e._child.style.left=`${t}px`,e._child.style.width=`${n}px`,e._child.style.height=`${i}px`,e._child.style.display="block")}static hideWithSize(e,t,r){e._child&&(e._child.style.width=`${t}px`,e._child.style.height=`${r}px`,e._child.style.display="none")}static releaseChild(e){e._child&&(e._child=void 0)}};var D=class{static addBackHandler(e){history.pushState(null,"",window.location.href),window.onpopstate=()=>{e()?history.forward():history.back()}}};var z=class{static itemsArrayAt(e,t){let r=e[t];if(!r)return[];let n=[];for(let i=0;i{var r,n;(r=this.resizeObserver)==null||r.callbacks.delete(e),(n=this.resizeObserver)==null||n.unobserve(e)}}static onResize(e,t){for(let r of e){let n=t.callbacks.get(r.target);if(!n)continue;let i=window.devicePixelRatio,o,s,a=i;r.devicePixelContentBoxSize?(o=r.devicePixelContentBoxSize[0].inlineSize,s=r.devicePixelContentBoxSize[0].blockSize,a=1):r.contentBoxSize?r.contentBoxSize[0]?(o=r.contentBoxSize[0].inlineSize,s=r.contentBoxSize[0].blockSize):(o=r.contentBoxSize.inlineSize,s=r.contentBoxSize.blockSize):(o=r.contentRect.width,s=r.contentRect.height);let d=Math.round(o*a),u=Math.round(s*a);n(d,u,i)}}};var y=class{constructor(e,t){this.canvas=e;this.renderTargetType=t}static setSize(e,t,r){e.canvas.width=t,e.canvas.height=r}};function X(){var t,r,n,i;let c=globalThis,e=(r=c.Module)!=null?r:(t=c.getDotnetRuntime(0))==null?void 0:t.Module;return(i=(n=e==null?void 0:e.GL)!=null?n:c.AvaloniaGL)!=null?i:c.SkiaSharpGL}var b=class extends y{constructor(t,r){var s,a;if(b._gl==null&&(b._gl=X()),!b._gl)throw new Error("Module.GL object wasn't initialized, WebGL can't be used.");let n={alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,failIfMajorPerformanceCaveat:!0,majorVersion:r===2?1:2,minorVersion:0,enableExtensionsByDefault:1,explicitSwapControl:0},i=r===2?t.getContext("webgl",n):t.getContext("webgl2",n);if(!i)throw new Error("HTMLCanvasElement.getContext returned null.");let o=b._gl.registerContext(i,n);i.gl_handle=o;super(t,"webgl");this.canvas=t;this.contextHandle=o,this.fboId=(a=(s=i.getParameter(i.FRAMEBUFFER_BINDING))==null?void 0:s.id)!=null?a:0,this.stencil=i.getParameter(i.STENCIL_BITS),this.sample=i.getParameter(i.SAMPLES),this.depth=i.getParameter(i.DEPTH_BITS),this.attrs=n}static getCurrentContext(){var t,r,n;return(n=(r=(t=b._gl)==null?void 0:t.currentContext)==null?void 0:r.handle)!=null?n:0}static makeContextCurrent(t){if(b._gl==null)return!1;let r=b._gl.makeContextCurrent(t);return t===0||r}},w=b;w._gl=null;var E=class extends y{constructor(t){let r=t.getContext("2d",{alpha:!0});if(!r)throw new Error("HTMLCanvasElement.getContext(2d) returned null.");super(t,"software");this.context=r,this.runtime=globalThis.getDotnetRuntime(0)}putPixelData(t,r,n,i){var d;let o=(d=this.runtime)==null?void 0:d.localHeapViewU8(),s;if(o!=null&&o.buffer){if(s=new Uint8ClampedArray(o.buffer,t,r),this.canvas instanceof OffscreenCanvas){let u=new ArrayBuffer(s.byteLength),p=new Uint8ClampedArray(u);p.set(s),s=p}}else throw new Error("Unable to access .NET memory");let a=new ImageData(s,n,i);this.context.putImageData(a,0,0)}static staticPutPixelData(t,r,n,i,o){t.putPixelData(r,n,i,o)}};var m=class{static create(e,t,r){var i,o;let n=m.nextId++;if(e===0)m.registry[n]={canvas:t},m.targets[n]=m.createRenderTarget(t,r);else{let s=globalThis,a=(o=s.Module)!=null?o:(i=s.getDotnetRuntime(0))==null?void 0:i.Module,d=a==null?void 0:a.PThread;if(d==null)throw new Error("Unable to access emscripten PThread api");let u=d.pthreads[e];if(u==null)throw new Error(`Unable get pthread with id ${e}`);let p;if(u.postMessage!=null?p=u:p=u.worker,p==null)throw new Error(`Unable get Worker for pthread ${e}`);let x=t.transferControlToOffscreen();p.postMessage({avaloniaCmd:"registerCanvas",canvas:x,modes:r,id:n},[x]),m.registry[n]={canvas:t,worker:p}}return n}static initializeWorker(){let e=self.onmessage;self.onmessage=t=>{let r=t;r.data.avaloniaCmd==="registerCanvas"?m.targets[r.data.id]=m.createRenderTarget(r.data.canvas,r.data.modes):r.data.avaloniaCmd==="unregisterCanvas"?delete m.targets[r.data.id]:e!=null&&e.call(self,t)}}static getRenderTarget(e){return m.targets[e]}static createRenderTarget(e,t){for(let r of t)try{return r===1?new E(e):new w(e,r)}catch(n){let i="";n instanceof Error&&(i=": "+n.message),console.error(`Failed to create render target for mode ${r} ${i}`)}return new E(e)}},f=m;f.targets={},f.registry={},f.nextId=1;var C=class{constructor(e,t,r,n){this.canvas=e;this.targetId=f.create(n,e,t),H.observeSize(e,(i,o,s)=>{var a;this.sizeParams=[i,o,s],(a=l.CanvasHelper)==null||a.OnSizeChanged(r,i,o,s)})}get width(){return this.sizeParams?this.sizeParams[0]:1}get height(){return this.sizeParams?this.sizeParams[1]:1}get scaling(){return this.sizeParams?this.sizeParams[2]:1}destroy(){}static create(e,t,r,n){let i=v.createAvaloniaCanvas(e);v.attachCanvas(e,i);try{return new C(i,t,r,n)}catch(o){throw v.detachCanvas(e,i),o}}static destroy(e){e.destroy()}};var A=class{static raiseOnChanged(){l.DomHelper.ScreensChanged()}static async checkPermissions(e){let{state:t}=await e.navigator.permissions.query({name:"window-management"});t==="granted"&&await this.requestDetailedScreens(e)}static subscribeOnChanged(e){if(this.detailedScreens){e.screen.removeEventListener("change",this.raiseOnChanged),this.detailedScreens.addEventListener("screenschange",this.raiseOnChanged);for(let t of this.detailedScreens.screens)t.addEventListener("change",this.raiseOnChanged)}else e.screen.addEventListener("change",this.raiseOnChanged)}static getAllScreens(e){return this.detailedScreens?this.detailedScreens.screens:[Object.assign(e.screen,{window:e})]}static async requestDetailedScreens(e){return this.detailedScreens?!0:"getScreenDetails"in e&&(this.detailedScreens=await e.getScreenDetails(),this.detailedScreens)?(this.subscribeOnChanged(e),e.setTimeout(this.raiseOnChanged,1),!0):!1}static getDisplayName(e){return e==null?void 0:e.label}static getScaling(e){return"devicePixelRatio"in e?e.devicePixelRatio:"window"in e?e.window.devicePixelRatio:1}static getBounds(e){let t=e.width,r=e.height;return"left"in e&&"top"in e?[e.left,e.top,t,r]:"availLeft"in e&&"availTop"in e?[e.availLeft,e.availTop,t,r]:[0,0,t,r]}static getWorkingArea(e){let t=e.availWidth,r=e.availHeight;return"availLeft"in e&&"availTop"in e?[e.availLeft,e.availTop,t,r]:[0,0,t,r]}static isCurrent(e){return this.detailedScreens?this.detailedScreens.currentScreen===e:!0}static isPrimary(e){return"isPrimary"in e?e.isPrimary:!0}static getCurrentOrientation(e){switch(e.orientation.type){case"landscape-primary":return 1;case"landscape-secondary":return 4;case"portrait-primary":return 2;case"portrait-secondary":return 8}}};async function Fe(c,e){"serviceWorker"in navigator&&await globalThis.navigator.serviceWorker.register(c,e?{scope:e}:void 0)}export{v as AvaloniaDOM,M as Caniuse,C as CanvasSurface,z as GeneralHelpers,L as InputHelper,B as NativeControlHost,D as NavigationHelper,A as ScreenHelper,E as SoftwareRenderTarget,P as StreamHelper,g as TimerHelper,w as WebGlRenderTarget,y as WebRenderTarget,f as WebRenderTargetRegistry,Fe as registerServiceWorker}; +var S=class{static getCaretCoordinates(e,t,r){var p,x;if(!O)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");let n=(p=r==null?void 0:r.debug)!=null?p:!1;if(n){let h=document.querySelector("#input-textarea-caret-position-mirror-div");h&&((x=h.parentNode)==null||x.removeChild(h))}let i=document.createElement("div");i.id="input-textarea-caret-position-mirror-div",document.body.appendChild(i);let o=i.style,s=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,a=e.nodeName==="INPUT";o.whiteSpace="pre-wrap",a||(o.wordWrap="break-word"),o.position="absolute",n||(o.visibility="hidden"),F.forEach(h=>{if(a&&h==="lineHeight")if(s.boxSizing==="border-box"){let T=parseInt(s.height),W=parseInt(s.paddingTop)+parseInt(s.paddingBottom)+parseInt(s.borderTopWidth)+parseInt(s.borderBottomWidth),I=W+parseInt(s.lineHeight);T>I?o.lineHeight=`${T-W}px`:T===I?o.lineHeight=s.lineHeight:o.lineHeight="0"}else o.lineHeight=s.height;else o[h]=s[h]}),R?e.scrollHeight>parseInt(s.height)&&(o.overflowY="scroll"):o.overflow="hidden",i.textContent=e.value.substring(0,t),a&&(i.textContent=i.textContent.replace(/\s/g,"\xA0"));let d=document.createElement("span");d.textContent=e.value.substring(t)||".",i.appendChild(d);let u={top:d.offsetTop+parseInt(s.borderTopWidth),left:d.offsetLeft+parseInt(s.borderLeftWidth),height:parseInt(s.lineHeight)};return n?d.style.backgroundColor="#aaa":document.body.removeChild(i),u}},F=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],O=typeof window!="undefined",R=O&&window.mozInnerScreenX!=null;var l=class{static get InputHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.InputHelper}static get DomHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.DomHelper}static get TimerHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.TimerHelper}static get CanvasHelper(){var e;return(e=this.resolvedExports)==null?void 0:e.Avalonia.Browser.Interop.CanvasHelper}};async function G(){let c=await globalThis.getDotnetRuntime(0);if(c!=null)return l.resolvedExports=await c.getAssemblyExports("Avalonia.Browser.dll"),l.resolvedExports}l.exportsPromise=G();var L=class{static initializeBackgroundHandlers(){this.clipboardState===0&&(globalThis.addEventListener("paste",e=>{this.clipboardState===2&&this.resolveClipboard(e.clipboardData.getData("text"))}),this.clipboardState=1)}static async readClipboardText(e){if(e.navigator.clipboard.readText)return await e.navigator.clipboard.readText();try{return await new Promise((t,r)=>{this.clipboardState=2,this.resolveClipboard=t,this.rejectClipboard=r})}finally{this.clipboardState=1,this.resolveClipboard=null,this.rejectClipboard=null}}static async writeClipboardText(e,t){return await e.navigator.clipboard.writeText(t)}static subscribeInputEvents(e,t){let r=this.subscribeKeyEvents(e,t),n=this.subscribePointerEvents(e,t),i=this.subscribeTextEvents(e,t),o=this.subscribeDropEvents(e,t),s=this.subscribeKeyboardGeometryChange(e,t);return()=>{r(),n(),i(),o(),s()}}static subscribeKeyEvents(e,t){let r=i=>{l.InputHelper.OnKeyDown(t,i.code,i.key,this.getModifiers(i)),this.clipboardState!==2&&i.preventDefault()};e.addEventListener("keydown",r);let n=i=>{l.InputHelper.OnKeyUp(t,i.code,i.key,this.getModifiers(i)),i.preventDefault(),this.rejectClipboard&&this.rejectClipboard()};return e.addEventListener("keyup",n),()=>{e.removeEventListener("keydown",r),e.removeEventListener("keyup",n)}}static subscribeTextEvents(e,t){let r=s=>{l.InputHelper.OnCompositionStart(t)};e.addEventListener("compositionstart",r);let n=s=>{let a=s.getTargetRanges(),d=-1,u=-1;a.length>0&&(d=a[0].startOffset,u=a[0].endOffset),s.inputType==="insertCompositionText"&&(d=2,u=d+2),l.InputHelper.OnBeforeInput(t,s.inputType,d,u)};e.addEventListener("beforeinput",n);let i=s=>{l.InputHelper.OnCompositionUpdate(t,s.data)};e.addEventListener("compositionupdate",i);let o=s=>{l.InputHelper.OnCompositionEnd(t,s.data),s.preventDefault()};return e.addEventListener("compositionend",o),()=>{e.removeEventListener("compositionstart",r),e.removeEventListener("compositionupdate",i),e.removeEventListener("compositionend",o)}}static subscribePointerEvents(e,t){let r=a=>{l.InputHelper.OnPointerMove(t,a.pointerType,a.pointerId,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a),a),a.preventDefault()},n=a=>{l.InputHelper.OnPointerDown(t,a.pointerType,a.pointerId,a.button,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a)),a.preventDefault()},i=a=>{l.InputHelper.OnPointerUp(t,a.pointerType,a.pointerId,a.button,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a)),a.preventDefault()},o=a=>{l.InputHelper.OnPointerCancel(t,a.pointerType,a.pointerId,a.offsetX,a.offsetY,a.pressure,a.tiltX,a.tiltY,a.twist,this.getModifiers(a))},s=a=>{l.InputHelper.OnWheel(t,a.offsetX,a.offsetY,a.deltaX,a.deltaY,this.getModifiers(a)),a.preventDefault()};return e.addEventListener("pointermove",r),e.addEventListener("pointerdown",n),e.addEventListener("pointerup",i),e.addEventListener("wheel",s),e.addEventListener("pointercancel",o),()=>{e.removeEventListener("pointerover",r),e.removeEventListener("pointerdown",n),e.removeEventListener("pointerup",i),e.removeEventListener("pointercancel",o),e.removeEventListener("wheel",s)}}static subscribeDropEvents(e,t){let r=i=>{let o=i.dataTransfer;l.InputHelper.OnDragDrop(t,i.type,i.offsetX,i.offsetY,this.getModifiers(i),o==null?void 0:o.effectAllowed,o)},n=i=>{i.preventDefault(),r(i)};return e.addEventListener("dragover",n),e.addEventListener("dragenter",r),e.addEventListener("dragleave",r),e.addEventListener("drop",n),()=>{e.removeEventListener("dragover",n),e.removeEventListener("dragenter",r),e.removeEventListener("dragleave",r),e.removeEventListener("drop",n)}}static getCoalescedEvents(e){return e.getCoalescedEvents().flatMap(t=>[t.offsetX,t.offsetY,t.pressure,t.tiltX,t.tiltY,t.twist])}static subscribeKeyboardGeometryChange(e,t){if("virtualKeyboard"in navigator){let r=n=>{let i=e.getBoundingClientRect(),o=n.target.boundingRect;l.InputHelper.OnKeyboardGeometryChange(t,o.x-i.x,o.y-i.y,o.width,o.height)};return navigator.virtualKeyboard.addEventListener("geometrychange",r),()=>{navigator.virtualKeyboard.removeEventListener("geometrychange",r)}}return()=>{}}static clearInput(e){e.value=""}static focusElement(e){e.focus()}static setCursor(e,t){t==="default"?e.style.removeProperty("cursor"):e.style.cursor=t}static setBounds(e,t,r,n,i,o){e.style.left=t.toFixed(0)+"px",e.style.top=r.toFixed(0)+"px";let{left:s,top:a}=S.getCaretCoordinates(e,o);e.style.left=(t-s).toFixed(0)+"px",e.style.top=(r-a).toFixed(0)+"px"}static hide(e){e.style.display="none"}static show(e){e.style.display="block"}static setSurroundingText(e,t,r,n){!e||(e.value=t,e.setSelectionRange(r,n),e.style.width="20px",e.style.width=`${e.scrollWidth}px`)}static getModifiers(e){let t=0;e.ctrlKey&&(t|=2),e.altKey&&(t|=1),e.shiftKey&&(t|=4),e.metaKey&&(t|=8);let r=e.buttons;return r&&(r&1&&(t|=16),r&2&&(t|=e.type==="pen"?2048:32),r&4&&(t|=64),r&8&&(t|=128),r&16&&(t|=256),r&32&&(t|=1024)),t}static setPointerCapture(e,t){e.setPointerCapture(t)}static releasePointerCapture(e,t){e.hasPointerCapture(t)&&e.releasePointerCapture(t)}};L.clipboardState=0;var v=class{static getGlobalThis(){return globalThis}static addClass(e,t){e.classList.add(t)}static getFirstElementById(e,t){return(t instanceof Window?t.document:t.ownerDocument).getElementById(e)}static getFirstElementByClassName(e,t){let n=(t instanceof Window?t.document:t).getElementsByClassName(e);return n?n[0]:null}static createAvaloniaCanvas(e){var n;let t=(n=e.getAttribute("data-containerId"))!=null?n:"0000",r=document.createElement("canvas");return r.id=`canvas${t}`,r.classList.add("avalonia-canvas"),r.style.width="100%",r.style.height="100%",r.style.position="absolute",r}static attachCanvas(e,t){e.prepend(t)}static detachCanvas(e,t){e.removeChild(t)}static createAvaloniaHost(e){let t=Math.random().toString(36).replace(/[^a-z]+/g,"").substr(2,10);e.classList.add("avalonia-container"),e.tabIndex=0,e.setAttribute("data-containerId",t),e.oncontextmenu=function(){return!1},e.style.overflow="hidden",e.style.touchAction="none";let r=document.createElement("div");r.id=`nativeHost${t}`,r.classList.add("avalonia-native-host"),r.style.left="0px",r.style.top="0px",r.style.width="100%",r.style.height="100%",r.style.position="absolute";let n=document.createElement("input");return n.id=`inputElement${t}`,n.classList.add("avalonia-input-element"),n.autocapitalize="none",n.type="text",n.spellcheck=!1,n.style.padding="0",n.style.margin="0",n.style.borderWidth="0",n.style.position="absolute",n.style.overflow="hidden",n.style.borderStyle="hidden",n.style.outline="none",n.style.background="transparent",n.style.color="transparent",n.style.display="none",n.style.height="20px",n.style.zIndex="-1",n.onpaste=function(){return!1},n.oncopy=function(){return!1},n.oncut=function(){return!1},e.prepend(n),e.prepend(r),{host:e,nativeHost:r,inputElement:n}}static isFullscreen(e){return e.document.fullscreenElement!=null}static async setFullscreen(e,t){t?await e.document.documentElement.requestFullscreen():await e.document.exitFullscreen()}static initGlobalDomEvents(e){if(e.document.documentElement.style.setProperty("--av-sat","env(safe-area-inset-top)"),e.document.documentElement.style.setProperty("--av-sar","env(safe-area-inset-right)"),e.document.documentElement.style.setProperty("--av-sab","env(safe-area-inset-bottom)"),e.document.documentElement.style.setProperty("--av-sal","env(safe-area-inset-left)"),e.matchMedia!==void 0){let t=e.matchMedia("(prefers-color-scheme: dark)"),r=e.matchMedia("(prefers-contrast: more)");t.addEventListener("change",n=>{l.DomHelper.DarkModeChanged(n.matches,r.matches)}),r.addEventListener("change",n=>{l.DomHelper.DarkModeChanged(t.matches,n.matches)})}e.document.addEventListener("visibilitychange",()=>{l.DomHelper.DocumentVisibilityChanged(e.document.visibilityState)}),e.document.visibilityState==="visible"&&e.setTimeout(()=>{l.DomHelper.DocumentVisibilityChanged(e.document.visibilityState)},10)}static getSafeAreaPadding(e){let t=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sat")),r=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sab")),n=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sal")),i=parseFloat(getComputedStyle(e.document.documentElement).getPropertyValue("--av-sar"));return[n,t,r,i]}static getDarkMode(e){if(e.matchMedia===void 0)return[0,0];let t=e.matchMedia("(prefers-color-scheme: dark)"),r=e.matchMedia("(prefers-contrast: more)");return[t.matches?1:0,r.matches?1:0]}};var M=class{static hasNativeFilePicker(){return"showSaveFilePicker"in globalThis}static isMobile(){var i;let e=(i=globalThis.navigator)==null?void 0:i.userAgentData;if(e)return e.mobile;let t=navigator.userAgent,r=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,n=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i;return r.test(t)||n.test(t.substr(0,4))}static isTv(){return navigator.userAgent.includes("SmartTV")}};var N=typeof SharedArrayBuffer!="undefined";function U(c){return N&&c[Symbol.toStringTag]==="SharedArrayBuffer"}var P=class{static async seek(e,t){return await e.seek(t)}static async truncate(e,t){return await e.truncate(t)}static async close(e){return await e.close()}static async write(e,t,r,n){var s;let i=(s=globalThis.getDotnetRuntime(0))==null?void 0:s.localHeapViewU8(),o;if(t._pointer>0&&t._length>0&&i&&!U(i.buffer))o=new Uint8Array(i.buffer,t._pointer+r,n);else{let a=new Uint8Array(n);t.copyTo(a,r),o=t}return await e.write(o)}static byteLength(e){return e.size}static async sliceArrayBuffer(e,t,r){let n=await e.slice(t,t+r).arrayBuffer();return new Uint8Array(n)}static toMemoryView(e){return e}};var k=class{},B=class{static createDefaultChild(e){return document.createElement("div")}static createAttachment(){return new k}static initializeWithChildHandle(e,t){e._child=t,e._child.style.position="absolute"}static attachTo(e,t){e._host&&e._child&&e._host.removeChild(e._child),e._host=t,e._host&&e._child&&e._host.appendChild(e._child)}static showInBounds(e,t,r,n,i){e._child&&(e._child.style.top=`${r}px`,e._child.style.left=`${t}px`,e._child.style.width=`${n}px`,e._child.style.height=`${i}px`,e._child.style.display="block")}static hideWithSize(e,t,r){e._child&&(e._child.style.width=`${t}px`,e._child.style.height=`${r}px`,e._child.style.display="none")}static releaseChild(e){e._child&&(e._child=void 0)}};var D=class{static addBackHandler(e){history.pushState(null,"",window.location.href),window.onpopstate=()=>{e()?history.forward():history.back()}}static openUri(e,t){return!!window.open(e,t)}};var z=class{static itemsArrayAt(e,t){let r=e[t];if(!r)return[];let n=[];for(let i=0;i{var r,n;(r=this.resizeObserver)==null||r.callbacks.delete(e),(n=this.resizeObserver)==null||n.unobserve(e)}}static onResize(e,t){for(let r of e){let n=t.callbacks.get(r.target);if(!n)continue;let i=window.devicePixelRatio,o,s,a=i;r.devicePixelContentBoxSize?(o=r.devicePixelContentBoxSize[0].inlineSize,s=r.devicePixelContentBoxSize[0].blockSize,a=1):r.contentBoxSize?r.contentBoxSize[0]?(o=r.contentBoxSize[0].inlineSize,s=r.contentBoxSize[0].blockSize):(o=r.contentBoxSize.inlineSize,s=r.contentBoxSize.blockSize):(o=r.contentRect.width,s=r.contentRect.height);let d=Math.round(o*a),u=Math.round(s*a);n(d,u,i)}}};var y=class{constructor(e,t){this.canvas=e;this.renderTargetType=t}static setSize(e,t,r){e.canvas.width=t,e.canvas.height=r}};function X(){var t,r,n,i;let c=globalThis,e=(r=c.Module)!=null?r:(t=c.getDotnetRuntime(0))==null?void 0:t.Module;return(i=(n=e==null?void 0:e.GL)!=null?n:c.AvaloniaGL)!=null?i:c.SkiaSharpGL}var b=class extends y{constructor(t,r){var s,a;if(b._gl==null&&(b._gl=X()),!b._gl)throw new Error("Module.GL object wasn't initialized, WebGL can't be used.");let n={alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,failIfMajorPerformanceCaveat:!0,majorVersion:r===2?1:2,minorVersion:0,enableExtensionsByDefault:1,explicitSwapControl:0},i=r===2?t.getContext("webgl",n):t.getContext("webgl2",n);if(!i)throw new Error("HTMLCanvasElement.getContext returned null.");let o=b._gl.registerContext(i,n);i.gl_handle=o;super(t,"webgl");this.canvas=t;this.contextHandle=o,this.fboId=(a=(s=i.getParameter(i.FRAMEBUFFER_BINDING))==null?void 0:s.id)!=null?a:0,this.stencil=i.getParameter(i.STENCIL_BITS),this.sample=i.getParameter(i.SAMPLES),this.depth=i.getParameter(i.DEPTH_BITS),this.attrs=n}static getCurrentContext(){var t,r,n;return(n=(r=(t=b._gl)==null?void 0:t.currentContext)==null?void 0:r.handle)!=null?n:0}static makeContextCurrent(t){if(b._gl==null)return!1;let r=b._gl.makeContextCurrent(t);return t===0||r}},w=b;w._gl=null;var E=class extends y{constructor(t){let r=t.getContext("2d",{alpha:!0});if(!r)throw new Error("HTMLCanvasElement.getContext(2d) returned null.");super(t,"software");this.context=r,this.runtime=globalThis.getDotnetRuntime(0)}putPixelData(t,r,n,i){var d;let o=(d=this.runtime)==null?void 0:d.localHeapViewU8(),s;if(o!=null&&o.buffer){if(s=new Uint8ClampedArray(o.buffer,t,r),this.canvas instanceof OffscreenCanvas){let u=new ArrayBuffer(s.byteLength),p=new Uint8ClampedArray(u);p.set(s),s=p}}else throw new Error("Unable to access .NET memory");let a=new ImageData(s,n,i);this.context.putImageData(a,0,0)}static staticPutPixelData(t,r,n,i,o){t.putPixelData(r,n,i,o)}};var m=class{static create(e,t,r){var i,o;let n=m.nextId++;if(e===0)m.registry[n]={canvas:t},m.targets[n]=m.createRenderTarget(t,r);else{let s=globalThis,a=(o=s.Module)!=null?o:(i=s.getDotnetRuntime(0))==null?void 0:i.Module,d=a==null?void 0:a.PThread;if(d==null)throw new Error("Unable to access emscripten PThread api");let u=d.pthreads[e];if(u==null)throw new Error(`Unable get pthread with id ${e}`);let p;if(u.postMessage!=null?p=u:p=u.worker,p==null)throw new Error(`Unable get Worker for pthread ${e}`);let x=t.transferControlToOffscreen();p.postMessage({avaloniaCmd:"registerCanvas",canvas:x,modes:r,id:n},[x]),m.registry[n]={canvas:t,worker:p}}return n}static initializeWorker(){let e=self.onmessage;self.onmessage=t=>{let r=t;r.data.avaloniaCmd==="registerCanvas"?m.targets[r.data.id]=m.createRenderTarget(r.data.canvas,r.data.modes):r.data.avaloniaCmd==="unregisterCanvas"?delete m.targets[r.data.id]:e!=null&&e.call(self,t)}}static getRenderTarget(e){return m.targets[e]}static createRenderTarget(e,t){for(let r of t)try{return r===1?new E(e):new w(e,r)}catch(n){let i="";n instanceof Error&&(i=": "+n.message),console.error(`Failed to create render target for mode ${r} ${i}`)}return new E(e)}},f=m;f.targets={},f.registry={},f.nextId=1;var C=class{constructor(e,t,r,n){this.canvas=e;this.targetId=f.create(n,e,t),H.observeSize(e,(i,o,s)=>{var a;this.sizeParams=[i,o,s],(a=l.CanvasHelper)==null||a.OnSizeChanged(r,i,o,s)})}get width(){return this.sizeParams?this.sizeParams[0]:1}get height(){return this.sizeParams?this.sizeParams[1]:1}get scaling(){return this.sizeParams?this.sizeParams[2]:1}destroy(){}static create(e,t,r,n){let i=v.createAvaloniaCanvas(e);v.attachCanvas(e,i);try{return new C(i,t,r,n)}catch(o){throw v.detachCanvas(e,i),o}}static destroy(e){e.destroy()}};var A=class{static raiseOnChanged(){l.DomHelper.ScreensChanged()}static async checkPermissions(e){let{state:t}=await e.navigator.permissions.query({name:"window-management"});t==="granted"&&await this.requestDetailedScreens(e)}static subscribeOnChanged(e){if(this.detailedScreens){e.screen.removeEventListener("change",this.raiseOnChanged),this.detailedScreens.addEventListener("screenschange",this.raiseOnChanged);for(let t of this.detailedScreens.screens)t.addEventListener("change",this.raiseOnChanged)}else e.screen.addEventListener("change",this.raiseOnChanged)}static getAllScreens(e){return this.detailedScreens?this.detailedScreens.screens:[Object.assign(e.screen,{window:e})]}static async requestDetailedScreens(e){return this.detailedScreens?!0:"getScreenDetails"in e&&(this.detailedScreens=await e.getScreenDetails(),this.detailedScreens)?(this.subscribeOnChanged(e),e.setTimeout(this.raiseOnChanged,1),!0):!1}static getDisplayName(e){return e==null?void 0:e.label}static getScaling(e){return"devicePixelRatio"in e?e.devicePixelRatio:"window"in e?e.window.devicePixelRatio:1}static getBounds(e){let t=e.width,r=e.height;return"left"in e&&"top"in e?[e.left,e.top,t,r]:"availLeft"in e&&"availTop"in e?[e.availLeft,e.availTop,t,r]:[0,0,t,r]}static getWorkingArea(e){let t=e.availWidth,r=e.availHeight;return"availLeft"in e&&"availTop"in e?[e.availLeft,e.availTop,t,r]:[0,0,t,r]}static isCurrent(e){return this.detailedScreens?this.detailedScreens.currentScreen===e:!0}static isPrimary(e){return"isPrimary"in e?e.isPrimary:!0}static getCurrentOrientation(e){switch(e.orientation.type){case"landscape-primary":return 1;case"landscape-secondary":return 4;case"portrait-primary":return 2;case"portrait-secondary":return 8}}};async function Fe(c,e){"serviceWorker"in navigator&&await globalThis.navigator.serviceWorker.register(c,e?{scope:e}:void 0)}export{v as AvaloniaDOM,M as Caniuse,C as CanvasSurface,z as GeneralHelpers,L as InputHelper,B as NativeControlHost,D as NavigationHelper,A as ScreenHelper,E as SoftwareRenderTarget,P as StreamHelper,g as TimerHelper,w as WebGlRenderTarget,y as WebRenderTarget,f as WebRenderTargetRegistry,Fe as registerServiceWorker}; //# sourceMappingURL=avalonia.js.map diff --git a/_framework/avalonia.js.br b/_framework/avalonia.js.br index 7b5b1df..573defc 100644 Binary files a/_framework/avalonia.js.br and b/_framework/avalonia.js.br differ diff --git a/_framework/avalonia.js.gz b/_framework/avalonia.js.gz index 06a1505..005ca91 100644 Binary files a/_framework/avalonia.js.gz and b/_framework/avalonia.js.gz differ diff --git a/_framework/avalonia.js.map b/_framework/avalonia.js.map index 1c84459..3879e5a 100755 --- a/_framework/avalonia.js.map +++ b/_framework/avalonia.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../webapp/modules/avalonia/caretHelper.ts", "../webapp/modules/avalonia/jsExports.ts", "../webapp/modules/avalonia/input.ts", "../webapp/modules/avalonia/dom.ts", "../webapp/modules/avalonia/caniuse.ts", "../webapp/modules/avalonia/stream.ts", "../webapp/modules/avalonia/nativeControlHost.ts", "../webapp/modules/avalonia/navigationHelper.ts", "../webapp/modules/avalonia/generalHelpers.ts", "../webapp/modules/avalonia/timer.ts", "../webapp/modules/avalonia/rendering/resizeHandler.ts", "../webapp/modules/avalonia/rendering/webRenderTarget.ts", "../webapp/modules/avalonia/rendering/webGlRenderTarget.ts", "../webapp/modules/avalonia/rendering/softwareRenderTarget.ts", "../webapp/modules/avalonia/rendering/webRenderTargetRegistry.ts", "../webapp/modules/avalonia/rendering/canvasSurface.ts", "../webapp/modules/avalonia/screens.ts", "../webapp/modules/avalonia.ts"], - "sourcesContent": ["// Based on https://github.com/component/textarea-caret-position/blob/master/index.js\r\nexport class CaretHelper {\r\n public static getCaretCoordinates(\r\n element: HTMLInputElement | HTMLTextAreaElement,\r\n position: number,\r\n options?: { debug: boolean }\r\n ) {\r\n if (!isBrowser) {\r\n throw new Error(\r\n \"textarea-caret-position#getCaretCoordinates should only be called in a browser\"\r\n );\r\n }\r\n\r\n const debug = options?.debug ?? false;\r\n if (debug) {\r\n const el = document.querySelector(\r\n \"#input-textarea-caret-position-mirror-div\"\r\n );\r\n if (el) el.parentNode?.removeChild(el);\r\n }\r\n\r\n // The mirror div will replicate the textarea's style\r\n const div = document.createElement(\"div\");\r\n div.id = \"input-textarea-caret-position-mirror-div\";\r\n document.body.appendChild(div);\r\n\r\n const style = div.style;\r\n const computed = window.getComputedStyle\r\n ? window.getComputedStyle(element)\r\n : ((element as any).currentStyle as CSSStyleDeclaration); // currentStyle for IE < 9\r\n const isInput = element.nodeName === \"INPUT\";\r\n\r\n // Default textarea styles\r\n style.whiteSpace = \"pre-wrap\";\r\n if (!isInput) style.wordWrap = \"break-word\"; // only for textarea-s\r\n\r\n // Position off-screen\r\n style.position = \"absolute\"; // required to return coordinates properly\r\n if (!debug) style.visibility = \"hidden\"; // not 'display: none' because we want rendering\r\n\r\n // Transfer the element's properties to the div\r\n properties.forEach((prop: string) => {\r\n if (isInput && prop === \"lineHeight\") {\r\n // Special case for s because text is rendered centered and line height may be != height\r\n if (computed.boxSizing === \"border-box\") {\r\n const height = parseInt(computed.height);\r\n const outerHeight =\r\n parseInt(computed.paddingTop) +\r\n parseInt(computed.paddingBottom) +\r\n parseInt(computed.borderTopWidth) +\r\n parseInt(computed.borderBottomWidth);\r\n const targetHeight = outerHeight + parseInt(computed.lineHeight);\r\n if (height > targetHeight) {\r\n style.lineHeight = `${height - outerHeight}px`;\r\n } else if (height === targetHeight) {\r\n style.lineHeight = computed.lineHeight;\r\n } else {\r\n style.lineHeight = \"0\";\r\n }\r\n } else {\r\n style.lineHeight = computed.height;\r\n }\r\n } else {\r\n (style as any)[prop] = (computed as any)[prop];\r\n }\r\n });\r\n\r\n if (isFirefox) {\r\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\r\n if (element.scrollHeight > parseInt(computed.height)) {\r\n style.overflowY = \"scroll\";\r\n }\r\n } else {\r\n style.overflow = \"hidden\"; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\r\n }\r\n\r\n div.textContent = element.value.substring(0, position);\r\n // The second special handling for input type=\"text\" vs textarea:\r\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\r\n if (isInput) div.textContent = div.textContent.replace(/\\s/g, \"\\u00a0\");\r\n\r\n const span = document.createElement(\"span\");\r\n // Wrapping must be replicated *exactly*, including when a long word gets\r\n // onto the next line, with whitespace at the end of the line before (#7).\r\n // The *only* reliable way to do that is to copy the *entire* rest of the\r\n // textarea's content into the created at the caret position.\r\n // For inputs, just '.' would be enough, but no need to bother.\r\n span.textContent = element.value.substring(position) || \".\"; // || because a completely empty faux span doesn't render at all\r\n div.appendChild(span);\r\n\r\n const coordinates = {\r\n top: span.offsetTop + parseInt(computed.borderTopWidth),\r\n left: span.offsetLeft + parseInt(computed.borderLeftWidth),\r\n height: parseInt(computed.lineHeight)\r\n };\r\n\r\n if (debug) {\r\n span.style.backgroundColor = \"#aaa\";\r\n } else {\r\n document.body.removeChild(div);\r\n }\r\n\r\n return coordinates;\r\n }\r\n}\r\n\r\nconst properties = [\r\n \"direction\", // RTL support\r\n \"boxSizing\",\r\n \"width\", // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\r\n \"height\",\r\n \"overflowX\",\r\n \"overflowY\", // copy the scrollbar for IE\r\n\r\n \"borderTopWidth\",\r\n \"borderRightWidth\",\r\n \"borderBottomWidth\",\r\n \"borderLeftWidth\",\r\n \"borderStyle\",\r\n\r\n \"paddingTop\",\r\n \"paddingRight\",\r\n \"paddingBottom\",\r\n \"paddingLeft\",\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n \"fontStyle\",\r\n \"fontVariant\",\r\n \"fontWeight\",\r\n \"fontStretch\",\r\n \"fontSize\",\r\n \"fontSizeAdjust\",\r\n \"lineHeight\",\r\n \"fontFamily\",\r\n\r\n \"textAlign\",\r\n \"textTransform\",\r\n \"textIndent\",\r\n \"textDecoration\", // might not make a difference, but better be safe\r\n\r\n \"letterSpacing\",\r\n \"wordSpacing\",\r\n\r\n \"tabSize\",\r\n \"MozTabSize\"\r\n];\r\n\r\nconst isBrowser = typeof window !== \"undefined\";\r\nconst isFirefox = isBrowser && (window as any).mozInnerScreenX != null;\r\n", "export class JsExports {\r\n public static resolvedExports?: any;\r\n public static exportsPromise: Promise;\r\n\r\n public static get InputHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.InputHelper;\r\n }\r\n\r\n public static get DomHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.DomHelper;\r\n }\r\n\r\n public static get TimerHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.TimerHelper;\r\n }\r\n\r\n public static get CanvasHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.CanvasHelper;\r\n }\r\n}\r\nasync function resolveExports (): Promise {\r\n const runtimeApi = await globalThis.getDotnetRuntime(0);\r\n if (runtimeApi == null) { return; }\r\n JsExports.resolvedExports = await runtimeApi.getAssemblyExports(\"Avalonia.Browser.dll\");\r\n return JsExports.resolvedExports;\r\n}\r\n\r\nJsExports.exportsPromise = resolveExports();\r\n", "import { CaretHelper } from \"./caretHelper\";\r\nimport { JsExports } from \"./jsExports\";\r\n\r\nenum RawInputModifiers {\r\n None = 0,\r\n Alt = 1,\r\n Control = 2,\r\n Shift = 4,\r\n Meta = 8,\r\n\r\n LeftMouseButton = 16,\r\n RightMouseButton = 32,\r\n MiddleMouseButton = 64,\r\n XButton1MouseButton = 128,\r\n XButton2MouseButton = 256,\r\n KeyboardMask = Alt | Control | Shift | Meta,\r\n\r\n PenInverted = 512,\r\n PenEraser = 1024,\r\n PenBarrelButton = 2048\r\n}\r\n\r\n/*\r\n* This is a hack to handle Mozilla clipboard events in a more convinient way for framework users.\r\n* In the browser, events go in order KeyDown -> Paste -> KeyUp.\r\n* On KeyDown we trigger Avalonia handlers, which might execute readClipboardText.\r\n* When readClipboardText was executed, we mark ClipboardState as Pending and setup clipboard promise,\r\n* which will un-handle KeyDown event, basically allowing browser to pass a Paste event properly.\r\n* On actual Paste event we execute promise callbacks, resuming async operation, and returning pasted text to the app.\r\n* Note #1, on every KeyUp event we will reset all the state and reject pending promises if any, as this event it expected to come after Paste.\r\n* Note #2, whole this code will be executed only on legacy browsers like Mozilla, where clipboard.readText is not available.\r\n* Note #3, with all of these hacks Clipboard.ReadText will still work only on actual \"paste\" gesture initiated by user.\r\n* */\r\nenum ClipboardState {\r\n None,\r\n Ready,\r\n Pending\r\n}\r\n\r\nexport class InputHelper {\r\n static clipboardState: ClipboardState = ClipboardState.None;\r\n static resolveClipboard?: any;\r\n static rejectClipboard?: any;\r\n\r\n public static initializeBackgroundHandlers() {\r\n if (this.clipboardState !== ClipboardState.None) {\r\n return;\r\n }\r\n\r\n globalThis.addEventListener(\"paste\", (args: any) => {\r\n if (this.clipboardState === ClipboardState.Pending) {\r\n this.resolveClipboard(args.clipboardData.getData(\"text\"));\r\n }\r\n });\r\n this.clipboardState = ClipboardState.Ready;\r\n }\r\n\r\n public static async readClipboardText(globalThis: Window): Promise {\r\n if (globalThis.navigator.clipboard.readText) {\r\n return await globalThis.navigator.clipboard.readText();\r\n } else {\r\n try {\r\n return await new Promise((resolve, reject) => {\r\n this.clipboardState = ClipboardState.Pending;\r\n this.resolveClipboard = resolve;\r\n this.rejectClipboard = reject;\r\n });\r\n } finally {\r\n this.clipboardState = ClipboardState.Ready;\r\n this.resolveClipboard = null;\r\n this.rejectClipboard = null;\r\n }\r\n }\r\n }\r\n\r\n public static async writeClipboardText(globalThis: Window, text: string): Promise {\r\n return await globalThis.navigator.clipboard.writeText(text);\r\n }\r\n\r\n public static subscribeInputEvents(element: HTMLInputElement, topLevelId: number) {\r\n const keySub = this.subscribeKeyEvents(element, topLevelId);\r\n const pointerSub = this.subscribePointerEvents(element, topLevelId);\r\n const textSub = this.subscribeTextEvents(element, topLevelId);\r\n const dndSub = this.subscribeDropEvents(element, topLevelId);\r\n const paneSub = this.subscribeKeyboardGeometryChange(element, topLevelId);\r\n\r\n return () => {\r\n keySub();\r\n pointerSub();\r\n textSub();\r\n dndSub();\r\n paneSub();\r\n };\r\n }\r\n\r\n public static subscribeKeyEvents(element: HTMLInputElement, topLevelId: number) {\r\n const keyDownHandler = (args: KeyboardEvent) => {\r\n JsExports.InputHelper.OnKeyDown(topLevelId, args.code, args.key, this.getModifiers(args));\r\n if (this.clipboardState !== ClipboardState.Pending) {\r\n args.preventDefault();\r\n }\r\n };\r\n element.addEventListener(\"keydown\", keyDownHandler);\r\n\r\n const keyUpHandler = (args: KeyboardEvent) => {\r\n JsExports.InputHelper.OnKeyUp(topLevelId, args.code, args.key, this.getModifiers(args));\r\n args.preventDefault();\r\n if (this.rejectClipboard) {\r\n this.rejectClipboard();\r\n }\r\n };\r\n\r\n element.addEventListener(\"keyup\", keyUpHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"keydown\", keyDownHandler);\r\n element.removeEventListener(\"keyup\", keyUpHandler);\r\n };\r\n }\r\n\r\n public static subscribeTextEvents(\r\n element: HTMLInputElement,\r\n topLevelId: number) {\r\n const compositionStartHandler = (args: CompositionEvent) => {\r\n JsExports.InputHelper.OnCompositionStart(topLevelId);\r\n };\r\n element.addEventListener(\"compositionstart\", compositionStartHandler);\r\n\r\n const beforeInputHandler = (args: InputEvent) => {\r\n const ranges = args.getTargetRanges();\r\n let start = -1;\r\n let end = -1;\r\n if (ranges.length > 0) {\r\n start = ranges[0].startOffset;\r\n end = ranges[0].endOffset;\r\n }\r\n\r\n if (args.inputType === \"insertCompositionText\") {\r\n start = 2;\r\n end = start + 2;\r\n }\r\n\r\n JsExports.InputHelper.OnBeforeInput(topLevelId, args.inputType, start, end);\r\n };\r\n element.addEventListener(\"beforeinput\", beforeInputHandler);\r\n\r\n const compositionUpdateHandler = (args: CompositionEvent) => {\r\n JsExports.InputHelper.OnCompositionUpdate(topLevelId, args.data);\r\n };\r\n element.addEventListener(\"compositionupdate\", compositionUpdateHandler);\r\n\r\n const compositionEndHandler = (args: CompositionEvent) => {\r\n JsExports.InputHelper.OnCompositionEnd(topLevelId, args.data);\r\n args.preventDefault();\r\n };\r\n element.addEventListener(\"compositionend\", compositionEndHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"compositionstart\", compositionStartHandler);\r\n element.removeEventListener(\"compositionupdate\", compositionUpdateHandler);\r\n element.removeEventListener(\"compositionend\", compositionEndHandler);\r\n };\r\n }\r\n\r\n public static subscribePointerEvents(\r\n element: HTMLInputElement,\r\n topLevelId: number\r\n ) {\r\n const pointerMoveHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerMove(\r\n topLevelId, args.pointerType, args.pointerId, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args), args);\r\n args.preventDefault();\r\n };\r\n\r\n const pointerDownHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerDown(\r\n topLevelId, args.pointerType, args.pointerId, args.button, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args));\r\n args.preventDefault();\r\n };\r\n\r\n const pointerUpHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerUp(\r\n topLevelId, args.pointerType, args.pointerId, args.button, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args));\r\n args.preventDefault();\r\n };\r\n\r\n const pointerCancelHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerCancel(\r\n topLevelId, args.pointerType, args.pointerId, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args));\r\n };\r\n\r\n const wheelHandler = (args: WheelEvent) => {\r\n JsExports.InputHelper.OnWheel(\r\n topLevelId, args.offsetX, args.offsetY, args.deltaX, args.deltaY, this.getModifiers(args));\r\n args.preventDefault();\r\n };\r\n\r\n element.addEventListener(\"pointermove\", pointerMoveHandler);\r\n element.addEventListener(\"pointerdown\", pointerDownHandler);\r\n element.addEventListener(\"pointerup\", pointerUpHandler);\r\n element.addEventListener(\"wheel\", wheelHandler);\r\n element.addEventListener(\"pointercancel\", pointerCancelHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"pointerover\", pointerMoveHandler);\r\n element.removeEventListener(\"pointerdown\", pointerDownHandler);\r\n element.removeEventListener(\"pointerup\", pointerUpHandler);\r\n element.removeEventListener(\"pointercancel\", pointerCancelHandler);\r\n element.removeEventListener(\"wheel\", wheelHandler);\r\n };\r\n }\r\n\r\n public static subscribeDropEvents(\r\n element: HTMLInputElement,\r\n topLevelId: number\r\n ) {\r\n const handler = (args: DragEvent) => {\r\n const dataObject = args.dataTransfer;\r\n JsExports.InputHelper.OnDragDrop(topLevelId, args.type, args.offsetX, args.offsetY, this.getModifiers(args), dataObject?.effectAllowed, dataObject);\r\n };\r\n const overAndDropHandler = (args: DragEvent) => {\r\n args.preventDefault();\r\n handler(args);\r\n };\r\n element.addEventListener(\"dragover\", overAndDropHandler);\r\n element.addEventListener(\"dragenter\", handler);\r\n element.addEventListener(\"dragleave\", handler);\r\n element.addEventListener(\"drop\", overAndDropHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"dragover\", overAndDropHandler);\r\n element.removeEventListener(\"dragenter\", handler);\r\n element.removeEventListener(\"dragleave\", handler);\r\n element.removeEventListener(\"drop\", overAndDropHandler);\r\n };\r\n }\r\n\r\n public static getCoalescedEvents(pointerEvent: PointerEvent): number[] {\r\n return pointerEvent.getCoalescedEvents()\r\n .flatMap(e => [e.offsetX, e.offsetY, e.pressure, e.tiltX, e.tiltY, e.twist]);\r\n }\r\n\r\n public static subscribeKeyboardGeometryChange(\r\n element: HTMLInputElement,\r\n topLevelId: number) {\r\n if (\"virtualKeyboard\" in navigator) {\r\n // (navigator as any).virtualKeyboard.overlaysContent = true;\r\n const listener = (event: any) => {\r\n const elementRect = element.getBoundingClientRect();\r\n const keyboardRect = event.target.boundingRect as DOMRect;\r\n\r\n JsExports.InputHelper.OnKeyboardGeometryChange(\r\n topLevelId,\r\n keyboardRect.x - elementRect.x,\r\n keyboardRect.y - elementRect.y,\r\n keyboardRect.width,\r\n keyboardRect.height);\r\n };\r\n (navigator as any).virtualKeyboard.addEventListener(\"geometrychange\", listener);\r\n return () => {\r\n (navigator as any).virtualKeyboard.removeEventListener(\"geometrychange\", listener);\r\n };\r\n }\r\n\r\n return () => {};\r\n }\r\n\r\n public static clearInput(inputElement: HTMLInputElement) {\r\n inputElement.value = \"\";\r\n }\r\n\r\n public static focusElement(inputElement: HTMLElement) {\r\n inputElement.focus();\r\n }\r\n\r\n public static setCursor(inputElement: HTMLInputElement, kind: string) {\r\n if (kind === \"default\") {\r\n inputElement.style.removeProperty(\"cursor\");\r\n } else {\r\n inputElement.style.cursor = kind;\r\n }\r\n }\r\n\r\n public static setBounds(inputElement: HTMLInputElement, x: number, y: number, caretWidth: number, caretHeight: number, caret: number) {\r\n inputElement.style.left = (x).toFixed(0) + \"px\";\r\n inputElement.style.top = (y).toFixed(0) + \"px\";\r\n\r\n const { left, top } = CaretHelper.getCaretCoordinates(inputElement, caret);\r\n\r\n inputElement.style.left = (x - left).toFixed(0) + \"px\";\r\n inputElement.style.top = (y - top).toFixed(0) + \"px\";\r\n }\r\n\r\n public static hide(inputElement: HTMLInputElement) {\r\n inputElement.style.display = \"none\";\r\n }\r\n\r\n public static show(inputElement: HTMLInputElement) {\r\n inputElement.style.display = \"block\";\r\n }\r\n\r\n public static setSurroundingText(inputElement: HTMLInputElement, text: string, start: number, end: number) {\r\n if (!inputElement) {\r\n return;\r\n }\r\n\r\n inputElement.value = text;\r\n inputElement.setSelectionRange(start, end);\r\n inputElement.style.width = \"20px\";\r\n inputElement.style.width = `${inputElement.scrollWidth}px`;\r\n }\r\n\r\n private static getModifiers(args: KeyboardEvent | PointerEvent | WheelEvent | DragEvent): number {\r\n let modifiers = RawInputModifiers.None;\r\n\r\n if (args.ctrlKey) { modifiers |= RawInputModifiers.Control; }\r\n if (args.altKey) { modifiers |= RawInputModifiers.Alt; }\r\n if (args.shiftKey) { modifiers |= RawInputModifiers.Shift; }\r\n if (args.metaKey) { modifiers |= RawInputModifiers.Meta; }\r\n\r\n const buttons = (args as PointerEvent).buttons;\r\n if (buttons) {\r\n if (buttons & 1) { modifiers |= RawInputModifiers.LeftMouseButton; }\r\n if (buttons & 2) { modifiers |= (args.type === \"pen\" ? RawInputModifiers.PenBarrelButton : RawInputModifiers.RightMouseButton); }\r\n if (buttons & 4) { modifiers |= RawInputModifiers.MiddleMouseButton; }\r\n if (buttons & 8) { modifiers |= RawInputModifiers.XButton1MouseButton; }\r\n if (buttons & 16) { modifiers |= RawInputModifiers.XButton2MouseButton; }\r\n if (buttons & 32) { modifiers |= RawInputModifiers.PenEraser; }\r\n }\r\n\r\n return modifiers;\r\n }\r\n\r\n public static setPointerCapture(containerElement: HTMLInputElement, pointerId: number): void {\r\n containerElement.setPointerCapture(pointerId);\r\n }\r\n\r\n public static releasePointerCapture(containerElement: HTMLInputElement, pointerId: number): void {\r\n if (containerElement.hasPointerCapture(pointerId)) {\r\n containerElement.releasePointerCapture(pointerId);\r\n }\r\n }\r\n}\r\n", "import { JsExports } from \"./jsExports\";\r\n\r\nexport class AvaloniaDOM {\r\n public static getGlobalThis() {\r\n return globalThis;\r\n }\r\n\r\n public static addClass(element: HTMLElement, className: string): void {\r\n element.classList.add(className);\r\n }\r\n\r\n static getFirstElementById(className: string, parent: HTMLElement | Window): Element | null {\r\n const parentNode = parent instanceof Window\r\n ? parent.document\r\n : parent.ownerDocument;\r\n\r\n return parentNode.getElementById(className);\r\n }\r\n\r\n static getFirstElementByClassName(className: string, parent: HTMLElement | Window): Element | null {\r\n const parentNode = parent instanceof Window\r\n ? parent.document\r\n : parent;\r\n\r\n const elements = parentNode.getElementsByClassName(className);\r\n return elements ? elements[0] : null;\r\n }\r\n\r\n static createAvaloniaCanvas(host: HTMLElement): HTMLCanvasElement {\r\n const containerId = host.getAttribute(\"data-containerId\") ?? \"0000\";\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.id = `canvas${containerId}`;\r\n canvas.classList.add(\"avalonia-canvas\");\r\n canvas.style.width = \"100%\";\r\n canvas.style.height = \"100%\";\r\n canvas.style.position = \"absolute\";\r\n\r\n return canvas;\r\n }\r\n\r\n static attachCanvas(host: HTMLElement, canvas: HTMLCanvasElement): void {\r\n host.prepend(canvas);\r\n }\r\n\r\n static detachCanvas(host: HTMLElement, canvas: HTMLCanvasElement): void {\r\n host.removeChild(canvas);\r\n }\r\n\r\n static createAvaloniaHost(host: HTMLElement) {\r\n const containerId = Math.random().toString(36).replace(/[^a-z]+/g, \"\").substr(2, 10);\r\n\r\n // Root element\r\n host.classList.add(\"avalonia-container\");\r\n host.tabIndex = 0;\r\n host.setAttribute(\"data-containerId\", containerId);\r\n host.oncontextmenu = function () { return false; };\r\n host.style.overflow = \"hidden\";\r\n host.style.touchAction = \"none\";\r\n\r\n // Canvas is lazily created depending on the rendering mode. See createAvaloniaCanvas usage.\r\n\r\n // Native controls host\r\n const nativeHost = document.createElement(\"div\");\r\n nativeHost.id = `nativeHost${containerId}`;\r\n nativeHost.classList.add(\"avalonia-native-host\");\r\n nativeHost.style.left = \"0px\";\r\n nativeHost.style.top = \"0px\";\r\n nativeHost.style.width = \"100%\";\r\n nativeHost.style.height = \"100%\";\r\n nativeHost.style.position = \"absolute\";\r\n\r\n // IME\r\n const inputElement = document.createElement(\"input\");\r\n inputElement.id = `inputElement${containerId}`;\r\n inputElement.classList.add(\"avalonia-input-element\");\r\n inputElement.autocapitalize = \"none\";\r\n inputElement.type = \"text\";\r\n inputElement.spellcheck = false;\r\n inputElement.style.padding = \"0\";\r\n inputElement.style.margin = \"0\";\r\n inputElement.style.borderWidth = \"0\";\r\n inputElement.style.position = \"absolute\";\r\n inputElement.style.overflow = \"hidden\";\r\n inputElement.style.borderStyle = \"hidden\";\r\n inputElement.style.outline = \"none\";\r\n inputElement.style.background = \"transparent\";\r\n inputElement.style.color = \"transparent\";\r\n inputElement.style.display = \"none\";\r\n inputElement.style.height = \"20px\";\r\n inputElement.style.zIndex = \"-1\";\r\n inputElement.onpaste = function () { return false; };\r\n inputElement.oncopy = function () { return false; };\r\n inputElement.oncut = function () { return false; };\r\n\r\n host.prepend(inputElement);\r\n host.prepend(nativeHost);\r\n\r\n return {\r\n host,\r\n nativeHost,\r\n inputElement\r\n };\r\n }\r\n\r\n public static isFullscreen(globalThis: Window): boolean {\r\n return globalThis.document.fullscreenElement != null;\r\n }\r\n\r\n public static async setFullscreen(globalThis: Window, isFullscreen: boolean) {\r\n if (isFullscreen) {\r\n const doc = globalThis.document.documentElement;\r\n await doc.requestFullscreen();\r\n } else {\r\n await globalThis.document.exitFullscreen();\r\n }\r\n }\r\n\r\n public static initGlobalDomEvents(globalThis: Window): void {\r\n // Init Safe Area properties.\r\n globalThis.document.documentElement.style.setProperty(\"--av-sat\", \"env(safe-area-inset-top)\");\r\n globalThis.document.documentElement.style.setProperty(\"--av-sar\", \"env(safe-area-inset-right)\");\r\n globalThis.document.documentElement.style.setProperty(\"--av-sab\", \"env(safe-area-inset-bottom)\");\r\n globalThis.document.documentElement.style.setProperty(\"--av-sal\", \"env(safe-area-inset-left)\");\r\n\r\n // Subscribe on DarkMode changes.\r\n if (globalThis.matchMedia !== undefined) {\r\n const colorSchemeMedia = globalThis.matchMedia(\"(prefers-color-scheme: dark)\");\r\n const prefersContrastMedia = globalThis.matchMedia(\"(prefers-contrast: more)\");\r\n\r\n colorSchemeMedia.addEventListener(\"change\", (args: MediaQueryListEvent) => {\r\n JsExports.DomHelper.DarkModeChanged(args.matches, prefersContrastMedia.matches);\r\n });\r\n prefersContrastMedia.addEventListener(\"change\", (args: MediaQueryListEvent) => {\r\n JsExports.DomHelper.DarkModeChanged(colorSchemeMedia.matches, args.matches);\r\n });\r\n }\r\n\r\n globalThis.document.addEventListener(\"visibilitychange\", () => {\r\n JsExports.DomHelper.DocumentVisibilityChanged(globalThis.document.visibilityState);\r\n });\r\n\r\n // Report initial value.\r\n if (globalThis.document.visibilityState === \"visible\") {\r\n globalThis.setTimeout(() => {\r\n JsExports.DomHelper.DocumentVisibilityChanged(globalThis.document.visibilityState);\r\n }, 10);\r\n }\r\n }\r\n\r\n public static getSafeAreaPadding(globalThis: Window): number[] {\r\n const top = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sat\"));\r\n const bottom = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sab\"));\r\n const left = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sal\"));\r\n const right = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sar\"));\r\n\r\n return [left, top, bottom, right];\r\n }\r\n\r\n public static getDarkMode(globalThis: Window): number[] {\r\n if (globalThis.matchMedia === undefined) return [0, 0];\r\n\r\n const colorSchemeMedia = globalThis.matchMedia(\"(prefers-color-scheme: dark)\");\r\n const prefersContrastMedia = globalThis.matchMedia(\"(prefers-contrast: more)\");\r\n return [\r\n colorSchemeMedia.matches ? 1 : 0,\r\n prefersContrastMedia.matches ? 1 : 0\r\n ];\r\n }\r\n}\r\n", "export class Caniuse {\r\n public static hasNativeFilePicker(): boolean {\r\n return \"showSaveFilePicker\" in globalThis;\r\n }\r\n\r\n public static isMobile(): boolean {\r\n const userAgentData = (globalThis.navigator as any)?.userAgentData;\r\n if (userAgentData) {\r\n return userAgentData.mobile;\r\n }\r\n\r\n const userAgent = navigator.userAgent;\r\n const regex1 = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;\r\n const regex2 = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i;\r\n return regex1.test(userAgent) || regex2.test(userAgent.substr(0, 4));\r\n }\r\n\r\n public static isTv(): boolean {\r\n return navigator.userAgent.includes(\"SmartTV\");\r\n }\r\n}\r\n", "import FileSystemWritableFileStream from \"native-file-system-adapter/types/src/FileSystemWritableFileStream\";\r\n\r\nconst sharedArrayBufferDefined = typeof SharedArrayBuffer !== \"undefined\";\r\nexport function isSharedArrayBuffer(buffer: any): buffer is SharedArrayBuffer {\r\n // BEWARE: In some cases, `instanceof SharedArrayBuffer` returns false even though buffer is an SAB.\r\n // Patch adapted from https://github.com/emscripten-core/emscripten/pull/16994\r\n // See also https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag\r\n return sharedArrayBufferDefined && buffer[Symbol.toStringTag] === \"SharedArrayBuffer\";\r\n}\r\n\r\nexport class StreamHelper {\r\n public static async seek(stream: FileSystemWritableFileStream, position: number) {\r\n return await stream.seek(position);\r\n }\r\n\r\n public static async truncate(stream: FileSystemWritableFileStream, size: number) {\r\n return await stream.truncate(size);\r\n }\r\n\r\n public static async close(stream: FileSystemWritableFileStream) {\r\n return await stream.close();\r\n }\r\n\r\n public static async write(stream: FileSystemWritableFileStream, span: any, offset: number, count: number) {\r\n const heap8 = globalThis.getDotnetRuntime(0)?.localHeapViewU8();\r\n\r\n let buffer: Uint8Array;\r\n if (span._pointer > 0 && span._length > 0 && heap8 && !isSharedArrayBuffer(heap8.buffer)) {\r\n // Attempt to use undocumented access to the HEAP8 directly\r\n // Note, SharedArrayBuffer cannot be used with ImageData (when WasmEnableThreads = true).\r\n buffer = new Uint8Array(heap8.buffer, span._pointer as number + offset, count);\r\n } else {\r\n // Or fallback to the normal API that does multiple array copies.\r\n const copy = new Uint8Array(count);\r\n span.copyTo(copy, offset);\r\n buffer = span;\r\n }\r\n\r\n return await stream.write(buffer);\r\n }\r\n\r\n public static byteLength(stream: Blob) {\r\n return stream.size;\r\n }\r\n\r\n public static async sliceArrayBuffer(stream: Blob, offset: number, count: number) {\r\n const buffer = await stream.slice(offset, offset + count).arrayBuffer();\r\n return new Uint8Array(buffer);\r\n }\r\n\r\n public static toMemoryView(buffer: Uint8Array): Uint8Array {\r\n return buffer;\r\n }\r\n}\r\n", "class NativeControlHostTopLevelAttachment {\r\n _child?: HTMLElement;\r\n _host?: HTMLElement;\r\n}\r\n\r\nexport class NativeControlHost {\r\n public static createDefaultChild(parent?: HTMLElement): HTMLElement {\r\n return document.createElement(\"div\");\r\n }\r\n\r\n public static createAttachment(): NativeControlHostTopLevelAttachment {\r\n return new NativeControlHostTopLevelAttachment();\r\n }\r\n\r\n public static initializeWithChildHandle(element: NativeControlHostTopLevelAttachment, child: HTMLElement): void {\r\n element._child = child;\r\n element._child.style.position = \"absolute\";\r\n }\r\n\r\n public static attachTo(element: NativeControlHostTopLevelAttachment, host?: HTMLElement): void {\r\n if (element._host && element._child) {\r\n element._host.removeChild(element._child);\r\n }\r\n\r\n element._host = host;\r\n\r\n if (element._host && element._child) {\r\n element._host.appendChild(element._child);\r\n }\r\n }\r\n\r\n public static showInBounds(element: NativeControlHostTopLevelAttachment, x: number, y: number, width: number, height: number): void {\r\n if (element._child) {\r\n element._child.style.top = `${y}px`;\r\n element._child.style.left = `${x}px`;\r\n element._child.style.width = `${width}px`;\r\n element._child.style.height = `${height}px`;\r\n element._child.style.display = \"block\";\r\n }\r\n }\r\n\r\n public static hideWithSize(element: NativeControlHostTopLevelAttachment, width: number, height: number): void {\r\n if (element._child) {\r\n element._child.style.width = `${width}px`;\r\n element._child.style.height = `${height}px`;\r\n element._child.style.display = \"none\";\r\n }\r\n }\r\n\r\n public static releaseChild(element: NativeControlHostTopLevelAttachment): void {\r\n if (element._child) {\r\n element._child = undefined;\r\n }\r\n }\r\n}\r\n", "export class NavigationHelper {\r\n public static addBackHandler(backHandlerCallback: () => Boolean) {\r\n history.pushState(null, \"\", window.location.href);\r\n window.onpopstate = () => {\r\n const handled = backHandlerCallback();\r\n\r\n if (!handled) {\r\n history.back();\r\n } else {\r\n history.forward();\r\n }\r\n };\r\n }\r\n}\r\n", "export class GeneralHelpers {\r\n public static itemsArrayAt(instance: any, key: any): any[] {\r\n const items = instance[key];\r\n if (!items) {\r\n return [];\r\n }\r\n\r\n const retItems = [];\r\n for (let i = 0; i < items.length; i++) {\r\n retItems[i] = items[i];\r\n }\r\n return retItems;\r\n }\r\n\r\n public static itemAt(instance: any, key: any): any {\r\n const item = instance[key];\r\n return item;\r\n }\r\n\r\n public static callMethod(instance: any, name: string /*, args */): any {\r\n const args = Array.prototype.slice.call(arguments, 2);\r\n return instance[name].apply(instance, args);\r\n }\r\n}\r\n", "import { JsExports } from \"./jsExports\";\r\n\r\nexport class TimerHelper {\r\n public static runAnimationFrames(): void {\r\n function render(time: number) {\r\n JsExports.TimerHelper?.JsExportOnAnimationFrame();\r\n self.requestAnimationFrame(render);\r\n }\r\n self.requestAnimationFrame(render);\r\n }\r\n\r\n static onTimeout() {\r\n JsExports.TimerHelper?.JsExportOnTimeout();\r\n }\r\n\r\n static onInterval() {\r\n JsExports.TimerHelper?.JsExportOnInterval();\r\n }\r\n\r\n public static setTimeout(interval: number): number {\r\n return setTimeout(TimerHelper.onTimeout, interval);\r\n }\r\n\r\n public static setInterval(interval: number): number {\r\n return setInterval(TimerHelper.onInterval, interval);\r\n }\r\n}\r\n", "type ResizeObserverWithCallbacks = {\r\n callbacks: Map void)>;\r\n} & ResizeObserver;\r\n\r\nexport class ResizeHandler {\r\n private static resizeObserver?: ResizeObserverWithCallbacks;\r\n\r\n public static observeSize(element: HTMLElement, callback: (width: number, height: number, dpr: number) => void) : (() => void) {\r\n if (!this.resizeObserver) {\r\n this.resizeObserver = new ResizeObserver(this.onResize) as ResizeObserverWithCallbacks;\r\n this.resizeObserver.callbacks = new Map void)>();\r\n }\r\n\r\n this.resizeObserver.callbacks.set(element, callback);\r\n this.resizeObserver.observe(element, { box: \"content-box\" });\r\n\r\n return () => {\r\n this.resizeObserver?.callbacks.delete(element);\r\n this.resizeObserver?.unobserve(element);\r\n };\r\n }\r\n\r\n private static onResize(entries: ResizeObserverEntry[], observer: ResizeObserver) {\r\n for (const entry of entries) {\r\n const callback = (observer as ResizeObserverWithCallbacks).callbacks.get(entry.target);\r\n if (!callback) {\r\n continue;\r\n }\r\n\r\n const trueDpr = window.devicePixelRatio;\r\n let width;\r\n let height;\r\n let dpr = trueDpr;\r\n if (entry.devicePixelContentBoxSize) {\r\n // NOTE: Only this path gives the correct answer\r\n // The other paths are imperfect fallbacks\r\n // for browsers that don't provide anyway to do this\r\n width = entry.devicePixelContentBoxSize[0].inlineSize;\r\n height = entry.devicePixelContentBoxSize[0].blockSize;\r\n dpr = 1; // it's already in width and height\r\n } else if (entry.contentBoxSize) {\r\n if (entry.contentBoxSize[0]) {\r\n width = entry.contentBoxSize[0].inlineSize;\r\n height = entry.contentBoxSize[0].blockSize;\r\n } else {\r\n width = (entry.contentBoxSize as any).inlineSize;\r\n height = (entry.contentBoxSize as any).blockSize;\r\n }\r\n } else {\r\n width = entry.contentRect.width;\r\n height = entry.contentRect.height;\r\n }\r\n const displayWidth = Math.round(width * dpr);\r\n const displayHeight = Math.round(height * dpr);\r\n callback(displayWidth, displayHeight, trueDpr);\r\n }\r\n }\r\n}\r\n", "export class WebRenderTarget {\r\n renderTargetType: string;\r\n constructor(protected canvas: HTMLCanvasElement | OffscreenCanvas, type: string) {\r\n this.renderTargetType = type;\r\n }\r\n\r\n static setSize(target: WebRenderTarget, w: number, h: number) {\r\n target.canvas.width = w;\r\n target.canvas.height = h;\r\n }\r\n}\r\n", "import { BrowserRenderingMode } from \"./renderingMode\";\r\nimport { WebRenderTarget } from \"./webRenderTarget\";\r\ninterface EmscriptenGlContext {\r\n handle: number;\r\n}\r\n\r\ninterface EmscriptenGL {\r\n registerContext: (ctx: WebGLRenderingContext, attrs: WebGLContextAttributes) => number;\r\n currentContext?: EmscriptenGlContext;\r\n makeContextCurrent: (handle: number) => boolean;\r\n}\r\n\r\nfunction getGL(): EmscriptenGL {\r\n const self = globalThis as any;\r\n const module = self.Module ?? self.getDotnetRuntime(0)?.Module;\r\n return (module?.GL ?? self.AvaloniaGL ?? self.SkiaSharpGL) as EmscriptenGL;\r\n}\r\n\r\nexport class WebGlRenderTarget extends WebRenderTarget {\r\n public contextHandle?: number;\r\n public attrs: WebGLContextAttributes;\r\n public fboId?: number;\r\n public stencil?: number;\r\n public sample?: number;\r\n public depth?: number;\r\n private static _gl: EmscriptenGL | null = null;\r\n\r\n constructor(public canvas: HTMLCanvasElement | OffscreenCanvas, mode: BrowserRenderingMode) {\r\n // Skia only understands WebGL context wrapped in Emscripten.\r\n if (WebGlRenderTarget._gl == null) { WebGlRenderTarget._gl = getGL(); }\r\n if (!WebGlRenderTarget._gl) {\r\n throw new Error(\"Module.GL object wasn't initialized, WebGL can't be used.\");\r\n }\r\n\r\n const attrs: WebGLContextAttributes | any =\r\n {\r\n alpha: true,\r\n depth: true,\r\n stencil: true,\r\n antialias: false,\r\n premultipliedAlpha: true,\r\n preserveDrawingBuffer: false,\r\n // only supported on older browsers, which is perfect as we want to fallback to 2d there.\r\n failIfMajorPerformanceCaveat: true,\r\n // attrs used by Emscripten:\r\n majorVersion: mode === BrowserRenderingMode.WebGL1 ? 1 : 2,\r\n minorVersion: 0,\r\n enableExtensionsByDefault: 1,\r\n explicitSwapControl: 0\r\n };\r\n\r\n const context = (mode === BrowserRenderingMode.WebGL1\r\n ? canvas.getContext(\"webgl\", attrs)\r\n : canvas.getContext(\"webgl2\", attrs)) as WebGLRenderingContext;\r\n if (!context) {\r\n throw new Error(\"HTMLCanvasElement.getContext returned null.\");\r\n }\r\n\r\n const handle = WebGlRenderTarget._gl.registerContext(context, attrs);\r\n (context as any).gl_handle = handle;\r\n super(canvas, \"webgl\");\r\n\r\n this.contextHandle = handle;\r\n this.fboId = context.getParameter(context.FRAMEBUFFER_BINDING)?.id ?? 0;\r\n this.stencil = context.getParameter(context.STENCIL_BITS);\r\n this.sample = context.getParameter(context.SAMPLES);\r\n this.depth = context.getParameter(context.DEPTH_BITS);\r\n this.attrs = attrs;\r\n }\r\n\r\n public static getCurrentContext(): number {\r\n return WebGlRenderTarget._gl?.currentContext?.handle ?? 0;\r\n }\r\n\r\n public static makeContextCurrent(handle: number): boolean {\r\n if (WebGlRenderTarget._gl == null) { return false; }\r\n const ret = WebGlRenderTarget._gl.makeContextCurrent(handle);\r\n return handle === 0 || ret;\r\n }\r\n}\r\n", "import { RuntimeAPI } from \"../../../types/dotnet\";\r\nimport { WebRenderTarget } from \"./webRenderTarget\";\r\n\r\nexport class SoftwareRenderTarget extends WebRenderTarget {\r\n private readonly runtime: RuntimeAPI | undefined;\r\n private readonly context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;\r\n constructor(canvas: HTMLCanvasElement | OffscreenCanvas) {\r\n const context = canvas.getContext(\"2d\", {\r\n alpha: true\r\n });\r\n if (!context) {\r\n throw new Error(\"HTMLCanvasElement.getContext(2d) returned null.\");\r\n }\r\n\r\n super(canvas, \"software\");\r\n this.context = context;\r\n\r\n this.runtime = globalThis.getDotnetRuntime(0);\r\n }\r\n\r\n public putPixelData(pointer: number, length: number, width: number, height: number): void {\r\n const heap8 = this.runtime?.localHeapViewU8();\r\n\r\n let clampedBuffer: Uint8ClampedArray;\r\n if (heap8?.buffer) {\r\n clampedBuffer = new Uint8ClampedArray(heap8.buffer, pointer, length);\r\n\r\n // Need to make a copy if using MT, ImageData can't consume shared arrays\r\n if (this.canvas instanceof OffscreenCanvas) {\r\n const dstArrayBuffer = new ArrayBuffer(clampedBuffer.byteLength);\r\n const copy = new Uint8ClampedArray(dstArrayBuffer);\r\n copy.set(clampedBuffer);\r\n clampedBuffer = copy;\r\n }\r\n } else throw new Error(\"Unable to access .NET memory\");\r\n\r\n const imageData = new ImageData(clampedBuffer, width, height);\r\n (this.context).putImageData(imageData, 0, 0);\r\n }\r\n\r\n public static staticPutPixelData(target: SoftwareRenderTarget, pointer: number, length: number, width: number, height: number): void {\r\n target.putPixelData(pointer, length, width, height);\r\n }\r\n}\r\n", "import { BrowserRenderingMode } from \"./renderingMode\";\r\nimport { WebGlRenderTarget } from \"./webGlRenderTarget\";\r\nimport { WebRenderTarget } from \"./webRenderTarget\";\r\nimport { SoftwareRenderTarget } from \"./softwareRenderTarget\";\r\n\r\nexport class WebRenderTargetRegistry {\r\n private static targets: { [id: number]: (WebRenderTarget) } = {};\r\n private static registry: { [id: number]: ({\r\n canvas: HTMLCanvasElement;\r\n worker?: Worker;\r\n }); } = {};\r\n\r\n private static nextId = 1;\r\n\r\n static create(pthreadId: number, canvas: HTMLCanvasElement, preferredModes: BrowserRenderingMode[]): number {\r\n const id = WebRenderTargetRegistry.nextId++;\r\n if (pthreadId === 0) {\r\n WebRenderTargetRegistry.registry[id] = {\r\n canvas\r\n };\r\n WebRenderTargetRegistry.targets[id] = WebRenderTargetRegistry.createRenderTarget(canvas, preferredModes);\r\n } else {\r\n const self = globalThis as any;\r\n const module = self.Module ?? self.getDotnetRuntime(0)?.Module;\r\n const pthreads = module?.PThread;\r\n if (pthreads == null) { throw new Error(\"Unable to access emscripten PThread api\"); }\r\n const pthread = pthreads.pthreads[pthreadId];\r\n if (pthread == null) { throw new Error(`Unable get pthread with id ${pthreadId}`); }\r\n let worker: Worker | undefined;\r\n if (pthread.postMessage != null) { worker = pthread as Worker; } else { worker = pthread.worker; }\r\n\r\n if (worker == null) { throw new Error(`Unable get Worker for pthread ${pthreadId}`); }\r\n const offscreen = canvas.transferControlToOffscreen();\r\n worker.postMessage({\r\n avaloniaCmd: \"registerCanvas\",\r\n canvas: offscreen,\r\n modes: preferredModes,\r\n id\r\n }, [offscreen]);\r\n WebRenderTargetRegistry.registry[id] = {\r\n canvas,\r\n worker\r\n };\r\n }\r\n return id;\r\n }\r\n\r\n static initializeWorker() {\r\n const oldHandler = self.onmessage;\r\n self.onmessage = ev => {\r\n const msg = ev;\r\n if (msg.data.avaloniaCmd === \"registerCanvas\") {\r\n WebRenderTargetRegistry.targets[msg.data.id] = WebRenderTargetRegistry.createRenderTarget(msg.data.canvas, msg.data.modes);\r\n } else if (msg.data.avaloniaCmd === \"unregisterCanvas\") {\r\n /* eslint-disable */\r\n // Our keys are _always_ numbers and are safe to delete\r\n delete WebRenderTargetRegistry.targets[msg.data.id];\r\n /* eslint-enable */\r\n } else if (oldHandler != null) { oldHandler.call(self, ev); }\r\n };\r\n }\r\n\r\n static getRenderTarget(id: number): WebRenderTarget | undefined {\r\n return WebRenderTargetRegistry.targets[id];\r\n }\r\n\r\n private static createRenderTarget(canvas: HTMLCanvasElement | OffscreenCanvas, modes: BrowserRenderingMode[]): WebRenderTarget {\r\n for (const mode of modes) {\r\n try {\r\n if (mode === BrowserRenderingMode.Software2D) { return new SoftwareRenderTarget(canvas); }\r\n return new WebGlRenderTarget(canvas, mode);\r\n } catch (e) {\r\n let message = \"\";\r\n if (e instanceof Error) { message = \": \" + e.message; }\r\n console.error(`Failed to create render target for mode ${mode} ${message}`);\r\n }\r\n }\r\n // Still try software as a fallback\r\n return new SoftwareRenderTarget(canvas);\r\n }\r\n}\r\n", "import { ResizeHandler } from \"./resizeHandler\";\r\nimport { WebRenderTargetRegistry } from \"./webRenderTargetRegistry\";\r\nimport { AvaloniaDOM } from \"../dom\";\r\nimport { BrowserRenderingMode } from \"./renderingMode\";\r\nimport { JsExports } from \"../jsExports\";\r\n\r\nexport class CanvasSurface {\r\n public targetId: number;\r\n private sizeParams?: [number, number, number];\r\n\r\n constructor(public canvas: HTMLCanvasElement, modes: BrowserRenderingMode[], topLevelId: number, threadId: number) {\r\n this.targetId = WebRenderTargetRegistry.create(threadId, canvas, modes);\r\n ResizeHandler.observeSize(canvas, (width, height, dpr) => {\r\n this.sizeParams = [width, height, dpr];\r\n\r\n JsExports.CanvasHelper?.OnSizeChanged(topLevelId, width, height, dpr);\r\n });\r\n }\r\n\r\n public get width() {\r\n if (this.sizeParams) { return this.sizeParams[0]; }\r\n return 1;\r\n }\r\n\r\n public get height() {\r\n if (this.sizeParams) { return this.sizeParams[1]; }\r\n return 1;\r\n }\r\n\r\n public get scaling() {\r\n if (this.sizeParams) { return this.sizeParams[2]; }\r\n return 1;\r\n }\r\n\r\n public destroy(): void {\r\n }\r\n\r\n public static create(container: HTMLElement, modes: BrowserRenderingMode[], topLevelId: number, threadId: number): CanvasSurface {\r\n const canvas = AvaloniaDOM.createAvaloniaCanvas(container);\r\n AvaloniaDOM.attachCanvas(container, canvas);\r\n try {\r\n return new CanvasSurface(canvas, modes, topLevelId, threadId);\r\n } catch (ex) {\r\n AvaloniaDOM.detachCanvas(container, canvas);\r\n throw ex;\r\n }\r\n }\r\n\r\n public static destroy(surface: CanvasSurface) {\r\n surface.destroy();\r\n }\r\n}\r\n", "import { JsExports } from \"./jsExports\";\r\n\r\ntype SingleScreen = Screen & { window: Window; availLeft: number; availTop: number };\r\ntype ScreenDetailedEx = ScreenDetailed & { availLeft: number; availTop: number };\r\ntype BrowserScreen = ScreenDetailedEx | SingleScreen;\r\nenum ScreenOrientation {\r\n None,\r\n Landscape = 1,\r\n Portrait = 2,\r\n LandscapeFlipped = 4,\r\n PortraitFlipped = 8\r\n}\r\n\r\nexport class ScreenHelper {\r\n static detailedScreens?: ScreenDetails;\r\n\r\n private static raiseOnChanged() {\r\n JsExports.DomHelper.ScreensChanged();\r\n }\r\n\r\n public static async checkPermissions(globalThis: Window): Promise {\r\n // If previous session already granted \"window-management\" permissions, just re-request details, before they are used.\r\n const { state } = await globalThis.navigator.permissions.query({ name: \"window-management\" } as any);\r\n if (state === \"granted\") {\r\n await this.requestDetailedScreens(globalThis);\r\n }\r\n }\r\n\r\n public static subscribeOnChanged(globalThis: Window) {\r\n if (this.detailedScreens) {\r\n globalThis.screen.removeEventListener(\"change\", this.raiseOnChanged);\r\n this.detailedScreens.addEventListener(\"screenschange\", this.raiseOnChanged);\r\n\r\n // When any screen was added, we re-subscribe on all of them to keep it simpler.\r\n // Just like in C#, it's safer to re-subscribe if handler is the same function - it will trigger it once.\r\n for (const screen of this.detailedScreens.screens) {\r\n screen.addEventListener(\"change\", this.raiseOnChanged);\r\n }\r\n } else {\r\n globalThis.screen.addEventListener(\"change\", this.raiseOnChanged);\r\n }\r\n }\r\n\r\n public static getAllScreens(globalThis: Window): BrowserScreen[] {\r\n if (this.detailedScreens) {\r\n return this.detailedScreens.screens as ScreenDetailedEx[];\r\n } else {\r\n const singleScreen = Object.assign(globalThis.screen, { window: globalThis }) as SingleScreen;\r\n return [singleScreen];\r\n }\r\n }\r\n\r\n public static async requestDetailedScreens(globalThis: Window): Promise {\r\n if (this.detailedScreens) {\r\n return true;\r\n }\r\n if (\"getScreenDetails\" in globalThis) {\r\n this.detailedScreens = await globalThis.getScreenDetails();\r\n if (this.detailedScreens) {\r\n this.subscribeOnChanged(globalThis);\r\n globalThis.setTimeout(this.raiseOnChanged, 1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static getDisplayName(screen: BrowserScreen) {\r\n return (screen as ScreenDetailed)?.label;\r\n }\r\n\r\n static getScaling(screen: BrowserScreen) {\r\n if (\"devicePixelRatio\" in screen) {\r\n return screen.devicePixelRatio;\r\n }\r\n if (\"window\" in screen) {\r\n return screen.window.devicePixelRatio;\r\n }\r\n return 1;\r\n }\r\n\r\n static getBounds(screen: BrowserScreen): number[] {\r\n const width = screen.width;\r\n const height = screen.height;\r\n\r\n if (\"left\" in screen && \"top\" in screen) {\r\n return [screen.left, screen.top, width, height];\r\n } else if (\"availLeft\" in screen && \"availTop\" in screen) {\r\n // If webapp doesn't have \"window-management\" perms, \"left\" and \"top\" will be undefined.\r\n // To keep getBounds consistent getWorkingArea, while still usable, fallback to availLeft and availTop values.\r\n return [screen.availLeft, screen.availTop, width, height];\r\n }\r\n\r\n return [0, 0, width, height];\r\n }\r\n\r\n static getWorkingArea(screen: BrowserScreen): number[] {\r\n const width = screen.availWidth;\r\n const height = screen.availHeight;\r\n\r\n if (\"availLeft\" in screen && \"availTop\" in screen) {\r\n return [screen.availLeft, screen.availTop, width, height];\r\n }\r\n return [0, 0, width, height];\r\n }\r\n\r\n static isCurrent(screen: BrowserScreen): boolean {\r\n if (this.detailedScreens) {\r\n return this.detailedScreens.currentScreen === screen;\r\n }\r\n\r\n // If detailedScreens were not requested - we have a single screen which always is a current one.\r\n return true;\r\n }\r\n\r\n static isPrimary(screen: BrowserScreen): boolean {\r\n if (\"isPrimary\" in screen) {\r\n return screen.isPrimary;\r\n }\r\n\r\n // If detailedScreens were not requested - we have a single screen which always is a current one, and we assume it's a primary one as well.\r\n return true;\r\n }\r\n\r\n /* eslint-disable indent */\r\n static getCurrentOrientation(screen: BrowserScreen): ScreenOrientation {\r\n switch (screen.orientation.type) {\r\n case \"landscape-primary\":\r\n return ScreenOrientation.Landscape;\r\n case \"landscape-secondary\":\r\n return ScreenOrientation.LandscapeFlipped;\r\n case \"portrait-primary\":\r\n return ScreenOrientation.Portrait;\r\n case \"portrait-secondary\":\r\n return ScreenOrientation.PortraitFlipped;\r\n }\r\n }\r\n}\r\n", "import { InputHelper } from \"./avalonia/input\";\r\nimport { AvaloniaDOM } from \"./avalonia/dom\";\r\nimport { Caniuse } from \"./avalonia/caniuse\";\r\nimport { StreamHelper } from \"./avalonia/stream\";\r\nimport { NativeControlHost } from \"./avalonia/nativeControlHost\";\r\nimport { NavigationHelper } from \"./avalonia/navigationHelper\";\r\nimport { GeneralHelpers } from \"./avalonia/generalHelpers\";\r\nimport { TimerHelper } from \"./avalonia/timer\";\r\nimport { CanvasSurface } from \"./avalonia/rendering/canvasSurface\";\r\nimport { WebRenderTargetRegistry } from \"./avalonia/rendering/webRenderTargetRegistry\";\r\nimport { WebRenderTarget } from \"./avalonia/rendering/webRenderTarget\";\r\nimport { SoftwareRenderTarget } from \"./avalonia/rendering/softwareRenderTarget\";\r\nimport { WebGlRenderTarget } from \"./avalonia/rendering/webGlRenderTarget\";\r\nimport { ScreenHelper } from \"./avalonia/screens\";\r\n\r\nasync function registerServiceWorker(path: string, scope: string | undefined) {\r\n if (\"serviceWorker\" in navigator) {\r\n await globalThis.navigator.serviceWorker.register(path, scope ? { scope } : undefined);\r\n }\r\n}\r\n\r\nexport {\r\n Caniuse,\r\n InputHelper,\r\n AvaloniaDOM,\r\n StreamHelper,\r\n NativeControlHost,\r\n NavigationHelper,\r\n GeneralHelpers,\r\n ScreenHelper,\r\n TimerHelper,\r\n WebRenderTarget,\r\n CanvasSurface,\r\n WebRenderTargetRegistry,\r\n SoftwareRenderTarget,\r\n WebGlRenderTarget,\r\n registerServiceWorker\r\n};\r\n"], - "mappings": "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", - "names": ["CaretHelper", "element", "position", "options", "_a", "_b", "isBrowser", "debug", "el", "div", "style", "computed", "isInput", "properties", "prop", "height", "outerHeight", "targetHeight", "isFirefox", "span", "coordinates", "JsExports", "_a", "resolveExports", "runtimeApi", "InputHelper", "args", "globalThis", "resolve", "reject", "text", "element", "topLevelId", "keySub", "pointerSub", "textSub", "dndSub", "paneSub", "keyDownHandler", "JsExports", "keyUpHandler", "compositionStartHandler", "beforeInputHandler", "ranges", "start", "end", "compositionUpdateHandler", "compositionEndHandler", "pointerMoveHandler", "pointerDownHandler", "pointerUpHandler", "pointerCancelHandler", "wheelHandler", "handler", "dataObject", "overAndDropHandler", "pointerEvent", "e", "listener", "event", "elementRect", "keyboardRect", "inputElement", "kind", "x", "y", "caretWidth", "caretHeight", "caret", "left", "top", "CaretHelper", "modifiers", "buttons", "containerElement", "pointerId", "AvaloniaDOM", "element", "className", "parent", "elements", "host", "_a", "containerId", "canvas", "nativeHost", "inputElement", "globalThis", "isFullscreen", "colorSchemeMedia", "prefersContrastMedia", "args", "JsExports", "top", "bottom", "left", "right", "Caniuse", "_a", "userAgentData", "userAgent", "regex1", "regex2", "sharedArrayBufferDefined", "isSharedArrayBuffer", "buffer", "StreamHelper", "stream", "position", "size", "span", "offset", "count", "_a", "heap8", "copy", "NativeControlHostTopLevelAttachment", "NativeControlHost", "parent", "element", "child", "host", "x", "y", "width", "height", "NavigationHelper", "backHandlerCallback", "GeneralHelpers", "instance", "key", "items", "retItems", "name", "args", "TimerHelper", "render", "time", "_a", "JsExports", "interval", "ResizeHandler", "element", "callback", "_a", "_b", "entries", "observer", "entry", "trueDpr", "width", "height", "dpr", "displayWidth", "displayHeight", "WebRenderTarget", "canvas", "type", "target", "w", "h", "getGL", "_a", "_b", "_c", "_d", "self", "module", "_WebGlRenderTarget", "WebRenderTarget", "canvas", "mode", "attrs", "context", "handle", "ret", "WebGlRenderTarget", "SoftwareRenderTarget", "WebRenderTarget", "canvas", "context", "pointer", "length", "width", "height", "_a", "heap8", "clampedBuffer", "dstArrayBuffer", "copy", "imageData", "target", "_WebRenderTargetRegistry", "pthreadId", "canvas", "preferredModes", "_a", "_b", "id", "self", "module", "pthreads", "pthread", "worker", "offscreen", "oldHandler", "ev", "msg", "modes", "mode", "SoftwareRenderTarget", "WebGlRenderTarget", "e", "message", "WebRenderTargetRegistry", "CanvasSurface", "canvas", "modes", "topLevelId", "threadId", "WebRenderTargetRegistry", "ResizeHandler", "width", "height", "dpr", "_a", "JsExports", "container", "AvaloniaDOM", "ex", "surface", "ScreenHelper", "JsExports", "globalThis", "state", "screen", "width", "height", "registerServiceWorker", "path", "scope"] + "sourcesContent": ["// Based on https://github.com/component/textarea-caret-position/blob/master/index.js\r\nexport class CaretHelper {\r\n public static getCaretCoordinates(\r\n element: HTMLInputElement | HTMLTextAreaElement,\r\n position: number,\r\n options?: { debug: boolean }\r\n ) {\r\n if (!isBrowser) {\r\n throw new Error(\r\n \"textarea-caret-position#getCaretCoordinates should only be called in a browser\"\r\n );\r\n }\r\n\r\n const debug = options?.debug ?? false;\r\n if (debug) {\r\n const el = document.querySelector(\r\n \"#input-textarea-caret-position-mirror-div\"\r\n );\r\n if (el) el.parentNode?.removeChild(el);\r\n }\r\n\r\n // The mirror div will replicate the textarea's style\r\n const div = document.createElement(\"div\");\r\n div.id = \"input-textarea-caret-position-mirror-div\";\r\n document.body.appendChild(div);\r\n\r\n const style = div.style;\r\n const computed = window.getComputedStyle\r\n ? window.getComputedStyle(element)\r\n : ((element as any).currentStyle as CSSStyleDeclaration); // currentStyle for IE < 9\r\n const isInput = element.nodeName === \"INPUT\";\r\n\r\n // Default textarea styles\r\n style.whiteSpace = \"pre-wrap\";\r\n if (!isInput) style.wordWrap = \"break-word\"; // only for textarea-s\r\n\r\n // Position off-screen\r\n style.position = \"absolute\"; // required to return coordinates properly\r\n if (!debug) style.visibility = \"hidden\"; // not 'display: none' because we want rendering\r\n\r\n // Transfer the element's properties to the div\r\n properties.forEach((prop: string) => {\r\n if (isInput && prop === \"lineHeight\") {\r\n // Special case for s because text is rendered centered and line height may be != height\r\n if (computed.boxSizing === \"border-box\") {\r\n const height = parseInt(computed.height);\r\n const outerHeight =\r\n parseInt(computed.paddingTop) +\r\n parseInt(computed.paddingBottom) +\r\n parseInt(computed.borderTopWidth) +\r\n parseInt(computed.borderBottomWidth);\r\n const targetHeight = outerHeight + parseInt(computed.lineHeight);\r\n if (height > targetHeight) {\r\n style.lineHeight = `${height - outerHeight}px`;\r\n } else if (height === targetHeight) {\r\n style.lineHeight = computed.lineHeight;\r\n } else {\r\n style.lineHeight = \"0\";\r\n }\r\n } else {\r\n style.lineHeight = computed.height;\r\n }\r\n } else {\r\n (style as any)[prop] = (computed as any)[prop];\r\n }\r\n });\r\n\r\n if (isFirefox) {\r\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\r\n if (element.scrollHeight > parseInt(computed.height)) {\r\n style.overflowY = \"scroll\";\r\n }\r\n } else {\r\n style.overflow = \"hidden\"; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\r\n }\r\n\r\n div.textContent = element.value.substring(0, position);\r\n // The second special handling for input type=\"text\" vs textarea:\r\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\r\n if (isInput) div.textContent = div.textContent.replace(/\\s/g, \"\\u00a0\");\r\n\r\n const span = document.createElement(\"span\");\r\n // Wrapping must be replicated *exactly*, including when a long word gets\r\n // onto the next line, with whitespace at the end of the line before (#7).\r\n // The *only* reliable way to do that is to copy the *entire* rest of the\r\n // textarea's content into the created at the caret position.\r\n // For inputs, just '.' would be enough, but no need to bother.\r\n span.textContent = element.value.substring(position) || \".\"; // || because a completely empty faux span doesn't render at all\r\n div.appendChild(span);\r\n\r\n const coordinates = {\r\n top: span.offsetTop + parseInt(computed.borderTopWidth),\r\n left: span.offsetLeft + parseInt(computed.borderLeftWidth),\r\n height: parseInt(computed.lineHeight)\r\n };\r\n\r\n if (debug) {\r\n span.style.backgroundColor = \"#aaa\";\r\n } else {\r\n document.body.removeChild(div);\r\n }\r\n\r\n return coordinates;\r\n }\r\n}\r\n\r\nconst properties = [\r\n \"direction\", // RTL support\r\n \"boxSizing\",\r\n \"width\", // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\r\n \"height\",\r\n \"overflowX\",\r\n \"overflowY\", // copy the scrollbar for IE\r\n\r\n \"borderTopWidth\",\r\n \"borderRightWidth\",\r\n \"borderBottomWidth\",\r\n \"borderLeftWidth\",\r\n \"borderStyle\",\r\n\r\n \"paddingTop\",\r\n \"paddingRight\",\r\n \"paddingBottom\",\r\n \"paddingLeft\",\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n \"fontStyle\",\r\n \"fontVariant\",\r\n \"fontWeight\",\r\n \"fontStretch\",\r\n \"fontSize\",\r\n \"fontSizeAdjust\",\r\n \"lineHeight\",\r\n \"fontFamily\",\r\n\r\n \"textAlign\",\r\n \"textTransform\",\r\n \"textIndent\",\r\n \"textDecoration\", // might not make a difference, but better be safe\r\n\r\n \"letterSpacing\",\r\n \"wordSpacing\",\r\n\r\n \"tabSize\",\r\n \"MozTabSize\"\r\n];\r\n\r\nconst isBrowser = typeof window !== \"undefined\";\r\nconst isFirefox = isBrowser && (window as any).mozInnerScreenX != null;\r\n", "export class JsExports {\r\n public static resolvedExports?: any;\r\n public static exportsPromise: Promise;\r\n\r\n public static get InputHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.InputHelper;\r\n }\r\n\r\n public static get DomHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.DomHelper;\r\n }\r\n\r\n public static get TimerHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.TimerHelper;\r\n }\r\n\r\n public static get CanvasHelper(): any {\r\n return this.resolvedExports?.Avalonia.Browser.Interop.CanvasHelper;\r\n }\r\n}\r\nasync function resolveExports (): Promise {\r\n const runtimeApi = await globalThis.getDotnetRuntime(0);\r\n if (runtimeApi == null) { return; }\r\n JsExports.resolvedExports = await runtimeApi.getAssemblyExports(\"Avalonia.Browser.dll\");\r\n return JsExports.resolvedExports;\r\n}\r\n\r\nJsExports.exportsPromise = resolveExports();\r\n", "import { CaretHelper } from \"./caretHelper\";\r\nimport { JsExports } from \"./jsExports\";\r\n\r\nenum RawInputModifiers {\r\n None = 0,\r\n Alt = 1,\r\n Control = 2,\r\n Shift = 4,\r\n Meta = 8,\r\n\r\n LeftMouseButton = 16,\r\n RightMouseButton = 32,\r\n MiddleMouseButton = 64,\r\n XButton1MouseButton = 128,\r\n XButton2MouseButton = 256,\r\n KeyboardMask = Alt | Control | Shift | Meta,\r\n\r\n PenInverted = 512,\r\n PenEraser = 1024,\r\n PenBarrelButton = 2048\r\n}\r\n\r\n/*\r\n* This is a hack to handle Mozilla clipboard events in a more convinient way for framework users.\r\n* In the browser, events go in order KeyDown -> Paste -> KeyUp.\r\n* On KeyDown we trigger Avalonia handlers, which might execute readClipboardText.\r\n* When readClipboardText was executed, we mark ClipboardState as Pending and setup clipboard promise,\r\n* which will un-handle KeyDown event, basically allowing browser to pass a Paste event properly.\r\n* On actual Paste event we execute promise callbacks, resuming async operation, and returning pasted text to the app.\r\n* Note #1, on every KeyUp event we will reset all the state and reject pending promises if any, as this event it expected to come after Paste.\r\n* Note #2, whole this code will be executed only on legacy browsers like Mozilla, where clipboard.readText is not available.\r\n* Note #3, with all of these hacks Clipboard.ReadText will still work only on actual \"paste\" gesture initiated by user.\r\n* */\r\nenum ClipboardState {\r\n None,\r\n Ready,\r\n Pending\r\n}\r\n\r\nexport class InputHelper {\r\n static clipboardState: ClipboardState = ClipboardState.None;\r\n static resolveClipboard?: any;\r\n static rejectClipboard?: any;\r\n\r\n public static initializeBackgroundHandlers() {\r\n if (this.clipboardState !== ClipboardState.None) {\r\n return;\r\n }\r\n\r\n globalThis.addEventListener(\"paste\", (args: any) => {\r\n if (this.clipboardState === ClipboardState.Pending) {\r\n this.resolveClipboard(args.clipboardData.getData(\"text\"));\r\n }\r\n });\r\n this.clipboardState = ClipboardState.Ready;\r\n }\r\n\r\n public static async readClipboardText(globalThis: Window): Promise {\r\n if (globalThis.navigator.clipboard.readText) {\r\n return await globalThis.navigator.clipboard.readText();\r\n } else {\r\n try {\r\n return await new Promise((resolve, reject) => {\r\n this.clipboardState = ClipboardState.Pending;\r\n this.resolveClipboard = resolve;\r\n this.rejectClipboard = reject;\r\n });\r\n } finally {\r\n this.clipboardState = ClipboardState.Ready;\r\n this.resolveClipboard = null;\r\n this.rejectClipboard = null;\r\n }\r\n }\r\n }\r\n\r\n public static async writeClipboardText(globalThis: Window, text: string): Promise {\r\n return await globalThis.navigator.clipboard.writeText(text);\r\n }\r\n\r\n public static subscribeInputEvents(element: HTMLInputElement, topLevelId: number) {\r\n const keySub = this.subscribeKeyEvents(element, topLevelId);\r\n const pointerSub = this.subscribePointerEvents(element, topLevelId);\r\n const textSub = this.subscribeTextEvents(element, topLevelId);\r\n const dndSub = this.subscribeDropEvents(element, topLevelId);\r\n const paneSub = this.subscribeKeyboardGeometryChange(element, topLevelId);\r\n\r\n return () => {\r\n keySub();\r\n pointerSub();\r\n textSub();\r\n dndSub();\r\n paneSub();\r\n };\r\n }\r\n\r\n public static subscribeKeyEvents(element: HTMLInputElement, topLevelId: number) {\r\n const keyDownHandler = (args: KeyboardEvent) => {\r\n JsExports.InputHelper.OnKeyDown(topLevelId, args.code, args.key, this.getModifiers(args));\r\n if (this.clipboardState !== ClipboardState.Pending) {\r\n args.preventDefault();\r\n }\r\n };\r\n element.addEventListener(\"keydown\", keyDownHandler);\r\n\r\n const keyUpHandler = (args: KeyboardEvent) => {\r\n JsExports.InputHelper.OnKeyUp(topLevelId, args.code, args.key, this.getModifiers(args));\r\n args.preventDefault();\r\n if (this.rejectClipboard) {\r\n this.rejectClipboard();\r\n }\r\n };\r\n\r\n element.addEventListener(\"keyup\", keyUpHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"keydown\", keyDownHandler);\r\n element.removeEventListener(\"keyup\", keyUpHandler);\r\n };\r\n }\r\n\r\n public static subscribeTextEvents(\r\n element: HTMLInputElement,\r\n topLevelId: number) {\r\n const compositionStartHandler = (args: CompositionEvent) => {\r\n JsExports.InputHelper.OnCompositionStart(topLevelId);\r\n };\r\n element.addEventListener(\"compositionstart\", compositionStartHandler);\r\n\r\n const beforeInputHandler = (args: InputEvent) => {\r\n const ranges = args.getTargetRanges();\r\n let start = -1;\r\n let end = -1;\r\n if (ranges.length > 0) {\r\n start = ranges[0].startOffset;\r\n end = ranges[0].endOffset;\r\n }\r\n\r\n if (args.inputType === \"insertCompositionText\") {\r\n start = 2;\r\n end = start + 2;\r\n }\r\n\r\n JsExports.InputHelper.OnBeforeInput(topLevelId, args.inputType, start, end);\r\n };\r\n element.addEventListener(\"beforeinput\", beforeInputHandler);\r\n\r\n const compositionUpdateHandler = (args: CompositionEvent) => {\r\n JsExports.InputHelper.OnCompositionUpdate(topLevelId, args.data);\r\n };\r\n element.addEventListener(\"compositionupdate\", compositionUpdateHandler);\r\n\r\n const compositionEndHandler = (args: CompositionEvent) => {\r\n JsExports.InputHelper.OnCompositionEnd(topLevelId, args.data);\r\n args.preventDefault();\r\n };\r\n element.addEventListener(\"compositionend\", compositionEndHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"compositionstart\", compositionStartHandler);\r\n element.removeEventListener(\"compositionupdate\", compositionUpdateHandler);\r\n element.removeEventListener(\"compositionend\", compositionEndHandler);\r\n };\r\n }\r\n\r\n public static subscribePointerEvents(\r\n element: HTMLInputElement,\r\n topLevelId: number\r\n ) {\r\n const pointerMoveHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerMove(\r\n topLevelId, args.pointerType, args.pointerId, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args), args);\r\n args.preventDefault();\r\n };\r\n\r\n const pointerDownHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerDown(\r\n topLevelId, args.pointerType, args.pointerId, args.button, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args));\r\n args.preventDefault();\r\n };\r\n\r\n const pointerUpHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerUp(\r\n topLevelId, args.pointerType, args.pointerId, args.button, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args));\r\n args.preventDefault();\r\n };\r\n\r\n const pointerCancelHandler = (args: PointerEvent) => {\r\n JsExports.InputHelper.OnPointerCancel(\r\n topLevelId, args.pointerType, args.pointerId, args.offsetX, args.offsetY,\r\n args.pressure, args.tiltX, args.tiltY, args.twist, this.getModifiers(args));\r\n };\r\n\r\n const wheelHandler = (args: WheelEvent) => {\r\n JsExports.InputHelper.OnWheel(\r\n topLevelId, args.offsetX, args.offsetY, args.deltaX, args.deltaY, this.getModifiers(args));\r\n args.preventDefault();\r\n };\r\n\r\n element.addEventListener(\"pointermove\", pointerMoveHandler);\r\n element.addEventListener(\"pointerdown\", pointerDownHandler);\r\n element.addEventListener(\"pointerup\", pointerUpHandler);\r\n element.addEventListener(\"wheel\", wheelHandler);\r\n element.addEventListener(\"pointercancel\", pointerCancelHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"pointerover\", pointerMoveHandler);\r\n element.removeEventListener(\"pointerdown\", pointerDownHandler);\r\n element.removeEventListener(\"pointerup\", pointerUpHandler);\r\n element.removeEventListener(\"pointercancel\", pointerCancelHandler);\r\n element.removeEventListener(\"wheel\", wheelHandler);\r\n };\r\n }\r\n\r\n public static subscribeDropEvents(\r\n element: HTMLInputElement,\r\n topLevelId: number\r\n ) {\r\n const handler = (args: DragEvent) => {\r\n const dataObject = args.dataTransfer;\r\n JsExports.InputHelper.OnDragDrop(topLevelId, args.type, args.offsetX, args.offsetY, this.getModifiers(args), dataObject?.effectAllowed, dataObject);\r\n };\r\n const overAndDropHandler = (args: DragEvent) => {\r\n args.preventDefault();\r\n handler(args);\r\n };\r\n element.addEventListener(\"dragover\", overAndDropHandler);\r\n element.addEventListener(\"dragenter\", handler);\r\n element.addEventListener(\"dragleave\", handler);\r\n element.addEventListener(\"drop\", overAndDropHandler);\r\n\r\n return () => {\r\n element.removeEventListener(\"dragover\", overAndDropHandler);\r\n element.removeEventListener(\"dragenter\", handler);\r\n element.removeEventListener(\"dragleave\", handler);\r\n element.removeEventListener(\"drop\", overAndDropHandler);\r\n };\r\n }\r\n\r\n public static getCoalescedEvents(pointerEvent: PointerEvent): number[] {\r\n return pointerEvent.getCoalescedEvents()\r\n .flatMap(e => [e.offsetX, e.offsetY, e.pressure, e.tiltX, e.tiltY, e.twist]);\r\n }\r\n\r\n public static subscribeKeyboardGeometryChange(\r\n element: HTMLInputElement,\r\n topLevelId: number) {\r\n if (\"virtualKeyboard\" in navigator) {\r\n // (navigator as any).virtualKeyboard.overlaysContent = true;\r\n const listener = (event: any) => {\r\n const elementRect = element.getBoundingClientRect();\r\n const keyboardRect = event.target.boundingRect as DOMRect;\r\n\r\n JsExports.InputHelper.OnKeyboardGeometryChange(\r\n topLevelId,\r\n keyboardRect.x - elementRect.x,\r\n keyboardRect.y - elementRect.y,\r\n keyboardRect.width,\r\n keyboardRect.height);\r\n };\r\n (navigator as any).virtualKeyboard.addEventListener(\"geometrychange\", listener);\r\n return () => {\r\n (navigator as any).virtualKeyboard.removeEventListener(\"geometrychange\", listener);\r\n };\r\n }\r\n\r\n return () => {};\r\n }\r\n\r\n public static clearInput(inputElement: HTMLInputElement) {\r\n inputElement.value = \"\";\r\n }\r\n\r\n public static focusElement(inputElement: HTMLElement) {\r\n inputElement.focus();\r\n }\r\n\r\n public static setCursor(inputElement: HTMLInputElement, kind: string) {\r\n if (kind === \"default\") {\r\n inputElement.style.removeProperty(\"cursor\");\r\n } else {\r\n inputElement.style.cursor = kind;\r\n }\r\n }\r\n\r\n public static setBounds(inputElement: HTMLInputElement, x: number, y: number, caretWidth: number, caretHeight: number, caret: number) {\r\n inputElement.style.left = (x).toFixed(0) + \"px\";\r\n inputElement.style.top = (y).toFixed(0) + \"px\";\r\n\r\n const { left, top } = CaretHelper.getCaretCoordinates(inputElement, caret);\r\n\r\n inputElement.style.left = (x - left).toFixed(0) + \"px\";\r\n inputElement.style.top = (y - top).toFixed(0) + \"px\";\r\n }\r\n\r\n public static hide(inputElement: HTMLInputElement) {\r\n inputElement.style.display = \"none\";\r\n }\r\n\r\n public static show(inputElement: HTMLInputElement) {\r\n inputElement.style.display = \"block\";\r\n }\r\n\r\n public static setSurroundingText(inputElement: HTMLInputElement, text: string, start: number, end: number) {\r\n if (!inputElement) {\r\n return;\r\n }\r\n\r\n inputElement.value = text;\r\n inputElement.setSelectionRange(start, end);\r\n inputElement.style.width = \"20px\";\r\n inputElement.style.width = `${inputElement.scrollWidth}px`;\r\n }\r\n\r\n private static getModifiers(args: KeyboardEvent | PointerEvent | WheelEvent | DragEvent): number {\r\n let modifiers = RawInputModifiers.None;\r\n\r\n if (args.ctrlKey) { modifiers |= RawInputModifiers.Control; }\r\n if (args.altKey) { modifiers |= RawInputModifiers.Alt; }\r\n if (args.shiftKey) { modifiers |= RawInputModifiers.Shift; }\r\n if (args.metaKey) { modifiers |= RawInputModifiers.Meta; }\r\n\r\n const buttons = (args as PointerEvent).buttons;\r\n if (buttons) {\r\n if (buttons & 1) { modifiers |= RawInputModifiers.LeftMouseButton; }\r\n if (buttons & 2) { modifiers |= (args.type === \"pen\" ? RawInputModifiers.PenBarrelButton : RawInputModifiers.RightMouseButton); }\r\n if (buttons & 4) { modifiers |= RawInputModifiers.MiddleMouseButton; }\r\n if (buttons & 8) { modifiers |= RawInputModifiers.XButton1MouseButton; }\r\n if (buttons & 16) { modifiers |= RawInputModifiers.XButton2MouseButton; }\r\n if (buttons & 32) { modifiers |= RawInputModifiers.PenEraser; }\r\n }\r\n\r\n return modifiers;\r\n }\r\n\r\n public static setPointerCapture(containerElement: HTMLInputElement, pointerId: number): void {\r\n containerElement.setPointerCapture(pointerId);\r\n }\r\n\r\n public static releasePointerCapture(containerElement: HTMLInputElement, pointerId: number): void {\r\n if (containerElement.hasPointerCapture(pointerId)) {\r\n containerElement.releasePointerCapture(pointerId);\r\n }\r\n }\r\n}\r\n", "import { JsExports } from \"./jsExports\";\r\n\r\nexport class AvaloniaDOM {\r\n public static getGlobalThis() {\r\n return globalThis;\r\n }\r\n\r\n public static addClass(element: HTMLElement, className: string): void {\r\n element.classList.add(className);\r\n }\r\n\r\n static getFirstElementById(className: string, parent: HTMLElement | Window): Element | null {\r\n const parentNode = parent instanceof Window\r\n ? parent.document\r\n : parent.ownerDocument;\r\n\r\n return parentNode.getElementById(className);\r\n }\r\n\r\n static getFirstElementByClassName(className: string, parent: HTMLElement | Window): Element | null {\r\n const parentNode = parent instanceof Window\r\n ? parent.document\r\n : parent;\r\n\r\n const elements = parentNode.getElementsByClassName(className);\r\n return elements ? elements[0] : null;\r\n }\r\n\r\n static createAvaloniaCanvas(host: HTMLElement): HTMLCanvasElement {\r\n const containerId = host.getAttribute(\"data-containerId\") ?? \"0000\";\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.id = `canvas${containerId}`;\r\n canvas.classList.add(\"avalonia-canvas\");\r\n canvas.style.width = \"100%\";\r\n canvas.style.height = \"100%\";\r\n canvas.style.position = \"absolute\";\r\n\r\n return canvas;\r\n }\r\n\r\n static attachCanvas(host: HTMLElement, canvas: HTMLCanvasElement): void {\r\n host.prepend(canvas);\r\n }\r\n\r\n static detachCanvas(host: HTMLElement, canvas: HTMLCanvasElement): void {\r\n host.removeChild(canvas);\r\n }\r\n\r\n static createAvaloniaHost(host: HTMLElement) {\r\n const containerId = Math.random().toString(36).replace(/[^a-z]+/g, \"\").substr(2, 10);\r\n\r\n // Root element\r\n host.classList.add(\"avalonia-container\");\r\n host.tabIndex = 0;\r\n host.setAttribute(\"data-containerId\", containerId);\r\n host.oncontextmenu = function () { return false; };\r\n host.style.overflow = \"hidden\";\r\n host.style.touchAction = \"none\";\r\n\r\n // Canvas is lazily created depending on the rendering mode. See createAvaloniaCanvas usage.\r\n\r\n // Native controls host\r\n const nativeHost = document.createElement(\"div\");\r\n nativeHost.id = `nativeHost${containerId}`;\r\n nativeHost.classList.add(\"avalonia-native-host\");\r\n nativeHost.style.left = \"0px\";\r\n nativeHost.style.top = \"0px\";\r\n nativeHost.style.width = \"100%\";\r\n nativeHost.style.height = \"100%\";\r\n nativeHost.style.position = \"absolute\";\r\n\r\n // IME\r\n const inputElement = document.createElement(\"input\");\r\n inputElement.id = `inputElement${containerId}`;\r\n inputElement.classList.add(\"avalonia-input-element\");\r\n inputElement.autocapitalize = \"none\";\r\n inputElement.type = \"text\";\r\n inputElement.spellcheck = false;\r\n inputElement.style.padding = \"0\";\r\n inputElement.style.margin = \"0\";\r\n inputElement.style.borderWidth = \"0\";\r\n inputElement.style.position = \"absolute\";\r\n inputElement.style.overflow = \"hidden\";\r\n inputElement.style.borderStyle = \"hidden\";\r\n inputElement.style.outline = \"none\";\r\n inputElement.style.background = \"transparent\";\r\n inputElement.style.color = \"transparent\";\r\n inputElement.style.display = \"none\";\r\n inputElement.style.height = \"20px\";\r\n inputElement.style.zIndex = \"-1\";\r\n inputElement.onpaste = function () { return false; };\r\n inputElement.oncopy = function () { return false; };\r\n inputElement.oncut = function () { return false; };\r\n\r\n host.prepend(inputElement);\r\n host.prepend(nativeHost);\r\n\r\n return {\r\n host,\r\n nativeHost,\r\n inputElement\r\n };\r\n }\r\n\r\n public static isFullscreen(globalThis: Window): boolean {\r\n return globalThis.document.fullscreenElement != null;\r\n }\r\n\r\n public static async setFullscreen(globalThis: Window, isFullscreen: boolean) {\r\n if (isFullscreen) {\r\n const doc = globalThis.document.documentElement;\r\n await doc.requestFullscreen();\r\n } else {\r\n await globalThis.document.exitFullscreen();\r\n }\r\n }\r\n\r\n public static initGlobalDomEvents(globalThis: Window): void {\r\n // Init Safe Area properties.\r\n globalThis.document.documentElement.style.setProperty(\"--av-sat\", \"env(safe-area-inset-top)\");\r\n globalThis.document.documentElement.style.setProperty(\"--av-sar\", \"env(safe-area-inset-right)\");\r\n globalThis.document.documentElement.style.setProperty(\"--av-sab\", \"env(safe-area-inset-bottom)\");\r\n globalThis.document.documentElement.style.setProperty(\"--av-sal\", \"env(safe-area-inset-left)\");\r\n\r\n // Subscribe on DarkMode changes.\r\n if (globalThis.matchMedia !== undefined) {\r\n const colorSchemeMedia = globalThis.matchMedia(\"(prefers-color-scheme: dark)\");\r\n const prefersContrastMedia = globalThis.matchMedia(\"(prefers-contrast: more)\");\r\n\r\n colorSchemeMedia.addEventListener(\"change\", (args: MediaQueryListEvent) => {\r\n JsExports.DomHelper.DarkModeChanged(args.matches, prefersContrastMedia.matches);\r\n });\r\n prefersContrastMedia.addEventListener(\"change\", (args: MediaQueryListEvent) => {\r\n JsExports.DomHelper.DarkModeChanged(colorSchemeMedia.matches, args.matches);\r\n });\r\n }\r\n\r\n globalThis.document.addEventListener(\"visibilitychange\", () => {\r\n JsExports.DomHelper.DocumentVisibilityChanged(globalThis.document.visibilityState);\r\n });\r\n\r\n // Report initial value.\r\n if (globalThis.document.visibilityState === \"visible\") {\r\n globalThis.setTimeout(() => {\r\n JsExports.DomHelper.DocumentVisibilityChanged(globalThis.document.visibilityState);\r\n }, 10);\r\n }\r\n }\r\n\r\n public static getSafeAreaPadding(globalThis: Window): number[] {\r\n const top = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sat\"));\r\n const bottom = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sab\"));\r\n const left = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sal\"));\r\n const right = parseFloat(getComputedStyle(globalThis.document.documentElement).getPropertyValue(\"--av-sar\"));\r\n\r\n return [left, top, bottom, right];\r\n }\r\n\r\n public static getDarkMode(globalThis: Window): number[] {\r\n if (globalThis.matchMedia === undefined) return [0, 0];\r\n\r\n const colorSchemeMedia = globalThis.matchMedia(\"(prefers-color-scheme: dark)\");\r\n const prefersContrastMedia = globalThis.matchMedia(\"(prefers-contrast: more)\");\r\n return [\r\n colorSchemeMedia.matches ? 1 : 0,\r\n prefersContrastMedia.matches ? 1 : 0\r\n ];\r\n }\r\n}\r\n", "export class Caniuse {\r\n public static hasNativeFilePicker(): boolean {\r\n return \"showSaveFilePicker\" in globalThis;\r\n }\r\n\r\n public static isMobile(): boolean {\r\n const userAgentData = (globalThis.navigator as any)?.userAgentData;\r\n if (userAgentData) {\r\n return userAgentData.mobile;\r\n }\r\n\r\n const userAgent = navigator.userAgent;\r\n const regex1 = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;\r\n const regex2 = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i;\r\n return regex1.test(userAgent) || regex2.test(userAgent.substr(0, 4));\r\n }\r\n\r\n public static isTv(): boolean {\r\n return navigator.userAgent.includes(\"SmartTV\");\r\n }\r\n}\r\n", "import FileSystemWritableFileStream from \"native-file-system-adapter/types/src/FileSystemWritableFileStream\";\r\n\r\nconst sharedArrayBufferDefined = typeof SharedArrayBuffer !== \"undefined\";\r\nexport function isSharedArrayBuffer(buffer: any): buffer is SharedArrayBuffer {\r\n // BEWARE: In some cases, `instanceof SharedArrayBuffer` returns false even though buffer is an SAB.\r\n // Patch adapted from https://github.com/emscripten-core/emscripten/pull/16994\r\n // See also https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag\r\n return sharedArrayBufferDefined && buffer[Symbol.toStringTag] === \"SharedArrayBuffer\";\r\n}\r\n\r\nexport class StreamHelper {\r\n public static async seek(stream: FileSystemWritableFileStream, position: number) {\r\n return await stream.seek(position);\r\n }\r\n\r\n public static async truncate(stream: FileSystemWritableFileStream, size: number) {\r\n return await stream.truncate(size);\r\n }\r\n\r\n public static async close(stream: FileSystemWritableFileStream) {\r\n return await stream.close();\r\n }\r\n\r\n public static async write(stream: FileSystemWritableFileStream, span: any, offset: number, count: number) {\r\n const heap8 = globalThis.getDotnetRuntime(0)?.localHeapViewU8();\r\n\r\n let buffer: Uint8Array;\r\n if (span._pointer > 0 && span._length > 0 && heap8 && !isSharedArrayBuffer(heap8.buffer)) {\r\n // Attempt to use undocumented access to the HEAP8 directly\r\n // Note, SharedArrayBuffer cannot be used with ImageData (when WasmEnableThreads = true).\r\n buffer = new Uint8Array(heap8.buffer, span._pointer as number + offset, count);\r\n } else {\r\n // Or fallback to the normal API that does multiple array copies.\r\n const copy = new Uint8Array(count);\r\n span.copyTo(copy, offset);\r\n buffer = span;\r\n }\r\n\r\n return await stream.write(buffer);\r\n }\r\n\r\n public static byteLength(stream: Blob) {\r\n return stream.size;\r\n }\r\n\r\n public static async sliceArrayBuffer(stream: Blob, offset: number, count: number) {\r\n const buffer = await stream.slice(offset, offset + count).arrayBuffer();\r\n return new Uint8Array(buffer);\r\n }\r\n\r\n public static toMemoryView(buffer: Uint8Array): Uint8Array {\r\n return buffer;\r\n }\r\n}\r\n", "class NativeControlHostTopLevelAttachment {\r\n _child?: HTMLElement;\r\n _host?: HTMLElement;\r\n}\r\n\r\nexport class NativeControlHost {\r\n public static createDefaultChild(parent?: HTMLElement): HTMLElement {\r\n return document.createElement(\"div\");\r\n }\r\n\r\n public static createAttachment(): NativeControlHostTopLevelAttachment {\r\n return new NativeControlHostTopLevelAttachment();\r\n }\r\n\r\n public static initializeWithChildHandle(element: NativeControlHostTopLevelAttachment, child: HTMLElement): void {\r\n element._child = child;\r\n element._child.style.position = \"absolute\";\r\n }\r\n\r\n public static attachTo(element: NativeControlHostTopLevelAttachment, host?: HTMLElement): void {\r\n if (element._host && element._child) {\r\n element._host.removeChild(element._child);\r\n }\r\n\r\n element._host = host;\r\n\r\n if (element._host && element._child) {\r\n element._host.appendChild(element._child);\r\n }\r\n }\r\n\r\n public static showInBounds(element: NativeControlHostTopLevelAttachment, x: number, y: number, width: number, height: number): void {\r\n if (element._child) {\r\n element._child.style.top = `${y}px`;\r\n element._child.style.left = `${x}px`;\r\n element._child.style.width = `${width}px`;\r\n element._child.style.height = `${height}px`;\r\n element._child.style.display = \"block\";\r\n }\r\n }\r\n\r\n public static hideWithSize(element: NativeControlHostTopLevelAttachment, width: number, height: number): void {\r\n if (element._child) {\r\n element._child.style.width = `${width}px`;\r\n element._child.style.height = `${height}px`;\r\n element._child.style.display = \"none\";\r\n }\r\n }\r\n\r\n public static releaseChild(element: NativeControlHostTopLevelAttachment): void {\r\n if (element._child) {\r\n element._child = undefined;\r\n }\r\n }\r\n}\r\n", "export class NavigationHelper {\r\n public static addBackHandler(backHandlerCallback: () => Boolean) {\r\n history.pushState(null, \"\", window.location.href);\r\n window.onpopstate = () => {\r\n const handled = backHandlerCallback();\r\n\r\n if (!handled) {\r\n history.back();\r\n } else {\r\n history.forward();\r\n }\r\n };\r\n }\r\n\r\n public static openUri(uri?: string, target?: string) {\r\n return !!window.open(uri, target);\r\n }\r\n}\r\n", "export class GeneralHelpers {\r\n public static itemsArrayAt(instance: any, key: any): any[] {\r\n const items = instance[key];\r\n if (!items) {\r\n return [];\r\n }\r\n\r\n const retItems = [];\r\n for (let i = 0; i < items.length; i++) {\r\n retItems[i] = items[i];\r\n }\r\n return retItems;\r\n }\r\n\r\n public static itemAt(instance: any, key: any): any {\r\n const item = instance[key];\r\n return item;\r\n }\r\n\r\n public static callMethod(instance: any, name: string /*, args */): any {\r\n const args = Array.prototype.slice.call(arguments, 2);\r\n return instance[name].apply(instance, args);\r\n }\r\n}\r\n", "import { JsExports } from \"./jsExports\";\r\n\r\nexport class TimerHelper {\r\n public static runAnimationFrames(): void {\r\n function render(time: number) {\r\n JsExports.TimerHelper?.JsExportOnAnimationFrame();\r\n self.requestAnimationFrame(render);\r\n }\r\n self.requestAnimationFrame(render);\r\n }\r\n\r\n static onTimeout() {\r\n JsExports.TimerHelper?.JsExportOnTimeout();\r\n }\r\n\r\n static onInterval() {\r\n JsExports.TimerHelper?.JsExportOnInterval();\r\n }\r\n\r\n public static setTimeout(interval: number): number {\r\n return setTimeout(TimerHelper.onTimeout, interval);\r\n }\r\n\r\n public static setInterval(interval: number): number {\r\n return setInterval(TimerHelper.onInterval, interval);\r\n }\r\n}\r\n", "type ResizeObserverWithCallbacks = {\r\n callbacks: Map void)>;\r\n} & ResizeObserver;\r\n\r\nexport class ResizeHandler {\r\n private static resizeObserver?: ResizeObserverWithCallbacks;\r\n\r\n public static observeSize(element: HTMLElement, callback: (width: number, height: number, dpr: number) => void) : (() => void) {\r\n if (!this.resizeObserver) {\r\n this.resizeObserver = new ResizeObserver(this.onResize) as ResizeObserverWithCallbacks;\r\n this.resizeObserver.callbacks = new Map void)>();\r\n }\r\n\r\n this.resizeObserver.callbacks.set(element, callback);\r\n this.resizeObserver.observe(element, { box: \"content-box\" });\r\n\r\n return () => {\r\n this.resizeObserver?.callbacks.delete(element);\r\n this.resizeObserver?.unobserve(element);\r\n };\r\n }\r\n\r\n private static onResize(entries: ResizeObserverEntry[], observer: ResizeObserver) {\r\n for (const entry of entries) {\r\n const callback = (observer as ResizeObserverWithCallbacks).callbacks.get(entry.target);\r\n if (!callback) {\r\n continue;\r\n }\r\n\r\n const trueDpr = window.devicePixelRatio;\r\n let width;\r\n let height;\r\n let dpr = trueDpr;\r\n if (entry.devicePixelContentBoxSize) {\r\n // NOTE: Only this path gives the correct answer\r\n // The other paths are imperfect fallbacks\r\n // for browsers that don't provide anyway to do this\r\n width = entry.devicePixelContentBoxSize[0].inlineSize;\r\n height = entry.devicePixelContentBoxSize[0].blockSize;\r\n dpr = 1; // it's already in width and height\r\n } else if (entry.contentBoxSize) {\r\n if (entry.contentBoxSize[0]) {\r\n width = entry.contentBoxSize[0].inlineSize;\r\n height = entry.contentBoxSize[0].blockSize;\r\n } else {\r\n width = (entry.contentBoxSize as any).inlineSize;\r\n height = (entry.contentBoxSize as any).blockSize;\r\n }\r\n } else {\r\n width = entry.contentRect.width;\r\n height = entry.contentRect.height;\r\n }\r\n const displayWidth = Math.round(width * dpr);\r\n const displayHeight = Math.round(height * dpr);\r\n callback(displayWidth, displayHeight, trueDpr);\r\n }\r\n }\r\n}\r\n", "export class WebRenderTarget {\r\n renderTargetType: string;\r\n constructor(protected canvas: HTMLCanvasElement | OffscreenCanvas, type: string) {\r\n this.renderTargetType = type;\r\n }\r\n\r\n static setSize(target: WebRenderTarget, w: number, h: number) {\r\n target.canvas.width = w;\r\n target.canvas.height = h;\r\n }\r\n}\r\n", "import { BrowserRenderingMode } from \"./renderingMode\";\r\nimport { WebRenderTarget } from \"./webRenderTarget\";\r\ninterface EmscriptenGlContext {\r\n handle: number;\r\n}\r\n\r\ninterface EmscriptenGL {\r\n registerContext: (ctx: WebGLRenderingContext, attrs: WebGLContextAttributes) => number;\r\n currentContext?: EmscriptenGlContext;\r\n makeContextCurrent: (handle: number) => boolean;\r\n}\r\n\r\nfunction getGL(): EmscriptenGL {\r\n const self = globalThis as any;\r\n const module = self.Module ?? self.getDotnetRuntime(0)?.Module;\r\n return (module?.GL ?? self.AvaloniaGL ?? self.SkiaSharpGL) as EmscriptenGL;\r\n}\r\n\r\nexport class WebGlRenderTarget extends WebRenderTarget {\r\n public contextHandle?: number;\r\n public attrs: WebGLContextAttributes;\r\n public fboId?: number;\r\n public stencil?: number;\r\n public sample?: number;\r\n public depth?: number;\r\n private static _gl: EmscriptenGL | null = null;\r\n\r\n constructor(public canvas: HTMLCanvasElement | OffscreenCanvas, mode: BrowserRenderingMode) {\r\n // Skia only understands WebGL context wrapped in Emscripten.\r\n if (WebGlRenderTarget._gl == null) { WebGlRenderTarget._gl = getGL(); }\r\n if (!WebGlRenderTarget._gl) {\r\n throw new Error(\"Module.GL object wasn't initialized, WebGL can't be used.\");\r\n }\r\n\r\n const attrs: WebGLContextAttributes | any =\r\n {\r\n alpha: true,\r\n depth: true,\r\n stencil: true,\r\n antialias: false,\r\n premultipliedAlpha: true,\r\n preserveDrawingBuffer: false,\r\n // only supported on older browsers, which is perfect as we want to fallback to 2d there.\r\n failIfMajorPerformanceCaveat: true,\r\n // attrs used by Emscripten:\r\n majorVersion: mode === BrowserRenderingMode.WebGL1 ? 1 : 2,\r\n minorVersion: 0,\r\n enableExtensionsByDefault: 1,\r\n explicitSwapControl: 0\r\n };\r\n\r\n const context = (mode === BrowserRenderingMode.WebGL1\r\n ? canvas.getContext(\"webgl\", attrs)\r\n : canvas.getContext(\"webgl2\", attrs)) as WebGLRenderingContext;\r\n if (!context) {\r\n throw new Error(\"HTMLCanvasElement.getContext returned null.\");\r\n }\r\n\r\n const handle = WebGlRenderTarget._gl.registerContext(context, attrs);\r\n (context as any).gl_handle = handle;\r\n super(canvas, \"webgl\");\r\n\r\n this.contextHandle = handle;\r\n this.fboId = context.getParameter(context.FRAMEBUFFER_BINDING)?.id ?? 0;\r\n this.stencil = context.getParameter(context.STENCIL_BITS);\r\n this.sample = context.getParameter(context.SAMPLES);\r\n this.depth = context.getParameter(context.DEPTH_BITS);\r\n this.attrs = attrs;\r\n }\r\n\r\n public static getCurrentContext(): number {\r\n return WebGlRenderTarget._gl?.currentContext?.handle ?? 0;\r\n }\r\n\r\n public static makeContextCurrent(handle: number): boolean {\r\n if (WebGlRenderTarget._gl == null) { return false; }\r\n const ret = WebGlRenderTarget._gl.makeContextCurrent(handle);\r\n return handle === 0 || ret;\r\n }\r\n}\r\n", "import { RuntimeAPI } from \"../../../types/dotnet\";\r\nimport { WebRenderTarget } from \"./webRenderTarget\";\r\n\r\nexport class SoftwareRenderTarget extends WebRenderTarget {\r\n private readonly runtime: RuntimeAPI | undefined;\r\n private readonly context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;\r\n constructor(canvas: HTMLCanvasElement | OffscreenCanvas) {\r\n const context = canvas.getContext(\"2d\", {\r\n alpha: true\r\n });\r\n if (!context) {\r\n throw new Error(\"HTMLCanvasElement.getContext(2d) returned null.\");\r\n }\r\n\r\n super(canvas, \"software\");\r\n this.context = context;\r\n\r\n this.runtime = globalThis.getDotnetRuntime(0);\r\n }\r\n\r\n public putPixelData(pointer: number, length: number, width: number, height: number): void {\r\n const heap8 = this.runtime?.localHeapViewU8();\r\n\r\n let clampedBuffer: Uint8ClampedArray;\r\n if (heap8?.buffer) {\r\n clampedBuffer = new Uint8ClampedArray(heap8.buffer, pointer, length);\r\n\r\n // Need to make a copy if using MT, ImageData can't consume shared arrays\r\n if (this.canvas instanceof OffscreenCanvas) {\r\n const dstArrayBuffer = new ArrayBuffer(clampedBuffer.byteLength);\r\n const copy = new Uint8ClampedArray(dstArrayBuffer);\r\n copy.set(clampedBuffer);\r\n clampedBuffer = copy;\r\n }\r\n } else throw new Error(\"Unable to access .NET memory\");\r\n\r\n const imageData = new ImageData(clampedBuffer, width, height);\r\n (this.context).putImageData(imageData, 0, 0);\r\n }\r\n\r\n public static staticPutPixelData(target: SoftwareRenderTarget, pointer: number, length: number, width: number, height: number): void {\r\n target.putPixelData(pointer, length, width, height);\r\n }\r\n}\r\n", "import { BrowserRenderingMode } from \"./renderingMode\";\r\nimport { WebGlRenderTarget } from \"./webGlRenderTarget\";\r\nimport { WebRenderTarget } from \"./webRenderTarget\";\r\nimport { SoftwareRenderTarget } from \"./softwareRenderTarget\";\r\n\r\nexport class WebRenderTargetRegistry {\r\n private static targets: { [id: number]: (WebRenderTarget) } = {};\r\n private static registry: { [id: number]: ({\r\n canvas: HTMLCanvasElement;\r\n worker?: Worker;\r\n }); } = {};\r\n\r\n private static nextId = 1;\r\n\r\n static create(pthreadId: number, canvas: HTMLCanvasElement, preferredModes: BrowserRenderingMode[]): number {\r\n const id = WebRenderTargetRegistry.nextId++;\r\n if (pthreadId === 0) {\r\n WebRenderTargetRegistry.registry[id] = {\r\n canvas\r\n };\r\n WebRenderTargetRegistry.targets[id] = WebRenderTargetRegistry.createRenderTarget(canvas, preferredModes);\r\n } else {\r\n const self = globalThis as any;\r\n const module = self.Module ?? self.getDotnetRuntime(0)?.Module;\r\n const pthreads = module?.PThread;\r\n if (pthreads == null) { throw new Error(\"Unable to access emscripten PThread api\"); }\r\n const pthread = pthreads.pthreads[pthreadId];\r\n if (pthread == null) { throw new Error(`Unable get pthread with id ${pthreadId}`); }\r\n let worker: Worker | undefined;\r\n if (pthread.postMessage != null) { worker = pthread as Worker; } else { worker = pthread.worker; }\r\n\r\n if (worker == null) { throw new Error(`Unable get Worker for pthread ${pthreadId}`); }\r\n const offscreen = canvas.transferControlToOffscreen();\r\n worker.postMessage({\r\n avaloniaCmd: \"registerCanvas\",\r\n canvas: offscreen,\r\n modes: preferredModes,\r\n id\r\n }, [offscreen]);\r\n WebRenderTargetRegistry.registry[id] = {\r\n canvas,\r\n worker\r\n };\r\n }\r\n return id;\r\n }\r\n\r\n static initializeWorker() {\r\n const oldHandler = self.onmessage;\r\n self.onmessage = ev => {\r\n const msg = ev;\r\n if (msg.data.avaloniaCmd === \"registerCanvas\") {\r\n WebRenderTargetRegistry.targets[msg.data.id] = WebRenderTargetRegistry.createRenderTarget(msg.data.canvas, msg.data.modes);\r\n } else if (msg.data.avaloniaCmd === \"unregisterCanvas\") {\r\n /* eslint-disable */\r\n // Our keys are _always_ numbers and are safe to delete\r\n delete WebRenderTargetRegistry.targets[msg.data.id];\r\n /* eslint-enable */\r\n } else if (oldHandler != null) { oldHandler.call(self, ev); }\r\n };\r\n }\r\n\r\n static getRenderTarget(id: number): WebRenderTarget | undefined {\r\n return WebRenderTargetRegistry.targets[id];\r\n }\r\n\r\n private static createRenderTarget(canvas: HTMLCanvasElement | OffscreenCanvas, modes: BrowserRenderingMode[]): WebRenderTarget {\r\n for (const mode of modes) {\r\n try {\r\n if (mode === BrowserRenderingMode.Software2D) { return new SoftwareRenderTarget(canvas); }\r\n return new WebGlRenderTarget(canvas, mode);\r\n } catch (e) {\r\n let message = \"\";\r\n if (e instanceof Error) { message = \": \" + e.message; }\r\n console.error(`Failed to create render target for mode ${mode} ${message}`);\r\n }\r\n }\r\n // Still try software as a fallback\r\n return new SoftwareRenderTarget(canvas);\r\n }\r\n}\r\n", "import { ResizeHandler } from \"./resizeHandler\";\r\nimport { WebRenderTargetRegistry } from \"./webRenderTargetRegistry\";\r\nimport { AvaloniaDOM } from \"../dom\";\r\nimport { BrowserRenderingMode } from \"./renderingMode\";\r\nimport { JsExports } from \"../jsExports\";\r\n\r\nexport class CanvasSurface {\r\n public targetId: number;\r\n private sizeParams?: [number, number, number];\r\n\r\n constructor(public canvas: HTMLCanvasElement, modes: BrowserRenderingMode[], topLevelId: number, threadId: number) {\r\n this.targetId = WebRenderTargetRegistry.create(threadId, canvas, modes);\r\n ResizeHandler.observeSize(canvas, (width, height, dpr) => {\r\n this.sizeParams = [width, height, dpr];\r\n\r\n JsExports.CanvasHelper?.OnSizeChanged(topLevelId, width, height, dpr);\r\n });\r\n }\r\n\r\n public get width() {\r\n if (this.sizeParams) { return this.sizeParams[0]; }\r\n return 1;\r\n }\r\n\r\n public get height() {\r\n if (this.sizeParams) { return this.sizeParams[1]; }\r\n return 1;\r\n }\r\n\r\n public get scaling() {\r\n if (this.sizeParams) { return this.sizeParams[2]; }\r\n return 1;\r\n }\r\n\r\n public destroy(): void {\r\n }\r\n\r\n public static create(container: HTMLElement, modes: BrowserRenderingMode[], topLevelId: number, threadId: number): CanvasSurface {\r\n const canvas = AvaloniaDOM.createAvaloniaCanvas(container);\r\n AvaloniaDOM.attachCanvas(container, canvas);\r\n try {\r\n return new CanvasSurface(canvas, modes, topLevelId, threadId);\r\n } catch (ex) {\r\n AvaloniaDOM.detachCanvas(container, canvas);\r\n throw ex;\r\n }\r\n }\r\n\r\n public static destroy(surface: CanvasSurface) {\r\n surface.destroy();\r\n }\r\n}\r\n", "import { JsExports } from \"./jsExports\";\r\n\r\ntype SingleScreen = Screen & { window: Window; availLeft: number; availTop: number };\r\ntype ScreenDetailedEx = ScreenDetailed & { availLeft: number; availTop: number };\r\ntype BrowserScreen = ScreenDetailedEx | SingleScreen;\r\nenum ScreenOrientation {\r\n None,\r\n Landscape = 1,\r\n Portrait = 2,\r\n LandscapeFlipped = 4,\r\n PortraitFlipped = 8\r\n}\r\n\r\nexport class ScreenHelper {\r\n static detailedScreens?: ScreenDetails;\r\n\r\n private static raiseOnChanged() {\r\n JsExports.DomHelper.ScreensChanged();\r\n }\r\n\r\n public static async checkPermissions(globalThis: Window): Promise {\r\n // If previous session already granted \"window-management\" permissions, just re-request details, before they are used.\r\n const { state } = await globalThis.navigator.permissions.query({ name: \"window-management\" } as any);\r\n if (state === \"granted\") {\r\n await this.requestDetailedScreens(globalThis);\r\n }\r\n }\r\n\r\n public static subscribeOnChanged(globalThis: Window) {\r\n if (this.detailedScreens) {\r\n globalThis.screen.removeEventListener(\"change\", this.raiseOnChanged);\r\n this.detailedScreens.addEventListener(\"screenschange\", this.raiseOnChanged);\r\n\r\n // When any screen was added, we re-subscribe on all of them to keep it simpler.\r\n // Just like in C#, it's safer to re-subscribe if handler is the same function - it will trigger it once.\r\n for (const screen of this.detailedScreens.screens) {\r\n screen.addEventListener(\"change\", this.raiseOnChanged);\r\n }\r\n } else {\r\n globalThis.screen.addEventListener(\"change\", this.raiseOnChanged);\r\n }\r\n }\r\n\r\n public static getAllScreens(globalThis: Window): BrowserScreen[] {\r\n if (this.detailedScreens) {\r\n return this.detailedScreens.screens as ScreenDetailedEx[];\r\n } else {\r\n const singleScreen = Object.assign(globalThis.screen, { window: globalThis }) as SingleScreen;\r\n return [singleScreen];\r\n }\r\n }\r\n\r\n public static async requestDetailedScreens(globalThis: Window): Promise {\r\n if (this.detailedScreens) {\r\n return true;\r\n }\r\n if (\"getScreenDetails\" in globalThis) {\r\n this.detailedScreens = await globalThis.getScreenDetails();\r\n if (this.detailedScreens) {\r\n this.subscribeOnChanged(globalThis);\r\n globalThis.setTimeout(this.raiseOnChanged, 1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static getDisplayName(screen: BrowserScreen) {\r\n return (screen as ScreenDetailed)?.label;\r\n }\r\n\r\n static getScaling(screen: BrowserScreen) {\r\n if (\"devicePixelRatio\" in screen) {\r\n return screen.devicePixelRatio;\r\n }\r\n if (\"window\" in screen) {\r\n return screen.window.devicePixelRatio;\r\n }\r\n return 1;\r\n }\r\n\r\n static getBounds(screen: BrowserScreen): number[] {\r\n const width = screen.width;\r\n const height = screen.height;\r\n\r\n if (\"left\" in screen && \"top\" in screen) {\r\n return [screen.left, screen.top, width, height];\r\n } else if (\"availLeft\" in screen && \"availTop\" in screen) {\r\n // If webapp doesn't have \"window-management\" perms, \"left\" and \"top\" will be undefined.\r\n // To keep getBounds consistent getWorkingArea, while still usable, fallback to availLeft and availTop values.\r\n return [screen.availLeft, screen.availTop, width, height];\r\n }\r\n\r\n return [0, 0, width, height];\r\n }\r\n\r\n static getWorkingArea(screen: BrowserScreen): number[] {\r\n const width = screen.availWidth;\r\n const height = screen.availHeight;\r\n\r\n if (\"availLeft\" in screen && \"availTop\" in screen) {\r\n return [screen.availLeft, screen.availTop, width, height];\r\n }\r\n return [0, 0, width, height];\r\n }\r\n\r\n static isCurrent(screen: BrowserScreen): boolean {\r\n if (this.detailedScreens) {\r\n return this.detailedScreens.currentScreen === screen;\r\n }\r\n\r\n // If detailedScreens were not requested - we have a single screen which always is a current one.\r\n return true;\r\n }\r\n\r\n static isPrimary(screen: BrowserScreen): boolean {\r\n if (\"isPrimary\" in screen) {\r\n return screen.isPrimary;\r\n }\r\n\r\n // If detailedScreens were not requested - we have a single screen which always is a current one, and we assume it's a primary one as well.\r\n return true;\r\n }\r\n\r\n /* eslint-disable indent */\r\n static getCurrentOrientation(screen: BrowserScreen): ScreenOrientation {\r\n switch (screen.orientation.type) {\r\n case \"landscape-primary\":\r\n return ScreenOrientation.Landscape;\r\n case \"landscape-secondary\":\r\n return ScreenOrientation.LandscapeFlipped;\r\n case \"portrait-primary\":\r\n return ScreenOrientation.Portrait;\r\n case \"portrait-secondary\":\r\n return ScreenOrientation.PortraitFlipped;\r\n }\r\n }\r\n}\r\n", "import { InputHelper } from \"./avalonia/input\";\r\nimport { AvaloniaDOM } from \"./avalonia/dom\";\r\nimport { Caniuse } from \"./avalonia/caniuse\";\r\nimport { StreamHelper } from \"./avalonia/stream\";\r\nimport { NativeControlHost } from \"./avalonia/nativeControlHost\";\r\nimport { NavigationHelper } from \"./avalonia/navigationHelper\";\r\nimport { GeneralHelpers } from \"./avalonia/generalHelpers\";\r\nimport { TimerHelper } from \"./avalonia/timer\";\r\nimport { CanvasSurface } from \"./avalonia/rendering/canvasSurface\";\r\nimport { WebRenderTargetRegistry } from \"./avalonia/rendering/webRenderTargetRegistry\";\r\nimport { WebRenderTarget } from \"./avalonia/rendering/webRenderTarget\";\r\nimport { SoftwareRenderTarget } from \"./avalonia/rendering/softwareRenderTarget\";\r\nimport { WebGlRenderTarget } from \"./avalonia/rendering/webGlRenderTarget\";\r\nimport { ScreenHelper } from \"./avalonia/screens\";\r\n\r\nasync function registerServiceWorker(path: string, scope: string | undefined) {\r\n if (\"serviceWorker\" in navigator) {\r\n await globalThis.navigator.serviceWorker.register(path, scope ? { scope } : undefined);\r\n }\r\n}\r\n\r\nexport {\r\n Caniuse,\r\n InputHelper,\r\n AvaloniaDOM,\r\n StreamHelper,\r\n NativeControlHost,\r\n NavigationHelper,\r\n GeneralHelpers,\r\n ScreenHelper,\r\n TimerHelper,\r\n WebRenderTarget,\r\n CanvasSurface,\r\n WebRenderTargetRegistry,\r\n SoftwareRenderTarget,\r\n WebGlRenderTarget,\r\n registerServiceWorker\r\n};\r\n"], + "mappings": "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", + "names": ["CaretHelper", "element", "position", "options", "_a", "_b", "isBrowser", "debug", "el", "div", "style", "computed", "isInput", "properties", "prop", "height", "outerHeight", "targetHeight", "isFirefox", "span", "coordinates", "JsExports", "_a", "resolveExports", "runtimeApi", "InputHelper", "args", "globalThis", "resolve", "reject", "text", "element", "topLevelId", "keySub", "pointerSub", "textSub", "dndSub", "paneSub", "keyDownHandler", "JsExports", "keyUpHandler", "compositionStartHandler", "beforeInputHandler", "ranges", "start", "end", "compositionUpdateHandler", "compositionEndHandler", "pointerMoveHandler", "pointerDownHandler", "pointerUpHandler", "pointerCancelHandler", "wheelHandler", "handler", "dataObject", "overAndDropHandler", "pointerEvent", "e", "listener", "event", "elementRect", "keyboardRect", "inputElement", "kind", "x", "y", "caretWidth", "caretHeight", "caret", "left", "top", "CaretHelper", "modifiers", "buttons", "containerElement", "pointerId", "AvaloniaDOM", "element", "className", "parent", "elements", "host", "_a", "containerId", "canvas", "nativeHost", "inputElement", "globalThis", "isFullscreen", "colorSchemeMedia", "prefersContrastMedia", "args", "JsExports", "top", "bottom", "left", "right", "Caniuse", "_a", "userAgentData", "userAgent", "regex1", "regex2", "sharedArrayBufferDefined", "isSharedArrayBuffer", "buffer", "StreamHelper", "stream", "position", "size", "span", "offset", "count", "_a", "heap8", "copy", "NativeControlHostTopLevelAttachment", "NativeControlHost", "parent", "element", "child", "host", "x", "y", "width", "height", "NavigationHelper", "backHandlerCallback", "uri", "target", "GeneralHelpers", "instance", "key", "items", "retItems", "name", "args", "TimerHelper", "render", "time", "_a", "JsExports", "interval", "ResizeHandler", "element", "callback", "_a", "_b", "entries", "observer", "entry", "trueDpr", "width", "height", "dpr", "displayWidth", "displayHeight", "WebRenderTarget", "canvas", "type", "target", "w", "h", "getGL", "_a", "_b", "_c", "_d", "self", "module", "_WebGlRenderTarget", "WebRenderTarget", "canvas", "mode", "attrs", "context", "handle", "ret", "WebGlRenderTarget", "SoftwareRenderTarget", "WebRenderTarget", "canvas", "context", "pointer", "length", "width", "height", "_a", "heap8", "clampedBuffer", "dstArrayBuffer", "copy", "imageData", "target", "_WebRenderTargetRegistry", "pthreadId", "canvas", "preferredModes", "_a", "_b", "id", "self", "module", "pthreads", "pthread", "worker", "offscreen", "oldHandler", "ev", "msg", "modes", "mode", "SoftwareRenderTarget", "WebGlRenderTarget", "e", "message", "WebRenderTargetRegistry", "CanvasSurface", "canvas", "modes", "topLevelId", "threadId", "WebRenderTargetRegistry", "ResizeHandler", "width", "height", "dpr", "_a", "JsExports", "container", "AvaloniaDOM", "ex", "surface", "ScreenHelper", "JsExports", "globalThis", "state", "screen", "width", "height", "registerServiceWorker", "path", "scope"] } diff --git a/_framework/avalonia.js.map.br b/_framework/avalonia.js.map.br index 643899e..d4cf677 100644 Binary files a/_framework/avalonia.js.map.br and b/_framework/avalonia.js.map.br differ diff --git a/_framework/avalonia.js.map.gz b/_framework/avalonia.js.map.gz index 4f15c1f..8ce2838 100644 Binary files a/_framework/avalonia.js.map.gz and b/_framework/avalonia.js.map.gz differ diff --git a/_framework/blazor.boot.json b/_framework/blazor.boot.json index 5104eb7..51f8f94 100644 --- a/_framework/blazor.boot.json +++ b/_framework/blazor.boot.json @@ -1,7 +1,7 @@ { "mainAssemblyName": "Semi.Avalonia.Demo.Web", "resources": { - "hash": "sha256-VEWoe5vKAzAmgCKP/iYWcIw10JwUzqkVmts5OgnfE3s=", + "hash": "sha256-dH5L0IbC6y6EWF29WzDn460BiykB1ZNlfMqn3c4ZxG8=", "jsModuleNative": { "dotnet.native.8.0.11.o8z0k8deif.js": "sha256-1Tx/N3Y1ds2TlGlIqZjslN3uagZI4XlCGwnNnwEYgws=" }, @@ -9,7 +9,7 @@ "dotnet.runtime.8.0.11.lzlqtfpif6.js": "sha256-nam8JTYKjhMKOTg6+FlihYP6JpWPGe3jjM9fiUFWzhY=" }, "wasmNative": { - "dotnet.native.wasm": "sha256-Q5QXt179H1PPMXEeobOhOFP5GAp/DFRcLn5aqWWZPog=" + "dotnet.native.wasm": "sha256-g2hgsQV6Op3SUvzS+e4RCO+9GRuiCFRzMN9NIpkY8XI=" }, "icu": { "icudt_CJK.dat": "sha256-SZLtQnRc0JkwqHab0VUVP7T3uBPSeYzxzDnpxPpUnHk=", @@ -17,32 +17,32 @@ "icudt_no_CJK.dat": "sha256-L7sV7NEYP37/Qr2FPCePo5cJqRgTXRwGHuwF5Q+0Nfs=" }, "assembly": { - "Avalonia.Base.wasm": "sha256-CiRT1r70S5FUpZ+tISNM/Hzo048nRWtCYGUiTkamzoY=", - "Avalonia.Browser.wasm": "sha256-rsW054WcPwNkRggAo/pMCcGYqjwfVpyIoDmvXtzkM7Y=", - "Avalonia.Controls.ColorPicker.wasm": "sha256-xg2CB/l3XjoqEoWJ9Wwudn8flhdLlJ5brBmYjdkex+s=", - "Avalonia.Controls.DataGrid.wasm": "sha256-0+gfpFo7xRdFQ0I4WjvqFGWFN+MHT3EWfXSfxIj9H2k=", - "Avalonia.Controls.wasm": "sha256-yDQeb3asWG1xlrSZB/tEg5n7PdhhM0biQpKMlPu6rq8=", - "Avalonia.DesignerSupport.wasm": "sha256-a2sNYqbHVhY/4t/Y0gyEBtXfFQdqmufWA6uN15eoeBo=", - "Avalonia.Dialogs.wasm": "sha256-o3uCho/zldLA9IUo7yVYw+Xud6I9bZf+BrWnqLkSI18=", - "Avalonia.Markup.wasm": "sha256-H9Ozq7KnHvGsn95OjbkSSyHn58I7os3R6Wtr1PYeUA0=", - "Avalonia.Markup.Xaml.wasm": "sha256-v5grHdmUF1tVkzcWJtc+8A8GJZ1gK83hVtk++XW0cG4=", - "Avalonia.Metal.wasm": "sha256-JKVJPih1eO/O/mY0qGAeFh6sVgQa9uXAfM4mX58WXl8=", - "Avalonia.MicroCom.wasm": "sha256-oYsj3Kt9JwJ6UavQwzMR4wDDkfe8D35Y99xt7f9tXFU=", - "Avalonia.OpenGL.wasm": "sha256-L2KrcCFym+j/xR05EHW8L/MuVnggawYrXVnlfJic+Lk=", - "Avalonia.Remote.Protocol.wasm": "sha256-hk+YEEKIgLYvekqlQbOokyhNjTq32Bp3q19/xYq20ek=", - "Avalonia.Skia.wasm": "sha256-wOQXAso1dYRa2oLlcI4qAEpENfKrawUMmmhXmYDgfG4=", - "Avalonia.Vulkan.wasm": "sha256-w3lXeTQxtWn70d28+kCqepIJVHvR0U+DW1BcdWz9IYU=", - "Avalonia.wasm": "sha256-vOh4WH9NiIg8XFbjLPIGjI5DQWHpT7PjsoyvE0OF9M8=", - "CommunityToolkit.Mvvm.wasm": "sha256-OtPxKEdnugyURXg2VgjjYMaMydOr9YUazFGWiNcvHvI=", - "HarfBuzzSharp.wasm": "sha256-lJ+uf/j5QdDNq+rbyKQp03mCxPazObS+na/TKFd0+MU=", + "Avalonia.Base.wasm": "sha256-20laEf53DIkzaL6BbP6R5aCtOYxtnvNeD7oDIXjEFWc=", + "Avalonia.Browser.wasm": "sha256-i4VsDFWAhrnak9C45cU0LSvjbyPc0ZcURABEK90ZVSI=", + "Avalonia.Controls.ColorPicker.wasm": "sha256-6DOC+1lFJffky9aL5JvnTC45vOTPIwMcyZdr/z1Q6F0=", + "Avalonia.Controls.DataGrid.wasm": "sha256-UF+vq2Qh1sElfmq6aKIB8+q05YeqPCTzhWGyGNlRf90=", + "Avalonia.Controls.wasm": "sha256-bffQ/UFV4RTebKIc/fZfiRq4XdjWIqumXO/Biiz6qBI=", + "Avalonia.DesignerSupport.wasm": "sha256-IbmhxrDkG1z6LJ0YcWfIrXT0fvcbOakBo8jl/mwn0M8=", + "Avalonia.Dialogs.wasm": "sha256-W+KLIohInkTEbvoVbdsDghR79zBteI6TIFZV8qPqoCg=", + "Avalonia.Markup.wasm": "sha256-+n9+UzSI0BVTULYnPxbv6Qta1P4cATvMqE0Cly22URM=", + "Avalonia.Markup.Xaml.wasm": "sha256-EirSnlWB9LmKNDXVoBxz3RW3V4mHYuURLtYh8bwykV0=", + "Avalonia.Metal.wasm": "sha256-bKIMrOoPMJQev4Ak5sqRVZtavwOxQ0o6uspuxcjkgqQ=", + "Avalonia.MicroCom.wasm": "sha256-ydNiUhp0F6IUeexouuELN2P00ijERaWlyDOkkizdOuA=", + "Avalonia.OpenGL.wasm": "sha256-W3gVQ7lCcBXFumFP8mTNiOjuqQ+vJvS+uFirgvakYw0=", + "Avalonia.Remote.Protocol.wasm": "sha256-X81eEGDdT6+t5q/stG34irfFiTS0bp/l0jiNoKbBMsA=", + "Avalonia.Skia.wasm": "sha256-+MLgGaQBibQZ5ek96vKdD/b5y6bRqq3FtmRW6prMgC0=", + "Avalonia.Vulkan.wasm": "sha256-sif5M27AGMhfpQpb9JNz0tR3yw93pHOIDIe6rG4ywyI=", + "Avalonia.wasm": "sha256-bgY+A8s0OM4c7kDHwLuV8Gb4roSp1bGskXK/ZG53BBs=", + "CommunityToolkit.Mvvm.wasm": "sha256-oJap4Bm66SzC2z9eU1xX/PS8Un0Zxp1BWESrzHZN144=", + "HarfBuzzSharp.wasm": "sha256-OGt87lZgCnvJ9jRw15AER09mt2vsdueiE9b8TqaONsk=", "MicroCom.Runtime.wasm": "sha256-dI22KS20yc+ziyg4tSUpmSjG0ebPXDL5QTSZf+ehjwI=", - "netstandard.wasm": "sha256-VYN+iXoSTBox6jq4XFHVV3wNFYFztwQeNsddWV33f54=", - "Semi.Avalonia.ColorPicker.wasm": "sha256-L3uRzoXyKq3PLFFsu3ClRoIv0nIfGgkmZXuwSugrl8k=", - "Semi.Avalonia.DataGrid.wasm": "sha256-cydutJPFXtQ1dgFS8daqwhd1PYifJv00m1o+GbCymDM=", - "Semi.Avalonia.Demo.wasm": "sha256-deK2y4aXgZG/yISIDo4tDxWilXmkk/fk8z+Ft8F2XhU=", - "Semi.Avalonia.Demo.Web.wasm": "sha256-uVjCDZ9OLmQ77Upv+/ef+JWzI65z3rcu4p+84paboEs=", - "Semi.Avalonia.wasm": "sha256-xe2aLeVgLUv2ZCgVwqcE5IVIq+qF/ouj43AIsu7zZLE=", - "SkiaSharp.wasm": "sha256-QbUSKYb2ATdHExMZLw0NPOAG/m0ds2q4xGHC4tIoolo=", + "netstandard.wasm": "sha256-2/ybC+F6rd8gVFUhkb5s/FmmWZs5dyYYusj4mTOzxdA=", + "Semi.Avalonia.ColorPicker.wasm": "sha256-rNjXnmYGb0rEZJ5nugfaRdExSSoNzCz3wAlysTYLLpA=", + "Semi.Avalonia.DataGrid.wasm": "sha256-oDwUmKg6XCOmaMfDK5syiUZwgrMZhkFmc3JDQoTGtrI=", + "Semi.Avalonia.Demo.wasm": "sha256-Ye8CJnmmVPuxRe1tMXUMvlPnNtMCiigjxQtZNJwAwR0=", + "Semi.Avalonia.Demo.Web.wasm": "sha256-rZZky5IIOObuYPluRr75/OOcna0Lk3tozYHpHpeNOT4=", + "Semi.Avalonia.wasm": "sha256-ha2rXfDa8j3XKRONwIT6QqU8lGXO92w0Gnuv9+scCQc=", + "SkiaSharp.wasm": "sha256-KeXm6AUIoAakSz5xiD28BzuP4BXJxwQAh0BvaZEv/hM=", "System.Collections.Concurrent.wasm": "sha256-x2idcsFc+DPj0rYJ1zCYkOHuyw7VOR+mVBKajOp27U0=", "System.Collections.NonGeneric.wasm": "sha256-Jq9Og+e+P6NVe2cnZqNtxVMDzLELlZ6UjQMVUjxs8mc=", "System.Collections.Specialized.wasm": "sha256-sJR80PX0oux6WjGnOJ74Qdyk9Z3E+8cOcGTzPOcIetw=", @@ -58,7 +58,7 @@ "System.Net.Primitives.wasm": "sha256-4syewc1bLYxDJtikpiCCnSwEDG0i64Qd03DN0GTXroU=", "System.Net.Sockets.wasm": "sha256-1DouLhKcQObLygyz6O6j7/Wmqm3MGgT9/uZ0WniDbpk=", "System.ObjectModel.wasm": "sha256-G0dqBsP267EcwkOjVgZPJz2nAHiUy5HiQ307BaV8EM4=", - "System.Private.CoreLib.wasm": "sha256-bR0eZP8tHIXiD+SBasn4+veMZNyn1+IdughHkeUDYag=", + "System.Private.CoreLib.wasm": "sha256-oGJM90WULI2imGuA2K1fHNeZg2869FguRwBbHc1Eoac=", "System.Private.Uri.wasm": "sha256-rDG8KXFTq3N0WfdN0gRdpMsQ/8kW6fz/r6kWPh77QTk=", "System.Private.Xml.wasm": "sha256-wsllDlMttLC81/g1Dm006bCOUx08a8SgWISqN0A5aB4=", "System.Runtime.InteropServices.JavaScript.wasm": "sha256-ftPj3YrbHGdMWCcxN83df7+HVqXZTHrw379ZWffRAZM=", diff --git a/_framework/blazor.boot.json.br b/_framework/blazor.boot.json.br index 69a983b..1ed6c89 100644 Binary files a/_framework/blazor.boot.json.br and b/_framework/blazor.boot.json.br differ diff --git a/_framework/blazor.boot.json.gz b/_framework/blazor.boot.json.gz index f2476fd..6127f9e 100644 Binary files a/_framework/blazor.boot.json.gz and b/_framework/blazor.boot.json.gz differ diff --git a/_framework/dotnet.native.wasm b/_framework/dotnet.native.wasm index 9cdb321..60893a4 100755 Binary files a/_framework/dotnet.native.wasm and b/_framework/dotnet.native.wasm differ diff --git a/_framework/dotnet.native.wasm.br b/_framework/dotnet.native.wasm.br index 461c945..009fbad 100644 Binary files a/_framework/dotnet.native.wasm.br and b/_framework/dotnet.native.wasm.br differ diff --git a/_framework/dotnet.native.wasm.gz b/_framework/dotnet.native.wasm.gz index f300560..484f76b 100644 Binary files a/_framework/dotnet.native.wasm.gz and b/_framework/dotnet.native.wasm.gz differ diff --git a/_framework/netstandard.wasm b/_framework/netstandard.wasm index 6763a3b..b007583 100644 Binary files a/_framework/netstandard.wasm and b/_framework/netstandard.wasm differ diff --git a/_framework/netstandard.wasm.br b/_framework/netstandard.wasm.br index 0fa7f24..7e90074 100644 Binary files a/_framework/netstandard.wasm.br and b/_framework/netstandard.wasm.br differ diff --git a/_framework/netstandard.wasm.gz b/_framework/netstandard.wasm.gz index a8a84bc..c2a2797 100644 Binary files a/_framework/netstandard.wasm.gz and b/_framework/netstandard.wasm.gz differ