Nikos Kastellanos преди 11 месеца
родител
ревизия
0abe3e7f76
променени са 77 файла, в които са добавени 3101 реда и са изтрити 0 реда
  1. 25 0
      docs/wasm/Deferred.html
  2. BIN
      docs/wasm/Deferred/Content/enemy_0.xnb
  3. BIN
      docs/wasm/Deferred/Content/font.xnb
  4. BIN
      docs/wasm/Deferred/Content/spaceship.xnb
  5. BIN
      docs/wasm/Deferred/Content/sphere.xnb
  6. 99 0
      docs/wasm/Deferred/Deferred.styles.css
  7. 364 0
      docs/wasm/Deferred/_content/nkast.Wasm.Audio/js/Audio.8.0.2.js
  8. 295 0
      docs/wasm/Deferred/_content/nkast.Wasm.Canvas/js/Canvas.8.0.2.js
  9. 479 0
      docs/wasm/Deferred/_content/nkast.Wasm.Canvas/js/Canvas2dContext.8.0.2.js
  10. 1088 0
      docs/wasm/Deferred/_content/nkast.Wasm.Canvas/js/CanvasGLContext.8.0.2.js
  11. 26 0
      docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Document.8.0.2.js
  12. 120 0
      docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Gamepad.8.0.2.js
  13. 42 0
      docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/JSObject.8.0.2.js
  14. 127 0
      docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Media.8.0.2.js
  15. 42 0
      docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Navigator.8.0.2.js
  16. 127 0
      docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Window.8.0.2.js
  17. 40 0
      docs/wasm/Deferred/_content/nkast.Wasm.XHR/js/XHR.8.0.2.js
  18. BIN
      docs/wasm/Deferred/_framework/Aether.Shaders.Deferred.wasm.br
  19. BIN
      docs/wasm/Deferred/_framework/Deferred.wasm.br
  20. BIN
      docs/wasm/Deferred/_framework/Microsoft.AspNetCore.Components.Web.wasm.br
  21. BIN
      docs/wasm/Deferred/_framework/Microsoft.AspNetCore.Components.WebAssembly.wasm.br
  22. BIN
      docs/wasm/Deferred/_framework/Microsoft.AspNetCore.Components.wasm.br
  23. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Configuration.Abstractions.wasm.br
  24. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Configuration.Json.wasm.br
  25. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Configuration.wasm.br
  26. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.wasm.br
  27. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.DependencyInjection.wasm.br
  28. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Logging.Abstractions.wasm.br
  29. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Logging.wasm.br
  30. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Options.wasm.br
  31. BIN
      docs/wasm/Deferred/_framework/Microsoft.Extensions.Primitives.wasm.br
  32. BIN
      docs/wasm/Deferred/_framework/Microsoft.JSInterop.WebAssembly.wasm.br
  33. BIN
      docs/wasm/Deferred/_framework/Microsoft.JSInterop.wasm.br
  34. BIN
      docs/wasm/Deferred/_framework/MonoGame.Framework.wasm.br
  35. BIN
      docs/wasm/Deferred/_framework/System.Collections.Concurrent.wasm.br
  36. BIN
      docs/wasm/Deferred/_framework/System.Collections.wasm.br
  37. BIN
      docs/wasm/Deferred/_framework/System.ComponentModel.wasm.br
  38. BIN
      docs/wasm/Deferred/_framework/System.Console.wasm.br
  39. BIN
      docs/wasm/Deferred/_framework/System.Linq.wasm.br
  40. BIN
      docs/wasm/Deferred/_framework/System.Memory.wasm.br
  41. BIN
      docs/wasm/Deferred/_framework/System.Net.Http.wasm.br
  42. BIN
      docs/wasm/Deferred/_framework/System.Net.Primitives.wasm.br
  43. BIN
      docs/wasm/Deferred/_framework/System.ObjectModel.wasm.br
  44. BIN
      docs/wasm/Deferred/_framework/System.Private.CoreLib.wasm.br
  45. BIN
      docs/wasm/Deferred/_framework/System.Private.Uri.wasm.br
  46. BIN
      docs/wasm/Deferred/_framework/System.Runtime.InteropServices.JavaScript.wasm.br
  47. BIN
      docs/wasm/Deferred/_framework/System.Runtime.Serialization.Primitives.wasm.br
  48. BIN
      docs/wasm/Deferred/_framework/System.Runtime.wasm.br
  49. BIN
      docs/wasm/Deferred/_framework/System.Text.Encodings.Web.wasm.br
  50. BIN
      docs/wasm/Deferred/_framework/System.Text.Json.wasm.br
  51. BIN
      docs/wasm/Deferred/_framework/System.Text.RegularExpressions.wasm.br
  52. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.Audio.wasm.br
  53. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.Content.wasm.br
  54. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.Game.wasm.br
  55. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.Graphics.wasm.br
  56. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.Input.wasm.br
  57. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.Media.wasm.br
  58. BIN
      docs/wasm/Deferred/_framework/Xna.Framework.wasm.br
  59. BIN
      docs/wasm/Deferred/_framework/blazor.boot.json.br
  60. 0 0
      docs/wasm/Deferred/_framework/blazor.webassembly.js
  61. 2 0
      docs/wasm/Deferred/_framework/dotnet.js
  62. 7 0
      docs/wasm/Deferred/_framework/dotnet.native.8.0.8.capfi8u5vj.js
  63. BIN
      docs/wasm/Deferred/_framework/dotnet.native.wasm.br
  64. 2 0
      docs/wasm/Deferred/_framework/dotnet.runtime.8.0.8.80cvijctdx.js
  65. BIN
      docs/wasm/Deferred/_framework/netstandard.wasm.br
  66. BIN
      docs/wasm/Deferred/_framework/nkast.Wasm.Audio.wasm.br
  67. BIN
      docs/wasm/Deferred/_framework/nkast.Wasm.Canvas.wasm.br
  68. BIN
      docs/wasm/Deferred/_framework/nkast.Wasm.Dom.wasm.br
  69. BIN
      docs/wasm/Deferred/_framework/nkast.Wasm.XHR.wasm.br
  70. 94 0
      docs/wasm/Deferred/css/app.css
  71. 5 0
      docs/wasm/Deferred/css/bootstrap/bootstrap.min.css
  72. 0 0
      docs/wasm/Deferred/css/bootstrap/bootstrap.min.css.map
  73. BIN
      docs/wasm/Deferred/favicon.ico
  74. 117 0
      docs/wasm/Deferred/index.html
  75. 0 0
      docs/wasm/Deferred/js/decode.min.js
  76. BIN
      docs/wasm/Deferred/kni.png
  77. BIN
      docs/wasm/Deferred/screenshot.png

+ 25 - 0
docs/wasm/Deferred.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <title>Deferred Sample</title>
+    <link rel="icon" type="image/x-icon" href="Deferred/favicon.ico">
+    
+    <meta name="twitter:card" content="summary_large_image">
+    <meta name="twitter:title" content="Deferred Sample">
+    <meta name="twitter:image" content="https://nkast.github.io/Aether.Extras/wasm/Deferred/screenshot.png">
+</head>
+
+<body>
+  <table align="center">
+    <td width="800px">
+      <p><b>Deferred sample</b>
+      <br>Open sample in <a href="Deferred/index.html">full page</a>.
+      <br>Go to <a href="https://github.com/nkast/Aether.Extras/tree/main/Samples/Deferred#readme">code</a>.</p>
+      </p>
+      <p><iframe src="Deferred/" width="800" height="480" /></p>
+  </td>
+</table>
+</body>
+
+</html>

BIN
docs/wasm/Deferred/Content/enemy_0.xnb


BIN
docs/wasm/Deferred/Content/font.xnb


BIN
docs/wasm/Deferred/Content/spaceship.xnb


BIN
docs/wasm/Deferred/Content/sphere.xnb


+ 99 - 0
docs/wasm/Deferred/Deferred.styles.css

@@ -0,0 +1,99 @@
+/* /MainLayout.razor.rz.scp.css */
+.page[b-5cv2jeaag0]
+{
+    position: relative;
+    display: flex;
+    flex-direction: column;
+}
+
+main[b-5cv2jeaag0]
+{
+    flex: 1;
+}
+
+.sidebar[b-5cv2jeaag0]
+{
+    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
+}
+
+.top-row[b-5cv2jeaag0]
+{
+    background-color: #f7f7f7;
+    border-bottom: 1px solid #d6d5d5;
+    justify-content: flex-end;
+    height: 3.5rem;
+    display: flex;
+    align-items: center;
+}
+
+    .top-row[b-5cv2jeaag0]  a, .top-row[b-5cv2jeaag0]  .btn-link
+    {
+        white-space: nowrap;
+        margin-left: 1.5rem;
+        text-decoration: none;
+    }
+
+    .top-row[b-5cv2jeaag0]  a:hover, .top-row[b-5cv2jeaag0]  .btn-link:hover
+    {
+        text-decoration: underline;
+    }
+
+    .top-row[b-5cv2jeaag0]  a:first-child
+    {
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+
+@media (max-width: 640.98px)
+{
+    .top-row:not(.auth)[b-5cv2jeaag0]
+    {
+        display: none;
+    }
+
+    .top-row.auth[b-5cv2jeaag0]
+    {
+        justify-content: space-between;
+    }
+
+    .top-row[b-5cv2jeaag0]  a, .top-row[b-5cv2jeaag0]  .btn-link
+    {
+        margin-left: 0;
+    }
+}
+
+@media (min-width: 641px)
+{
+    .page[b-5cv2jeaag0]
+    {
+        flex-direction: row;
+    }
+
+    .sidebar[b-5cv2jeaag0]
+    {
+        width: 250px;
+        height: 100vh;
+        position: sticky;
+        top: 0;
+    }
+
+    .top-row[b-5cv2jeaag0]
+    {
+        position: sticky;
+        top: 0;
+        z-index: 1;
+    }
+
+    .top-row.auth[b-5cv2jeaag0]  a:first-child
+    {
+        flex: 1;
+        text-align: right;
+        width: 0;
+    }
+
+    .top-row[b-5cv2jeaag0], article[b-5cv2jeaag0]
+    {
+        padding-left: 2rem !important;
+        padding-right: 1.5rem !important;
+    }
+}

+ 364 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Audio/js/Audio.8.0.2.js

@@ -0,0 +1,364 @@
+window.nkAudioContext =
+{
+    Create: function()
+    {
+        var ac = new AudioContext();         
+        return nkJSObject.RegisterObject(ac);
+    },
+    
+    Close: function(uid,d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        ac.close();
+    }    
+};
+
+window.nkAudioBaseContext =
+{
+    GetSampleRate: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var sr = ac.sampleRate;
+        return sr;
+    },
+    GetDestination: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var ds = ac.destination;        
+        return  nkJSObject.RegisterObject(ds);
+    },
+    GetListener: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var lr = ac.listener;
+        return  nkJSObject.RegisterObject(lr);
+    },
+    
+    GetState: function (uid)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(ac.state);
+    },
+    SetState: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        ac.state = Blazor.platform.readStringField(d, 0);
+    },
+
+    CreateBuffer: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var nc = Blazor.platform.readInt32Field(d, 0);
+        var le = Blazor.platform.readInt32Field(d, 4);
+        var sr = Blazor.platform.readInt32Field(d, 8);
+        var ab = ac.createBuffer(nc, le, sr);
+        return  nkJSObject.RegisterObject(ab);
+    },
+    CreateBufferSource: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var bs = ac.createBufferSource();
+        return nkJSObject.RegisterObject(bs);
+    },
+    CreateOscillator: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var os = ac.createOscillator();
+        return nkJSObject.RegisterObject(os);
+    },
+    CreateGain: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var gn = ac.createGain();         
+        return nkJSObject.RegisterObject(gn);
+    },
+    CreateStereoPanner: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var sp = ac.createStereoPanner();
+        return nkJSObject.RegisterObject(sp);
+    },
+    CreateMediaElementSource: function (uid, d)
+    {
+        var ac = nkJSObject.GetObject(uid);
+        var mid= Blazor.platform.readInt32Field(d, 0);
+        var me = nkJSObject.GetObject(mid);
+        var ms = ac.createMediaElementSource(me);
+        return nkJSObject.RegisterObject(ms);
+    }
+};
+
+window.nkAudioBuffer =
+{
+    CopyToChannel: function (uid, d)
+    {
+        var ab = nkJSObject.GetObject(uid);
+        var cn = Blazor.platform.readInt32Field(d, 0);
+        var arr = Blazor.platform.readInt32Field(d, 4);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var sr = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen);
+
+        ab.copyToChannel(sr, cn);
+    },    
+    GetSampleRate: function (uid, d)
+    {
+        var ab = nkJSObject.GetObject(uid);
+        var sr = ab.sampleRate;
+        return sr;
+    },
+    GetLength: function (uid, d)
+    {
+        var ab = nkJSObject.GetObject(uid);
+        var ln = ab.length;
+        return ln;
+    },
+    GetNumberOfChannels: function (uid, d)
+    {
+        var ab = nkJSObject.GetObject(uid);
+        var nc = ab.numberOfChannels;
+        return nc;
+    }
+};
+
+window.nkAudioListener =
+{
+    SetPositionX: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var px = Blazor.platform.readInt32Field(d, 0);
+        lr.positionX = px;
+    },
+    SetPositionY: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var py = Blazor.platform.readInt32Field(d, 0);
+        lr.positionY = py;
+    },
+    SetPositionZ: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var pz = Blazor.platform.readInt32Field(d, 0);
+        lr.positionZ = pz;
+    },
+
+    SetForwardX: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var fx = Blazor.platform.readInt32Field(d, 0);
+        lr.forwardX = fx;
+    },
+    SetForwardY: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var fy = Blazor.platform.readInt32Field(d, 0);
+        lr.forwardY = fy;
+    },
+    SetForwardZ: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var fz = Blazor.platform.readInt32Field(d, 0);
+        lr.forwardZ = fz;
+    },
+
+    SetUpX: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var ux = Blazor.platform.readInt32Field(d, 0);
+        lr.upX = ux;
+    },
+    SetUpY: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var uy = Blazor.platform.readInt32Field(d, 0);
+        lr.upY = uy;
+    },
+    SetUpZ: function (uid, d)
+    {
+        var lr = nkJSObject.GetObject(uid);
+        var uz = Blazor.platform.readInt32Field(d, 0);
+        lr.upZ = uz;
+    }
+};
+
+window.nkAudioBufferSourceNode =
+{
+    SetBuffer: function (uid, d)
+    {
+        var bs = nkJSObject.GetObject(uid);
+        var bid= Blazor.platform.readInt32Field(d, 0);
+        var ab = nkJSObject.GetObject(bid);
+        bs.buffer = ab;
+    },
+
+    GetLoop: function (uid, d)
+    {
+        var bs = nkJSObject.GetObject(uid);
+        return bs.loop;
+    },
+    SetLoop: function (uid, d)
+    {
+        var bs = nkJSObject.GetObject(uid);
+        var lp = Blazor.platform.readInt32Field(d, 0);
+        bs.loop = lp !== 0;
+    }
+};
+
+window.nkAudioScheduledSourceNode =
+{
+    Start: function (uid, d)
+    {
+        var bs = nkJSObject.GetObject(uid);
+        bs.start();
+    },
+    Stop: function (uid, d)
+    {
+        var bs = nkJSObject.GetObject(uid);
+        bs.stop();
+    },
+    
+    RegisterEvents: function (uid)
+    {
+        var bs = nkJSObject.GetObject(uid);
+
+        bs.onended = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Audio', 'JsAudioScheduledSourceNodeOnEnded', uid);
+        };
+    },    
+    UnregisterEvents: function (uid)
+    {
+        var bs = nkJSObject.GetObject(uid);
+        bs.onended = null;
+    }
+};
+
+window.nkAudioDestinationNode =
+{
+    GetMaxChannelCount: function (uid, d)
+    {
+        var gn = nkJSObject.GetObject(uid);
+        return gn.maxChannelCount;
+    }
+};
+
+window.nkAudioNode =
+{    
+    Connect: function (uid, d)
+    {
+        var an = nkJSObject.GetObject(uid);
+        var did= Blazor.platform.readInt32Field(d, 0);
+        var ds = nkJSObject.GetObject(did);
+        an.connect(ds);
+    },
+    Disconnect: function (uid, d)
+    {
+        var an = nkJSObject.GetObject(uid);
+        var did = Blazor.platform.readInt32Field(d, 0);
+        var ds = nkJSObject.GetObject(did);
+        an.disconnect(ds);
+    },
+};
+
+window.nkAudioOscillatorNode =
+{
+    GetFrequency: function (uid, d)
+    {
+        var os = nkJSObject.GetObject(uid);
+        var ap = os.frequency;
+        return  nkJSObject.RegisterObject(ap);
+    },
+
+    GetType: function (uid)
+    {
+        var os = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(os.type);
+    },
+    SetType: function (uid, d)
+    {
+        var os = nkJSObject.GetObject(uid);
+        os.type = Blazor.platform.readStringField(d, 0);
+    }
+};
+
+window.nkAudioGainNode =
+{
+    GetGain: function (uid, d)
+    {
+        var gn = nkJSObject.GetObject(uid);
+        var ap = gn.gain;
+        return nkJSObject.RegisterObject(ap);
+    }
+};
+
+window.nkAudioStereoPannerNode =
+{
+    GetPan: function (uid, d)
+    {
+        var sp = nkJSObject.GetObject(uid);
+        var ap = sp.pan;
+        return nkJSObject.RegisterObject(ap);
+    }
+};
+
+window.nkAudioParam =
+{  
+    SetValue: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var vl = Blazor.platform.readFloatField(d, 0);
+        ap.value = vl;
+    },
+    
+    SetValueAtTime: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var vl = Blazor.platform.readFloatField(d, 0);
+        var st = Blazor.platform.readFloatField(d, 4);
+        ap.setValueAtTime(vl, st);
+    },
+    LinearRampToValueAtTime: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var vl = Blazor.platform.readFloatField(d, 0);
+        var et = Blazor.platform.readFloatField(d, 4);
+        ap.linearRampToValueAtTime(vl, et);
+    },
+    ExponentialRampToValueAtTime: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var vl = Blazor.platform.readFloatField(d, 0);
+        var et = Blazor.platform.readFloatField(d, 4);
+        ap.exponentialRampToValueAtTime(vl, et);
+    },
+    SetTargetAtTime: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readFloatField(d, 0);
+        var st = Blazor.platform.readFloatField(d, 4);
+        var tc = Blazor.platform.readFloatField(d, 8);
+        ap.setTargetAtTime(tg, st, tc);
+    },
+    SetValueCurveAtTime: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var st = Blazor.platform.readFloatField(d, 0);
+        var dt = Blazor.platform.readFloatField(d, 4);
+        var arr = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var vs = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen);
+
+        ap.setValueCurveAtTime(vs, st, dt);
+    },
+
+    CancelScheduledValues: function (uid, d)
+    {
+        var ap = nkJSObject.GetObject(uid);
+        var st = Blazor.platform.readFloatField(d, 0);
+        ap.cancelScheduledValues(st);
+    }
+};
+

+ 295 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Canvas/js/Canvas.8.0.2.js

@@ -0,0 +1,295 @@
+window.nkCanvas =
+{
+    GetWidth: function(uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        return c.width;
+    },
+    SetWidth: function(uid,d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        c.width = Blazor.platform.readInt32Field(d, 0);
+    },
+    GetHeight: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        return c.height;
+    },
+    SetHeight: function(uid,d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        c.height = Blazor.platform.readInt32Field(d, 0);
+    },
+    Create2DContext: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var cx = c.getContext("2d");
+        return nkJSObject.RegisterObject(cx);
+    },
+    Create2DContext1: function (uid, d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var bi = Blazor.platform.readInt32Field(d, 0);
+
+        var al = (bi >>  0) & 3;
+        var de = (bi >>  2) & 3;
+
+        var attribs = {};
+        if (al !== 3)
+            attribs.alpha = al !== 0;
+        if (de !== 3)
+            attribs.desynchronized = de !== 0;
+
+        var cx = c.getContext("2d", attribs);
+        return nkJSObject.RegisterObject(cx);
+    },
+    CreateWebGLContext: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var glx = c.getContext("webgl");
+        return nkJSObject.RegisterObject(glx);
+    },
+    CreateWebGLContext1: function (uid, d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var bi = Blazor.platform.readInt32Field(d, 0);
+
+        var al = (bi >>  0) & 3;
+        var de = (bi >>  2) & 3;
+        var dp = (bi >>  4) & 3;
+        var st = (bi >>  6) & 3;
+        var aa = (bi >>  8) & 3;
+        var pa = (bi >> 10) & 3;
+        var pb = (bi >> 12) & 3;
+        var xr = (bi >> 14) & 3;
+        var pp = (bi >> 16) & 3;
+
+        var attribs = {};
+        if (al != 3)
+            attribs.alpha = al !== 0;
+        if (de != 3)
+            attribs.desynchronized = de !== 0;
+        if (dp != 3)
+            attribs.depth = dp !== 0;
+        if (st != 3)
+            attribs.stencil = st !== 0;
+        if (aa != 3)
+            attribs.antialias = aa !== 0;
+        if (pa != 3)
+            attribs.premultipliedAlpha = pa !== 0;
+        if (pb != 3)
+            attribs.preserveDrawingBuffer = pb !== 0;
+        if (xr != 3)
+            attribs.xrCompatible = xr !== 0;
+        if (pp != 3)
+            attribs.PowerPreference = (pp === 1) ? 'high-performance'
+                                    : (pp === 2) ? 'low-power'
+                                    : 'default'
+                                    ;
+
+        var glx = c.getContext("webgl", attribs);
+        return nkJSObject.RegisterObject(glx);
+    },
+    CreateWebGL2Context: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var glx = c.getContext("webgl2");
+        if (glx == null)
+            return 0;
+        return nkJSObject.RegisterObject(glx);
+    },
+    CreateWebGL2Context1: function (uid, d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var bi = Blazor.platform.readInt32Field(d, 0);
+
+        var al = (bi >>  0) & 3;
+        var de = (bi >>  2) & 3;
+        var dp = (bi >>  4) & 3;
+        var st = (bi >>  6) & 3;
+        var aa = (bi >>  8) & 3;
+        var pa = (bi >> 10) & 3;
+        var pb = (bi >> 12) & 3;
+        var xr = (bi >> 14) & 3;
+        var pp = (bi >> 16) & 3;
+
+        var attribs = {};
+        if (al != 3)
+            attribs.alpha = al !== 0;
+        if (de != 3)
+            attribs.desynchronized = de !== 0;
+        if (dp != 3)
+            attribs.depth = dp !== 0;
+        if (st != 3)
+            attribs.stencil = st !== 0;
+        if (aa != 3)
+            attribs.antialias = aa !== 0;
+        if (pa != 3)
+            attribs.premultipliedAlpha = pa !== 0;
+        if (pb != 3)
+            attribs.preserveDrawingBuffer = pb !== 0;
+        if (xr != 3)
+            attribs.xrCompatible = xr !== 0;
+        if (pp != 3)
+            attribs.PowerPreference = (pp === 1) ? 'high-performance'
+                                    : (pp === 2) ? 'low-power'
+                                    : 'default'
+                                    ;
+
+        var glx = c.getContext("webgl2", attribs);
+        if (glx == null)
+            return 0;
+        return nkJSObject.RegisterObject(glx);
+    },
+};
+
+window.nkOffscreenCanvas =
+{
+    Create: function(width, height)
+    {
+        var oc = new OffscreenCanvas(width, height);
+        return nkJSObject.RegisterObject(oc);
+    },
+
+    GetWidth: function(uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        return c.width;
+    },
+    SetWidth: function(uid,d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        c.width = Blazor.platform.readInt32Field(d, 0);
+    },
+    GetHeight: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        return c.height;
+    },
+    SetHeight: function(uid,d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        c.height = Blazor.platform.readInt32Field(d, 0);
+    },
+    Create2DContext: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var cx = c.getContext("2d");
+        return nkJSObject.RegisterObject(cx);
+    },
+    Create2DContext1: function (uid, d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var bi = Blazor.platform.readInt32Field(d, 0);
+
+        var al = (bi >>  0) & 3;
+        var de = (bi >>  2) & 3;
+
+        var attribs = {};
+        if (al !== 3)
+            attribs.alpha = al !== 0;
+        if (de !== 3)
+            attribs.desynchronized = de !== 0;
+
+        var cx = c.getContext("2d", attribs);
+        return nkJSObject.RegisterObject(cx);
+    },
+    CreateWebGLContext: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var glx = c.getContext("webgl");
+        return nkJSObject.RegisterObject(glx);
+    },
+    CreateWebGLContext1: function (uid, d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var bi = Blazor.platform.readInt32Field(d, 0);
+
+        var al = (bi >>  0) & 3;
+        var de = (bi >>  2) & 3;
+        var dp = (bi >>  4) & 3;
+        var st = (bi >>  6) & 3;
+        var aa = (bi >>  8) & 3;
+        var pa = (bi >> 10) & 3;
+        var pb = (bi >> 12) & 3;
+        var xr = (bi >> 14) & 3;
+        var pp = (bi >> 16) & 3;
+
+        var attribs = {};
+        if (al != 3)
+            attribs.alpha = al !== 0;
+        if (de != 3)
+            attribs.desynchronized = de !== 0;
+        if (dp != 3)
+            attribs.depth = dp !== 0;
+        if (st != 3)
+            attribs.stencil = st !== 0;
+        if (aa != 3)
+            attribs.antialias = aa !== 0;
+        if (pa != 3)
+            attribs.premultipliedAlpha = pa !== 0;
+        if (pb != 3)
+            attribs.preserveDrawingBuffer = pb !== 0;
+        if (xr != 3)
+            attribs.xrCompatible = xr !== 0;
+        if (pp != 3)
+            attribs.PowerPreference = (pp === 1) ? 'high-performance'
+                                    : (pp === 2) ? 'low-power'
+                                    : 'default'
+                                    ;
+
+        var glx = c.getContext("webgl", attribs);
+        return nkJSObject.RegisterObject(glx);
+    },
+    CreateWebGL2Context: function (uid)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var glx = c.getContext("webgl2");
+        if (glx == null)
+            return 0;
+        return nkJSObject.RegisterObject(glx);
+    },
+    CreateWebGL2Context1: function (uid, d)
+    {
+        var c = nkJSObject.GetObject(uid);
+        var bi = Blazor.platform.readInt32Field(d, 0);
+
+        var al = (bi >>  0) & 3;
+        var de = (bi >>  2) & 3;
+        var dp = (bi >>  4) & 3;
+        var st = (bi >>  6) & 3;
+        var aa = (bi >>  8) & 3;
+        var pa = (bi >> 10) & 3;
+        var pb = (bi >> 12) & 3;
+        var xr = (bi >> 14) & 3;
+        var pp = (bi >> 16) & 3;
+
+        var attribs = {};
+        if (al != 3)
+            attribs.alpha = al !== 0;
+        if (de != 3)
+            attribs.desynchronized = de !== 0;
+        if (dp != 3)
+            attribs.depth = dp !== 0;
+        if (st != 3)
+            attribs.stencil = st !== 0;
+        if (aa != 3)
+            attribs.antialias = aa !== 0;
+        if (pa != 3)
+            attribs.premultipliedAlpha = pa !== 0;
+        if (pb != 3)
+            attribs.preserveDrawingBuffer = pb !== 0;
+        if (xr != 3)
+            attribs.xrCompatible = xr !== 0;
+        if (pp != 3)
+            attribs.PowerPreference = (pp === 1) ? 'high-performance'
+                                    : (pp === 2) ? 'low-power'
+                                    : 'default'
+                                    ;
+
+        var glx = c.getContext("webgl2", attribs);
+        if (glx == null)
+            return 0;
+        return nkJSObject.RegisterObject(glx);
+    },
+};

+ 479 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Canvas/js/Canvas2dContext.8.0.2.js

@@ -0,0 +1,479 @@
+window.nkCanvas2dContext =
+{
+    GetFillStyle: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.fillStyle);
+    },
+    SetFillStyle: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.fillStyle = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetStrokeStyle: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.strokeStyle);
+    },
+    SetStrokeStyle: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.strokeStyle = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetFont: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.font);
+    },
+    SetFont: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.font = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetTextAlign: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.textAlign);
+    },
+    SetTextAlign: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.textAlign = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetTextBaseline: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.textBaseline);
+    },
+    SetTextBaseline: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.textBaseline = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetLineWidth: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.lineWidth.toString());
+    },
+    SetLineWidth: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.lineWidth = Blazor.platform.readFloatField(d, 0);
+    },
+
+    GetLineCap: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.lineCap);
+    },
+    SetLineCap: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.lineCap = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetMiterLimit: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.miterLimit.toString());
+    },
+    SetMiterLimit: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.miterLimit = Blazor.platform.readFloatField(d, 0);
+    },
+
+    GetGlobalAlpha: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.globalAlpha.toString());
+    },
+    SetGlobalAlpha: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.globalAlpha = Blazor.platform.readFloatField(d, 0);
+    },
+
+    GetGlobalCompositeOperation: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.globalCompositeOperation);
+    },
+    SetGlobalCompositeOperation: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.globalCompositeOperation = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetImageSmoothingEnabled: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return dc.imageSmoothingEnabled;
+    },
+    SetImageSmoothingEnabled: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var s = Blazor.platform.readInt32Field(d, 0);
+        dc.imageSmoothingEnabled = s !== 0;
+    },
+
+    GetShadowBlur: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.shadowBlur.toString());
+    },
+    SetShadowBlur: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.shadowBlur = Blazor.platform.readFloatField(d, 0);
+    },
+
+    GetShadowColor: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.shadowColor);
+    },
+    SetShadowColor: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.shadowColor = Blazor.platform.readStringField(d, 0);
+    },
+
+    GetShadowOffsetX: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.shadowOffsetX.toString());
+    },
+    SetShadowOffsetX: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.shadowOffsetX = Blazor.platform.readFloatField(d, 0);
+    },
+
+    GetShadowOffsetY: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.shadowOffsetY.toString());
+    },
+    SetShadowOffsetY: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.shadowOffsetY = Blazor.platform.readFloatField(d, 0);
+    },
+
+    ClearRect: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d,  0);
+        var y = Blazor.platform.readFloatField(d,  4);
+        var w = Blazor.platform.readFloatField(d,  8);
+        var h = Blazor.platform.readFloatField(d, 12);
+        dc.clearRect(x, y, w, h);
+    },
+    FillRect: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d,  0);
+        var y = Blazor.platform.readFloatField(d,  4);
+        var w = Blazor.platform.readFloatField(d,  8);
+        var h = Blazor.platform.readFloatField(d, 12);
+        dc.fillRect(x, y, w, h);
+    },
+    StrokeRect: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d,  0);
+        var y = Blazor.platform.readFloatField(d,  4);
+        var w = Blazor.platform.readFloatField(d,  8);
+        var h = Blazor.platform.readFloatField(d, 12);
+        dc.strokeRect(x, y, w, h);
+    },
+
+    DrawImage: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var id = Blazor.platform.readStringField(d, 0);
+        var dx = Blazor.platform.readFloatField(d,  4);
+        var dy = Blazor.platform.readFloatField(d,  8);
+        var img = document.getElementById(id);
+        dc.drawImage(img, dx, dy);
+    },
+
+    DrawImage1: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var id = Blazor.platform.readStringField(d, 0);
+        var dx = Blazor.platform.readFloatField(d,  4);
+        var dy = Blazor.platform.readFloatField(d,  8);
+        var dw = Blazor.platform.readFloatField(d, 12);
+        var dh = Blazor.platform.readFloatField(d, 16);
+        var img = document.getElementById(id);
+        dc.drawImage(img, dx, dy, dw, dh);
+    },
+
+    DrawImage2: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var id = Blazor.platform.readStringField(d, 0);
+        var sx = Blazor.platform.readFloatField(d,  4);
+        var sy = Blazor.platform.readFloatField(d,  8);
+        var sw = Blazor.platform.readFloatField(d, 12);
+        var sh = Blazor.platform.readFloatField(d, 16);
+        var dx = Blazor.platform.readFloatField(d, 20);
+        var dy = Blazor.platform.readFloatField(d, 24);
+        var dw = Blazor.platform.readFloatField(d, 28);
+        var dh = Blazor.platform.readFloatField(d, 32);
+        var img = document.getElementById(id);
+        dc.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh);
+    },
+
+    FillText: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var t = Blazor.platform.readStringField(d, 0);
+        var x = Blazor.platform.readFloatField(d,  4);
+        var y = Blazor.platform.readFloatField(d,  8);
+        dc.fillText(t, x, y);
+    },
+    FillText1: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var t = Blazor.platform.readStringField(d, 0);
+        var x = Blazor.platform.readFloatField(d,  4);
+        var y = Blazor.platform.readFloatField(d,  8);
+        var w = Blazor.platform.readFloatField(d, 12);
+        dc.fillText(t, x, y, w);
+    },
+    StrokeText: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var t = Blazor.platform.readStringField(d, 0);
+        var x = Blazor.platform.readFloatField(d,  4);
+        var y = Blazor.platform.readFloatField(d,  8);
+        dc.strokeText(t, x, y);
+    },
+    StrokeText1: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var t = Blazor.platform.readStringField(d, 0);
+        var x = Blazor.platform.readFloatField(d,  4);
+        var y = Blazor.platform.readFloatField(d,  8);
+        var w = Blazor.platform.readFloatField(d, 12);
+        dc.strokeText(t, x, y, w);
+    },
+    MeasureText: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var t = Blazor.platform.readStringField(d, 0);
+        var m = dc.measureText(t);
+        return BINDING.js_to_mono_obj(m.width.toString());
+    },
+
+    GetLineDash: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var ds = dc.getLineDash();
+        return BINDING.js_to_mono_obj(ds.toString());
+    },
+    SetLineDash: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var a = Blazor.platform.readObject(d, 0);
+        var cnt = Blazor.platform.getArrayLength(a);
+        var ja = [];
+        for (var ind = 0; ind < cnt; ind++)
+        {
+            var pai = Blazor.platform.getArrayEntryPtr(a, ind, 4);
+            var aiv = Blazor.platform.readFloatField(pai, 0);
+            ja.push(aiv);
+        }
+        dc.setLineDash(ja);
+    },
+
+    BeginPath: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.beginPath();
+    },
+    ClosePath: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.closePath();
+    },
+
+    IsPointInPath: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d, 0);
+        var y = Blazor.platform.readFloatField(d, 4);
+        var e = Blazor.platform.readInt32Field(d, 8);
+        return dc.isPointInPath(x, y, e === 0 ? "nonzero" : "evenodd");
+    },
+    IsPointInStroke: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d, 0);
+        var y = Blazor.platform.readFloatField(d, 4);
+        return dc.isPointInStroke(x, y);
+    },
+
+    MoveTo: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d, 0);
+        var y = Blazor.platform.readFloatField(d, 4);
+        dc.moveTo(x, y);
+    },
+    LineTo: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d, 0);
+        var y = Blazor.platform.readFloatField(d, 4);
+        dc.lineTo(x, y);
+    },
+    BezierCurveTo: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var cp1X = Blazor.platform.readFloatField(d,  0);
+        var cp1Y = Blazor.platform.readFloatField(d,  4);
+        var cp2X = Blazor.platform.readFloatField(d,  8);
+        var cp2Y = Blazor.platform.readFloatField(d, 12);
+        var x    = Blazor.platform.readFloatField(d, 16);
+        var y    = Blazor.platform.readFloatField(d, 20);
+        dc.bezierCurveTo(cp1X, cp1Y, cp2X, cp2Y, x, y);
+    },
+    QuadraticCurveTo: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var cpX = Blazor.platform.readFloatField(d,0);
+        var cpY = Blazor.platform.readFloatField(d,4);
+        var x = Blazor.platform.readFloatField(d,  8);
+        var y = Blazor.platform.readFloatField(d, 12);
+        dc.quadraticCurveTo(cpX, cpY, x, y);
+    },
+    Arc: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d,  0);
+        var y = Blazor.platform.readFloatField(d,  4);
+        var r = Blazor.platform.readFloatField(d,  8);
+        var s = Blazor.platform.readFloatField(d, 12);
+        var e = Blazor.platform.readFloatField(d, 16);
+        var a = Blazor.platform.readInt32Field(d, 20);
+        dc.arc(x, y, r, s, e, a !== 0);
+    },
+    ArcTo: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x1 = Blazor.platform.readFloatField(d,  0);
+        var y1 = Blazor.platform.readFloatField(d,  4);
+        var x2 = Blazor.platform.readFloatField(d,  8);
+        var y2 = Blazor.platform.readFloatField(d, 12);
+        var r  = Blazor.platform.readFloatField(d, 16);
+        dc.arcTo(x1, y1, x2, y2, r);
+    },
+    Rect: function (uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d,  0);
+        var y = Blazor.platform.readFloatField(d,  4);
+        var w = Blazor.platform.readFloatField(d,  8);
+        var h = Blazor.platform.readFloatField(d, 12);
+        dc.rect(x, y, w, h);
+    },
+    Ellipse: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x  = Blazor.platform.readFloatField(d,  0);
+        var y  = Blazor.platform.readFloatField(d,  4);
+        var rx = Blazor.platform.readFloatField(d,  8);
+        var ry = Blazor.platform.readFloatField(d, 12);
+        var ro = Blazor.platform.readFloatField(d, 16);
+        var s  = Blazor.platform.readFloatField(d, 20);
+        var e  = Blazor.platform.readFloatField(d, 24);
+        var a  = Blazor.platform.readInt32Field(d, 28);
+        dc.ellipse(x, y, rx, ry, ro, s, e, a !== 0);
+    },
+
+    Fill: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.fill();
+    },
+    Stroke: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.stroke();
+    },
+    Clip: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.clip();
+    },
+
+    Rotate: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.rotate(Blazor.platform.readFloatField(d, 0));
+    },
+    Scale: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d, 0);
+        var y = Blazor.platform.readFloatField(d, 4);
+        dc.scale(x, y);
+    },
+    Translate: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readFloatField(d, 0);
+        var y = Blazor.platform.readFloatField(d, 4);
+        dc.translate(x, y);
+    },
+    Transform: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var m11 = Blazor.platform.readFloatField(d,  0);
+        var m12 = Blazor.platform.readFloatField(d,  4);
+        var m21 = Blazor.platform.readFloatField(d,  8);
+        var m22 = Blazor.platform.readFloatField(d, 12);
+        var dx  = Blazor.platform.readFloatField(d, 16);
+        var dy  = Blazor.platform.readFloatField(d, 20);
+        dc.transform(m11, m12, m21, m22, dx, dy);
+    },
+    SetTransform: function(uid,d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var m11 = Blazor.platform.readFloatField(d,  0);
+        var m12 = Blazor.platform.readFloatField(d,  4);
+        var m21 = Blazor.platform.readFloatField(d,  8);
+        var m22 = Blazor.platform.readFloatField(d, 12);
+        var dx  = Blazor.platform.readFloatField(d, 16);
+        var dy  = Blazor.platform.readFloatField(d, 20);
+        dc.setTransform(m11, m12, m21, m22, dx, dy);
+    },
+    GetTransform: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var mx = dc.getTransform();
+        var mxf32arr = mx.toFloat32Array();
+        var mxf32str = mxf32arr.toString();
+        return BINDING.js_to_mono_obj(mxf32str);
+    },
+
+    Save: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.save();
+    },
+    Restore: function(uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        dc.restore();
+    }
+};

+ 1088 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Canvas/js/CanvasGLContext.8.0.2.js

@@ -0,0 +1,1088 @@
+window.nkCanvasGLContext =
+{
+    Enable: function (uid, d)
+    {
+        var gc  = nkJSObject.GetObject(uid);
+        var cp = Blazor.platform.readInt32Field(d, 0);
+        gc.enable(cp);
+    },
+
+    Disable: function (uid, d)
+    {
+        var gc  = nkJSObject.GetObject(uid);
+        var cp = Blazor.platform.readInt32Field(d, 0);
+        gc.disable(cp);
+    },
+
+    BlendEquationSeparate: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var cr = Blazor.platform.readInt32Field(d, 0);
+        var aa = Blazor.platform.readInt32Field(d, 4);
+        gc.blendEquationSeparate(cr, aa);
+    },
+
+    BlendFuncSeparate: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var sc = Blazor.platform.readInt32Field(d, 0);
+        var dc = Blazor.platform.readInt32Field(d, 4);
+        var sa = Blazor.platform.readInt32Field(d, 8);
+        var da = Blazor.platform.readInt32Field(d, 12);
+        gc.blendFuncSeparate(sc, dc, sa, da);
+    },
+
+    BlendColor: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var r = Blazor.platform.readFloatField(d,  0);
+        var g = Blazor.platform.readFloatField(d,  4);
+        var b = Blazor.platform.readFloatField(d,  8);
+        var a = Blazor.platform.readFloatField(d, 12);
+        gc.blendColor(r, g, b, a);
+    },
+
+    ColorMask: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var r = Blazor.platform.readInt32Field(d,  0) !== 0;
+        var g = Blazor.platform.readInt32Field(d,  4) !== 0;
+        var b = Blazor.platform.readInt32Field(d,  8) !== 0;
+        var a = Blazor.platform.readInt32Field(d, 12) !== 0;
+        gc.colorMask(r, g, b, a);
+    },
+
+    CullFace: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var cm = Blazor.platform.readInt32Field(d, 0);
+        gc.cullFace(cm);
+    },
+
+    FrontFace: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var wd = Blazor.platform.readInt32Field(d, 0);
+        gc.frontFace(wd);
+    },
+
+    PolygonOffset: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var fr = Blazor.platform.readFloatField(d, 0);
+        var us = Blazor.platform.readFloatField(d, 4);
+        gc.polygonOffset(fr, us);
+    },
+
+    DepthMask: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var en = Blazor.platform.readInt32Field(d, 0) !== 0;
+        gc.depthMask(en);
+    },
+
+    StencilMask: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ms = Blazor.platform.readInt32Field(d, 0);
+        gc.stencilMask(ms);
+    },
+
+    DepthFunc: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var fc = Blazor.platform.readInt32Field(d, 0);
+        gc.depthFunc(fc);
+    },
+
+    StencilFunc: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var fc = Blazor.platform.readInt32Field(d, 0);
+        var rf = Blazor.platform.readInt32Field(d, 4);
+        var mk = Blazor.platform.readInt32Field(d, 8);
+
+        gc.stencilFunc(fc, rf, mk);
+    },
+
+    StencilOp: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var fl = Blazor.platform.readInt32Field(d, 0);
+        var zf = Blazor.platform.readInt32Field(d, 4);
+        var zp = Blazor.platform.readInt32Field(d, 8);
+
+        gc.stencilOp(fl, zf, zp);
+    },
+
+    Viewport: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readInt32Field(d, 0);
+        var y = Blazor.platform.readInt32Field(d, 4);
+        var w = Blazor.platform.readInt32Field(d, 8);
+        var h = Blazor.platform.readInt32Field(d, 12);
+        gc.viewport(x, y, w, h);
+    },
+    
+    DepthRange: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var zn = Blazor.platform.readFloatField(d, 0);
+        var zf = Blazor.platform.readFloatField(d, 4);
+        gc.depthRange(zn, zf);
+    },
+
+    Scissor: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readInt32Field(d, 0);
+        var y = Blazor.platform.readInt32Field(d, 4);
+        var w = Blazor.platform.readInt32Field(d, 8);
+        var h = Blazor.platform.readInt32Field(d, 12);
+        gc.scissor(x, y, w, h);
+    },
+
+    ClearColor: function(uid,d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var r = Blazor.platform.readFloatField(d,  0);
+        var g = Blazor.platform.readFloatField(d,  4);
+        var b = Blazor.platform.readFloatField(d,  8);
+        var a = Blazor.platform.readFloatField(d, 12);
+        gc.clearColor(r, g, b, a);
+    },
+    ClearDepth: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var d = Blazor.platform.readFloatField(d, 0);
+        gc.clearDepth(d);
+    },
+    ClearStencil: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var s = Blazor.platform.readInt32Field(d, 0);
+        gc.clearStencil(s);
+    },
+    Clear: function(uid,d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bb = Blazor.platform.readInt32Field(d,  0);
+        gc.clear(bb);
+    },
+
+    CreateTexture: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tx = gc.createTexture();
+        return nkJSObject.RegisterObject(tx);
+    },
+
+    DeleteTexture: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var txuid = Blazor.platform.readInt32Field(d, 0);
+        var tx = nkJSObject.GetObject(txuid);
+        gc.deleteTexture(tx);
+    },
+
+    CreateShader: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var st = Blazor.platform.readInt32Field(d, 0);
+        var sh = gc.createShader(st);
+        return nkJSObject.RegisterObject(sh);
+    },
+
+    DeleteShader: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bfuid = Blazor.platform.readInt32Field(d, 0);
+        var bf = nkJSObject.GetObject(bfuid);
+        gc.deleteShader(bf);
+    },
+
+    CreateProgram: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pg = gc.createProgram();
+        return nkJSObject.RegisterObject(pg);
+    },
+
+    DeleteProgram: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var pg = nkJSObject.GetObject(pguid);
+        gc.deleteProgram(pg);
+    },
+
+    CreateBuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bf = gc.createBuffer();
+        return nkJSObject.RegisterObject(bf);
+    },
+
+    DeleteBuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bfuid = Blazor.platform.readInt32Field(d, 0);
+        var bf = nkJSObject.GetObject(bfuid);
+        gc.deleteBuffer(bf);
+    },
+
+    CreateFramebuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bf = gc.createFramebuffer();
+        return nkJSObject.RegisterObject(bf);
+    },
+
+    DeleteFramebuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bfuid = Blazor.platform.readInt32Field(d, 0);
+        var bf = nkJSObject.GetObject(bfuid);
+        gc.deleteFramebuffer(bf);
+    },
+    
+    CreateRenderbuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bf = gc.createRenderbuffer();
+        return nkJSObject.RegisterObject(bf);
+    },
+
+    DeleteRenderbuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bfuid = Blazor.platform.readInt32Field(d, 0);
+        var bf = nkJSObject.GetObject(bfuid);
+        gc.deleteRenderbuffer(bf);
+    },
+
+    ShaderSource: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var shuid = Blazor.platform.readInt32Field(d, 0);
+        var sr = Blazor.platform.readStringField(d, 4);
+
+        var sh = nkJSObject.GetObject(shuid);
+        gc.shaderSource(sh, sr);
+    },
+
+    GetAttribLocation: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var nm = Blazor.platform.readStringField(d, 4);
+
+        var pg = nkJSObject.GetObject(pguid);
+        return gc.getAttribLocation(pg, nm);
+    },
+
+    GetUniformLocation: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var nm = Blazor.platform.readStringField(d, 4);
+
+        var pg = nkJSObject.GetObject(pguid);
+        var ul = gc.getUniformLocation(pg, nm);
+        return nkJSObject.RegisterObject(ul);
+    },
+
+    Uniform1i: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readInt32Field(d,  4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform1i(ul, v0);
+    },
+
+    Uniform2i: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readInt32Field(d,  4);
+        var v1 = Blazor.platform.readInt32Field(d,  8);
+        
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform2i(ul, v0, v1);
+    },
+
+    Uniform3i: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readInt32Field(d,  4);
+        var v1 = Blazor.platform.readInt32Field(d,  8);
+        var v2 = Blazor.platform.readInt32Field(d, 12);
+        
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform3i(ul, v0, v1, v2);
+    },
+
+    Uniform4i: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readInt32Field(d,  4);
+        var v1 = Blazor.platform.readInt32Field(d,  8);
+        var v2 = Blazor.platform.readInt32Field(d, 12);
+        var v3 = Blazor.platform.readInt32Field(d, 16);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform4i(ul, v0, v1, v2, v3);
+    },
+
+    Uniform1f: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readFloatField(d,  4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform1f(ul, v0);
+    },
+
+    Uniform2f: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readFloatField(d,  4);
+        var v1 = Blazor.platform.readFloatField(d,  8);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform2f(ul, v0, v1);
+    },
+
+    Uniform3f: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readFloatField(d,  4);
+        var v1 = Blazor.platform.readFloatField(d,  8);
+        var v2 = Blazor.platform.readFloatField(d, 12);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform3f(ul, v0, v1, v2);
+    },
+
+    Uniform4f: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var v0 = Blazor.platform.readFloatField(d,  4);
+        var v1 = Blazor.platform.readFloatField(d,  8);
+        var v2 = Blazor.platform.readFloatField(d, 12);
+        var v3 = Blazor.platform.readFloatField(d, 16);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform4f(ul, v0, v1, v2, v3);
+    },
+
+    Uniform1iv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Int32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform1iv(ul, dt);
+    },
+    Uniform2iv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Int32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform2iv(ul, dt);
+    },
+    Uniform3iv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Int32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform3iv(ul, dt);
+    },
+    Uniform4iv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Int32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform4iv(ul, dt);
+    },
+
+    Uniform1fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform1fv(ul, dt);
+    },
+    Uniform2fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform2fv(ul, dt);
+    },
+    Uniform3fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform3fv(ul, dt);
+    },
+    Uniform4fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st    = Blazor.platform.readInt32Field(d, 4);
+        var arr   = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniform4fv(ul, dt);
+    },
+
+    UniformMatrix2fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st = Blazor.platform.readInt32Field(d, 4);
+        var arr = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniformMatrix2fv(ul, dt);
+    },
+    UniformMatrix3fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st = Blazor.platform.readInt32Field(d, 4);
+        var arr = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniformMatrix3fv(ul, dt);
+    },
+    UniformMatrix4fv: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var uluid = Blazor.platform.readInt32Field(d, 0);
+        var st = Blazor.platform.readInt32Field(d, 4);
+        var arr = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st / 4);
+
+        var ul = nkJSObject.GetObject(uluid);
+        gc.uniformMatrix4fv(ul, dt);
+    },
+    
+    CompileShader: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var shuid = Blazor.platform.readInt32Field(d, 0);
+        var sh = nkJSObject.GetObject(shuid);
+        gc.compileShader(sh);
+    },
+
+    GetShaderParameter: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var shuid = Blazor.platform.readInt32Field(d, 0);
+        var pn = Blazor.platform.readInt32Field(d, 4);
+
+        var sh = nkJSObject.GetObject(shuid);
+        return gc.getShaderParameter(sh, pn);
+    },
+
+    GetProgramParameter: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var pn = Blazor.platform.readInt32Field(d, 4);
+
+        var pg = nkJSObject.GetObject(pguid);
+        return gc.getProgramParameter(pg, pn);
+    },
+
+    TexImage2D: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d,  0);
+        var lv = Blazor.platform.readInt32Field(d,  4);
+        var it = Blazor.platform.readInt32Field(d,  8);
+        var wh = Blazor.platform.readInt32Field(d, 12);
+        var ht = Blazor.platform.readInt32Field(d, 16);
+        var ft = Blazor.platform.readInt32Field(d, 20);
+        var tp = Blazor.platform.readInt32Field(d, 24);
+
+        gc.texImage2D(tg, lv, it, wh, ht, 0, ft, tp, null);
+    },
+
+    TexImage2D1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        var lv = Blazor.platform.readInt32Field(d, 4);
+        var it = Blazor.platform.readInt32Field(d, 8);
+        var wh = Blazor.platform.readInt32Field(d, 12);
+        var ht = Blazor.platform.readInt32Field(d, 16);
+        var ft = Blazor.platform.readInt32Field(d, 20);
+        var tp = Blazor.platform.readInt32Field(d, 24);
+        var st = Blazor.platform.readInt32Field(d, 28);
+        var arr = Blazor.platform.readInt32Field(d, 32);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.texImage2D(tg, lv, it, wh, ht, 0, ft, tp, dt);
+    },
+
+    TexImage2D2: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        var lv = Blazor.platform.readInt32Field(d, 4);
+        var it = Blazor.platform.readInt32Field(d, 8);
+        var ft = Blazor.platform.readInt32Field(d, 12);
+        var tp = Blazor.platform.readInt32Field(d, 16);
+
+        var vid= Blazor.platform.readInt32Field(d, 20);
+        var vi = nkJSObject.GetObject(vid);
+
+        gc.texImage2D(tg, lv, it, ft, tp, vi);
+    },
+
+    TexSubImage2D1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d,  0);
+        var lv = Blazor.platform.readInt32Field(d,  4);
+        var xo = Blazor.platform.readInt32Field(d,  8);
+        var yo = Blazor.platform.readInt32Field(d, 12);
+        var wh = Blazor.platform.readInt32Field(d, 16);
+        var ht = Blazor.platform.readInt32Field(d, 20);
+        var ft = Blazor.platform.readInt32Field(d, 24);
+        var tp = Blazor.platform.readInt32Field(d, 28);
+        var st = Blazor.platform.readInt32Field(d, 32);
+        var arr = Blazor.platform.readInt32Field(d,36);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.texSubImage2D(tg, lv, xo, yo, wh, ht, ft, tp, dt);
+    },
+  
+    CompressedTexImage2D: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        var lv = Blazor.platform.readInt32Field(d, 4);
+        var it = Blazor.platform.readInt32Field(d, 8);
+        var wh = Blazor.platform.readInt32Field(d, 12);
+        var ht = Blazor.platform.readInt32Field(d, 16);
+        var st = Blazor.platform.readInt32Field(d, 20);
+        var arr = Blazor.platform.readInt32Field(d, 24);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.compressedTexImage2D(tg, lv, it, wh, ht, 0, dt);
+    },
+
+    CompressedTexImage2D1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        var lv = Blazor.platform.readInt32Field(d, 4);
+        var it = Blazor.platform.readInt32Field(d, 8);
+        var wh = Blazor.platform.readInt32Field(d, 12);
+        var ht = Blazor.platform.readInt32Field(d, 16);
+        var st = Blazor.platform.readInt32Field(d, 20);
+        var arr = Blazor.platform.readInt32Field(d, 24);
+        var ix = Blazor.platform.readInt32Field(d, 28);
+        var ot = Blazor.platform.readInt32Field(d, 32);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        //var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr + ix * st, ot * st);
+
+        gc.compressedTexImage2D(tg, lv, it, wh, ht, 0, dt);
+    },
+
+    ReadPixels: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var x  = Blazor.platform.readInt32Field(d,  0);
+        var y  = Blazor.platform.readInt32Field(d,  4);
+        var w  = Blazor.platform.readInt32Field(d,  8);
+        var h  = Blazor.platform.readInt32Field(d, 12);
+        var ft = Blazor.platform.readInt32Field(d, 16);
+        var tp = Blazor.platform.readInt32Field(d, 20);
+        var st = Blazor.platform.readInt32Field(d, 24);
+        var arr = Blazor.platform.readInt32Field(d, 28);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.readPixels(x, y, w, h, ft, tp, dt);
+    },
+
+    ReadPixels1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var x = Blazor.platform.readInt32Field(d, 0);
+        var y = Blazor.platform.readInt32Field(d, 4);
+        var w = Blazor.platform.readInt32Field(d, 8);
+        var h = Blazor.platform.readInt32Field(d, 12);
+        var ft = Blazor.platform.readInt32Field(d, 16);
+        var tp = Blazor.platform.readInt32Field(d, 20);
+        var st = Blazor.platform.readInt32Field(d, 24);
+        var arr = Blazor.platform.readInt32Field(d, 28);
+        var ix = Blazor.platform.readInt32Field(d, 32);
+        var ot = Blazor.platform.readInt32Field(d, 36);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        //var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr + ix * st, ot * st);
+
+        gc.readPixels(x, y, w, h, ft, tp, dt);
+    },
+
+    TexParameteri: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        var pn = Blazor.platform.readInt32Field(d, 4);
+        var pm = Blazor.platform.readInt32Field(d, 8);
+        gc.texParameteri(tg, pn, pm);
+    },
+
+    PixelStorei: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pn = Blazor.platform.readInt32Field(d, 0);
+        var pm = Blazor.platform.readInt32Field(d, 4);
+        gc.pixelStorei(pn, pm);
+    },
+
+    BindTexture: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        var txuid = Blazor.platform.readInt32Field(d, 4);
+        var tx = (txuid != -1) ? nkJSObject.GetObject(txuid) : null;
+        gc.bindTexture(tg, tx);
+    },
+
+    BindBuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var bfuid = Blazor.platform.readInt32Field(d, 4);
+        var bf = nkJSObject.GetObject(bfuid);
+        gc.bindBuffer(bt, bf);
+    },
+    
+    BindFramebuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var bfuid = Blazor.platform.readInt32Field(d, 4);
+        var bf = (bfuid != -1) ? nkJSObject.GetObject(bfuid) : null;
+        gc.bindFramebuffer(bt, bf);
+    },
+
+    BindRenderbuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var bfuid = Blazor.platform.readInt32Field(d, 4);
+        var bf = nkJSObject.GetObject(bfuid);
+        gc.bindRenderbuffer(bt, bf);
+    },
+ 
+    FramebufferRenderbuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ft = Blazor.platform.readInt32Field(d, 0);
+        var ap = Blazor.platform.readInt32Field(d, 4);
+        var rt = Blazor.platform.readInt32Field(d, 8);
+        var rbuid = Blazor.platform.readInt32Field(d, 12);
+        var rb =  (rbuid != -1) ? nkJSObject.GetObject(rbuid) : null;
+        gc.framebufferRenderbuffer(ft, ap, rt, rb);
+    },
+ 
+    FramebufferTexture2D: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ft = Blazor.platform.readInt32Field(d, 0);
+        var ap = Blazor.platform.readInt32Field(d, 4);
+        var tt = Blazor.platform.readInt32Field(d, 8);
+        var tbuid = Blazor.platform.readInt32Field(d, 12);
+        var tb = nkJSObject.GetObject(tbuid);
+        var lv = 0;
+        gc.framebufferTexture2D(ft, ap, tt, tb, lv);
+    },
+
+    RenderbufferStorage: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d,  0);
+        var fm = Blazor.platform.readInt32Field(d,  4);
+        var w  = Blazor.platform.readInt32Field(d,  8);
+        var h  = Blazor.platform.readInt32Field(d, 12);
+        gc.renderbufferStorage(bt, fm, w, h);
+    },
+
+    CheckFramebufferStatus: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ft = Blazor.platform.readInt32Field(d, 0);
+        return gc.checkFramebufferStatus(ft);
+    },
+
+    GenerateMipmap: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tg = Blazor.platform.readInt32Field(d, 0);
+        gc.generateMipmap(tg);
+    },
+
+    AttachShader: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var shuid = Blazor.platform.readInt32Field(d, 4);
+        var pg = nkJSObject.GetObject(pguid);
+        var sh = nkJSObject.GetObject(shuid);
+        gc.attachShader(pg, sh);
+    },
+
+    GetProgramInfoLog: function (uid, d)
+    {        
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var pg = nkJSObject.GetObject(pguid);
+        var nf = gc.getProgramInfoLog(pg);
+        return BINDING.js_to_mono_obj(nf);
+    },
+
+    GetShaderInfoLog: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var shuid = Blazor.platform.readInt32Field(d, 0);
+        var sh = nkJSObject.GetObject(shuid);
+        var nf = gc.getShaderInfoLog(sh);
+        return BINDING.js_to_mono_obj(nf);
+    },
+
+    LinkProgram: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var pg = nkJSObject.GetObject(pguid);
+        gc.linkProgram(pg);
+    },
+
+    BufferData: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var sz = Blazor.platform.readInt32Field(d, 4);
+        var us = Blazor.platform.readInt32Field(d, 8);
+        gc.bufferData(bt, sz, us);
+    },
+
+    BufferData1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var us = Blazor.platform.readInt32Field(d, 4);
+        var st = Blazor.platform.readInt32Field(d, 8);
+        var arr = Blazor.platform.readInt32Field(d, 12);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Float32Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.bufferData(bt, dt, us);
+    },
+
+    BufferSubData: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var of = Blazor.platform.readInt32Field(d, 4);
+        var ln = Blazor.platform.readInt32Field(d, 8);
+        var st = Blazor.platform.readInt32Field(d, 12);
+        var arr = Blazor.platform.readInt32Field(d, 16);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        //var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, ln * st);
+
+        gc.bufferSubData(bt, of, dt);
+    },
+
+    BufferSubData1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var of = Blazor.platform.readInt32Field(d, 4);
+        var si = Blazor.platform.readInt32Field(d, 8);
+        var ln = Blazor.platform.readInt32Field(d, 12);
+        var st = Blazor.platform.readInt32Field(d, 16);
+        var arr = Blazor.platform.readInt32Field(d, 20);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        //var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr + si * st, ln * st);
+
+        gc.bufferSubData(bt, of, dt);
+    },
+
+    VertexAttribPointer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ix = Blazor.platform.readInt32Field(d, 0);
+        var sz = Blazor.platform.readInt32Field(d, 4);
+        var tp = Blazor.platform.readInt32Field(d, 8);
+        var nr = Blazor.platform.readInt32Field(d, 12) !== 0;
+        var st = Blazor.platform.readInt32Field(d, 16);
+        var of = Blazor.platform.readInt32Field(d, 20);
+        gc.vertexAttribPointer(ix, sz, tp, nr, st, of);
+    },
+
+    EnableVertexAttribArray: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ix = Blazor.platform.readInt32Field(d, 0);
+        gc.enableVertexAttribArray(ix);
+    },
+
+    DisableVertexAttribArray: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ix = Blazor.platform.readInt32Field(d, 0);
+        gc.disableVertexAttribArray(ix);
+    },
+
+    UseProgram: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var pguid = Blazor.platform.readInt32Field(d, 0);
+        var pg = nkJSObject.GetObject(pguid);
+        gc.useProgram(pg);
+    },
+
+    DrawArrays: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var md = Blazor.platform.readInt32Field(d,  0);
+        var of = Blazor.platform.readInt32Field(d,  4);
+        var ct = Blazor.platform.readInt32Field(d,  8);
+
+        gc.drawArrays(md, of, ct);
+    },
+
+    DrawElements: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var md = Blazor.platform.readInt32Field(d,  0);
+        var ct = Blazor.platform.readInt32Field(d,  4);
+        var tp = Blazor.platform.readInt32Field(d,  8);
+        var of = Blazor.platform.readInt32Field(d, 12);
+
+        gc.drawElements(md, ct, tp, of);
+    },
+
+    ActiveTexture: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var tu = Blazor.platform.readInt32Field(d, 0);
+        
+        gc.activeTexture(tu);
+    },
+
+    Flush: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        gc.flush();
+    },
+    Finish: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        gc.finish();
+    },
+
+    GetExtension: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var nm = Blazor.platform.readStringField(d, 0);
+
+        return gc.getExtension(nm) !== null;
+    },
+
+    GetError: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        return gc.getError();
+    },
+
+};
+
+window.nkCanvasGL2Context =
+{
+    DrawBuffer: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var ap = Blazor.platform.readInt32Field(d, 0);
+
+        gc.drawBuffers([ap]);
+
+    },
+    DrawBuffers: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var si = Blazor.platform.readInt32Field(d, 0);
+        var ln = Blazor.platform.readInt32Field(d, 4);
+        var arr = Blazor.platform.readInt32Field(d, 8);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+
+        //debugger;
+        var db = new Uint32Array(Module.HEAPU8.buffer, arrPtr, ln);
+        var ar = Array.prototype.slice.call(db);
+
+        gc.drawBuffers(ar);
+
+    },
+    DrawRangeElements: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var md = Blazor.platform.readInt32Field(d, 0);
+        var st = Blazor.platform.readInt32Field(d, 4);
+        var en = Blazor.platform.readInt32Field(d, 8);
+        var ct = Blazor.platform.readInt32Field(d, 12);
+        var tp = Blazor.platform.readInt32Field(d, 16);
+        var of = Blazor.platform.readInt32Field(d, 20);
+
+        gc.drawRangeElements(md, st, en, ct, tp, of);
+    },
+    GetBufferSubData: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var of = Blazor.platform.readInt32Field(d, 4);
+        var st = Blazor.platform.readInt32Field(d, 8);
+        var arr = Blazor.platform.readInt32Field(d, 12);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.getBufferSubData(bt, of, dt);
+    },
+    GetBufferSubData1: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var of = Blazor.platform.readInt32Field(d, 4);
+        var si = Blazor.platform.readInt32Field(d, 8);
+        var st = Blazor.platform.readInt32Field(d, 12);
+        var arr = Blazor.platform.readInt32Field(d, 16);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.getBufferSubData(bt, of, dt, si*st);
+    },
+    GetBufferSubData2: function (uid, d)
+    {
+        var gc = nkJSObject.GetObject(uid);
+        var bt = Blazor.platform.readInt32Field(d, 0);
+        var of = Blazor.platform.readInt32Field(d, 4);
+        var si = Blazor.platform.readInt32Field(d, 8);
+        var ln = Blazor.platform.readInt32Field(d, 12);
+        var st = Blazor.platform.readInt32Field(d, 16);
+        var arr = Blazor.platform.readInt32Field(d, 20);
+
+        var arrPtr = Blazor.platform.getArrayEntryPtr(arr, 0, 4);
+        var arrLen = Blazor.platform.getArrayLength(arr);
+        var dt = new Uint8Array(Module.HEAPU8.buffer, arrPtr, arrLen * st);
+
+        gc.getBufferSubData(bt, of, dt, si*st, ln*st);
+    },
+};

+ 26 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Document.8.0.2.js

@@ -0,0 +1,26 @@
+window.nkDocument =
+{
+    GetTitle: function (uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(dc.title);
+    },
+    SetTitle: function (uid, d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var tl = Blazor.platform.readStringField(d, 0);
+        dc.title = tl;
+    },
+    GetElementById: function (uid, d)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        var id = Blazor.platform.readStringField(d, 0);
+        var el = dc.getElementById(id);
+        return nkJSObject.RegisterObject(el);
+    },
+    HasFocus: function (uid)
+    {
+        var dc = nkJSObject.GetObject(uid);
+        return dc.hasFocus();
+    }
+};

+ 120 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Gamepad.8.0.2.js

@@ -0,0 +1,120 @@
+window.nkGamepad =
+{
+    GetVibrationActuator: function(uid)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        var ha = gp.vibrationActuator;
+
+        var uid = nkJSObject.objectMap.indexOf(ha);
+        if (uid !== -1)
+            return (uid+1);
+
+        return nkJSObject.RegisterObject(ha);
+    },
+    GetId: function (uid)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(gp.id);
+    },
+    GetIndex: function (uid, d)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        return gp.index;
+    },
+    GetConnected: function (uid, d)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        return gp.connected;
+    },
+    GetMapping: function (uid, d)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(gp.mapping);
+    },
+    GetTimestamp: function (uid, d)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        return Math.floor(gp.timestamp*1000);
+    },
+    GetButtons: function (uid, d)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        var buttons = gp.buttons;
+        var btns = [];
+        for (var i = 0; i < buttons.length; i++)
+        {
+            btns[i*3+0] = buttons[i].value;
+            btns[i*3+1] = (buttons[i].pressed) ? 1 : 0;
+            if (buttons[i].touched2 == undefined)
+                btns[i*3+2] = 0;
+            else
+                btns[i*3+2] = (buttons[i].touched) ? 1 : 0;
+        }
+        var str = btns.toString();
+
+        return BINDING.js_to_mono_obj(str);
+    },
+    GetAxes: function (uid, d)
+    {
+        var gp = nkJSObject.GetObject(uid);
+        var axes = gp.axes;
+        var str = axes.toString();
+
+        return BINDING.js_to_mono_obj(str);
+    }
+};
+
+window.nkGamepadHapticActuator =
+{
+    PlayEffect: function (uid, d)
+    {
+        var ha = nkJSObject.GetObject(uid);
+        var sd = Blazor.platform.readFloatField(d, 0);
+        var du = Blazor.platform.readFloatField(d, 4);
+        var sm = Blazor.platform.readFloatField(d, 8);
+        var wm = Blazor.platform.readFloatField(d,12);
+        var lt = Blazor.platform.readFloatField(d,16);
+        var rt = Blazor.platform.readFloatField(d,20);
+
+        if ('playEffect' in ha)
+        {
+            ha.playEffect("dual-rumble",
+            {
+                startDelay: sd,
+                duration: du,
+                strongMagnitude: sm,
+                weakMagnitude: wm,
+                leftTrigger: lt,
+                rightTrigger: rt
+            });
+            return true;
+        }
+        return false;
+    },
+    Pulse: function (uid, d)
+    {
+        var ha = nkJSObject.GetObject(uid);
+        var va = Blazor.platform.readFloatField(d, 0);
+        var du = Blazor.platform.readFloatField(d, 4);
+
+        if ('pulse' in ha)
+        {
+            ha.pulse(va, du);
+            return true;
+        }
+        return false;
+    },
+    Reset: function (uid, d)
+    {
+        var ha = nkJSObject.GetObject(uid);
+
+        if ('reset' in ha)
+        {
+            ha.reset();
+            return true;
+        }
+        return false;
+    },
+};
+
+

+ 42 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/JSObject.8.0.2.js

@@ -0,0 +1,42 @@
+window.nkJSObject =
+{
+    objectMap: [],
+    emptySlots: [],
+    RegisterObject: function(obj)
+    {
+        if (obj == null)
+            return -1;
+        if (nkJSObject.objectMap.indexOf(obj) != -1)
+            throw "object already registered";
+
+        if (nkJSObject.emptySlots.length == 0)
+        {
+            nkJSObject.objectMap.push(obj);
+            var uid = nkJSObject.objectMap.lastIndexOf(obj);
+            uid++;
+            return uid;
+        }
+        else
+        {
+            var uid = nkJSObject.emptySlots.pop();
+            nkJSObject.objectMap[uid] = obj;
+            uid++;
+            return uid;
+        }
+    },
+    GetObject: function(uid)
+    {
+        uid--;
+        return nkJSObject.objectMap[uid];
+    },
+    DisposeObject: function(uid)
+    {
+        uid--;
+        delete nkJSObject.objectMap[uid];
+        nkJSObject.emptySlots.push(uid);
+    },
+    GetWindow: function()
+    {
+        return nkJSObject.RegisterObject(window);
+    }
+}

+ 127 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Media.8.0.2.js

@@ -0,0 +1,127 @@
+window.nkMedia =
+{
+    GetCurrentSrc: function (uid)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(me.currentSrc);
+    },
+    
+    GetEnded: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return me.ended;
+    },
+    
+    GetPaused: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return me.paused;
+    },
+
+    GetSrc: function (uid)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(me.src);
+    },
+    SetSrc: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        var sr = Blazor.platform.readStringField(d, 0);
+        me.src = sr;
+    },
+    
+    GetMuted: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return me.muted;
+    },
+    SetMuted: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        var mu = Blazor.platform.readInt32Field(d, 0);
+        me.muted = mu !== 0;
+    },
+    
+    GetLoop: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return me.loop;
+    },
+    SetLoop: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        var lo = Blazor.platform.readInt32Field(d, 0);
+        me.loop = lo !== 0;
+    },
+    
+    GetVolume: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        return me.volume;
+    },
+    SetVolume: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        var vo = Blazor.platform.readFloatField(d, 0);
+        me.volume = vo;
+    },
+    
+    Load: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        me.load();
+    },
+    Play: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+        var pm = me.play();
+    },
+    Pause: function (uid, d)
+    {
+        var me = nkJSObject.GetObject(uid);
+         me.pause();
+        return;
+    },
+    
+    RegisterEvents: function (uid)
+    {
+        var bs = nkJSObject.GetObject(uid);
+
+        bs.onended = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsMediaOnEnded', uid);
+        };
+        bs.onplaying = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsMediaOnPlaying', uid);
+        };
+        bs.ontimeupdate = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsMediaOnOnTimeUpdate', uid);
+        };
+    },
+    UnregisterEvents: function (uid)
+    {
+        var me = nkJSObject.GetObject(uid);
+        me.onended = null;
+    }
+};
+
+window.nkAudio =
+{
+    Create: function (uid)
+    {
+        var au = new Audio();
+        return nkJSObject.RegisterObject(au);
+    }
+};
+
+window.nkVideo =
+{
+    Create: function (uid)
+    {
+        var vi = document.createElement("video");
+        return nkJSObject.RegisterObject(vi);
+    }
+};
+

+ 42 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Navigator.8.0.2.js

@@ -0,0 +1,42 @@
+window.nkNavigator =
+{
+    gamepadMap: [],
+
+    GetUserAgent: function (uid)
+    {
+        var nv = nkJSObject.GetObject(uid);
+        return BINDING.js_to_mono_obj(nv.userAgent);
+    },
+    GetMaxTouchPoints: function (uid)
+    {
+        var nv = nkJSObject.GetObject(uid);
+        return nv.maxTouchPoints;
+    },
+    GetGamepads: function(uid)
+    {
+        var nv = nkJSObject.GetObject(uid);
+        var gps = nv.getGamepads();
+        var uids = [];
+        for (var i = 0; i < gps.length; i++)
+        {
+            var gp = gps[i];
+            if (gp === null || gp === undefined)
+            {
+                nkNavigator.gamepadMap[i] = 0;
+                uids[i] = 0;
+            }
+            else
+            {
+                var prevgp = null;
+                if (nkNavigator.gamepadMap[i] !== 0 && nkNavigator.gamepadMap[i] !== undefined)
+                    prevgp = nkJSObject.GetObject(nkNavigator.gamepadMap[i]);
+
+                if (gp !== prevgp)
+                    nkNavigator.gamepadMap[i] = nkJSObject.RegisterObject(gp);
+
+                uids[i] = nkNavigator.gamepadMap[i];
+            }
+        }
+        return BINDING.js_to_mono_obj(uids.toString());
+    }
+};

+ 127 - 0
docs/wasm/Deferred/_content/nkast.Wasm.Dom/js/Window.8.0.2.js

@@ -0,0 +1,127 @@
+window.nkWindow =
+{
+    GetDocument: function(uid)
+    {
+        var w = nkJSObject.GetObject(uid);
+        var d = w.document;
+        return nkJSObject.RegisterObject(d);
+    },
+    GetNavigator: function(uid)
+    {
+        var w = nkJSObject.GetObject(uid);
+        var n = w.navigator;
+        return nkJSObject.RegisterObject(n);
+    },
+    GetInnerWidth: function(uid)
+    {
+        var w = nkJSObject.GetObject(uid);
+        return w.innerWidth;
+    },
+    GetInnerHeight: function(uid)
+    {
+        var w = nkJSObject.GetObject(uid);
+        return w.innerHeight;
+    },
+    GetIsSecureContext: function (uid)
+    {
+        var w = nkJSObject.GetObject(uid);
+        return w.isSecureContext;
+    },
+    RegisterEvents: function(uid)
+    {
+        var w = nkJSObject.GetObject(uid);
+
+        window.onresize = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnResize', uid);
+        };
+        window.onfocus = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnFocus', uid);
+        };
+        window.onblur = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnBlur', uid);
+        };
+        window.onmousemove = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnMouseMove', uid,
+                event.clientX, event.clientY);
+        };
+        window.onmousedown = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnMouseDown', uid,
+                event.clientX, event.clientY, event.buttons);
+        };
+        window.onmouseup = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnMouseUp', uid,
+                event.clientX, event.clientY, event.buttons);
+        };
+        window.onmousewheel = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnMouseWheel', uid,
+                event.deltaX, event.deltaY, event.deltaZ,  event.deltaMode);
+        };
+        window.onkeydown = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnKeyDown', uid,
+                event.key.charCodeAt(0), event.keyCode, event.location);
+        };
+        window.onkeyup = function(event)
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnKeyUp', uid,
+                event.key.charCodeAt(0), event.keyCode, event.location);
+        };
+
+        window.addEventListener('touchstart', (event) =>
+        {
+            event.preventDefault();
+            for (var i = 0; i < event.changedTouches.length; i++)
+            {
+                var touch = event.changedTouches[i];
+                DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnTouchStart', uid,
+                    touch.clientX, touch.clientY, touch.identifier);
+            }
+        });
+
+        window.addEventListener('touchmove', (event) =>
+        {
+            event.preventDefault();
+            for (var i = 0; i < event.changedTouches.length; i++)
+            {
+                var touch = event.changedTouches[i];
+                DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnTouchMove', uid,
+                    touch.clientX, touch.clientY, touch.identifier);
+            }
+        });
+
+        window.addEventListener('touchend', (event) =>
+        {
+            event.preventDefault();
+            for (var i = 0; i < event.changedTouches.length; i++)
+            {
+                var touch = event.changedTouches[i];
+                DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnTouchEnd', uid,
+                    touch.clientX, touch.clientY, touch.identifier);
+            }
+        });
+
+        window.addEventListener('touchcancel', (event) =>
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowOnTouchCancel', uid);
+        });
+
+        window.addEventListener("gamepadconnected", (event) =>
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowGamepadConnected', uid,
+                event.gamepad.index);
+        });
+        window.addEventListener("gamepaddisconnected", (event) =>
+        {
+            DotNet.invokeMethod('nkast.Wasm.Dom', 'JsWindowGamepadDisconnected', uid,
+                event.gamepad.index);
+        });
+        
+    }
+};

+ 40 - 0
docs/wasm/Deferred/_content/nkast.Wasm.XHR/js/XHR.8.0.2.js

@@ -0,0 +1,40 @@
+window.nkXHR =
+{
+    Create: function()
+    {
+        var xhr = new XMLHttpRequest();
+        return nkJSObject.RegisterObject(xhr);
+    },
+
+    Open: function(uid,d)
+    {
+        var xhr = nkJSObject.GetObject(uid);
+        var md = Blazor.platform.readStringField(d, 0);
+        var ul = Blazor.platform.readStringField(d, 4);
+        var ac = Blazor.platform.readInt32Field(d, 8) !== 0;
+        xhr.open(md,ul,ac);
+    },
+    OverrideMimeType: function(uid,d)
+    {
+        var xhr = nkJSObject.GetObject(uid);
+        var mt = Blazor.platform.readStringField(d, 0);
+        xhr.overrideMimeType(mt);
+    },
+    Send: function (uid, d)
+    {
+        var xhr = nkJSObject.GetObject(uid);
+        xhr.send(null);
+    },
+    GetStatus: function(uid,d)
+    {
+        var xhr = nkJSObject.GetObject(uid);
+        var status = xhr.status;
+        return status;
+    },
+    GetResponseText: function(uid,d)
+    {
+        var xhr = nkJSObject.GetObject(uid);
+        var responseText = xhr.responseText;
+        return BINDING.js_to_mono_obj(responseText);
+    },
+};

BIN
docs/wasm/Deferred/_framework/Aether.Shaders.Deferred.wasm.br


BIN
docs/wasm/Deferred/_framework/Deferred.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.AspNetCore.Components.Web.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.AspNetCore.Components.WebAssembly.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.AspNetCore.Components.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Configuration.Abstractions.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Configuration.Json.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Configuration.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.DependencyInjection.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Logging.Abstractions.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Logging.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Options.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.Extensions.Primitives.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.JSInterop.WebAssembly.wasm.br


BIN
docs/wasm/Deferred/_framework/Microsoft.JSInterop.wasm.br


BIN
docs/wasm/Deferred/_framework/MonoGame.Framework.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Collections.Concurrent.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Collections.wasm.br


BIN
docs/wasm/Deferred/_framework/System.ComponentModel.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Console.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Linq.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Memory.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Net.Http.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Net.Primitives.wasm.br


BIN
docs/wasm/Deferred/_framework/System.ObjectModel.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Private.CoreLib.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Private.Uri.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Runtime.InteropServices.JavaScript.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Runtime.Serialization.Primitives.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Runtime.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Text.Encodings.Web.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Text.Json.wasm.br


BIN
docs/wasm/Deferred/_framework/System.Text.RegularExpressions.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.Audio.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.Content.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.Game.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.Graphics.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.Input.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.Media.wasm.br


BIN
docs/wasm/Deferred/_framework/Xna.Framework.wasm.br


BIN
docs/wasm/Deferred/_framework/blazor.boot.json.br


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
docs/wasm/Deferred/_framework/blazor.webassembly.js


Файловите разлики са ограничени, защото са твърде много
+ 2 - 0
docs/wasm/Deferred/_framework/dotnet.js


Файловите разлики са ограничени, защото са твърде много
+ 7 - 0
docs/wasm/Deferred/_framework/dotnet.native.8.0.8.capfi8u5vj.js


BIN
docs/wasm/Deferred/_framework/dotnet.native.wasm.br


Файловите разлики са ограничени, защото са твърде много
+ 2 - 0
docs/wasm/Deferred/_framework/dotnet.runtime.8.0.8.80cvijctdx.js


BIN
docs/wasm/Deferred/_framework/netstandard.wasm.br


BIN
docs/wasm/Deferred/_framework/nkast.Wasm.Audio.wasm.br


BIN
docs/wasm/Deferred/_framework/nkast.Wasm.Canvas.wasm.br


BIN
docs/wasm/Deferred/_framework/nkast.Wasm.Dom.wasm.br


BIN
docs/wasm/Deferred/_framework/nkast.Wasm.XHR.wasm.br


+ 94 - 0
docs/wasm/Deferred/css/app.css

@@ -0,0 +1,94 @@
+
+html, body
+{
+    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+h1:focus
+{
+    outline: none;
+}
+
+a, .btn-link
+{
+    color: #0077cc;
+}
+
+.btn-primary
+{
+    color: #fff;
+    background-color: #1b6ec2;
+    border-color: #1861ac;
+}
+
+.content
+{
+    padding-top: 1.1rem;
+}
+
+.valid.modified:not([type=checkbox])
+{
+    outline: 1px solid #26b050;
+}
+
+.invalid
+{
+    outline: 1px solid red;
+}
+
+.validation-message
+{
+    color: red;
+}
+
+#blazor-error-ui
+{
+    background: lightyellow;
+    bottom: 0;
+    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
+    display: none;
+    left: 0;
+    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
+    position: fixed;
+    width: 100%;
+    z-index: 1000;
+}
+
+    #blazor-error-ui .dismiss
+    {
+        cursor: pointer;
+        position: absolute;
+        right: 0.75rem;
+        top: 0.5rem;
+    }
+
+.blazor-error-boundary
+{
+    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
+    padding: 1rem 1rem 1rem 3.7rem;
+    color: white;
+}
+
+    .blazor-error-boundary::after
+    {
+        content: "An error has occurred."
+    }
+
+#theCanvas 
+{
+    position: fixed;
+    top: 0px;
+    right: 0px;
+    bottom: 0px;
+    left: 0px;
+}
+
+
+#canvas 
+{
+    position: fixed;
+    top: 0px;
+    right: 0px;
+    bottom: 0px;
+    left: 0px;
+}

Файловите разлики са ограничени, защото са твърде много
+ 5 - 0
docs/wasm/Deferred/css/bootstrap/bootstrap.min.css


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
docs/wasm/Deferred/css/bootstrap/bootstrap.min.css.map


BIN
docs/wasm/Deferred/favicon.ico


+ 117 - 0
docs/wasm/Deferred/index.html

@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <title>Deferred</title>
+    <base href="./" />
+    <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
+    <link href="css/app.css" rel="stylesheet" />
+    <link href="Deferred.styles.css" rel="stylesheet" />
+    <link rel="icon" type="image/x-icon" href="favicon.ico">
+    
+    <meta name="twitter:card" content="summary_large_image">
+    <meta name="twitter:title" content="Deferred Sample">
+    <meta name="twitter:image" content="https://nkast.github.io/Aether.Extras/wasm/Deferred/screenshot.png">
+</head>
+
+<body>
+
+    <div id="app">
+        <div id="loading" style="display: table-cell; margin: auto; width:100vw; height:100vh; vertical-align: middle; background: #ffcc10;">
+            <div style="display: block; margin: auto; width: 9em; color: white;font-family: 'Segoe UI', sans-serif;">
+                <div style="text-align: center; font-size: 0.85em;">Made with<br/><a href="https://github.com/kniEngine/kni"><img src="kni.png" border="0" alt="Kni"></a></div>
+                <div style="text-align: center; font-size: 1.8em;">loading&nbsp;<marquee style="width:0.9em; vertical-align: bottom;">.&nbsp;.&nbsp;.&nbsp;&nbsp;&nbsp;</marquee></div>
+            </div>
+        </div>
+    </div>
+
+    <div id="blazor-error-ui">
+        An unhandled error has occurred.
+        <a href="" class="reload">Reload</a>
+        <a class="dismiss">x</a>
+    </div>
+
+    <script src="_framework/blazor.webassembly.js" autostart="false"></script>
+    <script type="module">
+        import { BrotliDecode } from './js/decode.min.js';
+        // Set this to enable Brotli (.br) decompression on static webServers
+        // that don't support content compression and http://.
+        var enableBrotliDecompression = true;
+        Blazor.start({
+            loadBootResource: function (type, name, defaultUri, integrity)
+            {
+                if (enableBrotliDecompression === true && type !== 'dotnetjs' && location.hostname !== 'localhost')
+                {
+                    return (async function()
+                    {
+                        const response = await fetch(defaultUri + '.br', { cache: 'no-cache' });
+                        if (!response.ok)
+                            throw new Error(response.statusText);
+                        const originalResponseBuffer = await response.arrayBuffer();
+                        const originalResponseArray = new Int8Array(originalResponseBuffer);
+                        const contentType = (type === 'dotnetwasm')
+                                          ? 'application/wasm'
+                                          : 'application/octet-stream';
+                        const decompressedResponseArray = BrotliDecode(originalResponseArray);
+                        return new Response(decompressedResponseArray,
+                                            { headers: { 'content-type': contentType }
+                                   });
+                    })();
+                }
+            }
+        });
+    </script>
+
+    <script src="_content/nkast.Wasm.Dom/js/JSObject.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Dom/js/Window.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Dom/js/Document.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Dom/js/Navigator.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Dom/js/Gamepad.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Dom/js/Media.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.XHR/js/XHR.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Canvas/js/Canvas.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Canvas/js/CanvasGLContext.8.0.2.js"></script>
+    <script src="_content/nkast.Wasm.Audio/js/Audio.8.0.2.js"></script>
+
+    <script>
+        function tickJS()
+        {
+            window.theInstance.invokeMethod('TickDotNet');
+            window.requestAnimationFrame(tickJS);
+        }
+
+        window.initRenderJS = (instance) =>
+        {
+            window.theInstance = instance;
+
+            // set initial canvas size
+            var canvas = document.getElementById('theCanvas');
+            var holder = document.getElementById('canvasHolder');
+            canvas.width = holder.clientWidth;
+            canvas.height = holder.clientHeight;
+            // disable context menu on right click
+            canvas.addEventListener("contextmenu", e => e.preventDefault());
+            
+            // begin game loop
+            window.requestAnimationFrame(tickJS);
+        };
+
+        window.onkeydown = function(event)
+        {
+            // Prevent Arrows Keys and Spacebar scrolling the outer page
+            // when running inside an iframe. e.g: itch.io embedding.
+            if ([32, 37, 38, 39, 40].indexOf(event.keyCode) > -1)
+                event.preventDefault();
+        };
+        window.onmousewheel = function(event)
+        {
+            // Prevent Mousewheel scrolling the outer page
+            // when running inside an iframe. e.g: itch.io embedding.
+            event.preventDefault();
+        };
+    </script>
+</body>
+
+</html>

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
docs/wasm/Deferred/js/decode.min.js


BIN
docs/wasm/Deferred/kni.png


BIN
docs/wasm/Deferred/screenshot.png


Някои файлове не бяха показани, защото твърде много файлове са промени