@supraio/client-daemon-js 0.0.1 → 1.0.0-master.501

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5462,7 +5462,7 @@ $packages["internal/race"] = (function() {
5462
5462
  return $pkg;
5463
5463
  })();
5464
5464
  $packages["sync/atomic"] = (function() {
5465
- var $pkg = {}, $init, js, Value, ptrType$5, CompareAndSwapInt32, CompareAndSwapUint32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, LoadInt32, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreUint32, StoreUint64, StorePointer, sameType;
5465
+ var $pkg = {}, $init, js, Value, Bool, Int64, noCopy, align64, ptrType, ptrType$2, ptrType$5, ptrType$6, ptrType$8, ptrType$12, b32, SwapInt64, SwapUint32, CompareAndSwapInt32, CompareAndSwapInt64, CompareAndSwapUint32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, AddInt64, LoadInt32, LoadInt64, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreInt64, StoreUint32, StoreUint64, StorePointer, sameType;
5466
5466
  js = $packages["github.com/gopherjs/gopherjs/js"];
5467
5467
  Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) {
5468
5468
  this.$val = this;
@@ -5472,7 +5472,137 @@ $packages["sync/atomic"] = (function() {
5472
5472
  }
5473
5473
  this.v = v_;
5474
5474
  });
5475
+ Bool = $pkg.Bool = $newType(0, $kindStruct, "atomic.Bool", true, "sync/atomic", true, function(_$0_, v_) {
5476
+ this.$val = this;
5477
+ if (arguments.length === 0) {
5478
+ this._$0 = new noCopy.ptr();
5479
+ this.v = 0;
5480
+ return;
5481
+ }
5482
+ this._$0 = _$0_;
5483
+ this.v = v_;
5484
+ });
5485
+ Int64 = $pkg.Int64 = $newType(0, $kindStruct, "atomic.Int64", true, "sync/atomic", true, function(_$0_, _$1_, v_) {
5486
+ this.$val = this;
5487
+ if (arguments.length === 0) {
5488
+ this._$0 = new noCopy.ptr();
5489
+ this._$1 = new align64.ptr();
5490
+ this.v = new $Int64(0, 0);
5491
+ return;
5492
+ }
5493
+ this._$0 = _$0_;
5494
+ this._$1 = _$1_;
5495
+ this.v = v_;
5496
+ });
5497
+ noCopy = $pkg.noCopy = $newType(0, $kindStruct, "atomic.noCopy", true, "sync/atomic", false, function() {
5498
+ this.$val = this;
5499
+ if (arguments.length === 0) {
5500
+ return;
5501
+ }
5502
+ });
5503
+ align64 = $pkg.align64 = $newType(0, $kindStruct, "atomic.align64", true, "sync/atomic", false, function() {
5504
+ this.$val = this;
5505
+ if (arguments.length === 0) {
5506
+ return;
5507
+ }
5508
+ });
5509
+ ptrType = $ptrType($Uint32);
5510
+ ptrType$2 = $ptrType($Int64);
5475
5511
  ptrType$5 = $ptrType(Value);
5512
+ ptrType$6 = $ptrType(Bool);
5513
+ ptrType$8 = $ptrType(Int64);
5514
+ ptrType$12 = $ptrType(noCopy);
5515
+ Bool.ptr.prototype.Load = function() {
5516
+ var x;
5517
+ x = this;
5518
+ return !((LoadUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))) === 0));
5519
+ };
5520
+ Bool.prototype.Load = function() { return this.$val.Load(); };
5521
+ Bool.ptr.prototype.Store = function(val) {
5522
+ var val, x;
5523
+ x = this;
5524
+ StoreUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(val));
5525
+ };
5526
+ Bool.prototype.Store = function(val) { return this.$val.Store(val); };
5527
+ Bool.ptr.prototype.Swap = function(new$1) {
5528
+ var new$1, old, x;
5529
+ old = false;
5530
+ x = this;
5531
+ old = !((SwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(new$1)) === 0));
5532
+ return old;
5533
+ };
5534
+ Bool.prototype.Swap = function(new$1) { return this.$val.Swap(new$1); };
5535
+ Bool.ptr.prototype.CompareAndSwap = function(old, new$1) {
5536
+ var new$1, old, swapped, x;
5537
+ swapped = false;
5538
+ x = this;
5539
+ swapped = CompareAndSwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(old), b32(new$1));
5540
+ return swapped;
5541
+ };
5542
+ Bool.prototype.CompareAndSwap = function(old, new$1) { return this.$val.CompareAndSwap(old, new$1); };
5543
+ b32 = function(b) {
5544
+ var b;
5545
+ if (b) {
5546
+ return 1;
5547
+ }
5548
+ return 0;
5549
+ };
5550
+ Int64.ptr.prototype.Load = function() {
5551
+ var x;
5552
+ x = this;
5553
+ return LoadInt64((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))));
5554
+ };
5555
+ Int64.prototype.Load = function() { return this.$val.Load(); };
5556
+ Int64.ptr.prototype.Store = function(val) {
5557
+ var val, x;
5558
+ x = this;
5559
+ StoreInt64((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), val);
5560
+ };
5561
+ Int64.prototype.Store = function(val) { return this.$val.Store(val); };
5562
+ Int64.ptr.prototype.Swap = function(new$1) {
5563
+ var new$1, old, x;
5564
+ old = new $Int64(0, 0);
5565
+ x = this;
5566
+ old = SwapInt64((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), new$1);
5567
+ return old;
5568
+ };
5569
+ Int64.prototype.Swap = function(new$1) { return this.$val.Swap(new$1); };
5570
+ Int64.ptr.prototype.CompareAndSwap = function(old, new$1) {
5571
+ var new$1, old, swapped, x;
5572
+ swapped = false;
5573
+ x = this;
5574
+ swapped = CompareAndSwapInt64((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), old, new$1);
5575
+ return swapped;
5576
+ };
5577
+ Int64.prototype.CompareAndSwap = function(old, new$1) { return this.$val.CompareAndSwap(old, new$1); };
5578
+ Int64.ptr.prototype.Add = function(delta) {
5579
+ var delta, new$1, x;
5580
+ new$1 = new $Int64(0, 0);
5581
+ x = this;
5582
+ new$1 = AddInt64((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), delta);
5583
+ return new$1;
5584
+ };
5585
+ Int64.prototype.Add = function(delta) { return this.$val.Add(delta); };
5586
+ noCopy.ptr.prototype.Lock = function() {
5587
+ };
5588
+ noCopy.prototype.Lock = function() { return this.$val.Lock(); };
5589
+ noCopy.ptr.prototype.Unlock = function() {
5590
+ };
5591
+ noCopy.prototype.Unlock = function() { return this.$val.Unlock(); };
5592
+ SwapInt64 = function(addr, new$1) {
5593
+ var addr, new$1, old;
5594
+ old = addr.$get();
5595
+ addr.$set(new$1);
5596
+ return old;
5597
+ };
5598
+ $pkg.SwapInt64 = SwapInt64;
5599
+ SwapUint32 = function(addr, new$1) {
5600
+ var addr, new$1, old;
5601
+ old = addr.$get();
5602
+ addr.$set(new$1);
5603
+ return old;
5604
+ };
5605
+ $pkg.SwapUint32 = SwapUint32;
5476
5606
  CompareAndSwapInt32 = function(addr, old, new$1) {
5477
5607
  var addr, new$1, old;
5478
5608
  if (addr.$get() === old) {
@@ -5482,6 +5612,15 @@ $packages["sync/atomic"] = (function() {
5482
5612
  return false;
5483
5613
  };
5484
5614
  $pkg.CompareAndSwapInt32 = CompareAndSwapInt32;
5615
+ CompareAndSwapInt64 = function(addr, old, new$1) {
5616
+ var addr, new$1, old, x;
5617
+ if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) {
5618
+ addr.$set(new$1);
5619
+ return true;
5620
+ }
5621
+ return false;
5622
+ };
5623
+ $pkg.CompareAndSwapInt64 = CompareAndSwapInt64;
5485
5624
  CompareAndSwapUint32 = function(addr, old, new$1) {
5486
5625
  var addr, new$1, old;
5487
5626
  if (addr.$get() === old) {
@@ -5516,11 +5655,23 @@ $packages["sync/atomic"] = (function() {
5516
5655
  return new$1;
5517
5656
  };
5518
5657
  $pkg.AddInt32 = AddInt32;
5658
+ AddInt64 = function(addr, delta) {
5659
+ var addr, delta, new$1, x;
5660
+ new$1 = (x = addr.$get(), new $Int64(x.$high + delta.$high, x.$low + delta.$low));
5661
+ addr.$set(new$1);
5662
+ return new$1;
5663
+ };
5664
+ $pkg.AddInt64 = AddInt64;
5519
5665
  LoadInt32 = function(addr) {
5520
5666
  var addr;
5521
5667
  return addr.$get();
5522
5668
  };
5523
5669
  $pkg.LoadInt32 = LoadInt32;
5670
+ LoadInt64 = function(addr) {
5671
+ var addr;
5672
+ return addr.$get();
5673
+ };
5674
+ $pkg.LoadInt64 = LoadInt64;
5524
5675
  LoadUint32 = function(addr) {
5525
5676
  var addr;
5526
5677
  return addr.$get();
@@ -5541,6 +5692,11 @@ $packages["sync/atomic"] = (function() {
5541
5692
  addr.$set(val);
5542
5693
  };
5543
5694
  $pkg.StoreInt32 = StoreInt32;
5695
+ StoreInt64 = function(addr, val) {
5696
+ var addr, val;
5697
+ addr.$set(val);
5698
+ };
5699
+ $pkg.StoreInt64 = StoreInt64;
5544
5700
  StoreUint32 = function(addr, val) {
5545
5701
  var addr, val;
5546
5702
  addr.$set(val);
@@ -5617,7 +5773,14 @@ $packages["sync/atomic"] = (function() {
5617
5773
  return x.constructor === y.constructor;
5618
5774
  };
5619
5775
  ptrType$5.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "checkNew", name: "checkNew", pkg: "sync/atomic", typ: $funcType([$String, $emptyInterface], [], false)}];
5776
+ ptrType$6.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Bool], [$Bool], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Bool, $Bool], [$Bool], false)}];
5777
+ ptrType$8.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Int64, $Int64], [$Bool], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int64], [$Int64], false)}];
5778
+ ptrType$12.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
5620
5779
  Value.init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]);
5780
+ Bool.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
5781
+ Int64.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "_$1", name: "_", embedded: false, exported: false, typ: align64, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Int64, tag: ""}]);
5782
+ noCopy.init("", []);
5783
+ align64.init("", []);
5621
5784
  $init = function() {
5622
5785
  $pkg.$init = function() {};
5623
5786
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -17749,7 +17912,7 @@ $packages["math/bits"] = (function() {
17749
17912
  return $pkg;
17750
17913
  })();
17751
17914
  $packages["math"] = (function() {
17752
- var $pkg = {}, $init, js, bits, arrayType, arrayType$1, arrayType$2, structType, math, _zero, posInf, negInf, nan, buf, log2, Exp, Frexp, Inf, IsInf, IsNaN, Log, Log2, NaN, init, Float32bits, Float32frombits, Float64bits, Float64frombits, frexp, Round, normalize, Abs;
17915
+ var $pkg = {}, $init, js, bits, arrayType, arrayType$1, arrayType$2, structType, math, _zero, posInf, negInf, nan, buf, log2, Exp, Frexp, Inf, IsInf, IsNaN, Log, Log2, NaN, init, Float32bits, Float32frombits, Float64bits, Float64frombits, frexp, normalize, Abs;
17753
17916
  js = $packages["github.com/gopherjs/gopherjs/js"];
17754
17917
  bits = $packages["math/bits"];
17755
17918
  arrayType = $arrayType($Uint32, 2);
@@ -17884,23 +18047,6 @@ $packages["math"] = (function() {
17884
18047
  frac = Float64frombits(x);
17885
18048
  return [frac, exp$1];
17886
18049
  };
17887
- Round = function(x) {
17888
- var bits$1, e, x, x$1, x$2, x$3, x$4;
17889
- bits$1 = Float64bits(x);
17890
- e = ((($shiftRightUint64(bits$1, 52).$low >>> 0)) & 2047) >>> 0;
17891
- if (e < 1023) {
17892
- bits$1 = (x$1 = new $Uint64(2147483648, 0), new $Uint64(bits$1.$high & x$1.$high, (bits$1.$low & x$1.$low) >>> 0));
17893
- if (e === 1022) {
17894
- bits$1 = (x$2 = new $Uint64(1072693248, 0), new $Uint64(bits$1.$high | x$2.$high, (bits$1.$low | x$2.$low) >>> 0));
17895
- }
17896
- } else if (e < 1075) {
17897
- e = e - (1023) >>> 0;
17898
- bits$1 = (x$3 = $shiftRightUint64(new $Uint64(524288, 0), e), new $Uint64(bits$1.$high + x$3.$high, bits$1.$low + x$3.$low));
17899
- bits$1 = (x$4 = $shiftRightUint64(new $Uint64(1048575, 4294967295), e), new $Uint64(bits$1.$high & ~x$4.$high, (bits$1.$low & ~x$4.$low) >>> 0));
17900
- }
17901
- return Float64frombits(bits$1);
17902
- };
17903
- $pkg.Round = Round;
17904
18050
  normalize = function(x) {
17905
18051
  var _tmp, _tmp$1, _tmp$2, _tmp$3, exp$1, x, y;
17906
18052
  y = 0;
@@ -48708,7 +48854,7 @@ $packages["github.com/supraio/client-daemon/pkg/helper"] = (function() {
48708
48854
  _r$4 = $recv(signalChannel[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
48709
48855
  sig = _r$4[0];
48710
48856
  $r = log.Printf("Signal %s received (emulated after 1 week).\n", new sliceType$1([sig])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
48711
- $s = -1; return;
48857
+ $s = -1; return sig;
48712
48858
  /* */ } return; } var $f = {$blk: WaitOnStopSignal, $c: true, $r, _r$4, sig, signalChannel, $s};return $f;
48713
48859
  };
48714
48860
  $pkg.WaitOnStopSignal = WaitOnStopSignal;
@@ -48746,9 +48892,6 @@ $packages["github.com/coder/websocket/internal/bpool"] = (function() {
48746
48892
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
48747
48893
  _r = bpool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
48748
48894
  b = _r;
48749
- if ($interfaceIsEqual(b, $ifaceNil)) {
48750
- $s = -1; return new bytes.Buffer.ptr(sliceType$1.nil, 0, 0);
48751
- }
48752
48895
  $s = -1; return $assertType(b, ptrType);
48753
48896
  /* */ } return; } var $f = {$blk: Get, $c: true, $r, _r, b, $s};return $f;
48754
48897
  };
@@ -48764,7 +48907,9 @@ $packages["github.com/coder/websocket/internal/bpool"] = (function() {
48764
48907
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
48765
48908
  $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
48766
48909
  $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
48767
- bpool = new sync.Pool.ptr(sliceType.nil, $throwNilPointerError);
48910
+ bpool = new sync.Pool.ptr(sliceType.nil, (function() {
48911
+ return new bytes.Buffer.ptr(sliceType$1.nil, 0, 0);
48912
+ }));
48768
48913
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
48769
48914
  };
48770
48915
  $pkg.$init = $init;
@@ -48996,6 +49141,21 @@ $packages["github.com/coder/websocket/internal/wsjs"] = (function() {
48996
49141
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: WebSocket.ptr.prototype.Close, $c: true, $r, $24r, _r, c, code, err, reason, $s, $deferred};return $f; } }
48997
49142
  };
48998
49143
  WebSocket.prototype.Close = function(code, reason) { return this.$val.Close(code, reason); };
49144
+ WebSocket.ptr.prototype.CloseNow = function() {
49145
+ var {$24r, _r, c, err, $s, $deferred, $r, $c} = $restore(this, {});
49146
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
49147
+ err = [err];
49148
+ err[0] = $ifaceNil;
49149
+ c = this;
49150
+ $deferred.push([handleJSError, [(err.$ptr || (err.$ptr = new ptrType(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err))), $throwNilPointerError]]);
49151
+ _r = $clone(c.v, js.Value).Call("close", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
49152
+ _r;
49153
+ err[0] = err[0];
49154
+ $24r = err[0];
49155
+ $s = 2; case 2: return $24r;
49156
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: WebSocket.ptr.prototype.CloseNow, $c: true, $r, $24r, _r, c, err, $s, $deferred};return $f; } }
49157
+ };
49158
+ WebSocket.prototype.CloseNow = function() { return this.$val.CloseNow(); };
48999
49159
  WebSocket.ptr.prototype.SendText = function(v) {
49000
49160
  var {$24r, _r, c, err, v, $s, $deferred, $r, $c} = $restore(this, {v});
49001
49161
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -49028,6 +49188,12 @@ $packages["github.com/coder/websocket/internal/wsjs"] = (function() {
49028
49188
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: WebSocket.ptr.prototype.SendBytes, $c: true, $r, $24r, _arg, _r, _r$1, c, err, v, x, $s, $deferred};return $f; } }
49029
49189
  };
49030
49190
  WebSocket.prototype.SendBytes = function(v) { return this.$val.SendBytes(v); };
49191
+ WebSocket.ptr.prototype.BufferedAmount = function() {
49192
+ var c;
49193
+ c = this;
49194
+ return (new $Uint64(0, $clone($clone(c.v, js.Value).Get("bufferedAmount"), js.Value).Int()));
49195
+ };
49196
+ WebSocket.prototype.BufferedAmount = function() { return this.$val.BufferedAmount(); };
49031
49197
  extractArrayBuffer = function(arrayBuffer) {
49032
49198
  var {_r, arrayBuffer, dst, uint8Array$1, $s, $r, $c} = $restore(this, {arrayBuffer});
49033
49199
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -49047,7 +49213,7 @@ $packages["github.com/coder/websocket/internal/wsjs"] = (function() {
49047
49213
  $s = -1; return uint8Array$1;
49048
49214
  /* */ } return; } var $f = {$blk: uint8Array, $c: true, $r, _r, src, uint8Array$1, $s};return $f;
49049
49215
  };
49050
- WebSocket.methods = [{prop: "setBinaryType", name: "setBinaryType", pkg: "github.com/coder/websocket/internal/wsjs", typ: $funcType([$String], [], false)}, {prop: "addEventListener", name: "addEventListener", pkg: "github.com/coder/websocket/internal/wsjs", typ: $funcType([$String, funcType$1], [funcType], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType$2], [funcType], false)}, {prop: "OnError", name: "OnError", pkg: "", typ: $funcType([funcType$1], [funcType], false)}, {prop: "OnMessage", name: "OnMessage", pkg: "", typ: $funcType([funcType$3], [funcType], false)}, {prop: "Subprotocol", name: "Subprotocol", pkg: "", typ: $funcType([], [$String], false)}, {prop: "OnOpen", name: "OnOpen", pkg: "", typ: $funcType([funcType$1], [funcType], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([$Int, $String], [$error], false)}, {prop: "SendText", name: "SendText", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "SendBytes", name: "SendBytes", pkg: "", typ: $funcType([sliceType$1], [$error], false)}];
49216
+ WebSocket.methods = [{prop: "setBinaryType", name: "setBinaryType", pkg: "github.com/coder/websocket/internal/wsjs", typ: $funcType([$String], [], false)}, {prop: "addEventListener", name: "addEventListener", pkg: "github.com/coder/websocket/internal/wsjs", typ: $funcType([$String, funcType$1], [funcType], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType$2], [funcType], false)}, {prop: "OnError", name: "OnError", pkg: "", typ: $funcType([funcType$1], [funcType], false)}, {prop: "OnMessage", name: "OnMessage", pkg: "", typ: $funcType([funcType$3], [funcType], false)}, {prop: "Subprotocol", name: "Subprotocol", pkg: "", typ: $funcType([], [$String], false)}, {prop: "OnOpen", name: "OnOpen", pkg: "", typ: $funcType([funcType$1], [funcType], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([$Int, $String], [$error], false)}, {prop: "CloseNow", name: "CloseNow", pkg: "", typ: $funcType([], [$error], false)}, {prop: "SendText", name: "SendText", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "SendBytes", name: "SendBytes", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "BufferedAmount", name: "BufferedAmount", pkg: "", typ: $funcType([], [$Uint64], false)}];
49051
49217
  WebSocket.init("github.com/coder/websocket/internal/wsjs", [{prop: "v", name: "v", embedded: false, exported: false, typ: js.Value, tag: ""}]);
49052
49218
  CloseEvent.init("", [{prop: "Code", name: "Code", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Reason", name: "Reason", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "WasClean", name: "WasClean", embedded: false, exported: true, typ: $Bool, tag: ""}]);
49053
49219
  MessageEvent.init("", [{prop: "Data", name: "Data", embedded: false, exported: true, typ: $emptyInterface, tag: ""}]);
@@ -49060,71 +49226,6 @@ $packages["github.com/coder/websocket/internal/wsjs"] = (function() {
49060
49226
  $pkg.$init = $init;
49061
49227
  return $pkg;
49062
49228
  })();
49063
- $packages["runtime/debug"] = (function() {
49064
- var $pkg = {}, $init, fmt, os, runtime, sort, strconv, strings, time;
49065
- fmt = $packages["fmt"];
49066
- os = $packages["os"];
49067
- runtime = $packages["runtime"];
49068
- sort = $packages["sort"];
49069
- strconv = $packages["strconv"];
49070
- strings = $packages["strings"];
49071
- time = $packages["time"];
49072
- $init = function() {
49073
- $pkg.$init = function() {};
49074
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
49075
- $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49076
- $r = os.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49077
- $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49078
- $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49079
- $r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49080
- $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49081
- $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49082
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
49083
- };
49084
- $pkg.$init = $init;
49085
- return $pkg;
49086
- })();
49087
- $packages["github.com/coder/websocket/internal/xsync"] = (function() {
49088
- var $pkg = {}, $init, fmt, debug, atomic, Int64, ptrType;
49089
- fmt = $packages["fmt"];
49090
- debug = $packages["runtime/debug"];
49091
- atomic = $packages["sync/atomic"];
49092
- Int64 = $pkg.Int64 = $newType(0, $kindStruct, "xsync.Int64", true, "github.com/coder/websocket/internal/xsync", true, function(i_) {
49093
- this.$val = this;
49094
- if (arguments.length === 0) {
49095
- this.i = new atomic.Value.ptr($ifaceNil);
49096
- return;
49097
- }
49098
- this.i = i_;
49099
- });
49100
- ptrType = $ptrType(Int64);
49101
- Int64.ptr.prototype.Load = function() {
49102
- var _tuple, i, v;
49103
- v = this;
49104
- _tuple = $assertType(v.i.Load(), $Int64, true);
49105
- i = _tuple[0];
49106
- return i;
49107
- };
49108
- Int64.prototype.Load = function() { return this.$val.Load(); };
49109
- Int64.ptr.prototype.Store = function(i) {
49110
- var i, v;
49111
- v = this;
49112
- v.i.Store(i);
49113
- };
49114
- Int64.prototype.Store = function(i) { return this.$val.Store(i); };
49115
- ptrType.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Int64], [], false)}];
49116
- Int64.init("github.com/coder/websocket/internal/xsync", [{prop: "i", name: "i", embedded: false, exported: false, typ: atomic.Value, tag: ""}]);
49117
- $init = function() {
49118
- $pkg.$init = function() {};
49119
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
49120
- $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49121
- $r = debug.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49122
- $r = atomic.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
49123
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
49124
- };
49125
- $pkg.$init = $init;
49126
- return $pkg;
49127
- })();
49128
49229
  $packages["internal/nettrace"] = (function() {
49129
49230
  var $pkg = {}, $init, TraceKey, LookupIPAltResolverKey, Trace, funcType, sliceType, funcType$1, funcType$2, funcType$3;
49130
49231
  TraceKey = $pkg.TraceKey = $newType(0, $kindStruct, "nettrace.TraceKey", true, "internal/nettrace", true, function() {
@@ -159887,7 +159988,7 @@ $packages["net/http"] = (function() {
159887
159988
  return $pkg;
159888
159989
  })();
159889
159990
  $packages["github.com/coder/websocket"] = (function() {
159890
- var $pkg = {}, $init, bytes, context, binary, errors, fmt, bpool, wsjs, xsync, io, math, bits, net, http, reflect, runtime, strconv, strings, sync, atomic, js, time, Conn, DialOptions, writer, StatusCode, CloseError, MessageType, noCopy, ptrType, sliceType, structType, funcType, sliceType$1, ptrType$3, ptrType$4, sliceType$2, funcType$1, arrayType, sliceType$3, ptrType$5, ptrType$6, ptrType$7, chanType, ptrType$9, ptrType$10, _MessageType_index, _StatusCode_index, Dial, dial;
159991
+ var $pkg = {}, $init, bytes, context, binary, errors, fmt, bpool, wsjs, io, math, bits, net, http, reflect, runtime, strconv, strings, sync, atomic, js, time, Conn, DialOptions, writer, StatusCode, CloseError, MessageType, noCopy, ptrType, sliceType, structType, funcType, sliceType$1, ptrType$3, ptrType$4, sliceType$2, funcType$1, arrayType, sliceType$3, ptrType$5, ptrType$6, ptrType$7, chanType, ptrType$8, ptrType$9, _MessageType_index, _StatusCode_index, Dial, dial;
159891
159992
  bytes = $packages["bytes"];
159892
159993
  context = $packages["context"];
159893
159994
  binary = $packages["encoding/binary"];
@@ -159895,7 +159996,6 @@ $packages["github.com/coder/websocket"] = (function() {
159895
159996
  fmt = $packages["fmt"];
159896
159997
  bpool = $packages["github.com/coder/websocket/internal/bpool"];
159897
159998
  wsjs = $packages["github.com/coder/websocket/internal/wsjs"];
159898
- xsync = $packages["github.com/coder/websocket/internal/xsync"];
159899
159999
  io = $packages["io"];
159900
160000
  math = $packages["math"];
159901
160001
  bits = $packages["math/bits"];
@@ -159909,12 +160009,12 @@ $packages["github.com/coder/websocket"] = (function() {
159909
160009
  atomic = $packages["sync/atomic"];
159910
160010
  js = $packages["syscall/js"];
159911
160011
  time = $packages["time"];
159912
- Conn = $pkg.Conn = $newType(0, $kindStruct, "websocket.Conn", true, "github.com/coder/websocket", true, function(noCopy_, ws_, msgReadLimit_, closeReadMu_, closeReadCtx_, closingMu_, closeOnce_, closed_, closeErrOnce_, closeErr_, closeWasClean_, releaseOnClose_, releaseOnError_, releaseOnMessage_, readSignal_, readBufMu_, readBuf_) {
160012
+ Conn = $pkg.Conn = $newType(0, $kindStruct, "websocket.Conn", true, "github.com/coder/websocket", true, function(noCopy_, ws_, msgReadLimit_, closeReadMu_, closeReadCtx_, closingMu_, closeOnce_, closed_, closeErrOnce_, closeErr_, closeWasClean_, releaseOnce_, releaseOnClose_, releaseOnError_, releaseOnMessage_, readSignal_, readBufMu_, readBuf_) {
159913
160013
  this.$val = this;
159914
160014
  if (arguments.length === 0) {
159915
160015
  this.noCopy = new noCopy.ptr();
159916
160016
  this.ws = new wsjs.WebSocket.ptr(new js.Value.ptr(null, false, arrayType.zero()));
159917
- this.msgReadLimit = new xsync.Int64.ptr(new atomic.Value.ptr($ifaceNil));
160017
+ this.msgReadLimit = new atomic.Int64.ptr(new atomic.noCopy.ptr(), new atomic.align64.ptr(), new $Int64(0, 0));
159918
160018
  this.closeReadMu = new sync.Mutex.ptr(0, 0);
159919
160019
  this.closeReadCtx = $ifaceNil;
159920
160020
  this.closingMu = new sync.Mutex.ptr(0, 0);
@@ -159923,6 +160023,7 @@ $packages["github.com/coder/websocket"] = (function() {
159923
160023
  this.closeErrOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
159924
160024
  this.closeErr = $ifaceNil;
159925
160025
  this.closeWasClean = false;
160026
+ this.releaseOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
159926
160027
  this.releaseOnClose = $throwNilPointerError;
159927
160028
  this.releaseOnError = $throwNilPointerError;
159928
160029
  this.releaseOnMessage = $throwNilPointerError;
@@ -159942,6 +160043,7 @@ $packages["github.com/coder/websocket"] = (function() {
159942
160043
  this.closeErrOnce = closeErrOnce_;
159943
160044
  this.closeErr = closeErr_;
159944
160045
  this.closeWasClean = closeWasClean_;
160046
+ this.releaseOnce = releaseOnce_;
159945
160047
  this.releaseOnClose = releaseOnClose_;
159946
160048
  this.releaseOnError = releaseOnError_;
159947
160049
  this.releaseOnMessage = releaseOnMessage_;
@@ -160006,8 +160108,8 @@ $packages["github.com/coder/websocket"] = (function() {
160006
160108
  ptrType$6 = $ptrType($packages["crypto/tls"].ConnectionState);
160007
160109
  ptrType$7 = $ptrType(bytes.Buffer);
160008
160110
  chanType = $chanType(structType, false, false);
160009
- ptrType$9 = $ptrType(writer);
160010
- ptrType$10 = $ptrType(noCopy);
160111
+ ptrType$8 = $ptrType(writer);
160112
+ ptrType$9 = $ptrType(noCopy);
160011
160113
  Conn.ptr.prototype.close = function(err, wasClean) {
160012
160114
  var {c, err, wasClean, $s, $r, $c} = $restore(this, {err, wasClean});
160013
160115
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -160048,9 +160150,7 @@ $packages["github.com/coder/websocket"] = (function() {
160048
160150
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160049
160151
  err = new CloseError.ptr(((e.Code >> 0)), e.Reason);
160050
160152
  $r = c[0].close(new err.constructor.elem(err), e.WasClean); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160051
- $r = c[0].releaseOnClose(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160052
- $r = c[0].releaseOnError(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160053
- $r = c[0].releaseOnMessage(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160153
+ $r = c[0].releaseEventHandlers(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160054
160154
  $s = -1; return;
160055
160155
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, e, err, $s};return $f;
160056
160156
  }; })(c)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -160058,8 +160158,7 @@ $packages["github.com/coder/websocket"] = (function() {
160058
160158
  _r$1 = $clone(c[0].ws, wsjs.WebSocket).OnError((function(c) { return function $b(v) {
160059
160159
  var {v, $s, $r, $c} = $restore(this, {v});
160060
160160
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160061
- $r = c[0].setCloseErr(errors.New($clone($clone(v, js.Value).Get("message"), js.Value).String())); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160062
- $r = c[0].closeWithInternal(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160161
+ $r = c[0].abort(errors.New($clone($clone(v, js.Value).Get("message"), js.Value).String())); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160063
160162
  $s = -1; return;
160064
160163
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, v, $s};return $f;
160065
160164
  }; })(c)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
@@ -160090,18 +160189,47 @@ $packages["github.com/coder/websocket"] = (function() {
160090
160189
  /* */ } return; } var $f = {$blk: Conn.ptr.prototype.init, $c: true, $r, _r, _r$1, _r$2, c, $s};return $f;
160091
160190
  };
160092
160191
  Conn.prototype.init = function() { return this.$val.init(); };
160192
+ Conn.ptr.prototype.releaseEventHandlers = function() {
160193
+ var {c, $s, $r, $c} = $restore(this, {});
160194
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160195
+ c = [c];
160196
+ c[0] = this;
160197
+ $r = c[0].releaseOnce.Do((function(c) { return function $b() {
160198
+ var {$s, $r, $c} = $restore(this, {});
160199
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160200
+ $r = c[0].releaseOnClose(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160201
+ $r = c[0].releaseOnError(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160202
+ $r = c[0].releaseOnMessage(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160203
+ $s = -1; return;
160204
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
160205
+ }; })(c)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160206
+ $s = -1; return;
160207
+ /* */ } return; } var $f = {$blk: Conn.ptr.prototype.releaseEventHandlers, $c: true, $r, c, $s};return $f;
160208
+ };
160209
+ Conn.prototype.releaseEventHandlers = function() { return this.$val.releaseEventHandlers(); };
160210
+ Conn.ptr.prototype.abort = function(err) {
160211
+ var {_r, c, err, $s, $r, $c} = $restore(this, {err});
160212
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160213
+ c = this;
160214
+ $r = c.close(err, false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160215
+ $r = c.releaseEventHandlers(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160216
+ _r = $clone(c.ws, wsjs.WebSocket).CloseNow(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160217
+ $unused(_r);
160218
+ $s = -1; return;
160219
+ /* */ } return; } var $f = {$blk: Conn.ptr.prototype.abort, $c: true, $r, _r, c, err, $s};return $f;
160220
+ };
160221
+ Conn.prototype.abort = function(err) { return this.$val.abort(err); };
160093
160222
  Conn.ptr.prototype.closeWithInternal = function() {
160094
- var {_r, c, $s, $r, $c} = $restore(this, {});
160223
+ var {c, $s, $r, $c} = $restore(this, {});
160095
160224
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160096
160225
  c = this;
160097
- _r = c.Close(1011, "something went wrong"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160098
- _r;
160226
+ $r = c.abort(errors.New("something went wrong")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160099
160227
  $s = -1; return;
160100
- /* */ } return; } var $f = {$blk: Conn.ptr.prototype.closeWithInternal, $c: true, $r, _r, c, $s};return $f;
160228
+ /* */ } return; } var $f = {$blk: Conn.ptr.prototype.closeWithInternal, $c: true, $r, c, $s};return $f;
160101
160229
  };
160102
160230
  Conn.prototype.closeWithInternal = function() { return this.$val.closeWithInternal(); };
160103
160231
  Conn.ptr.prototype.Read = function(ctx) {
160104
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, closedRead, ctx, err, err$1, p, readLimit, typ, x, $s, $r, $c} = $restore(this, {ctx});
160232
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, closedRead, ctx, err, p, readLimit, reason, typ, x, $s, $r, $c} = $restore(this, {ctx});
160105
160233
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160106
160234
  c = this;
160107
160235
  $r = c.closeReadMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -160126,16 +160254,18 @@ $packages["github.com/coder/websocket"] = (function() {
160126
160254
  /* */ if ((readLimit.$high > 0 || (readLimit.$high === 0 && readLimit.$low >= 0)) && (x = (new $Int64(0, p.$length)), (x.$high > readLimit.$high || (x.$high === readLimit.$high && x.$low > readLimit.$low)))) { $s = 8; continue; }
160127
160255
  /* */ $s = 9; continue;
160128
160256
  /* if ((readLimit.$high > 0 || (readLimit.$high === 0 && readLimit.$low >= 0)) && (x = (new $Int64(0, p.$length)), (x.$high > readLimit.$high || (x.$high === readLimit.$high && x.$low > readLimit.$low)))) { */ case 8:
160129
- _r$2 = fmt.Errorf("read limited at %v bytes", new sliceType([c.msgReadLimit.Load()])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
160130
- err$1 = _r$2;
160131
- _r$3 = err$1.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
160257
+ _r$2 = fmt.Errorf("read limited at %d bytes", new sliceType([c.msgReadLimit.Load()])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
160258
+ reason = _r$2;
160259
+ _r$3 = reason.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
160132
160260
  _arg = _r$3;
160133
160261
  _r$4 = c.Close(1009, _arg); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
160134
160262
  _r$4;
160135
- $s = -1; return [0, sliceType$1.nil, err$1];
160263
+ _r$5 = fmt.Errorf("%w: %v", new sliceType([$pkg.ErrMessageTooBig, reason])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
160264
+ $24r$1 = [0, sliceType$1.nil, _r$5];
160265
+ $s = 14; case 14: return $24r$1;
160136
160266
  /* } */ case 9:
160137
160267
  $s = -1; return [typ, p, $ifaceNil];
160138
- /* */ } return; } var $f = {$blk: Conn.ptr.prototype.Read, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, closedRead, ctx, err, err$1, p, readLimit, typ, x, $s};return $f;
160268
+ /* */ } return; } var $f = {$blk: Conn.ptr.prototype.Read, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, closedRead, ctx, err, p, readLimit, reason, typ, x, $s};return $f;
160139
160269
  };
160140
160270
  Conn.prototype.Read = function(ctx) { return this.$val.Read(ctx); };
160141
160271
  Conn.ptr.prototype.read = function(ctx) {
@@ -160205,7 +160335,7 @@ $packages["github.com/coder/websocket"] = (function() {
160205
160335
  var {_r, _r$1, c, ctx, err, err$1, p, typ, $s, $r, $c} = $restore(this, {ctx, typ, p});
160206
160336
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160207
160337
  c = this;
160208
- _r = c.write(ctx, typ, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160338
+ _r = c.write(typ, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160209
160339
  err = _r;
160210
160340
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
160211
160341
  /* */ $s = 3; continue;
@@ -160220,8 +160350,8 @@ $packages["github.com/coder/websocket"] = (function() {
160220
160350
  /* */ } return; } var $f = {$blk: Conn.ptr.prototype.Write, $c: true, $r, _r, _r$1, c, ctx, err, err$1, p, typ, $s};return $f;
160221
160351
  };
160222
160352
  Conn.prototype.Write = function(ctx, typ, p) { return this.$val.Write(ctx, typ, p); };
160223
- Conn.ptr.prototype.write = function(ctx, typ, p) {
160224
- var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, c, ctx, p, typ, $s, $r, $c} = $restore(this, {ctx, typ, p});
160353
+ Conn.ptr.prototype.write = function(typ, p) {
160354
+ var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, c, p, typ, $s, $r, $c} = $restore(this, {typ, p});
160225
160355
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160226
160356
  c = this;
160227
160357
  if (c.isClosed()) {
@@ -160246,9 +160376,9 @@ $packages["github.com/coder/websocket"] = (function() {
160246
160376
  /* } */ case 5:
160247
160377
  case 1:
160248
160378
  $s = -1; return $ifaceNil;
160249
- /* */ } return; } var $f = {$blk: Conn.ptr.prototype.write, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, c, ctx, p, typ, $s};return $f;
160379
+ /* */ } return; } var $f = {$blk: Conn.ptr.prototype.write, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, c, p, typ, $s};return $f;
160250
160380
  };
160251
- Conn.prototype.write = function(ctx, typ, p) { return this.$val.write(ctx, typ, p); };
160381
+ Conn.prototype.write = function(typ, p) { return this.$val.write(typ, p); };
160252
160382
  Conn.ptr.prototype.Close = function(code, reason) {
160253
160383
  var {$24r, _r, _r$1, c, code, err, reason, $s, $r, $c} = $restore(this, {code, reason});
160254
160384
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -160267,13 +160397,16 @@ $packages["github.com/coder/websocket"] = (function() {
160267
160397
  };
160268
160398
  Conn.prototype.Close = function(code, reason) { return this.$val.Close(code, reason); };
160269
160399
  Conn.ptr.prototype.CloseNow = function() {
160270
- var {$24r, _r, c, $s, $r, $c} = $restore(this, {});
160400
+ var {_r, c, x, $s, $r, $c} = $restore(this, {});
160271
160401
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160272
160402
  c = this;
160273
- _r = c.Close(1001, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160274
- $24r = _r;
160275
- $s = 2; case 2: return $24r;
160276
- /* */ } return; } var $f = {$blk: Conn.ptr.prototype.CloseNow, $c: true, $r, $24r, _r, c, $s};return $f;
160403
+ if (c.isClosed()) {
160404
+ $s = -1; return net.ErrClosed;
160405
+ }
160406
+ _r = fmt.Errorf("sent close: %w", new sliceType([(x = new CloseError.ptr(1001, ""), new x.constructor.elem(x))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160407
+ $r = c.abort(_r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160408
+ $s = -1; return $ifaceNil;
160409
+ /* */ } return; } var $f = {$blk: Conn.ptr.prototype.CloseNow, $c: true, $r, _r, c, x, $s};return $f;
160277
160410
  };
160278
160411
  Conn.prototype.CloseNow = function() { return this.$val.CloseNow(); };
160279
160412
  Conn.ptr.prototype.exportedClose = function(code, reason) {
@@ -160296,19 +160429,20 @@ $packages["github.com/coder/websocket"] = (function() {
160296
160429
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
160297
160430
  /* */ $s = 9; continue;
160298
160431
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
160432
+ $r = c.abort(ce); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160299
160433
  $24r$1 = err;
160300
- $s = 10; case 10: return $24r$1;
160434
+ $s = 11; case 11: return $24r$1;
160301
160435
  /* } */ case 9:
160302
- _r$2 = $recv(c.closed); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
160436
+ _r$2 = $recv(c.closed); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
160303
160437
  _r$2[0];
160304
- /* */ if (!c.closeWasClean) { $s = 12; continue; }
160305
- /* */ $s = 13; continue;
160306
- /* if (!c.closeWasClean) { */ case 12:
160438
+ /* */ if (!c.closeWasClean) { $s = 13; continue; }
160439
+ /* */ $s = 14; continue;
160440
+ /* if (!c.closeWasClean) { */ case 13:
160307
160441
  $24r$2 = c.closeErr;
160308
- $s = 14; case 14: return $24r$2;
160309
- /* } */ case 13:
160442
+ $s = 15; case 15: return $24r$2;
160443
+ /* } */ case 14:
160310
160444
  $24r$3 = $ifaceNil;
160311
- $s = 15; case 15: return $24r$3;
160445
+ $s = 16; case 16: return $24r$3;
160312
160446
  /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Conn.ptr.prototype.exportedClose, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, c, ce, code, err, reason, x, $s, $deferred};return $f; } }
160313
160447
  };
160314
160448
  Conn.prototype.exportedClose = function(code, reason) { return this.$val.exportedClose(code, reason); };
@@ -160356,12 +160490,15 @@ $packages["github.com/coder/websocket"] = (function() {
160356
160490
  $24r = [ptrType.nil, ptrType$3.nil, err];
160357
160491
  $s = 4; case 4: return $24r;
160358
160492
  /* } */ case 3:
160359
- c = new Conn.ptr(new noCopy.ptr(), $clone(ws, wsjs.WebSocket), new xsync.Int64.ptr(new atomic.Value.ptr($ifaceNil)), new sync.Mutex.ptr(0, 0), $ifaceNil, new sync.Mutex.ptr(0, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), $chanNil, new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), $ifaceNil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $chanNil, new sync.Mutex.ptr(0, 0), sliceType$3.nil);
160493
+ c = new Conn.ptr(new noCopy.ptr(), $clone(ws, wsjs.WebSocket), new atomic.Int64.ptr(new atomic.noCopy.ptr(), new atomic.align64.ptr(), new $Int64(0, 0)), new sync.Mutex.ptr(0, 0), $ifaceNil, new sync.Mutex.ptr(0, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), $chanNil, new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), $ifaceNil, false, new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $chanNil, new sync.Mutex.ptr(0, 0), sliceType$3.nil);
160360
160494
  $r = c.init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160361
160495
  opench[0] = new $Chan(structType, 0);
160362
- _r$1 = $clone(ws, wsjs.WebSocket).OnOpen((function(opench) { return function(e) {
160363
- var e;
160364
- $close(opench[0]);
160496
+ _r$1 = $clone(ws, wsjs.WebSocket).OnOpen((function(opench) { return function $b(e) {
160497
+ var {e, $s, $r, $c} = $restore(this, {e});
160498
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160499
+ $r = $send(opench[0], $clone($clone(new structType.ptr(), structType), structType)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160500
+ $s = -1; return;
160501
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, e, $s};return $f;
160365
160502
  }; })(opench)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
160366
160503
  releaseOpen = _r$1;
160367
160504
  $deferred.push([releaseOpen, []]);
@@ -160373,17 +160510,17 @@ $packages["github.com/coder/websocket"] = (function() {
160373
160510
  /* */ if (_selection[0] === 2) { $s = 11; continue; }
160374
160511
  /* */ $s = 12; continue;
160375
160512
  /* if (_selection[0] === 0) { */ case 9:
160376
- _r$4 = c.Close(1008, "dial timed out"); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
160377
- _r$4;
160378
- _r$5 = ctx.Err(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
160513
+ _r$4 = ctx.Err(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
160514
+ $r = c.abort(_r$4); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160515
+ _r$5 = ctx.Err(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
160379
160516
  $24r$1 = [ptrType.nil, ptrType$3.nil, _r$5];
160380
- $s = 15; case 15: return $24r$1;
160517
+ $s = 16; case 16: return $24r$1;
160381
160518
  /* } else if (_selection[0] === 1) { */ case 10:
160382
160519
  $24r$2 = [c, new http.Response.ptr("", 101, "", 0, 0, false, $ifaceNil, new $Int64(0, 0), sliceType$2.nil, false, false, false, ptrType$5.nil, ptrType$6.nil), $ifaceNil];
160383
- $s = 16; case 16: return $24r$2;
160520
+ $s = 17; case 17: return $24r$2;
160384
160521
  /* } else if (_selection[0] === 2) { */ case 11:
160385
160522
  $24r$3 = [ptrType.nil, ptrType$3.nil, net.ErrClosed];
160386
- $s = 17; case 17: return $24r$3;
160523
+ $s = 18; case 18: return $24r$3;
160387
160524
  /* } */ case 12:
160388
160525
  $s = -1; return [ptrType.nil, ptrType$3.nil, $ifaceNil];
160389
160526
  /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType.nil, ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: dial, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _selection, _tuple, c, ctx, err, opench, opts, releaseOpen, url, ws, $s, $deferred};return $f; } }
@@ -160510,6 +160647,12 @@ $packages["github.com/coder/websocket"] = (function() {
160510
160647
  c.msgReadLimit.Store(n);
160511
160648
  };
160512
160649
  Conn.prototype.SetReadLimit = function(n) { return this.$val.SetReadLimit(n); };
160650
+ Conn.ptr.prototype.BufferedAmount = function() {
160651
+ var c;
160652
+ c = this;
160653
+ return $clone(c.ws, wsjs.WebSocket).BufferedAmount();
160654
+ };
160655
+ Conn.prototype.BufferedAmount = function() { return this.$val.BufferedAmount(); };
160513
160656
  Conn.ptr.prototype.setCloseErr = function(err) {
160514
160657
  var {c, err, $s, $r, $c} = $restore(this, {err});
160515
160658
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -160572,13 +160715,13 @@ $packages["github.com/coder/websocket"] = (function() {
160572
160715
  return $substring("StatusNormalClosureStatusGoingAwayStatusProtocolErrorStatusUnsupportedDatastatusReservedStatusNoStatusRcvdStatusAbnormalClosureStatusInvalidFramePayloadDataStatusPolicyViolationStatusMessageTooBigStatusMandatoryExtensionStatusInternalErrorStatusServiceRestartStatusTryAgainLaterStatusBadGatewayStatusTLSHandshake", ((i < 0 || i >= _StatusCode_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _StatusCode_index[i]), (x = i + 1 >> 0, ((x < 0 || x >= _StatusCode_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _StatusCode_index[x])));
160573
160716
  };
160574
160717
  $ptrType(StatusCode).prototype.String = function() { return new StatusCode(this.$get()).String(); };
160575
- ptrType.methods = [{prop: "close", name: "close", pkg: "github.com/coder/websocket", typ: $funcType([$error, $Bool], [], false)}, {prop: "init", name: "init", pkg: "github.com/coder/websocket", typ: $funcType([], [], false)}, {prop: "closeWithInternal", name: "closeWithInternal", pkg: "github.com/coder/websocket", typ: $funcType([], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([context.Context], [MessageType, sliceType$1, $error], false)}, {prop: "read", name: "read", pkg: "github.com/coder/websocket", typ: $funcType([context.Context], [MessageType, sliceType$1, $error], false)}, {prop: "Ping", name: "Ping", pkg: "", typ: $funcType([context.Context], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([context.Context, MessageType, sliceType$1], [$error], false)}, {prop: "write", name: "write", pkg: "github.com/coder/websocket", typ: $funcType([context.Context, MessageType, sliceType$1], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([StatusCode, $String], [$error], false)}, {prop: "CloseNow", name: "CloseNow", pkg: "", typ: $funcType([], [$error], false)}, {prop: "exportedClose", name: "exportedClose", pkg: "github.com/coder/websocket", typ: $funcType([StatusCode, $String], [$error], false)}, {prop: "Subprotocol", name: "Subprotocol", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Reader", name: "Reader", pkg: "", typ: $funcType([context.Context], [MessageType, io.Reader, $error], false)}, {prop: "Writer", name: "Writer", pkg: "", typ: $funcType([context.Context, MessageType], [io.WriteCloser, $error], false)}, {prop: "CloseRead", name: "CloseRead", pkg: "", typ: $funcType([context.Context], [context.Context], false)}, {prop: "SetReadLimit", name: "SetReadLimit", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "setCloseErr", name: "setCloseErr", pkg: "github.com/coder/websocket", typ: $funcType([$error], [], false)}, {prop: "isClosed", name: "isClosed", pkg: "github.com/coder/websocket", typ: $funcType([], [$Bool], false)}];
160576
- ptrType$9.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
160718
+ ptrType.methods = [{prop: "close", name: "close", pkg: "github.com/coder/websocket", typ: $funcType([$error, $Bool], [], false)}, {prop: "init", name: "init", pkg: "github.com/coder/websocket", typ: $funcType([], [], false)}, {prop: "releaseEventHandlers", name: "releaseEventHandlers", pkg: "github.com/coder/websocket", typ: $funcType([], [], false)}, {prop: "abort", name: "abort", pkg: "github.com/coder/websocket", typ: $funcType([$error], [], false)}, {prop: "closeWithInternal", name: "closeWithInternal", pkg: "github.com/coder/websocket", typ: $funcType([], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([context.Context], [MessageType, sliceType$1, $error], false)}, {prop: "read", name: "read", pkg: "github.com/coder/websocket", typ: $funcType([context.Context], [MessageType, sliceType$1, $error], false)}, {prop: "Ping", name: "Ping", pkg: "", typ: $funcType([context.Context], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([context.Context, MessageType, sliceType$1], [$error], false)}, {prop: "write", name: "write", pkg: "github.com/coder/websocket", typ: $funcType([MessageType, sliceType$1], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([StatusCode, $String], [$error], false)}, {prop: "CloseNow", name: "CloseNow", pkg: "", typ: $funcType([], [$error], false)}, {prop: "exportedClose", name: "exportedClose", pkg: "github.com/coder/websocket", typ: $funcType([StatusCode, $String], [$error], false)}, {prop: "Subprotocol", name: "Subprotocol", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Reader", name: "Reader", pkg: "", typ: $funcType([context.Context], [MessageType, io.Reader, $error], false)}, {prop: "Writer", name: "Writer", pkg: "", typ: $funcType([context.Context, MessageType], [io.WriteCloser, $error], false)}, {prop: "CloseRead", name: "CloseRead", pkg: "", typ: $funcType([context.Context], [context.Context], false)}, {prop: "SetReadLimit", name: "SetReadLimit", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "BufferedAmount", name: "BufferedAmount", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "setCloseErr", name: "setCloseErr", pkg: "github.com/coder/websocket", typ: $funcType([$error], [], false)}, {prop: "isClosed", name: "isClosed", pkg: "github.com/coder/websocket", typ: $funcType([], [$Bool], false)}];
160719
+ ptrType$8.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
160577
160720
  StatusCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
160578
160721
  CloseError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
160579
160722
  MessageType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
160580
- ptrType$10.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}];
160581
- Conn.init("github.com/coder/websocket", [{prop: "noCopy", name: "noCopy", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "ws", name: "ws", embedded: false, exported: false, typ: wsjs.WebSocket, tag: ""}, {prop: "msgReadLimit", name: "msgReadLimit", embedded: false, exported: false, typ: xsync.Int64, tag: ""}, {prop: "closeReadMu", name: "closeReadMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "closeReadCtx", name: "closeReadCtx", embedded: false, exported: false, typ: context.Context, tag: ""}, {prop: "closingMu", name: "closingMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "closeOnce", name: "closeOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeErrOnce", name: "closeErrOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "closeErr", name: "closeErr", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "closeWasClean", name: "closeWasClean", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "releaseOnClose", name: "releaseOnClose", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "releaseOnError", name: "releaseOnError", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "releaseOnMessage", name: "releaseOnMessage", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "readSignal", name: "readSignal", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "readBufMu", name: "readBufMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "readBuf", name: "readBuf", embedded: false, exported: false, typ: sliceType$3, tag: ""}]);
160723
+ ptrType$9.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}];
160724
+ Conn.init("github.com/coder/websocket", [{prop: "noCopy", name: "noCopy", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "ws", name: "ws", embedded: false, exported: false, typ: wsjs.WebSocket, tag: ""}, {prop: "msgReadLimit", name: "msgReadLimit", embedded: false, exported: false, typ: atomic.Int64, tag: ""}, {prop: "closeReadMu", name: "closeReadMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "closeReadCtx", name: "closeReadCtx", embedded: false, exported: false, typ: context.Context, tag: ""}, {prop: "closingMu", name: "closingMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "closeOnce", name: "closeOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeErrOnce", name: "closeErrOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "closeErr", name: "closeErr", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "closeWasClean", name: "closeWasClean", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "releaseOnce", name: "releaseOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "releaseOnClose", name: "releaseOnClose", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "releaseOnError", name: "releaseOnError", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "releaseOnMessage", name: "releaseOnMessage", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "readSignal", name: "readSignal", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "readBufMu", name: "readBufMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "readBuf", name: "readBuf", embedded: false, exported: false, typ: sliceType$3, tag: ""}]);
160582
160725
  DialOptions.init("", [{prop: "Subprotocols", name: "Subprotocols", embedded: false, exported: true, typ: sliceType$2, tag: ""}]);
160583
160726
  writer.init("github.com/coder/websocket", [{prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "c", name: "c", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "ctx", name: "ctx", embedded: false, exported: false, typ: context.Context, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: MessageType, tag: ""}, {prop: "b", name: "b", embedded: false, exported: false, typ: ptrType$7, tag: ""}]);
160584
160727
  CloseError.init("", [{prop: "Code", name: "Code", embedded: false, exported: true, typ: StatusCode, tag: ""}, {prop: "Reason", name: "Reason", embedded: false, exported: true, typ: $String, tag: ""}]);
@@ -160593,34 +160736,34 @@ $packages["github.com/coder/websocket"] = (function() {
160593
160736
  $r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160594
160737
  $r = bpool.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160595
160738
  $r = wsjs.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160596
- $r = xsync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160597
- $r = io.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160598
- $r = math.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160599
- $r = bits.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160600
- $r = net.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160601
- $r = http.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160602
- $r = reflect.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160603
- $r = runtime.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160604
- $r = strconv.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160605
- $r = strings.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160606
- $r = sync.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160607
- $r = atomic.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160608
- $r = js.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160609
- $r = time.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160739
+ $r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160740
+ $r = math.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160741
+ $r = bits.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160742
+ $r = net.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160743
+ $r = http.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160744
+ $r = reflect.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160745
+ $r = runtime.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160746
+ $r = strconv.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160747
+ $r = strings.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160748
+ $r = sync.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160749
+ $r = atomic.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160750
+ $r = js.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160751
+ $r = time.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160610
160752
  _MessageType_index = $toNativeArray($kindUint8, [0, 11, 24]);
160611
160753
  _StatusCode_index = $toNativeArray($kindUint16, [0, 19, 34, 53, 74, 88, 106, 127, 156, 177, 196, 220, 239, 259, 278, 294, 312]);
160754
+ $pkg.ErrMessageTooBig = errors.New("websocket: message too big");
160612
160755
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
160613
160756
  };
160614
160757
  $pkg.$init = $init;
160615
160758
  return $pkg;
160616
160759
  })();
160617
160760
  $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
160618
- var $pkg = {}, $init, errs, log, js, ptrType, sliceType, GetError, Await;
160761
+ var $pkg = {}, $init, errs, js, ptrType, sliceType, mapType, GetError, Await, AwaitWithCancel;
160619
160762
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
160620
- log = $packages["log"];
160621
160763
  js = $packages["syscall/js"];
160622
160764
  ptrType = $ptrType(js.Value);
160623
160765
  sliceType = $sliceType($emptyInterface);
160766
+ mapType = $mapType($String, $emptyInterface);
160624
160767
  GetError = function(err) {
160625
160768
  var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, err, $s, $r, $c} = $restore(this, {err});
160626
160769
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -160652,77 +160795,82 @@ $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
160652
160795
  };
160653
160796
  $pkg.GetError = GetError;
160654
160797
  Await = function(awaitable) {
160655
- var {$24r, $24r$1, _r, _r$1, _r$2, _selection, awaitable, catch$1, catchFunc, err, result, then, thenFunc, $s, $deferred, $r, $c} = $restore(this, {awaitable});
160798
+ var {_r, _tuple, awaitable, err, result, $s, $r, $c} = $restore(this, {awaitable});
160799
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160800
+ _r = AwaitWithCancel($clone(awaitable, js.Value), $chanNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160801
+ _tuple = _r;
160802
+ result = _tuple[0];
160803
+ err = _tuple[1];
160804
+ $s = -1; return [result, err];
160805
+ /* */ } return; } var $f = {$blk: Await, $c: true, $r, _r, _tuple, awaitable, err, result, $s};return $f;
160806
+ };
160807
+ $pkg.Await = Await;
160808
+ AwaitWithCancel = function(awaitable, cancel) {
160809
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _selection, awaitable, cancel, catch$1, catchFunc, err, facades, result, state, then, thenFunc, x, x$1, $s, $deferred, $r, $c} = $restore(this, {awaitable, cancel});
160656
160810
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
160657
160811
  catch$1 = [catch$1];
160812
+ catchFunc = [catchFunc];
160813
+ state = [state];
160658
160814
  then = [then];
160659
- then[0] = new $Chan(ptrType, 0);
160660
- $deferred.push([(function(catch$1, then) { return function() {
160661
- $close(then[0]);
160662
- then[0] = $chanNil;
160663
- }; })(catch$1, then), []]);
160664
- thenFunc = $clone(js.FuncOf((function(catch$1, then) { return function $b(this$1, args) {
160815
+ thenFunc = [thenFunc];
160816
+ then[0] = new $Chan(ptrType, 1);
160817
+ thenFunc[0] = $clone(js.FuncOf((function(catch$1, catchFunc, state, then, thenFunc) { return function $b(this$1, args) {
160665
160818
  var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
160666
160819
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160667
- /* */ if (then[0] === $chanNil) { $s = 1; continue; }
160668
- /* */ $s = 2; continue;
160669
- /* if (then[0] === $chanNil) { */ case 1:
160670
- $r = log.Printf("Promise already resolved cannot resolve again: %v\n", new sliceType([(0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160671
- $s = -1; return $ifaceNil;
160672
- /* } */ case 2:
160673
- $r = $send(then[0], (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160820
+ $r = $send(then[0], (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160674
160821
  $s = -1; return $ifaceNil;
160675
160822
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
160676
- }; })(catch$1, then)), js.Func);
160677
- $deferred.push([$methodVal($clone(thenFunc, js.Func), "Release"), []]);
160678
- catch$1[0] = new $Chan(ptrType, 0);
160679
- $deferred.push([(function(catch$1, then) { return function() {
160680
- $close(catch$1[0]);
160681
- catch$1[0] = $chanNil;
160682
- }; })(catch$1, then), []]);
160683
- catchFunc = $clone(js.FuncOf((function(catch$1, then) { return function $b(this$1, args) {
160684
- var {_arg, _r, args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
160823
+ }; })(catch$1, catchFunc, state, then, thenFunc)), js.Func);
160824
+ catch$1[0] = new $Chan(ptrType, 1);
160825
+ catchFunc[0] = $clone(js.FuncOf((function(catch$1, catchFunc, state, then, thenFunc) { return function $b(this$1, args) {
160826
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
160685
160827
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
160686
- /* */ if (catch$1[0] === $chanNil) { $s = 1; continue; }
160687
- /* */ $s = 2; continue;
160688
- /* if (catch$1[0] === $chanNil) { */ case 1:
160689
- _r = GetError((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160690
- _arg = _r;
160691
- $r = errs.Print("Promise already resolved cannot be rejected", _arg); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160692
- $s = -1; return $ifaceNil;
160693
- /* } */ case 2:
160694
- $r = $send(catch$1[0], (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160828
+ $r = $send(catch$1[0], (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160695
160829
  $s = -1; return $ifaceNil;
160696
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r, args, this$1, $s};return $f;
160697
- }; })(catch$1, then)), js.Func);
160698
- $deferred.push([$methodVal($clone(catchFunc, js.Func), "Release"), []]);
160699
- _r = $clone(awaitable, js.Value).Call("then", new sliceType([new thenFunc.constructor.elem(thenFunc)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160700
- _r$1 = $clone(_r, js.Value).Call("catch", new sliceType([new catchFunc.constructor.elem(catchFunc)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
160701
- _r$1;
160702
- _r$2 = $select([[then[0]], [catch$1[0]]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
160703
- _selection = _r$2;
160704
- /* */ if (_selection[0] === 0) { $s = 4; continue; }
160705
- /* */ if (_selection[0] === 1) { $s = 5; continue; }
160706
- /* */ $s = 6; continue;
160707
- /* if (_selection[0] === 0) { */ case 4:
160830
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
160831
+ }; })(catch$1, catchFunc, state, then, thenFunc)), js.Func);
160832
+ state[0] = $clone(js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "active", v: new $Bool(true) }, { k: "resolve", v: new thenFunc[0].constructor.elem(thenFunc[0]) }, { k: "reject", v: new catchFunc[0].constructor.elem(catchFunc[0]) }]))), js.Value);
160833
+ _r = $clone($clone(js.Global(), js.Value).Get("Function"), js.Value).New(new sliceType([new $String("state"), new $String("return {\n\t\t\tresolve: function(value) {\n\t\t\t\tif (state.active) return state.resolve(value);\n\t\t\t},\n\t\t\treject: function(error) {\n\t\t\t\tif (state.active) return state.reject(error);\n\t\t\t}\n\t\t};")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
160834
+ _r$1 = $clone(_r, js.Value).Invoke(new sliceType([new state[0].constructor.elem(state[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
160835
+ facades = $clone(_r$1, js.Value);
160836
+ _r$2 = $clone(awaitable, js.Value).Call("then", new sliceType([(x = $clone(facades, js.Value).Get("resolve"), new x.constructor.elem(x))])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
160837
+ _r$3 = $clone(_r$2, js.Value).Call("catch", new sliceType([(x$1 = $clone(facades, js.Value).Get("reject"), new x$1.constructor.elem(x$1))])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
160838
+ _r$3;
160839
+ $deferred.push([(function(catch$1, catchFunc, state, then, thenFunc) { return function() {
160840
+ var x$2, x$3;
160841
+ $clone(state[0], js.Value).Set("active", new $Bool(false));
160842
+ $clone(state[0], js.Value).Set("resolve", (x$2 = js.Undefined(), new x$2.constructor.elem(x$2)));
160843
+ $clone(state[0], js.Value).Set("reject", (x$3 = js.Undefined(), new x$3.constructor.elem(x$3)));
160844
+ $clone(thenFunc[0], js.Func).Release();
160845
+ $clone(catchFunc[0], js.Func).Release();
160846
+ }; })(catch$1, catchFunc, state, then, thenFunc), []]);
160847
+ _r$4 = $select([[then[0]], [catch$1[0]], [cancel]]); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
160848
+ _selection = _r$4;
160849
+ /* */ if (_selection[0] === 0) { $s = 6; continue; }
160850
+ /* */ if (_selection[0] === 1) { $s = 7; continue; }
160851
+ /* */ if (_selection[0] === 2) { $s = 8; continue; }
160852
+ /* */ $s = 9; continue;
160853
+ /* if (_selection[0] === 0) { */ case 6:
160708
160854
  result = _selection[1][0];
160709
- $24r = [result, ptrType.nil];
160710
- $s = 7; case 7: return $24r;
160711
- /* } else if (_selection[0] === 1) { */ case 5:
160855
+ $24r = [result, ptrType.nil, false];
160856
+ $s = 10; case 10: return $24r;
160857
+ /* } else if (_selection[0] === 1) { */ case 7:
160712
160858
  err = _selection[1][0];
160713
- $24r$1 = [ptrType.nil, err];
160714
- $s = 8; case 8: return $24r$1;
160715
- /* } */ case 6:
160716
- $s = -1; return [ptrType.nil, ptrType.nil];
160717
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType.nil, ptrType.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Await, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _selection, awaitable, catch$1, catchFunc, err, result, then, thenFunc, $s, $deferred};return $f; } }
160859
+ $24r$1 = [ptrType.nil, err, false];
160860
+ $s = 11; case 11: return $24r$1;
160861
+ /* } else if (_selection[0] === 2) { */ case 8:
160862
+ $24r$2 = [ptrType.nil, ptrType.nil, true];
160863
+ $s = 12; case 12: return $24r$2;
160864
+ /* } */ case 9:
160865
+ $s = -1; return [ptrType.nil, ptrType.nil, false];
160866
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType.nil, ptrType.nil, false]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: AwaitWithCancel, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _selection, awaitable, cancel, catch$1, catchFunc, err, facades, result, state, then, thenFunc, x, x$1, $s, $deferred};return $f; } }
160718
160867
  };
160719
- $pkg.Await = Await;
160868
+ $pkg.AwaitWithCancel = AwaitWithCancel;
160720
160869
  $init = function() {
160721
160870
  $pkg.$init = function() {};
160722
160871
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
160723
160872
  $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160724
- $r = log.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160725
- $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160873
+ $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
160726
160874
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
160727
160875
  };
160728
160876
  $pkg.$init = $init;
@@ -160777,13 +160925,15 @@ $packages["github.com/supraio/client-daemon/pkg/netsamsungwasmtcp"] = (function(
160777
160925
  return $pkg;
160778
160926
  })();
160779
160927
  $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
160780
- var $pkg = {}, $init, context, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, ReaderWriter, ReaderWriterCloser, Driver, sliceType, ptrType, mapType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, connects, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket, Create;
160928
+ var $pkg = {}, $init, context, errors, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, net, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, ReaderWriter, ReaderWriterCloser, Driver, sliceType, ptrType, mapType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, connects, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket, Create;
160781
160929
  context = $packages["context"];
160930
+ errors = $packages["errors"];
160782
160931
  websocket = $packages["github.com/coder/websocket"];
160783
160932
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
160784
160933
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
160785
160934
  netnacltcp = $packages["github.com/supraio/client-daemon/pkg/netnacltcp"];
160786
160935
  netsamsungwasmtcp = $packages["github.com/supraio/client-daemon/pkg/netsamsungwasmtcp"];
160936
+ net = $packages["net"];
160787
160937
  js = $packages["syscall/js"];
160788
160938
  time = $packages["time"];
160789
160939
  SamsungWasmTCPConn = $pkg.SamsungWasmTCPConn = $newType(0, $kindStruct, "netstream.SamsungWasmTCPConn", true, "github.com/supraio/client-daemon/pkg/netstream", true, function(conn_) {
@@ -161098,13 +161248,21 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
161098
161248
  };
161099
161249
  JsWebsocketConn.prototype.Read = function(data) { return this.$val.Read(data); };
161100
161250
  JsWebsocketConn.ptr.prototype.Close = function() {
161101
- var {$24r, _r, c, $s, $r, $c} = $restore(this, {});
161251
+ var {_r, _r$1, _v, c, err, $s, $r, $c} = $restore(this, {});
161102
161252
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161103
161253
  c = this;
161104
- _r = c.conn.Close(1000, "Closed by client"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
161105
- $24r = _r;
161106
- $s = 2; case 2: return $24r;
161107
- /* */ } return; } var $f = {$blk: JsWebsocketConn.ptr.prototype.Close, $c: true, $r, $24r, _r, c, $s};return $f;
161254
+ _r = c.conn.CloseNow(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
161255
+ err = _r;
161256
+ if (!(!($interfaceIsEqual(err, $ifaceNil)))) { _v = false; $s = 4; continue s; }
161257
+ _r$1 = errors.Is(err, net.ErrClosed); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161258
+ _v = !_r$1; case 4:
161259
+ /* */ if (_v) { $s = 2; continue; }
161260
+ /* */ $s = 3; continue;
161261
+ /* if (_v) { */ case 2:
161262
+ $s = -1; return err;
161263
+ /* } */ case 3:
161264
+ $s = -1; return $ifaceNil;
161265
+ /* */ } return; } var $f = {$blk: JsWebsocketConn.ptr.prototype.Close, $c: true, $r, _r, _r$1, _v, c, err, $s};return $f;
161108
161266
  };
161109
161267
  JsWebsocketConn.prototype.Close = function() { return this.$val.Close(); };
161110
161268
  ConnectJsWebsocket = function(host, timeout, secure) {
@@ -161161,13 +161319,15 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
161161
161319
  $pkg.$init = function() {};
161162
161320
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
161163
161321
  $r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161164
- $r = websocket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161165
- $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161166
- $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161167
- $r = netnacltcp.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161168
- $r = netsamsungwasmtcp.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161169
- $r = js.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161170
- $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161322
+ $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161323
+ $r = websocket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161324
+ $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161325
+ $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161326
+ $r = netnacltcp.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161327
+ $r = netsamsungwasmtcp.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161328
+ $r = net.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161329
+ $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161330
+ $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161171
161331
  connects = $makeMap(Driver.keyFor, []);
161172
161332
  init();
161173
161333
  init$1();
@@ -161178,7 +161338,7 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
161178
161338
  return $pkg;
161179
161339
  })();
161180
161340
  $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161181
- var $pkg = {}, $init, bufio, base64, fmt, errs, helper, message, netstream, io, log, sync, time, Pinger, messageCallback, MetadataServer, response, MetadataResponsiveSender, MetadataMessageSender, MetadataClient, Framer, sliceType, sliceType$1, ptrType, funcType, sliceType$2, sliceType$3, ptrType$1, funcType$1, sliceType$4, ptrType$2, ptrType$3, funcType$2, funcType$3, ptrType$4, chanType, mapType, ptrType$5, ptrType$6, _r, NewPinger, NewMetadataServer, NewMetadataResponsiveSender, NewMetadataMessageSender, NewMetadataClient, NewFramer, splitFrames;
161341
+ var $pkg = {}, $init, bufio, base64, fmt, errs, helper, message, netstream, io, log, sync, atomic, time, Pinger, messageCallback, MetadataServer, response, MetadataResponsiveSender, MetadataMessageSender, MetadataClient, Framer, sliceType, structType, sliceType$1, ptrType, funcType, sliceType$2, sliceType$3, ptrType$1, funcType$1, sliceType$4, ptrType$2, ptrType$3, chanType, funcType$2, funcType$3, funcType$4, ptrType$4, chanType$1, mapType, ptrType$5, ptrType$6, _r, NewPinger, NewMetadataServer, NewMetadataResponsiveSender, NewMetadataMessageSender, NewMetadataClient, NewFramer, splitFrames;
161182
161342
  bufio = $packages["bufio"];
161183
161343
  base64 = $packages["encoding/base64"];
161184
161344
  fmt = $packages["fmt"];
@@ -161189,16 +161349,29 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161189
161349
  io = $packages["io"];
161190
161350
  log = $packages["log"];
161191
161351
  sync = $packages["sync"];
161352
+ atomic = $packages["sync/atomic"];
161192
161353
  time = $packages["time"];
161193
- Pinger = $pkg.Pinger = $newType(0, $kindStruct, "netclient.Pinger", true, "github.com/supraio/client-daemon/pkg/netclient", true, function(messageSender_, closed_) {
161354
+ Pinger = $pkg.Pinger = $newType(0, $kindStruct, "netclient.Pinger", true, "github.com/supraio/client-daemon/pkg/netclient", true, function(messageSender_, closed_, closeMu_, done_, stopped_, beforeSend_, afterSend_, onClose_) {
161194
161355
  this.$val = this;
161195
161356
  if (arguments.length === 0) {
161196
161357
  this.messageSender = $ifaceNil;
161197
161358
  this.closed = false;
161359
+ this.closeMu = new sync.Mutex.ptr(0, 0);
161360
+ this.done = $chanNil;
161361
+ this.stopped = $chanNil;
161362
+ this.beforeSend = $throwNilPointerError;
161363
+ this.afterSend = $throwNilPointerError;
161364
+ this.onClose = $throwNilPointerError;
161198
161365
  return;
161199
161366
  }
161200
161367
  this.messageSender = messageSender_;
161201
161368
  this.closed = closed_;
161369
+ this.closeMu = closeMu_;
161370
+ this.done = done_;
161371
+ this.stopped = stopped_;
161372
+ this.beforeSend = beforeSend_;
161373
+ this.afterSend = afterSend_;
161374
+ this.onClose = onClose_;
161202
161375
  });
161203
161376
  messageCallback = $pkg.messageCallback = $newType(0, $kindStruct, "netclient.messageCallback", true, "github.com/supraio/client-daemon/pkg/netclient", false, function(id_, callback_) {
161204
161377
  this.$val = this;
@@ -161215,7 +161388,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161215
161388
  if (arguments.length === 0) {
161216
161389
  this.framer = ptrType.nil;
161217
161390
  this.closeClient = $throwNilPointerError;
161218
- this.closed = false;
161391
+ this.closed = new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0);
161219
161392
  this.onClose = sliceType$2.nil;
161220
161393
  this.onMessage = sliceType$3.nil;
161221
161394
  this.nextMessageID = 0;
@@ -161293,6 +161466,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161293
161466
  this.sendMu = sendMu_;
161294
161467
  });
161295
161468
  sliceType = $sliceType($emptyInterface);
161469
+ structType = $structType("", []);
161296
161470
  sliceType$1 = $sliceType($Uint8);
161297
161471
  ptrType = $ptrType(Framer);
161298
161472
  funcType = $funcType([$String], [], false);
@@ -161303,77 +161477,156 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161303
161477
  sliceType$4 = $sliceType(funcType$1);
161304
161478
  ptrType$2 = $ptrType(bufio.Scanner);
161305
161479
  ptrType$3 = $ptrType(Pinger);
161306
- funcType$2 = $funcType([message.MsgType, sliceType$1], [], false);
161307
- funcType$3 = $funcType([], [$error], false);
161480
+ chanType = $chanType(structType, false, false);
161481
+ funcType$2 = $funcType([], [], false);
161482
+ funcType$3 = $funcType([message.MsgType, sliceType$1], [], false);
161483
+ funcType$4 = $funcType([], [$error], false);
161308
161484
  ptrType$4 = $ptrType(MetadataResponsiveSender);
161309
- chanType = $chanType(response, false, false);
161310
- mapType = $mapType($String, chanType);
161485
+ chanType$1 = $chanType(response, false, false);
161486
+ mapType = $mapType($String, chanType$1);
161311
161487
  ptrType$5 = $ptrType(MetadataMessageSender);
161312
161488
  ptrType$6 = $ptrType(MetadataClient);
161313
161489
  NewPinger = function(messageSender) {
161314
161490
  var messageSender;
161315
- return new Pinger.ptr(messageSender, true);
161491
+ return new Pinger.ptr(messageSender, true, new sync.Mutex.ptr(0, 0), new $Chan(structType, 0), new $Chan(structType, 0), $throwNilPointerError, $throwNilPointerError, $throwNilPointerError);
161316
161492
  };
161317
161493
  $pkg.NewPinger = NewPinger;
161318
161494
  Pinger.ptr.prototype.Start = function() {
161319
- var h;
161495
+ var {h, $s, $r, $c} = $restore(this, {});
161496
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161320
161497
  h = this;
161498
+ $r = h.closeMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161321
161499
  h.closed = false;
161500
+ $r = h.closeMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161322
161501
  $go($methodVal(h, "startPinging"), []);
161502
+ $s = -1; return;
161503
+ /* */ } return; } var $f = {$blk: Pinger.ptr.prototype.Start, $c: true, $r, h, $s};return $f;
161323
161504
  };
161324
161505
  Pinger.prototype.Start = function() { return this.$val.Start(); };
161325
161506
  Pinger.ptr.prototype.Close = function() {
161326
- var h;
161507
+ var {h, $s, $deferred, $r, $c} = $restore(this, {});
161508
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
161327
161509
  h = this;
161510
+ $r = h.closeMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161511
+ $deferred.push([$methodVal(h.closeMu, "Unlock"), []]);
161512
+ /* */ if (h.closed) { $s = 2; continue; }
161513
+ /* */ $s = 3; continue;
161514
+ /* if (h.closed) { */ case 2:
161515
+ $s = 4; case 4: return;
161516
+ /* } */ case 3:
161328
161517
  h.closed = true;
161518
+ $close(h.done);
161519
+ /* */ if (!(h.onClose === $throwNilPointerError)) { $s = 5; continue; }
161520
+ /* */ $s = 6; continue;
161521
+ /* if (!(h.onClose === $throwNilPointerError)) { */ case 5:
161522
+ $r = h.onClose(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161523
+ /* } */ case 6:
161524
+ $s = -1; return;
161525
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Pinger.ptr.prototype.Close, $c: true, $r, h, $s, $deferred};return $f; } }
161329
161526
  };
161330
161527
  Pinger.prototype.Close = function() { return this.$val.Close(); };
161331
- Pinger.ptr.prototype.startPinging = function() {
161332
- var {_r$1, err, h, $s, $r, $c} = $restore(this, {});
161528
+ Pinger.ptr.prototype.Wait = function(timeout) {
161529
+ var {_r$1, _r$2, _selection, h, timeout, $s, $r, $c} = $restore(this, {timeout});
161333
161530
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161334
161531
  h = this;
161532
+ _r$1 = time.After(timeout); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161533
+ _r$2 = $select([[h.stopped], [_r$1]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
161534
+ _selection = _r$2;
161535
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
161536
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
161537
+ /* */ $s = 5; continue;
161538
+ /* if (_selection[0] === 0) { */ case 3:
161539
+ $s = -1; return true;
161540
+ /* } else if (_selection[0] === 1) { */ case 4:
161541
+ $s = -1; return false;
161542
+ /* } */ case 5:
161543
+ $s = -1; return false;
161544
+ /* */ } return; } var $f = {$blk: Pinger.ptr.prototype.Wait, $c: true, $r, _r$1, _r$2, _selection, h, timeout, $s};return $f;
161545
+ };
161546
+ Pinger.prototype.Wait = function(timeout) { return this.$val.Wait(timeout); };
161547
+ Pinger.ptr.prototype.startPinging = function() {
161548
+ var {_arg, _r$1, _r$2, _r$3, _selection, err, h, $s, $deferred, $r, $c} = $restore(this, {});
161549
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
161550
+ h = this;
161551
+ $deferred.push([function(_arg) { $close(_arg); }, [h.stopped]]);
161335
161552
  /* while (true) { */ case 1:
161336
- /* if (!(!h.closed)) { break; } */ if(!(!h.closed)) { $s = 2; continue; }
161337
- _r$1 = h.messageSender.Send(2, new sliceType$1([])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161553
+ /* */ if (!(h.beforeSend === $throwNilPointerError)) { $s = 3; continue; }
161554
+ /* */ $s = 4; continue;
161555
+ /* if (!(h.beforeSend === $throwNilPointerError)) { */ case 3:
161556
+ $r = h.beforeSend(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161557
+ /* } */ case 4:
161558
+ _r$1 = h.messageSender.Send(2, new sliceType$1([])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161338
161559
  err = _r$1;
161339
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
161340
- /* */ $s = 5; continue;
161341
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
161342
- $r = errs.Print("Ping error", err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161343
- /* } */ case 5:
161344
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161560
+ /* */ if (!(h.afterSend === $throwNilPointerError)) { $s = 7; continue; }
161561
+ /* */ $s = 8; continue;
161562
+ /* if (!(h.afterSend === $throwNilPointerError)) { */ case 7:
161563
+ $r = h.afterSend(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161564
+ /* } */ case 8:
161565
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
161566
+ /* */ $s = 11; continue;
161567
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
161568
+ $r = errs.Print("Ping error", err); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161569
+ /* } */ case 11:
161570
+ _r$2 = time.After(new time.Duration(0, 1000000000)); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
161571
+ _r$3 = $select([[_r$2], [h.done]]); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
161572
+ _selection = _r$3;
161573
+ /* */ if (_selection[0] === 0) { $s = 15; continue; }
161574
+ /* */ if (_selection[0] === 1) { $s = 16; continue; }
161575
+ /* */ $s = 17; continue;
161576
+ /* if (_selection[0] === 0) { */ case 15:
161577
+ $s = 17; continue;
161578
+ /* } else if (_selection[0] === 1) { */ case 16:
161579
+ $s = 18; case 18: return;
161580
+ /* } */ case 17:
161345
161581
  $s = 1; continue;
161346
161582
  case 2:
161347
161583
  $s = -1; return;
161348
- /* */ } return; } var $f = {$blk: Pinger.ptr.prototype.startPinging, $c: true, $r, _r$1, err, h, $s};return $f;
161584
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Pinger.ptr.prototype.startPinging, $c: true, $r, _arg, _r$1, _r$2, _r$3, _selection, err, h, $s, $deferred};return $f; } }
161349
161585
  };
161350
161586
  Pinger.prototype.startPinging = function() { return this.$val.startPinging(); };
161351
161587
  NewMetadataServer = function(framer, closeClient) {
161352
161588
  var closeClient, framer;
161353
- return new MetadataServer.ptr(framer, closeClient, false, sliceType$2.nil, sliceType$3.nil, 0);
161589
+ return new MetadataServer.ptr(framer, closeClient, new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0), sliceType$2.nil, sliceType$3.nil, 0);
161354
161590
  };
161355
161591
  $pkg.NewMetadataServer = NewMetadataServer;
161356
161592
  MetadataServer.ptr.prototype.start = function() {
161357
- var pinger, s;
161593
+ var {$24r, _r$1, pinger, s, $s, $r, $c} = $restore(this, {});
161594
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161358
161595
  s = this;
161359
161596
  pinger = NewPinger(NewMetadataMessageSender(s));
161360
- pinger.Start();
161361
- s.OnClose((function(reason) {
161362
- var reason;
161363
- pinger.Close();
161364
- }));
161365
- $go($methodVal(s, "handleData"), []);
161597
+ _r$1 = s.startPinger(pinger); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161598
+ $24r = _r$1;
161599
+ $s = 2; case 2: return $24r;
161600
+ /* */ } return; } var $f = {$blk: MetadataServer.ptr.prototype.start, $c: true, $r, $24r, _r$1, pinger, s, $s};return $f;
161366
161601
  };
161367
161602
  MetadataServer.prototype.start = function() { return this.$val.start(); };
161603
+ MetadataServer.ptr.prototype.startPinger = function(pinger) {
161604
+ var {pinger, s, $s, $r, $c} = $restore(this, {pinger});
161605
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161606
+ pinger = [pinger];
161607
+ s = this;
161608
+ s.OnClose((function(pinger) { return function $b(reason) {
161609
+ var {reason, $s, $r, $c} = $restore(this, {reason});
161610
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161611
+ $r = pinger[0].Close(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161612
+ $s = -1; return;
161613
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, reason, $s};return $f;
161614
+ }; })(pinger));
161615
+ $r = pinger[0].Start(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161616
+ $go($methodVal(s, "handleData"), []);
161617
+ $s = -1; return pinger[0];
161618
+ /* */ } return; } var $f = {$blk: MetadataServer.ptr.prototype.startPinger, $c: true, $r, pinger, s, $s};return $f;
161619
+ };
161620
+ MetadataServer.prototype.startPinger = function(pinger) { return this.$val.startPinger(pinger); };
161368
161621
  MetadataServer.ptr.prototype.Send = function(data) {
161369
161622
  var {$24r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, closeErr, data, err, s, writtenLength, $s, $r, $c} = $restore(this, {data});
161370
161623
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161371
161624
  writtenLength = 0;
161372
161625
  err = $ifaceNil;
161373
161626
  s = this;
161374
- /* */ if (s.closed) { $s = 1; continue; }
161627
+ /* */ if (s.closed.Load()) { $s = 1; continue; }
161375
161628
  /* */ $s = 2; continue;
161376
- /* if (s.closed) { */ case 1:
161629
+ /* if (s.closed.Load()) { */ case 1:
161377
161630
  _tmp = 0;
161378
161631
  _r$1 = errs.Errorf("Client is already closed", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161379
161632
  _tmp$1 = _r$1;
@@ -161396,9 +161649,9 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161396
161649
  /* if (!($interfaceIsEqual(closeErr, $ifaceNil))) { */ case 9:
161397
161650
  $r = errs.Print("Close error", closeErr); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161398
161651
  /* } */ case 10:
161399
- /* */ if (!($interfaceIsEqual(err, io.EOF)) && !s.closed) { $s = 12; continue; }
161652
+ /* */ if (!($interfaceIsEqual(err, io.EOF)) && !s.closed.Load()) { $s = 12; continue; }
161400
161653
  /* */ $s = 13; continue;
161401
- /* if (!($interfaceIsEqual(err, io.EOF)) && !s.closed) { */ case 12:
161654
+ /* if (!($interfaceIsEqual(err, io.EOF)) && !s.closed.Load()) { */ case 12:
161402
161655
  $r = errs.Print("Data error", err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161403
161656
  /* } */ case 13:
161404
161657
  _tmp$2 = 0;
@@ -161459,10 +161712,9 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161459
161712
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161460
161713
  s = this;
161461
161714
  $r = log.Printf("Metadata server is closing. Reason: %s", new sliceType([new $String(reason)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161462
- if (s.closed) {
161715
+ if (s.closed.Swap(true)) {
161463
161716
  $s = -1; return $ifaceNil;
161464
161717
  }
161465
- s.closed = true;
161466
161718
  _r$1 = s.closeClient(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161467
161719
  err = _r$1;
161468
161720
  _ref = s.onClose;
@@ -161483,7 +161735,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161483
161735
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161484
161736
  s = this;
161485
161737
  /* while (true) { */ case 1:
161486
- /* if (!(!s.closed)) { break; } */ if(!(!s.closed)) { $s = 2; continue; }
161738
+ /* if (!(!s.closed.Load())) { break; } */ if(!(!s.closed.Load())) { $s = 2; continue; }
161487
161739
  _r$1 = s.framer.Receive(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
161488
161740
  _tuple = _r$1;
161489
161741
  dataBuffer = _tuple[0];
@@ -161499,9 +161751,9 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161499
161751
  /* if (!($interfaceIsEqual(closeErr, $ifaceNil))) { */ case 8:
161500
161752
  $r = errs.Print("Close error", closeErr); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161501
161753
  /* } */ case 9:
161502
- /* */ if (!($interfaceIsEqual(err, io.EOF)) && !s.closed) { $s = 11; continue; }
161754
+ /* */ if (!($interfaceIsEqual(err, io.EOF)) && !s.closed.Load()) { $s = 11; continue; }
161503
161755
  /* */ $s = 12; continue;
161504
- /* if (!($interfaceIsEqual(err, io.EOF)) && !s.closed) { */ case 11:
161756
+ /* if (!($interfaceIsEqual(err, io.EOF)) && !s.closed.Load()) { */ case 11:
161505
161757
  $r = errs.Print("Data error", err); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161506
161758
  /* } */ case 12:
161507
161759
  $s = -1; return;
@@ -161661,7 +161913,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161661
161913
  };
161662
161914
  $pkg.NewMetadataClient = NewMetadataClient;
161663
161915
  MetadataClient.ptr.prototype.Connect = function() {
161664
- var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, err, framer, readyBuffer, readyMsg, server, $s, $r, $c} = $restore(this, {});
161916
+ var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, err, framer, readyBuffer, readyMsg, server, $s, $r, $c} = $restore(this, {});
161665
161917
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
161666
161918
  c = [c];
161667
161919
  server = ptrType$1.nil;
@@ -161725,13 +161977,14 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161725
161977
  $24r$1 = [server, err];
161726
161978
  $s = 14; case 14: return $24r$1;
161727
161979
  /* } */ case 8:
161728
- server.start();
161980
+ _r$6 = server.start(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
161981
+ _r$6;
161729
161982
  _tmp$8 = server;
161730
161983
  _tmp$9 = $ifaceNil;
161731
161984
  server = _tmp$8;
161732
161985
  err = _tmp$9;
161733
161986
  $s = -1; return [server, err];
161734
- /* */ } return; } var $f = {$blk: MetadataClient.ptr.prototype.Connect, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, err, framer, readyBuffer, readyMsg, server, $s};return $f;
161987
+ /* */ } return; } var $f = {$blk: MetadataClient.ptr.prototype.Connect, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, err, framer, readyBuffer, readyMsg, server, $s};return $f;
161735
161988
  };
161736
161989
  MetadataClient.prototype.Connect = function() { return this.$val.Connect(); };
161737
161990
  NewFramer = function(readerWriter) {
@@ -161818,15 +162071,15 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161818
162071
  /* */ } return; } var $f = {$blk: Framer.ptr.prototype.Receive, $c: true, $r, $24r, _r$1, _r$2, _tuple, decodedFrame, err, err$1, f, frame, $s};return $f;
161819
162072
  };
161820
162073
  Framer.prototype.Receive = function() { return this.$val.Receive(); };
161821
- ptrType$3.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "startPinging", name: "startPinging", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [], false)}];
161822
- ptrType$1.methods = [{prop: "start", name: "start", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "OnMessage", name: "OnMessage", pkg: "", typ: $funcType([funcType$2], [$Int], false)}, {prop: "OffMessage", name: "OffMessage", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "handleData", name: "handleData", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [], false)}];
162074
+ ptrType$3.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([time.Duration], [$Bool], false)}, {prop: "startPinging", name: "startPinging", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [], false)}];
162075
+ ptrType$1.methods = [{prop: "start", name: "start", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [ptrType$3], false)}, {prop: "startPinger", name: "startPinger", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([ptrType$3], [ptrType$3], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "OnMessage", name: "OnMessage", pkg: "", typ: $funcType([funcType$3], [$Int], false)}, {prop: "OffMessage", name: "OffMessage", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "handleData", name: "handleData", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [], false)}];
161823
162076
  ptrType$4.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "SendServerWaitResponse", name: "SendServerWaitResponse", pkg: "", typ: $funcType([message.MsgType, sliceType$1], [sliceType$1, $error], false)}, {prop: "handleServerData", name: "handleServerData", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([message.MsgType, sliceType$1], [], false)}];
161824
162077
  ptrType$5.methods = [{prop: "Send", name: "Send", pkg: "", typ: $funcType([message.MsgType, sliceType$1], [$error], false)}];
161825
162078
  ptrType$6.methods = [{prop: "Connect", name: "Connect", pkg: "", typ: $funcType([], [ptrType$1, $error], false)}];
161826
162079
  ptrType.methods = [{prop: "Send", name: "Send", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Receive", name: "Receive", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}];
161827
- Pinger.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}]);
161828
- messageCallback.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "id", name: "id", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "callback", name: "callback", embedded: false, exported: false, typ: funcType$2, tag: ""}]);
161829
- MetadataServer.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "framer", name: "framer", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "closeClient", name: "closeClient", embedded: false, exported: false, typ: funcType$3, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "onMessage", name: "onMessage", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "nextMessageID", name: "nextMessageID", embedded: false, exported: false, typ: $Int, tag: ""}]);
162080
+ Pinger.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "closeMu", name: "closeMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "beforeSend", name: "beforeSend", embedded: false, exported: false, typ: funcType$2, tag: ""}, {prop: "afterSend", name: "afterSend", embedded: false, exported: false, typ: funcType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: funcType$2, tag: ""}]);
162081
+ messageCallback.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "id", name: "id", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "callback", name: "callback", embedded: false, exported: false, typ: funcType$3, tag: ""}]);
162082
+ MetadataServer.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "framer", name: "framer", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "closeClient", name: "closeClient", embedded: false, exported: false, typ: funcType$4, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: atomic.Bool, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "onMessage", name: "onMessage", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "nextMessageID", name: "nextMessageID", embedded: false, exported: false, typ: $Int, tag: ""}]);
161830
162083
  response.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "err", name: "err", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
161831
162084
  MetadataResponsiveSender.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "requests", name: "requests", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "callbackID", name: "callbackID", embedded: false, exported: false, typ: $Int, tag: ""}]);
161832
162085
  MetadataMessageSender.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$1, tag: ""}]);
@@ -161845,8 +162098,9 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161845
162098
  $r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161846
162099
  $r = log.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161847
162100
  $r = sync.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161848
- $r = time.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
161849
- _r = fmt.Errorf("frame size exceeded maximum of %d bytes", new sliceType([new $Int(1048576)])); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
162101
+ $r = atomic.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162102
+ $r = time.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162103
+ _r = fmt.Errorf("frame size exceeded maximum of %d bytes", new sliceType([new $Int(1048576)])); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
161850
162104
  $pkg.ErrFrameTooLarge = _r;
161851
162105
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
161852
162106
  };
@@ -161854,13 +162108,16 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
161854
162108
  return $pkg;
161855
162109
  })();
161856
162110
  $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
161857
- var $pkg = {}, $init, context, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, Driver, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket;
162111
+ var $pkg = {}, $init, context, errors, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, net, strings, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, Driver, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, getPerformanceTimestamp, ConnectJsWebsocket;
161858
162112
  context = $packages["context"];
162113
+ errors = $packages["errors"];
161859
162114
  websocket = $packages["github.com/coder/websocket"];
161860
162115
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
161861
162116
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
161862
162117
  netnacltcp = $packages["github.com/supraio/client-daemon/pkg/netnacltcp"];
161863
162118
  netsamsungwasmtcp = $packages["github.com/supraio/client-daemon/pkg/netsamsungwasmtcp"];
162119
+ net = $packages["net"];
162120
+ strings = $packages["strings"];
161864
162121
  js = $packages["syscall/js"];
161865
162122
  time = $packages["time"];
161866
162123
  SamsungWasmTCPConn = $pkg.SamsungWasmTCPConn = $newType(0, $kindStruct, "netpacket.SamsungWasmTCPConn", true, "github.com/supraio/client-daemon/pkg/netpacket", true, function(conn_) {
@@ -162187,13 +162444,28 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
162187
162444
  };
162188
162445
  JsWebsocketConn.prototype.Read = function(data) { return this.$val.Read(data); };
162189
162446
  JsWebsocketConn.ptr.prototype.Close = function() {
162190
- var {$24r, _r, c, $s, $r, $c} = $restore(this, {});
162447
+ var {_r, _r$1, _r$2, _r$3, _v, c, err, $s, $r, $c} = $restore(this, {});
162191
162448
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
162192
162449
  c = this;
162193
- _r = c.conn.Close(1000, "Closed by client"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
162194
- $24r = _r;
162195
- $s = 2; case 2: return $24r;
162196
- /* */ } return; } var $f = {$blk: JsWebsocketConn.ptr.prototype.Close, $c: true, $r, $24r, _r, c, $s};return $f;
162450
+ _r = c.conn.CloseNow(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
162451
+ err = _r;
162452
+ if (!(!($interfaceIsEqual(err, $ifaceNil)))) { _v = false; $s = 4; continue s; }
162453
+ _r$1 = errors.Is(err, net.ErrClosed); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
162454
+ _v = !_r$1; case 4:
162455
+ /* */ if (_v) { $s = 2; continue; }
162456
+ /* */ $s = 3; continue;
162457
+ /* if (_v) { */ case 2:
162458
+ _r$2 = err.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
162459
+ _r$3 = strings.Contains(_r$2, "close code"); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
162460
+ /* */ if (_r$3) { $s = 6; continue; }
162461
+ /* */ $s = 7; continue;
162462
+ /* if (_r$3) { */ case 6:
162463
+ $s = -1; return $ifaceNil;
162464
+ /* } */ case 7:
162465
+ $s = -1; return err;
162466
+ /* } */ case 3:
162467
+ $s = -1; return $ifaceNil;
162468
+ /* */ } return; } var $f = {$blk: JsWebsocketConn.ptr.prototype.Close, $c: true, $r, _r, _r$1, _r$2, _r$3, _v, c, err, $s};return $f;
162197
162469
  };
162198
162470
  JsWebsocketConn.prototype.Close = function() { return this.$val.Close(); };
162199
162471
  JsWebsocketWorkerConn.ptr.prototype.Write = function(data) {
@@ -162249,7 +162521,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
162249
162521
  };
162250
162522
  JsWebsocketWorkerConn.prototype.Close = function() { return this.$val.Close(); };
162251
162523
  JsWebsocketWorkerConn.ptr.prototype.CollectFrame = function() {
162252
- var {$24r, _r, _r$1, _r$2, _tuple, c, err, frame, $s, $r, $c} = $restore(this, {});
162524
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, err, frame, $s, $r, $c} = $restore(this, {});
162253
162525
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
162254
162526
  c = this;
162255
162527
  _r = $clone(c.conn, js.Value).Call("collectFrame", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -162261,13 +162533,56 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
162261
162533
  /* */ $s = 4; continue;
162262
162534
  /* if (!(err === ptrType.nil)) { */ case 3:
162263
162535
  _r$2 = jshelper.GetError(err); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
162264
- $24r = [ptrType.nil, _r$2];
162536
+ $24r = [ptrType.nil, 0, _r$2];
162265
162537
  $s = 6; case 6: return $24r;
162266
162538
  /* } */ case 4:
162267
- $s = -1; return [frame, $ifaceNil];
162268
- /* */ } return; } var $f = {$blk: JsWebsocketWorkerConn.ptr.prototype.CollectFrame, $c: true, $r, $24r, _r, _r$1, _r$2, _tuple, c, err, frame, $s};return $f;
162539
+ /* */ if (frame === ptrType.nil || $clone(frame, js.Value).IsUndefined() || $clone(frame, js.Value).IsNull()) { $s = 7; continue; }
162540
+ /* */ $s = 8; continue;
162541
+ /* if (frame === ptrType.nil || $clone(frame, js.Value).IsUndefined() || $clone(frame, js.Value).IsNull()) { */ case 7:
162542
+ _r$3 = errs.Errorf("Worker frame collection returned no frame", sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
162543
+ $24r$1 = [ptrType.nil, 0, _r$3];
162544
+ $s = 10; case 10: return $24r$1;
162545
+ /* } */ case 8:
162546
+ _r$4 = getPerformanceTimestamp(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
162547
+ $24r$2 = [frame, _r$4, $ifaceNil];
162548
+ $s = 12; case 12: return $24r$2;
162549
+ /* */ } return; } var $f = {$blk: JsWebsocketWorkerConn.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, err, frame, $s};return $f;
162269
162550
  };
162270
162551
  JsWebsocketWorkerConn.prototype.CollectFrame = function() { return this.$val.CollectFrame(); };
162552
+ getPerformanceTimestamp = function() {
162553
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, date, global, now, performance, timeOrigin, $s, $r, $c} = $restore(this, {});
162554
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
162555
+ global = $clone(js.Global(), js.Value);
162556
+ performance = $clone($clone(global, js.Value).Get("performance"), js.Value);
162557
+ /* */ if (!$clone(performance, js.Value).IsUndefined() && !$clone(performance, js.Value).IsNull()) { $s = 1; continue; }
162558
+ /* */ $s = 2; continue;
162559
+ /* if (!$clone(performance, js.Value).IsUndefined() && !$clone(performance, js.Value).IsNull()) { */ case 1:
162560
+ timeOrigin = $clone($clone(performance, js.Value).Get("timeOrigin"), js.Value);
162561
+ now = $clone($clone(performance, js.Value).Get("now"), js.Value);
162562
+ /* */ if (($clone(timeOrigin, js.Value).Type() === 3) && ($clone(now, js.Value).Type() === 7)) { $s = 3; continue; }
162563
+ /* */ $s = 4; continue;
162564
+ /* if (($clone(timeOrigin, js.Value).Type() === 3) && ($clone(now, js.Value).Type() === 7)) { */ case 3:
162565
+ _r = $clone(performance, js.Value).Call("now", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
162566
+ _r$1 = $clone(_r, js.Value).Float(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
162567
+ $24r = $clone(timeOrigin, js.Value).Float() + _r$1;
162568
+ $s = 7; case 7: return $24r;
162569
+ /* } */ case 4:
162570
+ /* } */ case 2:
162571
+ date = $clone($clone(global, js.Value).Get("Date"), js.Value);
162572
+ /* */ if (!$clone(date, js.Value).IsUndefined() && !$clone(date, js.Value).IsNull() && ($clone($clone(date, js.Value).Get("now"), js.Value).Type() === 7)) { $s = 8; continue; }
162573
+ /* */ $s = 9; continue;
162574
+ /* if (!$clone(date, js.Value).IsUndefined() && !$clone(date, js.Value).IsNull() && ($clone($clone(date, js.Value).Get("now"), js.Value).Type() === 7)) { */ case 8:
162575
+ _r$2 = $clone(date, js.Value).Call("now", sliceType.nil); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
162576
+ _r$3 = $clone(_r$2, js.Value).Float(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
162577
+ $24r$1 = _r$3;
162578
+ $s = 12; case 12: return $24r$1;
162579
+ /* } */ case 9:
162580
+ _r$4 = time.Now(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
162581
+ _r$5 = $clone(_r$4, time.Time).UnixNano(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
162582
+ $24r$2 = ($flatten64(_r$5)) / 1e+06;
162583
+ $s = 15; case 15: return $24r$2;
162584
+ /* */ } return; } var $f = {$blk: getPerformanceTimestamp, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, date, global, now, performance, timeOrigin, $s};return $f;
162585
+ };
162271
162586
  ConnectJsWebsocket = function(host, timeout, secure) {
162272
162587
  var {$24r, $24r$1, $24r$2, _r, _r$1, _tuple, _tuple$1, cancel, conn, ctx, err, host, protocol, secure, timeout, url, workerFactory, $s, $deferred, $r, $c} = $restore(this, {host, timeout, secure});
162273
162588
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -162306,7 +162621,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
162306
162621
  ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
162307
162622
  ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
162308
162623
  ptrType$4.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
162309
- ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType, $error], false)}];
162624
+ ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType, $Float64, $error], false)}];
162310
162625
  SamsungWasmTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
162311
162626
  NaClTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
162312
162627
  JsWebsocketConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType$3, tag: ""}]);
@@ -162315,13 +162630,16 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
162315
162630
  $pkg.$init = function() {};
162316
162631
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
162317
162632
  $r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162318
- $r = websocket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162319
- $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162320
- $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162321
- $r = netnacltcp.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162322
- $r = netsamsungwasmtcp.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162323
- $r = js.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162324
- $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162633
+ $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162634
+ $r = websocket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162635
+ $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162636
+ $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162637
+ $r = netnacltcp.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162638
+ $r = netsamsungwasmtcp.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162639
+ $r = net.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162640
+ $r = strings.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162641
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162642
+ $r = time.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
162325
162643
  connects = $makeMap(Driver.keyFor, []);
162326
162644
  maxPacketSizes = $makeMap(Driver.keyFor, []);
162327
162645
  init();
@@ -183203,7 +183521,7 @@ $packages["golang.org/x/mobile/event/touch"] = (function() {
183203
183521
  return $pkg;
183204
183522
  })();
183205
183523
  $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183206
- var $pkg = {}, $init, focus, key, mouse, size, touch, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, GetBrowserZoomRatio, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
183524
+ var $pkg = {}, $init, focus, key, mouse, size, touch, geom, math, strings, js, DomEvents, sliceType, funcType, arrayType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEventsForTarget, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
183207
183525
  focus = $packages["golang.org/x/mobile/event/focus"];
183208
183526
  key = $packages["golang.org/x/mobile/event/key"];
183209
183527
  mouse = $packages["golang.org/x/mobile/event/mouse"];
@@ -183213,18 +183531,21 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183213
183531
  math = $packages["math"];
183214
183532
  strings = $packages["strings"];
183215
183533
  js = $packages["syscall/js"];
183216
- DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/util/dom", true, function(eventChan_, releases_) {
183534
+ DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/util/dom", true, function(eventChan_, inputTarget_, releases_) {
183217
183535
  this.$val = this;
183218
183536
  if (arguments.length === 0) {
183219
183537
  this.eventChan = $chanNil;
183538
+ this.inputTarget = new js.Value.ptr(null, false, arrayType.zero());
183220
183539
  this.releases = sliceType$1.nil;
183221
183540
  return;
183222
183541
  }
183223
183542
  this.eventChan = eventChan_;
183543
+ this.inputTarget = inputTarget_;
183224
183544
  this.releases = releases_;
183225
183545
  });
183226
183546
  sliceType = $sliceType($emptyInterface);
183227
183547
  funcType = $funcType([], [], false);
183548
+ arrayType = $arrayType(funcType, 0);
183228
183549
  sliceType$1 = $sliceType(funcType);
183229
183550
  sliceType$2 = $sliceType($Int32);
183230
183551
  chanType = $chanType($emptyInterface, false, false);
@@ -183245,20 +183566,6 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183245
183566
  return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
183246
183567
  };
183247
183568
  $pkg.GetScreenHeight = GetScreenHeight;
183248
- GetBrowserZoomRatio = function() {
183249
- var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
183250
- windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
183251
- windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
183252
- docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
183253
- scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
183254
- chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
183255
- scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
183256
- chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
183257
- scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
183258
- chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
183259
- return chromeZoom3;
183260
- };
183261
- $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
183262
183569
  SetWindowWidth = function(newInnerWidth) {
183263
183570
  var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
183264
183571
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -183324,10 +183631,11 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183324
183631
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return orientation[0]; } if($curGoroutine.asleep) { var $f = {$blk: GetOrientation, $c: true, $r, $24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred};return $f; } }
183325
183632
  };
183326
183633
  $pkg.GetOrientation = GetOrientation;
183327
- NewDomEvents = function() {
183328
- return new DomEvents.ptr(new $Chan($emptyInterface, 256), $makeSlice(sliceType$1, 0));
183634
+ NewDomEventsForTarget = function(inputTarget) {
183635
+ var inputTarget;
183636
+ return new DomEvents.ptr(new $Chan($emptyInterface, 256), $clone(inputTarget, js.Value), $makeSlice(sliceType$1, 0));
183329
183637
  };
183330
- $pkg.NewDomEvents = NewDomEvents;
183638
+ $pkg.NewDomEventsForTarget = NewDomEventsForTarget;
183331
183639
  DomEvents.ptr.prototype.GetEventChan = function() {
183332
183640
  var d;
183333
183641
  d = this;
@@ -183407,6 +183715,22 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183407
183715
  /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
183408
183716
  };
183409
183717
  DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
183718
+ DomEvents.ptr.prototype.inputPosition = function(ev) {
183719
+ var {_r, d, ev, getBoundingClientRect, rect, $s, $r, $c} = $restore(this, {ev});
183720
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183721
+ d = this;
183722
+ getBoundingClientRect = $clone($clone(d.inputTarget, js.Value).Get("getBoundingClientRect"), js.Value);
183723
+ /* */ if ($clone(getBoundingClientRect, js.Value).Type() === 7) { $s = 1; continue; }
183724
+ /* */ $s = 2; continue;
183725
+ /* if ($clone(getBoundingClientRect, js.Value).Type() === 7) { */ case 1:
183726
+ _r = $clone(d.inputTarget, js.Value).Call("getBoundingClientRect", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183727
+ rect = $clone(_r, js.Value);
183728
+ $s = -1; return [($fround($clone($clone(ev, js.Value).Get("clientX"), js.Value).Float() - $clone($clone(rect, js.Value).Get("left"), js.Value).Float())), ($fround($clone($clone(ev, js.Value).Get("clientY"), js.Value).Float() - $clone($clone(rect, js.Value).Get("top"), js.Value).Float()))];
183729
+ /* } */ case 2:
183730
+ $s = -1; return [($fround($clone($clone(ev, js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone(ev, js.Value).Get("offsetY"), js.Value).Float()))];
183731
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.inputPosition, $c: true, $r, _r, d, ev, getBoundingClientRect, rect, $s};return $f;
183732
+ };
183733
+ DomEvents.prototype.inputPosition = function(ev) { return this.$val.inputPosition(ev); };
183410
183734
  DomEvents.ptr.prototype.bindMouseEvents = function() {
183411
183735
  var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
183412
183736
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -183416,48 +183740,60 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183416
183740
  onWheel = [onWheel];
183417
183741
  d[0] = this;
183418
183742
  onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
183419
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
183743
+ var {_r, _r$1, _tuple, args, this$1, x, x$1, y, $s, $r, $c} = $restore(this, {this$1, args});
183420
183744
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183421
183745
  _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183422
183746
  _r;
183423
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183747
+ _r$1 = d[0].inputPosition($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183748
+ _tuple = _r$1;
183749
+ x = _tuple[0];
183750
+ y = _tuple[1];
183751
+ $r = $send(d[0].eventChan, (x$1 = new mouse.Event.ptr(x, y, 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x$1.constructor.elem(x$1))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183424
183752
  $s = -1; return $ifaceNil;
183425
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
183753
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, args, this$1, x, x$1, y, $s};return $f;
183426
183754
  }; })(d, onClick, onMove, onWheel)), js.Func);
183427
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183755
+ _r = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183428
183756
  _r;
183429
183757
  onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
183430
- var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
183758
+ var {_r$1, _r$2, _tuple, args, this$1, x, x$1, y, $s, $r, $c} = $restore(this, {this$1, args});
183431
183759
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183432
183760
  _r$1 = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183433
183761
  _r$1;
183434
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183762
+ _r$2 = d[0].inputPosition($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183763
+ _tuple = _r$2;
183764
+ x = _tuple[0];
183765
+ y = _tuple[1];
183766
+ $r = $send(d[0].eventChan, (x$1 = new mouse.Event.ptr(x, y, getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x$1.constructor.elem(x$1))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183435
183767
  $s = -1; return $ifaceNil;
183436
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
183768
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, _r$2, _tuple, args, this$1, x, x$1, y, $s};return $f;
183437
183769
  }; })(d, onClick, onMove, onWheel)), js.Func);
183438
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183770
+ _r$1 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183439
183771
  _r$1;
183440
- _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183772
+ _r$2 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183441
183773
  _r$2;
183442
183774
  onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
183443
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
183775
+ var {_r$3, _tuple, args, this$1, x, x$1, y, $s, $r, $c} = $restore(this, {this$1, args});
183444
183776
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183445
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183777
+ _r$3 = d[0].inputPosition($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183778
+ _tuple = _r$3;
183779
+ x = _tuple[0];
183780
+ y = _tuple[1];
183781
+ $r = $send(d[0].eventChan, (x$1 = new mouse.Event.ptr(x, y, getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183446
183782
  $s = -1; return $ifaceNil;
183447
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
183783
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$3, _tuple, args, this$1, x, x$1, y, $s};return $f;
183448
183784
  }; })(d, onClick, onMove, onWheel)), js.Func);
183449
- _r$3 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183785
+ _r$3 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183450
183786
  _r$3;
183451
183787
  d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
183452
183788
  var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
183453
183789
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183454
- _r$4 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
183790
+ _r$4 = $clone(d[0].inputTarget, js.Value).Call("removeEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
183455
183791
  _r$4;
183456
- _r$5 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
183792
+ _r$5 = $clone(d[0].inputTarget, js.Value).Call("removeEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
183457
183793
  _r$5;
183458
- _r$6 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
183794
+ _r$6 = $clone(d[0].inputTarget, js.Value).Call("removeEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
183459
183795
  _r$6;
183460
- _r$7 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
183796
+ _r$7 = $clone(d[0].inputTarget, js.Value).Call("removeEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
183461
183797
  _r$7;
183462
183798
  $clone(onMove[0], js.Func).Release();
183463
183799
  $clone(onClick[0], js.Func).Release();
@@ -183653,30 +183989,38 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183653
183989
  handler = [handler];
183654
183990
  opts = [opts];
183655
183991
  d[0] = this;
183656
- handler[0] = $clone(js.FuncOf((function(d, eventName, eventType, handler, opts) { return function(this$1, args) {
183657
- var args, changedTouches, ev, t, this$1;
183992
+ handler[0] = $clone(js.FuncOf((function(d, eventName, eventType, handler, opts) { return function $b(this$1, args) {
183993
+ var {_r, _r$1, _tuple, args, changedTouches, ev, t, this$1, x, y, $s, $r, $c} = $restore(this, {this$1, args});
183994
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183658
183995
  if (args.$length === 0) {
183659
- return $ifaceNil;
183996
+ $s = -1; return $ifaceNil;
183660
183997
  }
183661
183998
  ev = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value);
183999
+ _r = $clone(ev, js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
184000
+ _r;
183662
184001
  changedTouches = $clone($clone(ev, js.Value).Get("changedTouches"), js.Value);
183663
184002
  if ($clone(changedTouches, js.Value).IsUndefined() || $clone(changedTouches, js.Value).IsNull() || ($clone(changedTouches, js.Value).Length() === 0)) {
183664
- return $ifaceNil;
184003
+ $s = -1; return $ifaceNil;
183665
184004
  }
183666
184005
  t = $clone($clone(changedTouches, js.Value).Index(0), js.Value);
183667
- d[0].emitTouchEvent($clone(new touch.Event.ptr(($fround($clone($clone(t, js.Value).Get("clientX"), js.Value).Float())), ($fround($clone($clone(t, js.Value).Get("clientY"), js.Value).Float())), (new touch.Sequence(0, $clone($clone(t, js.Value).Get("identifier"), js.Value).Int())), eventType[0]), touch.Event));
183668
- return $ifaceNil;
184006
+ _r$1 = d[0].inputPosition($clone(t, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
184007
+ _tuple = _r$1;
184008
+ x = _tuple[0];
184009
+ y = _tuple[1];
184010
+ d[0].emitTouchEvent($clone(new touch.Event.ptr(x, y, (new touch.Sequence(0, $clone($clone(t, js.Value).Get("identifier"), js.Value).Int())), eventType[0]), touch.Event));
184011
+ $s = -1; return $ifaceNil;
184012
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, args, changedTouches, ev, t, this$1, x, y, $s};return $f;
183669
184013
  }; })(d, eventName, eventType, handler, opts)), js.Func);
183670
184014
  _r = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183671
184015
  opts[0] = $clone(_r, js.Value);
183672
- $clone(opts[0], js.Value).Set("passive", new $Bool(true));
184016
+ $clone(opts[0], js.Value).Set("passive", new $Bool(false));
183673
184017
  $clone(opts[0], js.Value).Set("capture", new $Bool(false));
183674
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0]), new opts[0].constructor.elem(opts[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
184018
+ _r$1 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0]), new opts[0].constructor.elem(opts[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183675
184019
  _r$1;
183676
184020
  d[0].releases = $append(d[0].releases, (function(d, eventName, eventType, handler, opts) { return function $b() {
183677
184021
  var {_r$2, $s, $r, $c} = $restore(this, {});
183678
184022
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183679
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0]), new opts[0].constructor.elem(opts[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
184023
+ _r$2 = $clone(d[0].inputTarget, js.Value).Call("removeEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0]), new opts[0].constructor.elem(opts[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183680
184024
  _r$2;
183681
184025
  $clone(handler[0], js.Func).Release();
183682
184026
  $s = -1; return;
@@ -183717,8 +184061,8 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183717
184061
  /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindTouchEvents, $c: true, $r, d, $s};return $f;
183718
184062
  };
183719
184063
  DomEvents.prototype.bindTouchEvents = function() { return this.$val.bindTouchEvents(); };
183720
- ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "addTouchListener", name: "addTouchListener", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([$String, touch.Type], [], false)}, {prop: "emitTouchEvent", name: "emitTouchEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([touch.Event], [], false)}, {prop: "bindTouchEvents", name: "bindTouchEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
183721
- DomEvents.init("golang.org/x/exp/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
184064
+ ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "inputPosition", name: "inputPosition", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([js.Value], [$Float32, $Float32], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "addTouchListener", name: "addTouchListener", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([$String, touch.Type], [], false)}, {prop: "emitTouchEvent", name: "emitTouchEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([touch.Event], [], false)}, {prop: "bindTouchEvents", name: "bindTouchEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
184065
+ DomEvents.init("golang.org/x/exp/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "inputTarget", name: "inputTarget", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
183722
184066
  $init = function() {
183723
184067
  $pkg.$init = function() {};
183724
184068
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -185736,14 +186080,18 @@ $packages["golang.org/x/exp/shiny/screen"] = (function() {
185736
186080
  }
185737
186081
  this.BackBufferPreserved = BackBufferPreserved_;
185738
186082
  });
185739
- NewWindowOptions = $pkg.NewWindowOptions = $newType(0, $kindStruct, "screen.NewWindowOptions", true, "golang.org/x/exp/shiny/screen", true, function(Width_, Height_, Title_) {
186083
+ NewWindowOptions = $pkg.NewWindowOptions = $newType(0, $kindStruct, "screen.NewWindowOptions", true, "golang.org/x/exp/shiny/screen", true, function(X_, Y_, Width_, Height_, Title_) {
185740
186084
  this.$val = this;
185741
186085
  if (arguments.length === 0) {
186086
+ this.X = 0;
186087
+ this.Y = 0;
185742
186088
  this.Width = 0;
185743
186089
  this.Height = 0;
185744
186090
  this.Title = "";
185745
186091
  return;
185746
186092
  }
186093
+ this.X = X_;
186094
+ this.Y = Y_;
185747
186095
  this.Width = Width_;
185748
186096
  this.Height = Height_;
185749
186097
  this.Title = Title_;
@@ -185790,7 +186138,7 @@ $packages["golang.org/x/exp/shiny/screen"] = (function() {
185790
186138
  Texture.init([{prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
185791
186139
  Window.init([{prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [PublishResult], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
185792
186140
  PublishResult.init("", [{prop: "BackBufferPreserved", name: "BackBufferPreserved", embedded: false, exported: true, typ: $Bool, tag: ""}]);
185793
- NewWindowOptions.init("", [{prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Title", name: "Title", embedded: false, exported: true, typ: $String, tag: ""}]);
186141
+ NewWindowOptions.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Title", name: "Title", embedded: false, exported: true, typ: $String, tag: ""}]);
185794
186142
  DrawOptions.init("", []);
185795
186143
  $init = function() {
185796
186144
  $pkg.$init = function() {};
@@ -185806,7 +186154,7 @@ $packages["golang.org/x/exp/shiny/screen"] = (function() {
185806
186154
  return $pkg;
185807
186155
  })();
185808
186156
  $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"] = (function() {
185809
- var $pkg = {}, $init, jsdecoder, errs, jshelper, dom, screen, f64, image, color, draw, log, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, funcType, arrayType, ptrType$5, sliceType$1, ptrType$6, ptrType$7, ptrType$8, ptrType$9, newWindow, newScreenImpl, main, newBuffer;
186157
+ var $pkg = {}, $init, jsdecoder, errs, jshelper, dom, screen, f64, image, color, draw, log, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, structType, ptrType$3, ptrType$4, funcType, arrayType, ptrType$5, sliceType$1, ptrType$6, ptrType$7, chanType, ptrType$8, ptrType$9, newWindow, newScreenImpl, main, newBuffer;
185810
186158
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/jsdecoder"];
185811
186159
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
185812
186160
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
@@ -185819,19 +186167,21 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185819
186167
  log = $packages["log"];
185820
186168
  sync = $packages["sync"];
185821
186169
  js = $packages["syscall/js"];
185822
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "nacldriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", false, function(screen_, mutex_, domEvents_, released_) {
186170
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "nacldriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", false, function(screen_, mutex_, domEvents_, released_, renderDone_) {
185823
186171
  this.$val = this;
185824
186172
  if (arguments.length === 0) {
185825
186173
  this.screen = ptrType.nil;
185826
186174
  this.mutex = ptrType$1.nil;
185827
186175
  this.domEvents = ptrType$2.nil;
185828
186176
  this.released = false;
186177
+ this.renderDone = $chanNil;
185829
186178
  return;
185830
186179
  }
185831
186180
  this.screen = screen_;
185832
186181
  this.mutex = mutex_;
185833
186182
  this.domEvents = domEvents_;
185834
186183
  this.released = released_;
186184
+ this.renderDone = renderDone_;
185835
186185
  });
185836
186186
  screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "nacldriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", false, function(doc_) {
185837
186187
  this.$val = this;
@@ -185857,6 +186207,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185857
186207
  ptrType = $ptrType(screenImpl);
185858
186208
  ptrType$1 = $ptrType(sync.Mutex);
185859
186209
  ptrType$2 = $ptrType(dom.DomEvents);
186210
+ structType = $structType("", []);
185860
186211
  ptrType$3 = $ptrType(js.Value);
185861
186212
  ptrType$4 = $ptrType(BufferImpl);
185862
186213
  funcType = $funcType([], [], false);
@@ -185865,10 +186216,11 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185865
186216
  sliceType$1 = $sliceType($Uint8);
185866
186217
  ptrType$6 = $ptrType(screen.DrawOptions);
185867
186218
  ptrType$7 = $ptrType(windowImpl);
186219
+ chanType = $chanType(structType, false, false);
185868
186220
  ptrType$8 = $ptrType(screen.NewWindowOptions);
185869
186221
  ptrType$9 = $ptrType(image.YCbCr);
185870
186222
  newWindow = function(screen$1, opts) {
185871
- var {_r, _r$1, domEvents, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
186223
+ var {_r, _r$1, _r$2, domEvents, inputTarget, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
185872
186224
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185873
186225
  /* */ if (!(opts.Title === "")) { $s = 1; continue; }
185874
186226
  /* */ $s = 2; continue;
@@ -185877,13 +186229,38 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185877
186229
  _r$1 = $clone(_r, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185878
186230
  $r = $clone(_r$1, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185879
186231
  /* } */ case 2:
185880
- domEvents = dom.NewDomEvents();
185881
- w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), domEvents, false);
185882
- $r = domEvents.BindEvents(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186232
+ _r$2 = $clone(screen$1.doc, js.Value).Call("getElementById", new sliceType([new $String("nacl_module")])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
186233
+ inputTarget = $clone(_r$2, js.Value);
186234
+ if ($clone(inputTarget, js.Value).IsNull() || $clone(inputTarget, js.Value).IsUndefined()) {
186235
+ $panic(new $String("NaCl renderer input target not found"));
186236
+ }
186237
+ $clone($clone(inputTarget, js.Value).Get("style"), js.Value).Set("touchAction", new $String("none"));
186238
+ domEvents = dom.NewDomEventsForTarget($clone(inputTarget, js.Value));
186239
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), domEvents, false, new $Chan(structType, 0));
186240
+ $r = domEvents.BindEvents(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185883
186241
  $s = -1; return w;
185884
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, domEvents, opts, screen$1, w, $s};return $f;
186242
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, domEvents, inputTarget, opts, screen$1, w, $s};return $f;
185885
186243
  };
185886
186244
  windowImpl.ptr.prototype.Release = function() {
186245
+ var {w, $s, $r, $c} = $restore(this, {});
186246
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186247
+ w = this;
186248
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186249
+ /* */ if (w.released) { $s = 2; continue; }
186250
+ /* */ $s = 3; continue;
186251
+ /* if (w.released) { */ case 2:
186252
+ $r = w.mutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186253
+ $s = -1; return;
186254
+ /* } */ case 3:
186255
+ w.released = true;
186256
+ $close(w.renderDone);
186257
+ $r = w.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186258
+ $r = w.domEvents.Release(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186259
+ $s = -1; return;
186260
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, w, $s};return $f;
186261
+ };
186262
+ windowImpl.prototype.Release = function() { return this.$val.Release(); };
186263
+ windowImpl.ptr.prototype.CancelPendingUploads = function() {
185887
186264
  var {w, $s, $deferred, $r, $c} = $restore(this, {});
185888
186265
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
185889
186266
  w = this;
@@ -185894,12 +186271,12 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185894
186271
  /* if (w.released) { */ case 2:
185895
186272
  $s = 4; case 4: return;
185896
186273
  /* } */ case 3:
185897
- $r = w.domEvents.Release(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185898
- w.released = true;
186274
+ $close(w.renderDone);
186275
+ w.renderDone = new $Chan(structType, 0);
185899
186276
  $s = -1; return;
185900
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, w, $s, $deferred};return $f; } }
186277
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.CancelPendingUploads, $c: true, $r, w, $s, $deferred};return $f; } }
185901
186278
  };
185902
- windowImpl.prototype.Release = function() { return this.$val.Release(); };
186279
+ windowImpl.prototype.CancelPendingUploads = function() { return this.$val.CancelPendingUploads(); };
185903
186280
  windowImpl.ptr.prototype.Publish = function() {
185904
186281
  var w;
185905
186282
  w = this;
@@ -185910,21 +186287,55 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185910
186287
  };
185911
186288
  windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
185912
186289
  windowImpl.ptr.prototype.Send = function(event) {
185913
- var event, w;
186290
+ var {event, w, $s, $deferred, $r, $c} = $restore(this, {event});
186291
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
185914
186292
  w = this;
185915
- if (w.released) {
185916
- return;
185917
- }
185918
- $panic(new $String("Not implemented"));
186293
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186294
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
186295
+ /* */ if (w.released) { $s = 2; continue; }
186296
+ /* */ $s = 3; continue;
186297
+ /* if (w.released) { */ case 2:
186298
+ $s = 4; case 4: return;
186299
+ /* } */ case 3:
186300
+ $r = $send(w.domEvents.GetEventChan(), event); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186301
+ $s = -1; return;
186302
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Send, $c: true, $r, event, w, $s, $deferred};return $f; } }
185919
186303
  };
185920
186304
  windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
186305
+ windowImpl.ptr.prototype.SendNonBlocking = function(event) {
186306
+ var {$24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
186307
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
186308
+ w = this;
186309
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186310
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
186311
+ /* */ if (w.released) { $s = 2; continue; }
186312
+ /* */ $s = 3; continue;
186313
+ /* if (w.released) { */ case 2:
186314
+ $24r = false;
186315
+ $s = 4; case 4: return $24r;
186316
+ /* } */ case 3:
186317
+ _selection = $select([[w.domEvents.GetEventChan(), event], []]);
186318
+ /* */ if (_selection[0] === 0) { $s = 5; continue; }
186319
+ /* */ if (_selection[0] === 1) { $s = 6; continue; }
186320
+ /* */ $s = 7; continue;
186321
+ /* if (_selection[0] === 0) { */ case 5:
186322
+ $24r$1 = true;
186323
+ $s = 8; case 8: return $24r$1;
186324
+ /* } else if (_selection[0] === 1) { */ case 6:
186325
+ $24r$2 = false;
186326
+ $s = 9; case 9: return $24r$2;
186327
+ /* } */ case 7:
186328
+ $s = -1; return false;
186329
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendNonBlocking, $c: true, $r, $24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred};return $f; } }
186330
+ };
186331
+ windowImpl.prototype.SendNonBlocking = function(event) { return this.$val.SendNonBlocking(event); };
185921
186332
  windowImpl.ptr.prototype.SendFirst = function(event) {
185922
- var event, w;
186333
+ var {event, w, $s, $r, $c} = $restore(this, {event});
186334
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185923
186335
  w = this;
185924
- if (w.released) {
185925
- return;
185926
- }
185927
- $panic(new $String("Not implemented"));
186336
+ $r = w.Send(event); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186337
+ $s = -1; return;
186338
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.SendFirst, $c: true, $r, event, w, $s};return $f;
185928
186339
  };
185929
186340
  windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
185930
186341
  windowImpl.ptr.prototype.NextEvent = function() {
@@ -185951,12 +186362,9 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185951
186362
  };
185952
186363
  windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
185953
186364
  windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
185954
- var {_arg, _r, _r$1, _r$2, _tuple, dp, err, jsNaClDecoder, picture, renderPromise, renderResult, sr, src, w, x, $s, $r, $c} = $restore(this, {dp, src, sr});
186365
+ var {_arg, _r, _r$1, _r$2, _tuple, canceled, dp, err, jsNaClDecoder, picture, renderDone, renderPromise, renderResult, sr, src, w, x, $s, $r, $c} = $restore(this, {dp, src, sr});
185955
186366
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185956
186367
  w = this;
185957
- if (w.released) {
185958
- $s = -1; return;
185959
- }
185960
186368
  /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
185961
186369
  /* */ $s = 2; continue;
185962
186370
  /* if (jsdecoder.ShouldResetOnNextDecode()) { */ case 1:
@@ -185975,29 +186383,40 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185975
186383
  $s = -1; return;
185976
186384
  }
185977
186385
  $r = w.mutex.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185978
- _r = $clone(jsNaClDecoder, js.Value).Call("render", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186386
+ /* */ if (w.released) { $s = 8; continue; }
186387
+ /* */ $s = 9; continue;
186388
+ /* if (w.released) { */ case 8:
186389
+ $r = w.mutex.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186390
+ $s = -1; return;
186391
+ /* } */ case 9:
186392
+ _r = $clone(jsNaClDecoder, js.Value).Call("render", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185979
186393
  renderPromise = $clone(_r, js.Value);
185980
- _r$1 = jshelper.Await($clone(renderPromise, js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186394
+ renderDone = w.renderDone;
186395
+ $r = w.mutex.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186396
+ _r$1 = jshelper.AwaitWithCancel($clone(renderPromise, js.Value), renderDone); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185981
186397
  _tuple = _r$1;
185982
186398
  renderResult = _tuple[0];
185983
186399
  err = _tuple[1];
185984
- $r = w.mutex.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185985
- /* */ if (!(err === ptrType$3.nil)) { $s = 11; continue; }
185986
- /* */ $s = 12; continue;
185987
- /* if (!(err === ptrType$3.nil)) { */ case 11:
185988
- _r$2 = jshelper.GetError(err); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
186400
+ canceled = _tuple[2];
186401
+ if (canceled) {
186402
+ $s = -1; return;
186403
+ }
186404
+ /* */ if (!(err === ptrType$3.nil)) { $s = 14; continue; }
186405
+ /* */ $s = 15; continue;
186406
+ /* if (!(err === ptrType$3.nil)) { */ case 14:
186407
+ _r$2 = jshelper.GetError(err); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185989
186408
  _arg = _r$2;
185990
- $r = errs.Print("Failed to render frame: %s", _arg); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186409
+ $r = errs.Print("Failed to render frame: %s", _arg); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185991
186410
  $s = -1; return;
185992
- /* } */ case 12:
185993
- /* */ if (!(($clone(renderResult, js.Value).Float() === 0))) { $s = 15; continue; }
185994
- /* */ $s = 16; continue;
185995
- /* if (!(($clone(renderResult, js.Value).Float() === 0))) { */ case 15:
185996
- $r = log.Printf("Failed to render frame with code: %f\n", new sliceType([new $Float64($clone(renderResult, js.Value).Float())])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186411
+ /* } */ case 15:
186412
+ /* */ if (!(($clone(renderResult, js.Value).Float() === 0))) { $s = 18; continue; }
186413
+ /* */ $s = 19; continue;
186414
+ /* if (!(($clone(renderResult, js.Value).Float() === 0))) { */ case 18:
186415
+ $r = log.Printf("Failed to render frame with code: %f\n", new sliceType([new $Float64($clone(renderResult, js.Value).Float())])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185997
186416
  $s = -1; return;
185998
- /* } */ case 16:
186417
+ /* } */ case 19:
185999
186418
  $s = -1; return;
186000
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _r, _r$1, _r$2, _tuple, dp, err, jsNaClDecoder, picture, renderPromise, renderResult, sr, src, w, x, $s};return $f;
186419
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _r, _r$1, _r$2, _tuple, canceled, dp, err, jsNaClDecoder, picture, renderDone, renderPromise, renderResult, sr, src, w, x, $s};return $f;
186001
186420
  };
186002
186421
  windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
186003
186422
  windowImpl.ptr.prototype.Fill = function(dr, src, op) {
@@ -186131,10 +186550,10 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
186131
186550
  b = this;
186132
186551
  };
186133
186552
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
186134
- ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
186553
+ ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "CancelPendingUploads", name: "CancelPendingUploads", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
186135
186554
  ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$8], [screen.Window, $error], false)}];
186136
186555
  ptrType$4.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$5], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
186137
- windowImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
186556
+ windowImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderDone", name: "renderDone", embedded: false, exported: false, typ: chanType, tag: ""}]);
186138
186557
  screenImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
186139
186558
  BufferImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "Picture", name: "Picture", embedded: false, exported: true, typ: ptrType$3, tag: ""}]);
186140
186559
  $init = function() {
@@ -186158,15 +186577,14 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
186158
186577
  return $pkg;
186159
186578
  })();
186160
186579
  $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
186161
- var $pkg = {}, $init, time, FrameType, FrameInterface, Frame, sliceType, ptrType, NewFrame;
186580
+ var $pkg = {}, $init, js, time, JSFrame, FrameType, FrameInterface, funcType, arrayType, sliceType, ptrType, NewJSFrame;
186581
+ js = $packages["syscall/js"];
186162
186582
  time = $packages["time"];
186163
- FrameType = $pkg.FrameType = $newType(1, $kindUint8, "frame.FrameType", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
186164
- FrameInterface = $pkg.FrameInterface = $newType(8, $kindInterface, "frame.FrameInterface", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
186165
- Frame = $pkg.Frame = $newType(0, $kindStruct, "frame.Frame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
186583
+ JSFrame = $pkg.JSFrame = $newType(0, $kindStruct, "frame.JSFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
186166
186584
  this.$val = this;
186167
186585
  if (arguments.length === 0) {
186168
186586
  this.frameType = 0;
186169
- this.buffer = sliceType.nil;
186587
+ this.buffer = new js.Value.ptr(null, false, arrayType.zero());
186170
186588
  this.timestamp = new $Uint64(0, 0);
186171
186589
  return;
186172
186590
  }
@@ -186174,54 +186592,74 @@ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
186174
186592
  this.buffer = buffer_;
186175
186593
  this.timestamp = timestamp_;
186176
186594
  });
186595
+ FrameType = $pkg.FrameType = $newType(1, $kindUint8, "frame.FrameType", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
186596
+ FrameInterface = $pkg.FrameInterface = $newType(8, $kindInterface, "frame.FrameInterface", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
186597
+ funcType = $funcType([], [], false);
186598
+ arrayType = $arrayType(funcType, 0);
186177
186599
  sliceType = $sliceType($Uint8);
186178
- ptrType = $ptrType(Frame);
186179
- NewFrame = function(frameType, buffer, timestamp) {
186600
+ ptrType = $ptrType(JSFrame);
186601
+ NewJSFrame = function(frameType, buffer, timestamp) {
186180
186602
  var buffer, frameType, timestamp;
186181
- return new Frame.ptr(frameType, buffer, timestamp);
186603
+ return new JSFrame.ptr(frameType, $clone(buffer, js.Value), timestamp);
186182
186604
  };
186183
- $pkg.NewFrame = NewFrame;
186184
- Frame.ptr.prototype.FrameType = function() {
186605
+ $pkg.NewJSFrame = NewJSFrame;
186606
+ JSFrame.ptr.prototype.FrameType = function() {
186185
186607
  var f;
186186
186608
  f = this;
186187
186609
  return f.frameType;
186188
186610
  };
186189
- Frame.prototype.FrameType = function() { return this.$val.FrameType(); };
186190
- Frame.ptr.prototype.Buffer = function() {
186611
+ JSFrame.prototype.FrameType = function() { return this.$val.FrameType(); };
186612
+ JSFrame.ptr.prototype.Buffer = function() {
186613
+ var f;
186614
+ f = this;
186615
+ return sliceType.nil;
186616
+ };
186617
+ JSFrame.prototype.Buffer = function() { return this.$val.Buffer(); };
186618
+ JSFrame.ptr.prototype.JSBuffer = function() {
186191
186619
  var f;
186192
186620
  f = this;
186193
186621
  return f.buffer;
186194
186622
  };
186195
- Frame.prototype.Buffer = function() { return this.$val.Buffer(); };
186196
- Frame.ptr.prototype.GetTimestamp = function() {
186623
+ JSFrame.prototype.JSBuffer = function() { return this.$val.JSBuffer(); };
186624
+ JSFrame.ptr.prototype.ByteLength = function() {
186625
+ var f;
186626
+ f = this;
186627
+ return $clone($clone(f.buffer, js.Value).Get("byteLength"), js.Value).Int();
186628
+ };
186629
+ JSFrame.prototype.ByteLength = function() { return this.$val.ByteLength(); };
186630
+ JSFrame.ptr.prototype.GetTimestamp = function() {
186197
186631
  var f, x;
186198
186632
  f = this;
186199
186633
  return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
186200
186634
  };
186201
- Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
186202
- ptrType.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
186635
+ JSFrame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
186636
+ ptrType.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "JSBuffer", name: "JSBuffer", pkg: "", typ: $funcType([], [js.Value], false)}, {prop: "ByteLength", name: "ByteLength", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
186637
+ JSFrame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
186203
186638
  FrameInterface.init([{prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
186204
- Frame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
186205
186639
  $init = function() {
186206
186640
  $pkg.$init = function() {};
186207
186641
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
186208
- $r = time.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186642
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186643
+ $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186209
186644
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
186210
186645
  };
186211
186646
  $pkg.$init = $init;
186212
186647
  return $pkg;
186213
186648
  })();
186214
186649
  $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
186215
- var $pkg = {}, $init, binary, errs, netpacket, frame, frameCollectorFactories, RegisterFrameCollector;
186650
+ var $pkg = {}, $init, binary, errs, netpacket, frame, time, FrameCollectionDurationCallback, frameCollectorFactories, RegisterFrameCollector;
186216
186651
  binary = $packages["encoding/binary"];
186217
186652
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
186218
186653
  netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
186219
186654
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
186655
+ time = $packages["time"];
186656
+ FrameCollectionDurationCallback = $pkg.FrameCollectionDurationCallback = $newType(4, $kindFunc, "netframe.FrameCollectionDurationCallback", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
186220
186657
  RegisterFrameCollector = function(name, factory) {
186221
186658
  var _key, factory, name;
186222
186659
  _key = name; (frameCollectorFactories || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: factory });
186223
186660
  };
186224
186661
  $pkg.RegisterFrameCollector = RegisterFrameCollector;
186662
+ FrameCollectionDurationCallback.init([time.Duration], [], false);
186225
186663
  $init = function() {
186226
186664
  $pkg.$init = function() {};
186227
186665
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -186229,6 +186667,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
186229
186667
  $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186230
186668
  $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186231
186669
  $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186670
+ $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186232
186671
  frameCollectorFactories = new $global.Map();
186233
186672
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
186234
186673
  };
@@ -186297,8 +186736,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
186297
186736
  /* */ } return; } var $f = {$blk: NewNaClTCPFrameCollector, $c: true, $r, _ref, maxPacketSize, screenConn, screenConnTyped, screenConnTyped$1, $s};return $f;
186298
186737
  };
186299
186738
  $pkg.NewNaClTCPFrameCollector = NewNaClTCPFrameCollector;
186300
- NTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
186301
- var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, startCb, timestampHi, timestampLo, x, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb});
186739
+ NTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
186740
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, param, startCb, timestampHi, timestampLo, x, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb, param});
186302
186741
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
186303
186742
  endCb = [endCb];
186304
186743
  startCb = [startCb];
@@ -186345,9 +186784,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
186345
186784
  frame$1 = new NTFrame.ptr((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x.$high, (timestampLo.$low | x.$low) >>> 0)), (($clone($clone(collectedFrame, js.Value).Get("dataRef"), js.Value).Int() >>> 0)));
186346
186785
  $24r$1 = [frame$1, $ifaceNil];
186347
186786
  $s = 10; case 10: return $24r$1;
186348
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, startCb, timestampHi, timestampLo, x, $s, $deferred};return $f; } }
186787
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, param, startCb, timestampHi, timestampLo, x, $s, $deferred};return $f; } }
186349
186788
  };
186350
- NTFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
186789
+ NTFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
186351
186790
  NTFrame.ptr.prototype.FrameType = function() {
186352
186791
  var f;
186353
186792
  f = this;
@@ -186375,7 +186814,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
186375
186814
  return f.dataRef;
186376
186815
  };
186377
186816
  NTFrame.prototype.DataRef = function() { return this.$val.DataRef(); };
186378
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
186817
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
186379
186818
  ptrType$3.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [frame.FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "DataRef", name: "DataRef", pkg: "", typ: $funcType([], [$Uint32], false)}];
186380
186819
  NTFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/nacltcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.NaClTCPConn, tag: ""}]);
186381
186820
  NTFrame.init("github.com/supraio/client-daemon/pkg/render/netframe/nacltcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "dataRef", name: "dataRef", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
@@ -186398,7 +186837,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
186398
186837
  return $pkg;
186399
186838
  })();
186400
186839
  $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (function() {
186401
- var $pkg = {}, $init, general, jsdecoder, nacldriver, errs, jshelper, frame, nacltcp, sync, js;
186840
+ var $pkg = {}, $init, general, jsdecoder, nacldriver, errs, jshelper, frame, nacltcp, sync, atomic, js;
186402
186841
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
186403
186842
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/jsdecoder"];
186404
186843
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"];
@@ -186407,6 +186846,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
186407
186846
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
186408
186847
  nacltcp = $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"];
186409
186848
  sync = $packages["sync"];
186849
+ atomic = $packages["sync/atomic"];
186410
186850
  js = $packages["syscall/js"];
186411
186851
  $init = function() {
186412
186852
  $pkg.$init = function() {};
@@ -186419,7 +186859,8 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
186419
186859
  $r = frame.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186420
186860
  $r = nacltcp.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186421
186861
  $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186422
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186862
+ $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186863
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186423
186864
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
186424
186865
  };
186425
186866
  $pkg.$init = $init;
@@ -186503,8 +186944,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
186503
186944
  /* */ } return; } var $f = {$blk: NewSamsungWasmTCPFrameCollector, $c: true, $r, _ref, maxPacketSize, screenConn, screenConnTyped, screenConnTyped$1, $s};return $f;
186504
186945
  };
186505
186946
  $pkg.NewSamsungWasmTCPFrameCollector = NewSamsungWasmTCPFrameCollector;
186506
- SWTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
186507
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, startCb, timestampHi, timestampLo, x, x$1, x$2, $s, $r, $c} = $restore(this, {startCb, endCb});
186947
+ SWTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
186948
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, param, startCb, timestampHi, timestampLo, x, x$1, x$2, $s, $r, $c} = $restore(this, {startCb, endCb, param});
186508
186949
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186509
186950
  endCb = [endCb];
186510
186951
  startCb = [startCb];
@@ -186544,9 +186985,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
186544
186985
  timestampHi = (new $Uint64(0, (($clone($clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Get("hi"), js.Value).Int() >>> 0))));
186545
186986
  frame$1 = new SWTFrame.ptr((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x$2 = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x$2.$high, (timestampLo.$low | x$2.$low) >>> 0)), (($clone($clone(collectedFrame, js.Value).Get("dataRef"), js.Value).Int() >>> 0)));
186546
186987
  $s = -1; return [frame$1, $ifaceNil];
186547
- /* */ } return; } var $f = {$blk: SWTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, startCb, timestampHi, timestampLo, x, x$1, x$2, $s};return $f;
186988
+ /* */ } return; } var $f = {$blk: SWTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, param, startCb, timestampHi, timestampLo, x, x$1, x$2, $s};return $f;
186548
186989
  };
186549
- SWTFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
186990
+ SWTFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
186550
186991
  SWTFrame.ptr.prototype.FrameType = function() {
186551
186992
  var f;
186552
186993
  f = this;
@@ -186574,7 +187015,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
186574
187015
  return f.dataRef;
186575
187016
  };
186576
187017
  SWTFrame.prototype.DataRef = function() { return this.$val.DataRef(); };
186577
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
187018
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
186578
187019
  ptrType$3.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [frame.FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "DataRef", name: "DataRef", pkg: "", typ: $funcType([], [$Uint32], false)}];
186579
187020
  SWTFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.SamsungWasmTCPConn, tag: ""}]);
186580
187021
  SWTFrame.init("github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "dataRef", name: "dataRef", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
@@ -191000,7 +191441,7 @@ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
191000
191441
  return $pkg;
191001
191442
  })();
191002
191443
  $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191003
- var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, newWindow, newScreenImpl, main, newBuffer;
191444
+ var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, structType, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, chanType, ptrType$9, ptrType$10, newWindow, newScreenImpl, main, newBuffer;
191004
191445
  fmt = $packages["fmt"];
191005
191446
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
191006
191447
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
@@ -191011,16 +191452,19 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191011
191452
  draw = $packages["image/draw"];
191012
191453
  sync = $packages["sync"];
191013
191454
  js = $packages["syscall/js"];
191014
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_) {
191455
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_, frontEvents_, backEvents_, eventWake_) {
191015
191456
  this.$val = this;
191016
191457
  if (arguments.length === 0) {
191017
- this.screen = ptrType.nil;
191018
- this.mutex = ptrType$1.nil;
191458
+ this.screen = ptrType$1.nil;
191459
+ this.mutex = ptrType$2.nil;
191019
191460
  this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
191020
191461
  this.ctx2d = new js.Value.ptr(null, false, arrayType.zero());
191021
191462
  this.released = false;
191022
- this.domEvents = ptrType$2.nil;
191463
+ this.domEvents = ptrType$3.nil;
191023
191464
  this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
191465
+ this.frontEvents = sliceType.nil;
191466
+ this.backEvents = sliceType.nil;
191467
+ this.eventWake = $chanNil;
191024
191468
  return;
191025
191469
  }
191026
191470
  this.screen = screen_;
@@ -191030,6 +191474,9 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191030
191474
  this.released = released_;
191031
191475
  this.domEvents = domEvents_;
191032
191476
  this.resizeCallback = resizeCallback_;
191477
+ this.frontEvents = frontEvents_;
191478
+ this.backEvents = backEvents_;
191479
+ this.eventWake = eventWake_;
191033
191480
  });
191034
191481
  screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
191035
191482
  this.$val = this;
@@ -191042,7 +191489,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191042
191489
  YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
191043
191490
  this.$val = this;
191044
191491
  if (arguments.length === 0) {
191045
- this.CanvasImageSource = ptrType$5.nil;
191492
+ this.CanvasImageSource = ptrType$6.nil;
191046
191493
  return;
191047
191494
  }
191048
191495
  this.CanvasImageSource = CanvasImageSource_;
@@ -191050,13 +191497,13 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191050
191497
  BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "canvasdriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
191051
191498
  this.$val = this;
191052
191499
  if (arguments.length === 0) {
191053
- this.screen = ptrType.nil;
191500
+ this.screen = ptrType$1.nil;
191054
191501
  this.size = new image.Point.ptr(0, 0);
191055
- this.mutex = ptrType$1.nil;
191502
+ this.mutex = ptrType$2.nil;
191056
191503
  this.released = false;
191057
191504
  this.rgba = new image.RGBA.ptr(sliceType$1.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
191058
191505
  this.ycbcr = new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
191059
- this.ycbcrJS = ptrType$4.nil;
191506
+ this.ycbcrJS = ptrType$5.nil;
191060
191507
  return;
191061
191508
  }
191062
191509
  this.screen = screen_;
@@ -191068,81 +191515,101 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191068
191515
  this.ycbcrJS = ycbcrJS_;
191069
191516
  });
191070
191517
  sliceType = $sliceType($emptyInterface);
191071
- ptrType = $ptrType(screenImpl);
191072
- ptrType$1 = $ptrType(sync.Mutex);
191518
+ ptrType = $ptrType(screen.NewWindowOptions);
191519
+ ptrType$1 = $ptrType(screenImpl);
191520
+ ptrType$2 = $ptrType(sync.Mutex);
191073
191521
  funcType = $funcType([], [], false);
191074
191522
  arrayType = $arrayType(funcType, 0);
191075
- ptrType$2 = $ptrType(dom.DomEvents);
191076
- ptrType$3 = $ptrType(BufferImpl);
191523
+ ptrType$3 = $ptrType(dom.DomEvents);
191524
+ structType = $structType("", []);
191525
+ ptrType$4 = $ptrType(BufferImpl);
191077
191526
  sliceType$1 = $sliceType($Uint8);
191078
- ptrType$4 = $ptrType(YCbCrJS);
191079
- ptrType$5 = $ptrType(js.Value);
191080
- ptrType$6 = $ptrType(screen.DrawOptions);
191081
- ptrType$7 = $ptrType(windowImpl);
191082
- ptrType$8 = $ptrType(screen.NewWindowOptions);
191527
+ ptrType$5 = $ptrType(YCbCrJS);
191528
+ ptrType$6 = $ptrType(js.Value);
191529
+ ptrType$7 = $ptrType(screen.DrawOptions);
191530
+ ptrType$8 = $ptrType(windowImpl);
191531
+ chanType = $chanType(structType, false, false);
191083
191532
  ptrType$9 = $ptrType(image.RGBA);
191084
191533
  ptrType$10 = $ptrType(image.YCbCr);
191085
191534
  newWindow = function(screen$1, opts) {
191086
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
191535
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, adaptCanvas, canvasEl, ctx2d, domEvents, hasGeometry, opts, resizeCallback, screen$1, style, w, $s, $r, $c} = $restore(this, {screen$1, opts});
191087
191536
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191088
191537
  adaptCanvas = [adaptCanvas];
191089
191538
  canvasEl = [canvasEl];
191539
+ hasGeometry = [hasGeometry];
191090
191540
  _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191091
191541
  canvasEl[0] = $clone(_r, js.Value);
191092
191542
  _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType([new canvasEl[0].constructor.elem(canvasEl[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191093
191543
  _r$1;
191094
- adaptCanvas[0] = (function(adaptCanvas, canvasEl) { return function() {
191095
- var height, scale, width;
191096
- scale = dom.GetBrowserZoomRatio();
191097
- width = (((dom.GetDocWidth()) / scale >> 0));
191544
+ hasGeometry[0] = !(opts === ptrType.nil) && opts.Width > 0 && opts.Height > 0;
191545
+ /* */ if (hasGeometry[0]) { $s = 3; continue; }
191546
+ /* */ $s = 4; continue;
191547
+ /* if (hasGeometry[0]) { */ case 3:
191548
+ style = $clone($clone(canvasEl[0], js.Value).Get("style"), js.Value);
191549
+ $clone(style, js.Value).Set("position", new $String("absolute"));
191550
+ _r$2 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.X)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191551
+ _arg = new $String(_r$2);
191552
+ $r = $clone(style, js.Value).Set("left", _arg); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191553
+ _r$3 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.Y)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191554
+ _arg$1 = new $String(_r$3);
191555
+ $r = $clone(style, js.Value).Set("top", _arg$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191556
+ $clone(canvasEl[0], js.Value).Set("width", new $Int(opts.Width));
191557
+ $clone(canvasEl[0], js.Value).Set("height", new $Int(opts.Height));
191558
+ /* } */ case 4:
191559
+ adaptCanvas[0] = (function(adaptCanvas, canvasEl, hasGeometry) { return function() {
191560
+ var height, width;
191561
+ if (hasGeometry[0]) {
191562
+ return;
191563
+ }
191564
+ width = dom.GetDocWidth();
191098
191565
  if (!(($clone($clone(canvasEl[0], js.Value).Get("width"), js.Value).Int() === width))) {
191099
191566
  $clone(canvasEl[0], js.Value).Set("width", new $Int(width));
191100
191567
  }
191101
- height = (((dom.GetDocHeight()) / scale >> 0));
191568
+ height = dom.GetDocHeight();
191102
191569
  if (!(($clone($clone(canvasEl[0], js.Value).Get("height"), js.Value).Int() === height))) {
191103
191570
  $clone(canvasEl[0], js.Value).Set("height", new $Int(height));
191104
191571
  }
191105
- }; })(adaptCanvas, canvasEl);
191106
- $r = adaptCanvas[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191107
- resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl) { return function $b(this$1, args) {
191572
+ }; })(adaptCanvas, canvasEl, hasGeometry);
191573
+ $r = adaptCanvas[0](); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191574
+ resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl, hasGeometry) { return function $b(this$1, args) {
191108
191575
  var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
191109
191576
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191110
191577
  $r = adaptCanvas[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191111
191578
  $s = -1; return $ifaceNil;
191112
191579
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
191113
- }; })(adaptCanvas, canvasEl)), js.Func);
191114
- _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback.constructor.elem(resizeCallback)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191115
- _r$2;
191116
- /* */ if (!((opts.Width === 0))) { $s = 5; continue; }
191117
- /* */ $s = 6; continue;
191118
- /* if (!((opts.Width === 0))) { */ case 5:
191119
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191120
- /* } */ case 6:
191121
- /* */ if (!((opts.Height === 0))) { $s = 8; continue; }
191122
- /* */ $s = 9; continue;
191123
- /* if (!((opts.Height === 0))) { */ case 8:
191124
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191125
- /* } */ case 9:
191126
- /* */ if (!(opts.Title === "")) { $s = 11; continue; }
191580
+ }; })(adaptCanvas, canvasEl, hasGeometry)), js.Func);
191581
+ _r$4 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback.constructor.elem(resizeCallback)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191582
+ _r$4;
191583
+ /* */ if (!((opts.Width === 0))) { $s = 11; continue; }
191127
191584
  /* */ $s = 12; continue;
191128
- /* if (!(opts.Title === "")) { */ case 11:
191129
- _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191130
- _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191131
- $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191585
+ /* if (!((opts.Width === 0))) { */ case 11:
191586
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191132
191587
  /* } */ case 12:
191133
- _r$5 = $clone(canvasEl[0], js.Value).Call("getContext", new sliceType([new $String("2d")])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
191134
- ctx2d = $clone(_r$5, js.Value);
191135
- /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 17; continue; }
191588
+ /* */ if (!((opts.Height === 0))) { $s = 14; continue; }
191589
+ /* */ $s = 15; continue;
191590
+ /* if (!((opts.Height === 0))) { */ case 14:
191591
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191592
+ /* } */ case 15:
191593
+ /* */ if (!(opts.Title === "")) { $s = 17; continue; }
191136
191594
  /* */ $s = 18; continue;
191137
- /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 17:
191138
- _r$6 = fmt.Errorf("Cannot get 2d context of canvas", sliceType.nil); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191139
- $panic(_r$6);
191595
+ /* if (!(opts.Title === "")) { */ case 17:
191596
+ _r$5 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
191597
+ _r$6 = $clone(_r$5, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191598
+ $r = $clone(_r$6, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191140
191599
  /* } */ case 18:
191141
- domEvents = dom.NewDomEvents();
191142
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
191143
- $r = domEvents.BindEvents(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191600
+ _r$7 = $clone(canvasEl[0], js.Value).Call("getContext", new sliceType([new $String("2d")])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
191601
+ ctx2d = $clone(_r$7, js.Value);
191602
+ /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 23; continue; }
191603
+ /* */ $s = 24; continue;
191604
+ /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 23:
191605
+ _r$8 = fmt.Errorf("Cannot get 2d context of canvas", sliceType.nil); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
191606
+ $panic(_r$8);
191607
+ /* } */ case 24:
191608
+ domEvents = dom.NewDomEventsForTarget($clone(canvasEl[0], js.Value));
191609
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func), sliceType.nil, sliceType.nil, new $Chan(structType, 1));
191610
+ $r = domEvents.BindEvents(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191144
191611
  $s = -1; return w;
191145
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s};return $f;
191612
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, adaptCanvas, canvasEl, ctx2d, domEvents, hasGeometry, opts, resizeCallback, screen$1, style, w, $s};return $f;
191146
191613
  };
191147
191614
  windowImpl.ptr.prototype.Release = function() {
191148
191615
  var {_r, _r$1, w, x, $s, $deferred, $r, $c} = $restore(this, {});
@@ -191176,33 +191643,126 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191176
191643
  };
191177
191644
  windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
191178
191645
  windowImpl.ptr.prototype.Send = function(event) {
191179
- var event, w;
191646
+ var {event, eventChan, w, $s, $r, $c} = $restore(this, {event});
191647
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191180
191648
  w = this;
191181
- if (w.released) {
191182
- return;
191183
- }
191184
- $panic(new $String("Not implemented"));
191649
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191650
+ /* */ if (w.released) { $s = 2; continue; }
191651
+ /* */ $s = 3; continue;
191652
+ /* if (w.released) { */ case 2:
191653
+ $r = w.mutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191654
+ $s = -1; return;
191655
+ /* } */ case 3:
191656
+ eventChan = w.domEvents.GetEventChan();
191657
+ $r = w.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191658
+ $r = $send(eventChan, event); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191659
+ $s = -1; return;
191660
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Send, $c: true, $r, event, eventChan, w, $s};return $f;
191185
191661
  };
191186
191662
  windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
191663
+ windowImpl.ptr.prototype.SendNonBlocking = function(event) {
191664
+ var {$24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
191665
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191666
+ w = this;
191667
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191668
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
191669
+ /* */ if (w.released) { $s = 2; continue; }
191670
+ /* */ $s = 3; continue;
191671
+ /* if (w.released) { */ case 2:
191672
+ $24r = false;
191673
+ $s = 4; case 4: return $24r;
191674
+ /* } */ case 3:
191675
+ _selection = $select([[w.domEvents.GetEventChan(), event], []]);
191676
+ /* */ if (_selection[0] === 0) { $s = 5; continue; }
191677
+ /* */ if (_selection[0] === 1) { $s = 6; continue; }
191678
+ /* */ $s = 7; continue;
191679
+ /* if (_selection[0] === 0) { */ case 5:
191680
+ $24r$1 = true;
191681
+ $s = 8; case 8: return $24r$1;
191682
+ /* } else if (_selection[0] === 1) { */ case 6:
191683
+ $24r$2 = false;
191684
+ $s = 9; case 9: return $24r$2;
191685
+ /* } */ case 7:
191686
+ $s = -1; return false;
191687
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendNonBlocking, $c: true, $r, $24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred};return $f; } }
191688
+ };
191689
+ windowImpl.prototype.SendNonBlocking = function(event) { return this.$val.SendNonBlocking(event); };
191187
191690
  windowImpl.ptr.prototype.SendFirst = function(event) {
191188
- var event, w;
191691
+ var {_selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
191692
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191189
191693
  w = this;
191190
- if (w.released) {
191191
- return;
191694
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191695
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
191696
+ /* */ if (w.released) { $s = 2; continue; }
191697
+ /* */ $s = 3; continue;
191698
+ /* if (w.released) { */ case 2:
191699
+ $s = 4; case 4: return;
191700
+ /* } */ case 3:
191701
+ w.frontEvents = $append(w.frontEvents, event);
191702
+ _selection = $select([[w.eventWake, $clone(new structType.ptr(), structType)], []]);
191703
+ if (_selection[0] === 0) {
191704
+ } else if (_selection[0] === 1) {
191192
191705
  }
191193
- $panic(new $String("Not implemented"));
191706
+ $s = -1; return;
191707
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendFirst, $c: true, $r, _selection, event, w, $s, $deferred};return $f; } }
191194
191708
  };
191195
191709
  windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
191196
191710
  windowImpl.ptr.prototype.NextEvent = function() {
191197
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
191711
+ var {_r, _selection, _tuple, event, event$1, ok, w, x, $s, $r, $c} = $restore(this, {});
191198
191712
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191199
191713
  w = this;
191200
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191201
- ev = _r[0];
191202
- $s = -1; return ev;
191203
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
191714
+ /* while (true) { */ case 1:
191715
+ $r = w.mutex.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191716
+ _tuple = w.nextQueuedEvent();
191717
+ event = _tuple[0];
191718
+ ok = _tuple[1];
191719
+ /* */ if (ok) { $s = 4; continue; }
191720
+ /* */ $s = 5; continue;
191721
+ /* if (ok) { */ case 4:
191722
+ $r = w.mutex.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191723
+ $s = -1; return event;
191724
+ /* } */ case 5:
191725
+ $r = w.mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191726
+ _r = $select([[w.domEvents.GetEventChan()], [w.eventWake]]); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191727
+ _selection = _r;
191728
+ /* */ if (_selection[0] === 0) { $s = 9; continue; }
191729
+ /* */ if (_selection[0] === 1) { $s = 10; continue; }
191730
+ /* */ $s = 11; continue;
191731
+ /* if (_selection[0] === 0) { */ case 9:
191732
+ event$1 = _selection[1][0];
191733
+ $r = w.mutex.Lock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191734
+ w.backEvents = $append(w.backEvents, $ifaceNil);
191735
+ $copySlice($subslice(w.backEvents, 1), $subslice(w.backEvents, 0, (w.backEvents.$length - 1 >> 0)));
191736
+ (x = w.backEvents, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = event$1));
191737
+ $r = w.mutex.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191738
+ $s = 11; continue;
191739
+ /* } else if (_selection[0] === 1) { */ case 10:
191740
+ /* } */ case 11:
191741
+ $s = 1; continue;
191742
+ case 2:
191743
+ $s = -1; return $ifaceNil;
191744
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, _selection, _tuple, event, event$1, ok, w, x, $s};return $f;
191204
191745
  };
191205
191746
  windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
191747
+ windowImpl.ptr.prototype.nextQueuedEvent = function() {
191748
+ var event, event$1, last, w, x, x$1, x$2, x$3;
191749
+ w = this;
191750
+ last = w.frontEvents.$length - 1 >> 0;
191751
+ if (last >= 0) {
191752
+ event = (x = w.frontEvents, ((last < 0 || last >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + last]));
191753
+ (x$1 = w.frontEvents, ((last < 0 || last >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + last] = $ifaceNil));
191754
+ w.frontEvents = $subslice(w.frontEvents, 0, last);
191755
+ return [event, true];
191756
+ }
191757
+ if (w.backEvents.$length > 0) {
191758
+ event$1 = (x$2 = w.backEvents, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]));
191759
+ (x$3 = w.backEvents, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = $ifaceNil));
191760
+ w.backEvents = $subslice(w.backEvents, 1);
191761
+ return [event$1, true];
191762
+ }
191763
+ return [$ifaceNil, false];
191764
+ };
191765
+ windowImpl.prototype.nextQueuedEvent = function() { return this.$val.nextQueuedEvent(); };
191206
191766
  windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
191207
191767
  var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
191208
191768
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191224,9 +191784,9 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191224
191784
  $s = -1; return;
191225
191785
  }
191226
191786
  _ref = src;
191227
- /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 1; continue; }
191787
+ /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 1; continue; }
191228
191788
  /* */ $s = 2; continue;
191229
- /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
191789
+ /* if ($assertType(_ref, ptrType$4, true)[1]) { */ case 1:
191230
191790
  jsSrc = _ref.$val;
191231
191791
  _r = $clone(w.ctx2d, js.Value).Call("drawImage", new sliceType([(x = jsSrc.YCbCrJS().CanvasImageSource, new x.constructor.elem(x)), new $Int(0), new $Int(0)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191232
191792
  _r;
@@ -191334,7 +191894,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191334
191894
  newBuffer = function(screen$1, size) {
191335
191895
  var _q, _q$1, _q$2, b, rect, screen$1, size;
191336
191896
  rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
191337
- b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$1, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$1, ($imul(size.X, size.Y))), $makeSlice(sliceType$1, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$1, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$4.nil);
191897
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$1, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$1, ($imul(size.X, size.Y))), $makeSlice(sliceType$1, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$1, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$5.nil);
191338
191898
  return b;
191339
191899
  };
191340
191900
  BufferImpl.ptr.prototype.Size = function() {
@@ -191364,8 +191924,8 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191364
191924
  BufferImpl.ptr.prototype.YCbCrJS = function() {
191365
191925
  var b;
191366
191926
  b = this;
191367
- if (b.ycbcrJS === ptrType$4.nil) {
191368
- b.ycbcrJS = new YCbCrJS.ptr(ptrType$5.nil);
191927
+ if (b.ycbcrJS === ptrType$5.nil) {
191928
+ b.ycbcrJS = new YCbCrJS.ptr(ptrType$6.nil);
191369
191929
  }
191370
191930
  return b.ycbcrJS;
191371
191931
  };
@@ -191386,13 +191946,13 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191386
191946
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
191387
191947
  };
191388
191948
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
191389
- ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
191390
- ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$8], [screen.Window, $error], false)}];
191391
- ptrType$3.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$4], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
191392
- windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}]);
191949
+ ptrType$8.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "nextQueuedEvent", name: "nextQueuedEvent", pkg: "golang.org/x/exp/shiny/driver/canvasdriver", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}];
191950
+ ptrType$1.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType], [screen.Window, $error], false)}];
191951
+ ptrType$4.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$5], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
191952
+ windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}, {prop: "frontEvents", name: "frontEvents", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "backEvents", name: "backEvents", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "eventWake", name: "eventWake", embedded: false, exported: false, typ: chanType, tag: ""}]);
191393
191953
  screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191394
- YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
191395
- BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$4, tag: ""}]);
191954
+ YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$6, tag: ""}]);
191955
+ BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$5, tag: ""}]);
191396
191956
  $init = function() {
191397
191957
  $pkg.$init = function() {};
191398
191958
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -191412,8 +191972,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191412
191972
  return $pkg;
191413
191973
  })();
191414
191974
  $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function() {
191415
- var $pkg = {}, $init, hex, webgl, general, errs, jshelper, frame, canvasdriver, image, js;
191416
- hex = $packages["encoding/hex"];
191975
+ var $pkg = {}, $init, webgl, general, errs, jshelper, frame, canvasdriver, image, js;
191417
191976
  webgl = $packages["github.com/nuberu/webgl"];
191418
191977
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
191419
191978
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -191425,15 +191984,14 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
191425
191984
  $init = function() {
191426
191985
  $pkg.$init = function() {};
191427
191986
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
191428
- $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191429
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191430
- $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191431
- $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191432
- $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191433
- $r = frame.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191434
- $r = canvasdriver.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191435
- $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191436
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191987
+ $r = webgl.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191988
+ $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191989
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191990
+ $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191991
+ $r = frame.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191992
+ $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191993
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191994
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191437
191995
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191438
191996
  };
191439
191997
  $pkg.$init = $init;
@@ -191476,11 +192034,14 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
191476
192034
  return $pkg;
191477
192035
  })();
191478
192036
  $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker"] = (function() {
191479
- var $pkg = {}, $init, netpacket, frame, netframe, js, FrameCollector, ptrType, sliceType, sliceType$1, funcType, ptrType$1, init, NewFrameCollector;
192037
+ var $pkg = {}, $init, errs, netpacket, frame, netframe, math, js, time, FrameCollector, ptrType, sliceType, funcType, ptrType$1, init, NewFrameCollector;
192038
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191480
192039
  netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
191481
192040
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
191482
192041
  netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
192042
+ math = $packages["math"];
191483
192043
  js = $packages["syscall/js"];
192044
+ time = $packages["time"];
191484
192045
  FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "jswebsocketworker.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", true, function(conn_) {
191485
192046
  this.$val = this;
191486
192047
  if (arguments.length === 0) {
@@ -191490,8 +192051,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
191490
192051
  this.conn = conn_;
191491
192052
  });
191492
192053
  ptrType = $ptrType(netpacket.JsWebsocketWorkerConn);
191493
- sliceType = $sliceType($Uint8);
191494
- sliceType$1 = $sliceType($emptyInterface);
192054
+ sliceType = $sliceType($emptyInterface);
191495
192055
  funcType = $funcType([], [], false);
191496
192056
  ptrType$1 = $ptrType(FrameCollector);
191497
192057
  init = function() {
@@ -191508,48 +192068,66 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
191508
192068
  return new FrameCollector.ptr(conn);
191509
192069
  };
191510
192070
  $pkg.NewFrameCollector = NewFrameCollector;
191511
- FrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
191512
- var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _tuple, buffer, c, collectedFrame, data, endCb, err, frameLength, length, startCb, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb});
191513
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192071
+ FrameCollector.ptr.prototype.CollectFrame = function(param, param$1, durationCb) {
192072
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, byteLength, c, collectedFrame, collectionDurationMs, data, durationCb, err, firstPacketAt, firstPacketAtValue, frameLength, goReceivedAt, length, param, param$1, $s, $r, $c} = $restore(this, {param, param$1, durationCb});
192073
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191514
192074
  c = this;
191515
- $r = startCb(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191516
- $deferred.push([endCb, []]);
191517
- _r = c.conn.CollectFrame(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192075
+ _r = c.conn.CollectFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191518
192076
  _tuple = _r;
191519
192077
  collectedFrame = _tuple[0];
191520
- err = _tuple[1];
191521
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
191522
- /* */ $s = 4; continue;
191523
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
191524
- $24r = [$ifaceNil, err];
191525
- $s = 5; case 5: return $24r;
191526
- /* } */ case 4:
192078
+ goReceivedAt = _tuple[1];
192079
+ err = _tuple[2];
192080
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
192081
+ $s = -1; return [$ifaceNil, err];
192082
+ }
191527
192083
  data = $clone($clone(collectedFrame, js.Value).Get("data"), js.Value);
191528
- length = $clone($clone(data, js.Value).Get("byteLength"), js.Value).Int();
192084
+ byteLength = $clone($clone(data, js.Value).Get("byteLength"), js.Value).Int();
192085
+ length = byteLength;
191529
192086
  frameLength = $clone($clone(collectedFrame, js.Value).Get("length"), js.Value);
191530
192087
  if (!$clone(frameLength, js.Value).IsUndefined() && !$clone(frameLength, js.Value).IsNull()) {
191531
192088
  length = $clone(frameLength, js.Value).Int();
191532
192089
  }
191533
- buffer = $makeSlice(sliceType, length);
191534
- _arg = buffer;
191535
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType$1([new data.constructor.elem(data), new $Int(0), new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191536
- _arg$1 = $clone(_r$1, js.Value);
191537
- _r$2 = js.CopyBytesToGo(_arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191538
- _r$2;
191539
- $24r$1 = [frame.NewFrame((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), buffer, (new $Uint64(0, $clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Float()))), $ifaceNil];
191540
- $s = 8; case 8: return $24r$1;
191541
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _tuple, buffer, c, collectedFrame, data, endCb, err, frameLength, length, startCb, $s, $deferred};return $f; } }
192090
+ /* */ if (!((length === byteLength))) { $s = 2; continue; }
192091
+ /* */ $s = 3; continue;
192092
+ /* if (!((length === byteLength))) { */ case 2:
192093
+ _r$1 = errs.Errorf("Worker frame buffer length mismatch: expected %d, received %d", new sliceType([new $Int(length), new $Int(byteLength)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192094
+ $24r = [$ifaceNil, _r$1];
192095
+ $s = 5; case 5: return $24r;
192096
+ /* } */ case 3:
192097
+ firstPacketAtValue = $clone($clone(collectedFrame, js.Value).Get("firstPacketAt"), js.Value);
192098
+ /* */ if (!(($clone(firstPacketAtValue, js.Value).Type() === 3))) { $s = 6; continue; }
192099
+ /* */ $s = 7; continue;
192100
+ /* if (!(($clone(firstPacketAtValue, js.Value).Type() === 3))) { */ case 6:
192101
+ _r$2 = errs.Errorf("Worker frame is missing first packet timestamp", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192102
+ $24r$1 = [$ifaceNil, _r$2];
192103
+ $s = 9; case 9: return $24r$1;
192104
+ /* } */ case 7:
192105
+ firstPacketAt = $clone(firstPacketAtValue, js.Value).Float();
192106
+ collectionDurationMs = goReceivedAt - firstPacketAt;
192107
+ /* */ if (math.IsNaN(collectionDurationMs) || math.IsInf(collectionDurationMs, 0) || collectionDurationMs < 0) { $s = 10; continue; }
192108
+ /* */ $s = 11; continue;
192109
+ /* if (math.IsNaN(collectionDurationMs) || math.IsInf(collectionDurationMs, 0) || collectionDurationMs < 0) { */ case 10:
192110
+ _r$3 = errs.Errorf("Invalid worker frame collection duration: %fms", new sliceType([new $Float64(collectionDurationMs)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192111
+ $24r$2 = [$ifaceNil, _r$3];
192112
+ $s = 13; case 13: return $24r$2;
192113
+ /* } */ case 11:
192114
+ $r = durationCb((new time.Duration(0, collectionDurationMs * 1e+06))); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192115
+ $s = -1; return [frame.NewJSFrame((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), $clone(data, js.Value), (new $Uint64(0, $clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Float()))), $ifaceNil];
192116
+ /* */ } return; } var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, byteLength, c, collectedFrame, collectionDurationMs, data, durationCb, err, firstPacketAt, firstPacketAtValue, frameLength, goReceivedAt, length, param, param$1, $s};return $f;
191542
192117
  };
191543
- FrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
191544
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
192118
+ FrameCollector.prototype.CollectFrame = function(param, param$1, durationCb) { return this.$val.CollectFrame(param, param$1, durationCb); };
192119
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
191545
192120
  FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
191546
192121
  $init = function() {
191547
192122
  $pkg.$init = function() {};
191548
192123
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
191549
- $r = netpacket.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191550
- $r = frame.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191551
- $r = netframe.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191552
- $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192124
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192125
+ $r = netpacket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192126
+ $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192127
+ $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192128
+ $r = math.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192129
+ $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192130
+ $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191553
192131
  init();
191554
192132
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191555
192133
  };
@@ -191590,7 +192168,7 @@ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
191590
192168
  return $pkg;
191591
192169
  })();
191592
192170
  $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191593
- var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$3, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, main, newScreenImpl, newBuffer;
192171
+ var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, structType, ptrType$8, sliceType$3, ptrType$9, ptrType$10, ptrType$11, chanType, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, main, newScreenImpl, newBuffer;
191594
192172
  fmt = $packages["fmt"];
191595
192173
  webgl = $packages["github.com/nuberu/webgl"];
191596
192174
  types = $packages["github.com/nuberu/webgl/types"];
@@ -191604,22 +192182,25 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191604
192182
  draw = $packages["image/draw"];
191605
192183
  sync = $packages["sync"];
191606
192184
  js = $packages["syscall/js"];
191607
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, width_, height_) {
192185
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, frontEvents_, backEvents_, eventWake_, width_, height_) {
191608
192186
  this.$val = this;
191609
192187
  if (arguments.length === 0) {
191610
- this.screen = ptrType.nil;
191611
- this.mutex = ptrType$1.nil;
192188
+ this.screen = ptrType$1.nil;
192189
+ this.mutex = ptrType$2.nil;
191612
192190
  this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
191613
- this.gl = ptrType$2.nil;
191614
- this.programRGBA = ptrType$3.nil;
191615
- this.imageTexRGBA = ptrType$4.nil;
191616
- this.programYUV420 = ptrType$3.nil;
191617
- this.imageTexY = ptrType$4.nil;
191618
- this.imageTexU = ptrType$4.nil;
191619
- this.imageTexV = ptrType$4.nil;
191620
- this.vertexArray = ptrType$5.nil;
192191
+ this.gl = ptrType$3.nil;
192192
+ this.programRGBA = ptrType$4.nil;
192193
+ this.imageTexRGBA = ptrType$5.nil;
192194
+ this.programYUV420 = ptrType$4.nil;
192195
+ this.imageTexY = ptrType$5.nil;
192196
+ this.imageTexU = ptrType$5.nil;
192197
+ this.imageTexV = ptrType$5.nil;
192198
+ this.vertexArray = ptrType$6.nil;
191621
192199
  this.released = false;
191622
- this.domEvents = ptrType$6.nil;
192200
+ this.domEvents = ptrType$7.nil;
192201
+ this.frontEvents = sliceType$2.nil;
192202
+ this.backEvents = sliceType$2.nil;
192203
+ this.eventWake = $chanNil;
191623
192204
  this.width = 0;
191624
192205
  this.height = 0;
191625
192206
  return;
@@ -191637,6 +192218,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191637
192218
  this.vertexArray = vertexArray_;
191638
192219
  this.released = released_;
191639
192220
  this.domEvents = domEvents_;
192221
+ this.frontEvents = frontEvents_;
192222
+ this.backEvents = backEvents_;
192223
+ this.eventWake = eventWake_;
191640
192224
  this.width = width_;
191641
192225
  this.height = height_;
191642
192226
  });
@@ -191685,13 +192269,13 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191685
192269
  BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "webgldriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
191686
192270
  this.$val = this;
191687
192271
  if (arguments.length === 0) {
191688
- this.screen = ptrType.nil;
192272
+ this.screen = ptrType$1.nil;
191689
192273
  this.size = new image.Point.ptr(0, 0);
191690
- this.mutex = ptrType$1.nil;
192274
+ this.mutex = ptrType$2.nil;
191691
192275
  this.released = false;
191692
192276
  this.rgba = new image.RGBA.ptr(sliceType$3.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
191693
192277
  this.ycbcr = new image.YCbCr.ptr(sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
191694
- this.ycbcrJS = ptrType$8.nil;
192278
+ this.ycbcrJS = ptrType$9.nil;
191695
192279
  return;
191696
192280
  }
191697
192281
  this.screen = screen_;
@@ -191705,62 +192289,82 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191705
192289
  sliceType = $sliceType($Float32);
191706
192290
  sliceType$1 = $sliceType($Uint16);
191707
192291
  sliceType$2 = $sliceType($emptyInterface);
191708
- ptrType = $ptrType(screenImpl);
191709
- ptrType$1 = $ptrType(sync.Mutex);
192292
+ ptrType = $ptrType(screen.NewWindowOptions);
192293
+ ptrType$1 = $ptrType(screenImpl);
192294
+ ptrType$2 = $ptrType(sync.Mutex);
191710
192295
  funcType = $funcType([], [], false);
191711
192296
  arrayType = $arrayType(funcType, 0);
191712
- ptrType$2 = $ptrType(webgl.RenderingContext);
191713
- ptrType$3 = $ptrType(types.Program);
191714
- ptrType$4 = $ptrType(types.Texture);
191715
- ptrType$5 = $ptrType(types.VertexArray);
191716
- ptrType$6 = $ptrType(dom.DomEvents);
191717
- ptrType$7 = $ptrType(BufferImpl);
192297
+ ptrType$3 = $ptrType(webgl.RenderingContext);
192298
+ ptrType$4 = $ptrType(types.Program);
192299
+ ptrType$5 = $ptrType(types.Texture);
192300
+ ptrType$6 = $ptrType(types.VertexArray);
192301
+ ptrType$7 = $ptrType(dom.DomEvents);
192302
+ structType = $structType("", []);
192303
+ ptrType$8 = $ptrType(BufferImpl);
191718
192304
  sliceType$3 = $sliceType($Uint8);
191719
- ptrType$8 = $ptrType(YCbCrJS);
191720
- ptrType$9 = $ptrType(screen.DrawOptions);
191721
- ptrType$10 = $ptrType(windowImpl);
191722
- ptrType$11 = $ptrType(screen.NewWindowOptions);
192305
+ ptrType$9 = $ptrType(YCbCrJS);
192306
+ ptrType$10 = $ptrType(screen.DrawOptions);
192307
+ ptrType$11 = $ptrType(windowImpl);
192308
+ chanType = $chanType(structType, false, false);
191723
192309
  ptrType$12 = $ptrType(ArrayBufferSlice);
191724
192310
  ptrType$13 = $ptrType(image.RGBA);
191725
192311
  ptrType$14 = $ptrType(image.YCbCr);
191726
192312
  newWindow = function(screen$1, opts) {
191727
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
192313
+ var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, style, w, $s, $r, $c} = $restore(this, {screen$1, opts});
191728
192314
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191729
192315
  _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType$2([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191730
192316
  canvasEl = $clone(_r, js.Value);
191731
192317
  _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType$2([new canvasEl.constructor.elem(canvasEl)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191732
192318
  _r$1;
191733
- _r$2 = webgl.FromCanvas($clone(canvasEl, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191734
- _tuple = _r$2;
192319
+ /* */ if (!(opts === ptrType.nil) && opts.Width > 0 && opts.Height > 0) { $s = 3; continue; }
192320
+ /* */ $s = 4; continue;
192321
+ /* if (!(opts === ptrType.nil) && opts.Width > 0 && opts.Height > 0) { */ case 3:
192322
+ style = $clone($clone(canvasEl, js.Value).Get("style"), js.Value);
192323
+ $clone(style, js.Value).Set("position", new $String("absolute"));
192324
+ _r$2 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.X)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192325
+ _arg = new $String(_r$2);
192326
+ $r = $clone(style, js.Value).Set("left", _arg); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192327
+ _r$3 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.Y)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192328
+ _arg$1 = new $String(_r$3);
192329
+ $r = $clone(style, js.Value).Set("top", _arg$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192330
+ _r$4 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.Width)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192331
+ _arg$2 = new $String(_r$4);
192332
+ $r = $clone(style, js.Value).Set("width", _arg$2); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192333
+ _r$5 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.Height)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192334
+ _arg$3 = new $String(_r$5);
192335
+ $r = $clone(style, js.Value).Set("height", _arg$3); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192336
+ /* } */ case 4:
192337
+ _r$6 = webgl.FromCanvas($clone(canvasEl, js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
192338
+ _tuple = _r$6;
191735
192339
  gl = _tuple[0];
191736
192340
  err = _tuple[1];
191737
192341
  if (!($interfaceIsEqual(err, $ifaceNil))) {
191738
192342
  $panic(err);
191739
192343
  }
191740
- domEvents = dom.NewDomEvents();
191741
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl, js.Value), gl, ptrType$3.nil, ptrType$4.nil, ptrType$3.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$5.nil, false, domEvents, 0, 0);
191742
- /* */ if (!((opts.Width === 0))) { $s = 4; continue; }
191743
- /* */ $s = 5; continue;
191744
- /* if (!((opts.Width === 0))) { */ case 4:
191745
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191746
- /* } */ case 5:
191747
- /* */ if (!((opts.Height === 0))) { $s = 7; continue; }
191748
- /* */ $s = 8; continue;
191749
- /* if (!((opts.Height === 0))) { */ case 7:
191750
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191751
- /* } */ case 8:
191752
- /* */ if (!(opts.Title === "")) { $s = 10; continue; }
191753
- /* */ $s = 11; continue;
191754
- /* if (!(opts.Title === "")) { */ case 10:
191755
- _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType$2([new $String("title")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191756
- _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType$2([new $Int(0)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191757
- $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191758
- /* } */ case 11:
191759
- _r$5 = w.createBuffers(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
191760
- w.vertexArray = _r$5;
191761
- $r = domEvents.BindEvents(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192344
+ domEvents = dom.NewDomEventsForTarget($clone(canvasEl, js.Value));
192345
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl, js.Value), gl, ptrType$4.nil, ptrType$5.nil, ptrType$4.nil, ptrType$5.nil, ptrType$5.nil, ptrType$5.nil, ptrType$6.nil, false, domEvents, sliceType$2.nil, sliceType$2.nil, new $Chan(structType, 1), 0, 0);
192346
+ /* */ if (!((opts.Width === 0))) { $s = 14; continue; }
192347
+ /* */ $s = 15; continue;
192348
+ /* if (!((opts.Width === 0))) { */ case 14:
192349
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192350
+ /* } */ case 15:
192351
+ /* */ if (!((opts.Height === 0))) { $s = 17; continue; }
192352
+ /* */ $s = 18; continue;
192353
+ /* if (!((opts.Height === 0))) { */ case 17:
192354
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192355
+ /* } */ case 18:
192356
+ /* */ if (!(opts.Title === "")) { $s = 20; continue; }
192357
+ /* */ $s = 21; continue;
192358
+ /* if (!(opts.Title === "")) { */ case 20:
192359
+ _r$7 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType$2([new $String("title")])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
192360
+ _r$8 = $clone(_r$7, js.Value).Call("item", new sliceType$2([new $Int(0)])); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
192361
+ $r = $clone(_r$8, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192362
+ /* } */ case 21:
192363
+ _r$9 = w.createBuffers(); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
192364
+ w.vertexArray = _r$9;
192365
+ $r = domEvents.BindEvents(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191762
192366
  $s = -1; return w;
191763
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s};return $f;
192367
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, style, w, $s};return $f;
191764
192368
  };
191765
192369
  windowImpl.ptr.prototype.ensureCanvasSize = function(width, height) {
191766
192370
  var height, w, width;
@@ -191812,33 +192416,126 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191812
192416
  };
191813
192417
  windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
191814
192418
  windowImpl.ptr.prototype.Send = function(event) {
191815
- var event, w;
192419
+ var {event, eventChan, w, $s, $r, $c} = $restore(this, {event});
192420
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191816
192421
  w = this;
191817
- if (w.released) {
191818
- return;
191819
- }
191820
- $panic(new $String("Not implemented"));
192422
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192423
+ /* */ if (w.released) { $s = 2; continue; }
192424
+ /* */ $s = 3; continue;
192425
+ /* if (w.released) { */ case 2:
192426
+ $r = w.mutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192427
+ $s = -1; return;
192428
+ /* } */ case 3:
192429
+ eventChan = w.domEvents.GetEventChan();
192430
+ $r = w.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192431
+ $r = $send(eventChan, event); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192432
+ $s = -1; return;
192433
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Send, $c: true, $r, event, eventChan, w, $s};return $f;
191821
192434
  };
191822
192435
  windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
192436
+ windowImpl.ptr.prototype.SendNonBlocking = function(event) {
192437
+ var {$24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
192438
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192439
+ w = this;
192440
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192441
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
192442
+ /* */ if (w.released) { $s = 2; continue; }
192443
+ /* */ $s = 3; continue;
192444
+ /* if (w.released) { */ case 2:
192445
+ $24r = false;
192446
+ $s = 4; case 4: return $24r;
192447
+ /* } */ case 3:
192448
+ _selection = $select([[w.domEvents.GetEventChan(), event], []]);
192449
+ /* */ if (_selection[0] === 0) { $s = 5; continue; }
192450
+ /* */ if (_selection[0] === 1) { $s = 6; continue; }
192451
+ /* */ $s = 7; continue;
192452
+ /* if (_selection[0] === 0) { */ case 5:
192453
+ $24r$1 = true;
192454
+ $s = 8; case 8: return $24r$1;
192455
+ /* } else if (_selection[0] === 1) { */ case 6:
192456
+ $24r$2 = false;
192457
+ $s = 9; case 9: return $24r$2;
192458
+ /* } */ case 7:
192459
+ $s = -1; return false;
192460
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendNonBlocking, $c: true, $r, $24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred};return $f; } }
192461
+ };
192462
+ windowImpl.prototype.SendNonBlocking = function(event) { return this.$val.SendNonBlocking(event); };
191823
192463
  windowImpl.ptr.prototype.SendFirst = function(event) {
191824
- var event, w;
192464
+ var {_selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
192465
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191825
192466
  w = this;
191826
- if (w.released) {
191827
- return;
192467
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192468
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
192469
+ /* */ if (w.released) { $s = 2; continue; }
192470
+ /* */ $s = 3; continue;
192471
+ /* if (w.released) { */ case 2:
192472
+ $s = 4; case 4: return;
192473
+ /* } */ case 3:
192474
+ w.frontEvents = $append(w.frontEvents, event);
192475
+ _selection = $select([[w.eventWake, $clone(new structType.ptr(), structType)], []]);
192476
+ if (_selection[0] === 0) {
192477
+ } else if (_selection[0] === 1) {
191828
192478
  }
191829
- $panic(new $String("Not implemented"));
192479
+ $s = -1; return;
192480
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendFirst, $c: true, $r, _selection, event, w, $s, $deferred};return $f; } }
191830
192481
  };
191831
192482
  windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
191832
192483
  windowImpl.ptr.prototype.NextEvent = function() {
191833
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
192484
+ var {_r, _selection, _tuple, event, event$1, ok, w, x, $s, $r, $c} = $restore(this, {});
191834
192485
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191835
192486
  w = this;
191836
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191837
- ev = _r[0];
191838
- $s = -1; return ev;
191839
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
192487
+ /* while (true) { */ case 1:
192488
+ $r = w.mutex.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192489
+ _tuple = w.nextQueuedEvent();
192490
+ event = _tuple[0];
192491
+ ok = _tuple[1];
192492
+ /* */ if (ok) { $s = 4; continue; }
192493
+ /* */ $s = 5; continue;
192494
+ /* if (ok) { */ case 4:
192495
+ $r = w.mutex.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192496
+ $s = -1; return event;
192497
+ /* } */ case 5:
192498
+ $r = w.mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192499
+ _r = $select([[w.domEvents.GetEventChan()], [w.eventWake]]); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192500
+ _selection = _r;
192501
+ /* */ if (_selection[0] === 0) { $s = 9; continue; }
192502
+ /* */ if (_selection[0] === 1) { $s = 10; continue; }
192503
+ /* */ $s = 11; continue;
192504
+ /* if (_selection[0] === 0) { */ case 9:
192505
+ event$1 = _selection[1][0];
192506
+ $r = w.mutex.Lock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192507
+ w.backEvents = $append(w.backEvents, $ifaceNil);
192508
+ $copySlice($subslice(w.backEvents, 1), $subslice(w.backEvents, 0, (w.backEvents.$length - 1 >> 0)));
192509
+ (x = w.backEvents, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = event$1));
192510
+ $r = w.mutex.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192511
+ $s = 11; continue;
192512
+ /* } else if (_selection[0] === 1) { */ case 10:
192513
+ /* } */ case 11:
192514
+ $s = 1; continue;
192515
+ case 2:
192516
+ $s = -1; return $ifaceNil;
192517
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, _selection, _tuple, event, event$1, ok, w, x, $s};return $f;
191840
192518
  };
191841
192519
  windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
192520
+ windowImpl.ptr.prototype.nextQueuedEvent = function() {
192521
+ var event, event$1, last, w, x, x$1, x$2, x$3;
192522
+ w = this;
192523
+ last = w.frontEvents.$length - 1 >> 0;
192524
+ if (last >= 0) {
192525
+ event = (x = w.frontEvents, ((last < 0 || last >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + last]));
192526
+ (x$1 = w.frontEvents, ((last < 0 || last >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + last] = $ifaceNil));
192527
+ w.frontEvents = $subslice(w.frontEvents, 0, last);
192528
+ return [event, true];
192529
+ }
192530
+ if (w.backEvents.$length > 0) {
192531
+ event$1 = (x$2 = w.backEvents, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]));
192532
+ (x$3 = w.backEvents, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = $ifaceNil));
192533
+ w.backEvents = $subslice(w.backEvents, 1);
192534
+ return [event$1, true];
192535
+ }
192536
+ return [$ifaceNil, false];
192537
+ };
192538
+ windowImpl.prototype.nextQueuedEvent = function() { return this.$val.nextQueuedEvent(); };
191842
192539
  windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
191843
192540
  var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
191844
192541
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191859,9 +192556,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191859
192556
  $s = -1; return;
191860
192557
  }
191861
192558
  _ref = src;
191862
- /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
192559
+ /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; }
191863
192560
  /* */ $s = 2; continue;
191864
- /* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
192561
+ /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 1:
191865
192562
  jsSrc = _ref.$val;
191866
192563
  _r = jsSrc.YCbCrJS(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191867
192564
  /* */ if (_r.Use) { $s = 3; continue; }
@@ -192030,9 +192727,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192030
192727
  var {_q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
192031
192728
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192032
192729
  w = this;
192033
- /* */ if (w.programYUV420 === ptrType$3.nil) { $s = 1; continue; }
192730
+ /* */ if (w.programYUV420 === ptrType$4.nil) { $s = 1; continue; }
192034
192731
  /* */ $s = 2; continue;
192035
- /* if (w.programYUV420 === ptrType$3.nil) { */ case 1:
192732
+ /* if (w.programYUV420 === ptrType$4.nil) { */ case 1:
192036
192733
  err = $ifaceNil;
192037
192734
  _r = w.createAndLinkProgramYUV420(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192038
192735
  _tuple = _r;
@@ -192070,12 +192767,12 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192070
192767
  _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192071
192768
  err = _r$1;
192072
192769
  if (!($interfaceIsEqual(err, $ifaceNil))) {
192073
- $s = -1; return [ptrType$3.nil, err];
192770
+ $s = -1; return [ptrType$4.nil, err];
192074
192771
  }
192075
192772
  _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_imageY;\nuniform sampler2D u_imageU;\nuniform sampler2D u_imageV;\n\nvoid main(void) {\n\tfloat yChannel = texture2D(u_imageY, v_texCoord).x;\n\tfloat uChannel = texture2D(u_imageU, v_texCoord).x;\n\tfloat vChannel = texture2D(u_imageV, v_texCoord).x;\n\n\t// This does the colorspace conversion from Y'UV to RGB as a matrix\n\t// multiply. It also does the offset of the U and V channels from\n\t// [0,1] to [-.5,.5] as part of the transform.\n\tvec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\n\tmat4 conversion = mat4(1.0, 0.0, 1.402, -0.701,\n\t\t\t\t\t\t\t1.0, -0.344, -0.714, 0.529,\n\t\t\t\t\t\t\t1.0, 1.772, 0.0, -0.886,\n\t\t\t\t\t\t\t0, 0, 0, 0);\n\tvec3 rgb = (channels * conversion).xyz;\n\n\t// This is another Y'UV transform that can be used, but it doesn't\n\t// accurately transform my source image. Your images may well fare\n\t// better with it, however, considering they come from a different\n\t// source, and because I'm not sure that my original was converted\n\t// to Y'UV420p with the same RGB->YUV (or YCrCb) conversion as\n\t// yours.\n\t//\n\t// vec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\t// float3x4 conversion = float3x4(1.0, 0.0, 1.13983, -0.569915,\n\t// 1.0, -0.39465, -0.58060, 0.487625,\n\t// 1.0, 2.03211, 0.0, -1.016055);\n\t// float3 rgb = mul(conversion, channels);\n\tgl_FragColor = vec4(rgb, 1.0);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192076
192773
  err = _r$2;
192077
192774
  if (!($interfaceIsEqual(err, $ifaceNil))) {
192078
- $s = -1; return [ptrType$3.nil, err];
192775
+ $s = -1; return [ptrType$4.nil, err];
192079
192776
  }
192080
192777
  $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192081
192778
  _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
@@ -192085,7 +192782,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192085
192782
  _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192086
192783
  _arg = new $String(_r$4);
192087
192784
  _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192088
- $24r = [ptrType$3.nil, _r$5];
192785
+ $24r = [ptrType$4.nil, _r$5];
192089
192786
  $s = 10; case 10: return $24r;
192090
192787
  /* } */ case 6:
192091
192788
  $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -192144,9 +192841,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192144
192841
  var {_r, _r$1, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
192145
192842
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192146
192843
  w = this;
192147
- /* */ if (w.programRGBA === ptrType$3.nil) { $s = 1; continue; }
192844
+ /* */ if (w.programRGBA === ptrType$4.nil) { $s = 1; continue; }
192148
192845
  /* */ $s = 2; continue;
192149
- /* if (w.programRGBA === ptrType$3.nil) { */ case 1:
192846
+ /* if (w.programRGBA === ptrType$4.nil) { */ case 1:
192150
192847
  err = $ifaceNil;
192151
192848
  _r = w.createAndLinkProgramRGBA(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192152
192849
  _tuple = _r;
@@ -192180,12 +192877,12 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192180
192877
  _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192181
192878
  err = _r$1;
192182
192879
  if (!($interfaceIsEqual(err, $ifaceNil))) {
192183
- $s = -1; return [ptrType$3.nil, err];
192880
+ $s = -1; return [ptrType$4.nil, err];
192184
192881
  }
192185
192882
  _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\n\nvoid main(void) {\n\tgl_FragColor = texture2D(u_image, v_texCoord);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192186
192883
  err = _r$2;
192187
192884
  if (!($interfaceIsEqual(err, $ifaceNil))) {
192188
- $s = -1; return [ptrType$3.nil, err];
192885
+ $s = -1; return [ptrType$4.nil, err];
192189
192886
  }
192190
192887
  $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192191
192888
  _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
@@ -192195,7 +192892,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192195
192892
  _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192196
192893
  _arg = new $String(_r$4);
192197
192894
  _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192198
- $24r = [ptrType$3.nil, _r$5];
192895
+ $24r = [ptrType$4.nil, _r$5];
192199
192896
  $s = 10; case 10: return $24r;
192200
192897
  /* } */ case 6:
192201
192898
  $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -192306,7 +193003,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192306
193003
  newBuffer = function(screen$1, size) {
192307
193004
  var _q, _q$1, _q$2, b, rect, screen$1, size;
192308
193005
  rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
192309
- b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$3, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$3, ($imul(size.X, size.Y))), $makeSlice(sliceType$3, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$3, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$8.nil);
193006
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$3, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$3, ($imul(size.X, size.Y))), $makeSlice(sliceType$3, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$3, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$9.nil);
192310
193007
  return b;
192311
193008
  };
192312
193009
  BufferImpl.ptr.prototype.Size = function() {
@@ -192337,9 +193034,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192337
193034
  var {_r, b, emptyBuffer, $s, $r, $c} = $restore(this, {});
192338
193035
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192339
193036
  b = this;
192340
- /* */ if (b.ycbcrJS === ptrType$8.nil) { $s = 1; continue; }
193037
+ /* */ if (b.ycbcrJS === ptrType$9.nil) { $s = 1; continue; }
192341
193038
  /* */ $s = 2; continue;
192342
- /* if (b.ycbcrJS === ptrType$8.nil) { */ case 1:
193039
+ /* if (b.ycbcrJS === ptrType$9.nil) { */ case 1:
192343
193040
  _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192344
193041
  emptyBuffer = $clone(_r, js.Value);
192345
193042
  b.ycbcrJS = new YCbCrJS.ptr($clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), b.ycbcr.YStride, b.ycbcr.CStride, 2, $clone(b.ycbcr.Rect, image.Rectangle), false);
@@ -192364,15 +193061,15 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192364
193061
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
192365
193062
  };
192366
193063
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
192367
- ptrType$10.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$5], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$4], false)}];
192368
- ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$11], [screen.Window, $error], false)}];
193064
+ ptrType$11.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "nextQueuedEvent", name: "nextQueuedEvent", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$6], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$5], false)}];
193065
+ ptrType$1.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType], [screen.Window, $error], false)}];
192369
193066
  ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
192370
- ptrType$7.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
192371
- windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
193067
+ ptrType$8.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
193068
+ windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "frontEvents", name: "frontEvents", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "backEvents", name: "backEvents", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "eventWake", name: "eventWake", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
192372
193069
  screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
192373
193070
  ArrayBufferSlice.init("", [{prop: "ArrayBuffer", name: "ArrayBuffer", embedded: false, exported: true, typ: js.Value, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Length", name: "Length", embedded: false, exported: true, typ: $Int, tag: ""}]);
192374
193071
  YCbCrJS.init("", [{prop: "Y", name: "Y", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cb", name: "Cb", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cr", name: "Cr", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "YStride", name: "YStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CStride", name: "CStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SubsampleRatio", name: "SubsampleRatio", embedded: false, exported: true, typ: image.YCbCrSubsampleRatio, tag: ""}, {prop: "Rect", name: "Rect", embedded: false, exported: true, typ: image.Rectangle, tag: ""}, {prop: "Use", name: "Use", embedded: false, exported: true, typ: $Bool, tag: ""}]);
192375
- BufferImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$8, tag: ""}]);
193072
+ BufferImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$9, tag: ""}]);
192376
193073
  $init = function() {
192377
193074
  $pkg.$init = function() {};
192378
193075
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -192439,7 +193136,7 @@ $packages["github.com/supraio/client-daemon/pkg/videostream"] = (function() {
192439
193136
  return $pkg;
192440
193137
  })();
192441
193138
  $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function() {
192442
- var $pkg = {}, $init, fmt, general, errs, jshelper, frame, videostream, js, SOSVideoStreamer, funcType, arrayType, sliceType, ptrType, ptrType$1, init;
193139
+ var $pkg = {}, $init, fmt, general, errs, jshelper, frame, videostream, js, SOSVideoStreamer, streamGeometry, funcType, arrayType, sliceType, ptrType, ptrType$1, init, getStreamGeometry;
192443
193140
  fmt = $packages["fmt"];
192444
193141
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
192445
193142
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -192457,6 +193154,20 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192457
193154
  this.sos = sos_;
192458
193155
  this.started = started_;
192459
193156
  });
193157
+ streamGeometry = $pkg.streamGeometry = $newType(0, $kindStruct, "sosstream.streamGeometry", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", false, function(x_, y_, width_, height_) {
193158
+ this.$val = this;
193159
+ if (arguments.length === 0) {
193160
+ this.x = 0;
193161
+ this.y = 0;
193162
+ this.width = 0;
193163
+ this.height = 0;
193164
+ return;
193165
+ }
193166
+ this.x = x_;
193167
+ this.y = y_;
193168
+ this.width = width_;
193169
+ this.height = height_;
193170
+ });
192460
193171
  funcType = $funcType([], [], false);
192461
193172
  arrayType = $arrayType(funcType, 0);
192462
193173
  sliceType = $sliceType($emptyInterface);
@@ -192474,7 +193185,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192474
193185
  };
192475
193186
  SOSVideoStreamer.prototype.IsAvailable = function() { return this.$val.IsAvailable(); };
192476
193187
  SOSVideoStreamer.ptr.prototype.Play = function() {
192477
- var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, err, height, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, $s, $r, $c} = $restore(this, {});
193188
+ var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, err, geometry, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, $s, $r, $c} = $restore(this, {});
192478
193189
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192479
193190
  m = this;
192480
193191
  /* */ if (!m.started) { $s = 1; continue; }
@@ -192487,14 +193198,13 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192487
193198
  sosProtocol = m.getSOSProtocol(protocol);
192488
193199
  _r = fmt.Sprintf("%s://%s:%d", new sliceType([new $String(urlProtocol), new $String(hostname), new $Uint16(port)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192489
193200
  url = _r;
192490
- width = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
192491
- height = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
193201
+ geometry = $clone(getStreamGeometry(), streamGeometry);
192492
193202
  _r$1 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192493
193203
  options = $clone(_r$1, js.Value);
192494
193204
  $clone(options, js.Value).Set("background", new $Bool(true));
192495
193205
  $clone(options, js.Value).Set("protocol", new $String(sosProtocol));
192496
193206
  $clone(options, js.Value).Set("lowLatency", new $Bool(true));
192497
- _r$2 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("prepare", new sliceType([new $String(url), new $Int(0), new $Int(0), new $Int(width), new $Int(height), new options.constructor.elem(options)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193207
+ _r$2 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("prepare", new sliceType([new $String(url), new $Int(geometry.x), new $Int(geometry.y), new $Int(geometry.width), new $Int(geometry.height), new options.constructor.elem(options)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192498
193208
  preparePromise = $clone(_r$2, js.Value);
192499
193209
  _r$3 = jshelper.Await($clone(preparePromise, js.Value)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192500
193210
  _tuple = _r$3;
@@ -192509,7 +193219,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192509
193219
  $24r = _r$6;
192510
193220
  $s = 12; case 12: return $24r;
192511
193221
  /* } */ case 8:
192512
- _r$7 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("play", new sliceType([new $String(url), new $Int(0), new $Int(0), new $Int(width), new $Int(height), new options.constructor.elem(options)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
193222
+ _r$7 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("play", new sliceType([new $String(url), new $Int(geometry.x), new $Int(geometry.y), new $Int(geometry.width), new $Int(geometry.height), new options.constructor.elem(options)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
192513
193223
  playStream = $clone(_r$7, js.Value);
192514
193224
  _r$8 = jshelper.Await($clone(playStream, js.Value)); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
192515
193225
  _tuple$1 = _r$8;
@@ -192527,11 +193237,11 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192527
193237
  m.started = true;
192528
193238
  /* } */ case 2:
192529
193239
  $s = -1; return $ifaceNil;
192530
- /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Play, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, err, height, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, $s};return $f;
193240
+ /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Play, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, err, geometry, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, $s};return $f;
192531
193241
  };
192532
193242
  SOSVideoStreamer.prototype.Play = function() { return this.$val.Play(); };
192533
193243
  SOSVideoStreamer.ptr.prototype.Stop = function() {
192534
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, height, hostname, m, port, protocol, stopPromise, url, urlProtocol, width, $s, $r, $c} = $restore(this, {});
193244
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, geometry, hostname, m, port, protocol, stopPromise, url, urlProtocol, $s, $r, $c} = $restore(this, {});
192535
193245
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192536
193246
  m = this;
192537
193247
  /* */ if (m.started) { $s = 1; continue; }
@@ -192543,9 +193253,8 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192543
193253
  urlProtocol = m.getURLProtocol(protocol);
192544
193254
  _r = fmt.Sprintf("%s://%s:%d", new sliceType([new $String(urlProtocol), new $String(hostname), new $Uint16(port)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192545
193255
  url = _r;
192546
- width = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
192547
- height = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
192548
- _r$1 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("stop", new sliceType([new $String(url), new $Int(0), new $Int(0), new $Int(width), new $Int(height)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193256
+ geometry = $clone(getStreamGeometry(), streamGeometry);
193257
+ _r$1 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("stop", new sliceType([new $String(url), new $Int(geometry.x), new $Int(geometry.y), new $Int(geometry.width), new $Int(geometry.height)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192549
193258
  stopPromise = $clone(_r$1, js.Value);
192550
193259
  _r$2 = jshelper.Await($clone(stopPromise, js.Value)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192551
193260
  _tuple = _r$2;
@@ -192563,9 +193272,22 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192563
193272
  m.started = false;
192564
193273
  /* } */ case 2:
192565
193274
  $s = -1; return $ifaceNil;
192566
- /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Stop, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, height, hostname, m, port, protocol, stopPromise, url, urlProtocol, width, $s};return $f;
193275
+ /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Stop, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, geometry, hostname, m, port, protocol, stopPromise, url, urlProtocol, $s};return $f;
192567
193276
  };
192568
193277
  SOSVideoStreamer.prototype.Stop = function() { return this.$val.Stop(); };
193278
+ getStreamGeometry = function() {
193279
+ var configuredGeometry, geometry;
193280
+ geometry = new streamGeometry.ptr(0, 0, $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int(), $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int());
193281
+ configuredGeometry = $clone($clone($clone(js.Global(), js.Value).Get("__supra"), js.Value).Get("geometry"), js.Value);
193282
+ if ($clone(configuredGeometry, js.Value).IsUndefined() || $clone(configuredGeometry, js.Value).IsNull()) {
193283
+ return geometry;
193284
+ }
193285
+ geometry.x = $clone($clone(configuredGeometry, js.Value).Get("x"), js.Value).Int();
193286
+ geometry.y = $clone($clone(configuredGeometry, js.Value).Get("y"), js.Value).Int();
193287
+ geometry.width = $clone($clone(configuredGeometry, js.Value).Get("width"), js.Value).Int();
193288
+ geometry.height = $clone($clone(configuredGeometry, js.Value).Get("height"), js.Value).Int();
193289
+ return geometry;
193290
+ };
192569
193291
  SOSVideoStreamer.ptr.prototype.GetProtocol = function() {
192570
193292
  var _1, m, protocol, protocolValue;
192571
193293
  m = this;
@@ -192670,6 +193392,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192670
193392
  SOSVideoStreamer.prototype.getSOSProtocol = function(protocol) { return this.$val.getSOSProtocol(protocol); };
192671
193393
  ptrType$1.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Play", name: "Play", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [videostream.Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}, {prop: "getServerHostname", name: "getServerHostname", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([], [$String], false)}, {prop: "getStreamHostname", name: "getStreamHostname", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}, {prop: "getURLProtocol", name: "getURLProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}, {prop: "getSOSProtocol", name: "getSOSProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}];
192672
193394
  SOSVideoStreamer.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "sos", name: "sos", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
193395
+ streamGeometry.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "x", name: "x", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "y", name: "y", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
192673
193396
  $init = function() {
192674
193397
  $pkg.$init = function() {};
192675
193398
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -192768,7 +193491,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192768
193491
  return $pkg;
192769
193492
  })();
192770
193493
  $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192771
- var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, time;
193494
+ var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, sync, time;
192772
193495
  decoder = $packages["github.com/supraio/client-daemon/pkg/decoder"];
192773
193496
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
192774
193497
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
@@ -192777,6 +193500,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192777
193500
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
192778
193501
  screen = $packages["golang.org/x/exp/shiny/screen"];
192779
193502
  image = $packages["image"];
193503
+ sync = $packages["sync"];
192780
193504
  time = $packages["time"];
192781
193505
  $init = function() {
192782
193506
  $pkg.$init = function() {};
@@ -192789,14 +193513,16 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192789
193513
  $r = stats.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192790
193514
  $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192791
193515
  $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192792
- $r = time.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193516
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193517
+ $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192793
193518
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
192794
193519
  };
192795
193520
  $pkg.$init = $init;
192796
193521
  return $pkg;
192797
193522
  })();
192798
193523
  $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (function() {
192799
- var $pkg = {}, $init, errs, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, newWindow, newScreenImpl, main, newBuffer;
193524
+ var $pkg = {}, $init, fmt, errs, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, newWindow, overlayDimension, newScreenImpl, main, newBuffer;
193525
+ fmt = $packages["fmt"];
192800
193526
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
192801
193527
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
192802
193528
  screen = $packages["golang.org/x/exp/shiny/screen"];
@@ -192806,13 +193532,15 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192806
193532
  draw = $packages["image/draw"];
192807
193533
  sync = $packages["sync"];
192808
193534
  js = $packages["syscall/js"];
192809
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "overlaydriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, released_) {
193535
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "overlaydriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, inputTarget_, ownsInputTarget_, released_) {
192810
193536
  this.$val = this;
192811
193537
  if (arguments.length === 0) {
192812
193538
  this.screen = ptrType.nil;
192813
193539
  this.mutex = ptrType$1.nil;
192814
193540
  this.renderingInProgress = false;
192815
193541
  this.domEvents = ptrType$2.nil;
193542
+ this.inputTarget = new js.Value.ptr(null, false, arrayType.zero());
193543
+ this.ownsInputTarget = false;
192816
193544
  this.released = false;
192817
193545
  return;
192818
193546
  }
@@ -192820,15 +193548,19 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192820
193548
  this.mutex = mutex_;
192821
193549
  this.renderingInProgress = renderingInProgress_;
192822
193550
  this.domEvents = domEvents_;
193551
+ this.inputTarget = inputTarget_;
193552
+ this.ownsInputTarget = ownsInputTarget_;
192823
193553
  this.released = released_;
192824
193554
  });
192825
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "overlaydriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(doc_) {
193555
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "overlaydriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(doc_, inputTarget_) {
192826
193556
  this.$val = this;
192827
193557
  if (arguments.length === 0) {
192828
193558
  this.doc = new js.Value.ptr(null, false, arrayType.zero());
193559
+ this.inputTarget = new js.Value.ptr(null, false, arrayType.zero());
192829
193560
  return;
192830
193561
  }
192831
193562
  this.doc = doc_;
193563
+ this.inputTarget = inputTarget_;
192832
193564
  });
192833
193565
  BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "overlaydriver.BufferImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", true, function(screen_, size_) {
192834
193566
  this.$val = this;
@@ -192854,7 +193586,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192854
193586
  ptrType$7 = $ptrType(image.YCbCr);
192855
193587
  ptrType$8 = $ptrType(BufferImpl);
192856
193588
  newWindow = function(screen$1, opts) {
192857
- var {_r, _r$1, domEvents, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
193589
+ var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, domEvents, inputTarget, opts, ownsInputTarget, screen$1, style, w, $s, $r, $c} = $restore(this, {screen$1, opts});
192858
193590
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192859
193591
  /* */ if (!(opts.Title === "")) { $s = 1; continue; }
192860
193592
  /* */ $s = 2; continue;
@@ -192863,14 +193595,52 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192863
193595
  _r$1 = $clone(_r, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192864
193596
  $r = $clone(_r$1, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192865
193597
  /* } */ case 2:
192866
- domEvents = dom.NewDomEvents();
192867
- w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), false, domEvents, false);
192868
- $r = domEvents.BindEvents(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193598
+ inputTarget = $clone(screen$1.inputTarget, js.Value);
193599
+ ownsInputTarget = false;
193600
+ /* */ if ($clone(inputTarget, js.Value).IsNull() || $clone(inputTarget, js.Value).IsUndefined()) { $s = 6; continue; }
193601
+ /* */ $s = 7; continue;
193602
+ /* if ($clone(inputTarget, js.Value).IsNull() || $clone(inputTarget, js.Value).IsUndefined()) { */ case 6:
193603
+ _r$2 = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType([new $String("div")])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193604
+ js.Value.copy(inputTarget, _r$2);
193605
+ style = $clone($clone(inputTarget, js.Value).Get("style"), js.Value);
193606
+ $clone(style, js.Value).Set("position", new $String("fixed"));
193607
+ _r$3 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.X)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193608
+ _arg = new $String(_r$3);
193609
+ $r = $clone(style, js.Value).Set("left", _arg); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193610
+ _r$4 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.Y)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193611
+ _arg$1 = new $String(_r$4);
193612
+ $r = $clone(style, js.Value).Set("top", _arg$1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193613
+ _r$5 = overlayDimension(opts.Width, $clone($clone($clone(screen$1.doc, js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193614
+ _arg$2 = new $String(_r$5);
193615
+ $r = $clone(style, js.Value).Set("width", _arg$2); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193616
+ _r$6 = overlayDimension(opts.Height, $clone($clone($clone(screen$1.doc, js.Value).Get("documentElement"), js.Value).Get("clientHeight"), js.Value)); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
193617
+ _arg$3 = new $String(_r$6);
193618
+ $r = $clone(style, js.Value).Set("height", _arg$3); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193619
+ $clone(style, js.Value).Set("zIndex", new $String("2147483647"));
193620
+ _r$7 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType([new inputTarget.constructor.elem(inputTarget)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
193621
+ _r$7;
193622
+ ownsInputTarget = true;
193623
+ /* } */ case 7:
193624
+ $clone($clone(inputTarget, js.Value).Get("style"), js.Value).Set("touchAction", new $String("none"));
193625
+ domEvents = dom.NewDomEventsForTarget($clone(inputTarget, js.Value));
193626
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), false, domEvents, $clone(inputTarget, js.Value), ownsInputTarget, false);
193627
+ $r = domEvents.BindEvents(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192869
193628
  $s = -1; return w;
192870
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, domEvents, opts, screen$1, w, $s};return $f;
193629
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, domEvents, inputTarget, opts, ownsInputTarget, screen$1, style, w, $s};return $f;
193630
+ };
193631
+ overlayDimension = function(size, fallback) {
193632
+ var {$24r, _r, fallback, size, $s, $r, $c} = $restore(this, {size, fallback});
193633
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193634
+ if (size <= 0) {
193635
+ size = $clone(fallback, js.Value).Int();
193636
+ }
193637
+ _r = fmt.Sprintf("%dpx", new sliceType([new $Int(size)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193638
+ $24r = _r;
193639
+ $s = 2; case 2: return $24r;
193640
+ /* */ } return; } var $f = {$blk: overlayDimension, $c: true, $r, $24r, _r, fallback, size, $s};return $f;
192871
193641
  };
192872
193642
  windowImpl.ptr.prototype.Release = function() {
192873
- var {w, $s, $deferred, $r, $c} = $restore(this, {});
193643
+ var {_r, parent, w, x, $s, $deferred, $r, $c} = $restore(this, {});
192874
193644
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192875
193645
  w = this;
192876
193646
  $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -192881,9 +193651,20 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192881
193651
  $s = 4; case 4: return;
192882
193652
  /* } */ case 3:
192883
193653
  $r = w.domEvents.Release(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193654
+ /* */ if (w.ownsInputTarget) { $s = 6; continue; }
193655
+ /* */ $s = 7; continue;
193656
+ /* if (w.ownsInputTarget) { */ case 6:
193657
+ parent = $clone($clone(w.inputTarget, js.Value).Get("parentNode"), js.Value);
193658
+ /* */ if (!$clone(parent, js.Value).IsNull() && !$clone(parent, js.Value).IsUndefined()) { $s = 8; continue; }
193659
+ /* */ $s = 9; continue;
193660
+ /* if (!$clone(parent, js.Value).IsNull() && !$clone(parent, js.Value).IsUndefined()) { */ case 8:
193661
+ _r = $clone(parent, js.Value).Call("removeChild", new sliceType([(x = w.inputTarget, new x.constructor.elem(x))])); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193662
+ _r;
193663
+ /* } */ case 9:
193664
+ /* } */ case 7:
192884
193665
  w.released = true;
192885
193666
  $s = -1; return;
192886
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, w, $s, $deferred};return $f; } }
193667
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, _r, parent, w, x, $s, $deferred};return $f; } }
192887
193668
  };
192888
193669
  windowImpl.prototype.Release = function() { return this.$val.Release(); };
192889
193670
  windowImpl.ptr.prototype.Publish = function() {
@@ -192896,21 +193677,55 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192896
193677
  };
192897
193678
  windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
192898
193679
  windowImpl.ptr.prototype.Send = function(event) {
192899
- var event, w;
193680
+ var {event, w, $s, $deferred, $r, $c} = $restore(this, {event});
193681
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192900
193682
  w = this;
192901
- if (w.released) {
192902
- return;
192903
- }
192904
- $panic(new $String("Not implemented"));
193683
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193684
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
193685
+ /* */ if (w.released) { $s = 2; continue; }
193686
+ /* */ $s = 3; continue;
193687
+ /* if (w.released) { */ case 2:
193688
+ $s = 4; case 4: return;
193689
+ /* } */ case 3:
193690
+ $r = $send(w.domEvents.GetEventChan(), event); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193691
+ $s = -1; return;
193692
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Send, $c: true, $r, event, w, $s, $deferred};return $f; } }
192905
193693
  };
192906
193694
  windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
193695
+ windowImpl.ptr.prototype.SendNonBlocking = function(event) {
193696
+ var {$24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
193697
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
193698
+ w = this;
193699
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193700
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
193701
+ /* */ if (w.released) { $s = 2; continue; }
193702
+ /* */ $s = 3; continue;
193703
+ /* if (w.released) { */ case 2:
193704
+ $24r = false;
193705
+ $s = 4; case 4: return $24r;
193706
+ /* } */ case 3:
193707
+ _selection = $select([[w.domEvents.GetEventChan(), event], []]);
193708
+ /* */ if (_selection[0] === 0) { $s = 5; continue; }
193709
+ /* */ if (_selection[0] === 1) { $s = 6; continue; }
193710
+ /* */ $s = 7; continue;
193711
+ /* if (_selection[0] === 0) { */ case 5:
193712
+ $24r$1 = true;
193713
+ $s = 8; case 8: return $24r$1;
193714
+ /* } else if (_selection[0] === 1) { */ case 6:
193715
+ $24r$2 = false;
193716
+ $s = 9; case 9: return $24r$2;
193717
+ /* } */ case 7:
193718
+ $s = -1; return false;
193719
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendNonBlocking, $c: true, $r, $24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred};return $f; } }
193720
+ };
193721
+ windowImpl.prototype.SendNonBlocking = function(event) { return this.$val.SendNonBlocking(event); };
192907
193722
  windowImpl.ptr.prototype.SendFirst = function(event) {
192908
- var event, w;
193723
+ var {event, w, $s, $r, $c} = $restore(this, {event});
193724
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192909
193725
  w = this;
192910
- if (w.released) {
192911
- return;
192912
- }
192913
- $panic(new $String("Not implemented"));
193726
+ $r = w.Send(event); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193727
+ $s = -1; return;
193728
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.SendFirst, $c: true, $r, event, w, $s};return $f;
192914
193729
  };
192915
193730
  windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
192916
193731
  windowImpl.ptr.prototype.NextEvent = function() {
@@ -192989,9 +193804,9 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
192989
193804
  $panic(new $String("Not implemented"));
192990
193805
  };
192991
193806
  windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
192992
- newScreenImpl = function() {
192993
- var s;
192994
- s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
193807
+ newScreenImpl = function(inputTarget) {
193808
+ var inputTarget, s;
193809
+ s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value), $clone(inputTarget, js.Value));
192995
193810
  return [s, $ifaceNil];
192996
193811
  };
192997
193812
  screenImpl.ptr.prototype.NewBuffer = function(size) {
@@ -193021,11 +193836,11 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193021
193836
  /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
193022
193837
  };
193023
193838
  screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
193024
- main = function(f) {
193025
- var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
193839
+ main = function(f, inputTarget) {
193840
+ var {_tuple, err, f, inputTarget, retErr, s, $s, $r, $c} = $restore(this, {f, inputTarget});
193026
193841
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193027
193842
  retErr = $ifaceNil;
193028
- _tuple = newScreenImpl();
193843
+ _tuple = newScreenImpl($clone(inputTarget, js.Value));
193029
193844
  s = _tuple[0];
193030
193845
  err = _tuple[1];
193031
193846
  if (!($interfaceIsEqual(err, $ifaceNil))) {
@@ -193035,7 +193850,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193035
193850
  $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193036
193851
  retErr = $ifaceNil;
193037
193852
  $s = -1; return retErr;
193038
- /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
193853
+ /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, inputTarget, retErr, s, $s};return $f;
193039
193854
  };
193040
193855
  newBuffer = function(screen$1, size) {
193041
193856
  var b, screen$1, size;
@@ -193075,24 +193890,25 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193075
193890
  b = this;
193076
193891
  };
193077
193892
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
193078
- ptrType$5.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}];
193893
+ ptrType$5.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}];
193079
193894
  ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$6], [screen.Window, $error], false)}];
193080
193895
  ptrType$8.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
193081
- windowImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
193082
- screenImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
193896
+ windowImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "inputTarget", name: "inputTarget", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ownsInputTarget", name: "ownsInputTarget", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
193897
+ screenImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "inputTarget", name: "inputTarget", embedded: false, exported: false, typ: js.Value, tag: ""}]);
193083
193898
  BufferImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}]);
193084
193899
  $init = function() {
193085
193900
  $pkg.$init = function() {};
193086
193901
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
193087
- $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193088
- $r = dom.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193089
- $r = screen.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193090
- $r = f64.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193091
- $r = image.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193092
- $r = color.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193093
- $r = draw.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193094
- $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193095
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193902
+ $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193903
+ $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193904
+ $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193905
+ $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193906
+ $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193907
+ $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193908
+ $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193909
+ $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193910
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193911
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193096
193912
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
193097
193913
  };
193098
193914
  $pkg.$init = $init;
@@ -193133,7 +193949,7 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
193133
193949
  return $pkg;
193134
193950
  })();
193135
193951
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193136
- var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, nacldecoder, nacldriver, samsungwasmdecoder, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, jswebsocketworker, player, overlaydriver, stats, videostream, window, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, touch, geom, image, io, ioutil, log, os, path, strings, sync, js, time, screenParams, ScreenManager, ProcessInfo, ProcessInfoManager, sliceType, ptrType, funcType, sliceType$2, sliceType$4, arrayType, mapType, ptrType$15, onScreenWindowStarted, openScreenWindows, mutex, NewScreenManager, NewProcessInfoManager, init, registerJSBridge;
193952
+ var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, nacldecoder, nacldriver, samsungwasmdecoder, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, jswebsocketworker, player, overlaydriver, stats, videostream, window, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, touch, geom, image, io, ioutil, log, os, path, strconv, strings, sync, js, time, Geometry, screenParams, ScreenManager, ProcessInfo, ProcessInfoManager, sliceType, ptrType, funcType, ptrType$14, sliceType$2, sliceType$4, arrayType, mapType, ptrType$16, onScreenWindowStarted, openScreenWindows, mutex, waitForScreenLifecycleExit, NewScreenManager, NewProcessInfoManager, init, registerJSBridge, newJSBridgeFacades, geometryValue;
193137
193953
  binary = $packages["encoding/binary"];
193138
193954
  json = $packages["encoding/json"];
193139
193955
  query = $packages["github.com/google/go-querystring/query"];
@@ -193173,10 +193989,25 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193173
193989
  log = $packages["log"];
193174
193990
  os = $packages["os"];
193175
193991
  path = $packages["path"];
193992
+ strconv = $packages["strconv"];
193176
193993
  strings = $packages["strings"];
193177
193994
  sync = $packages["sync"];
193178
193995
  js = $packages["syscall/js"];
193179
193996
  time = $packages["time"];
193997
+ Geometry = $pkg.Geometry = $newType(0, $kindStruct, "render.Geometry", true, "github.com/supraio/client-daemon/pkg/render", true, function(X_, Y_, Width_, Height_) {
193998
+ this.$val = this;
193999
+ if (arguments.length === 0) {
194000
+ this.X = 0;
194001
+ this.Y = 0;
194002
+ this.Width = 0;
194003
+ this.Height = 0;
194004
+ return;
194005
+ }
194006
+ this.X = X_;
194007
+ this.Y = Y_;
194008
+ this.Width = Width_;
194009
+ this.Height = Height_;
194010
+ });
193180
194011
  screenParams = $pkg.screenParams = $newType(0, $kindStruct, "render.screenParams", true, "github.com/supraio/client-daemon/pkg/render", false, function(ScreenID_, ScreenDriver_, ScreenHost_, MetadataDriver_, MetadataHost_, ClientID_, ClientSecret_, Secure_) {
193181
194012
  this.$val = this;
193182
194013
  if (arguments.length === 0) {
@@ -193199,17 +194030,19 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193199
194030
  this.ClientSecret = ClientSecret_;
193200
194031
  this.Secure = Secure_;
193201
194032
  });
193202
- ScreenManager = $pkg.ScreenManager = $newType(0, $kindStruct, "render.ScreenManager", true, "github.com/supraio/client-daemon/pkg/render", true, function(screenWindowCmd_, logDir_, processInfoManager_) {
194033
+ ScreenManager = $pkg.ScreenManager = $newType(0, $kindStruct, "render.ScreenManager", true, "github.com/supraio/client-daemon/pkg/render", true, function(screenWindowCmd_, logDir_, processInfoManager_, processMu_) {
193203
194034
  this.$val = this;
193204
194035
  if (arguments.length === 0) {
193205
194036
  this.screenWindowCmd = "";
193206
194037
  this.logDir = "";
193207
194038
  this.processInfoManager = ptrType.nil;
194039
+ this.processMu = new sync.Mutex.ptr(0, 0);
193208
194040
  return;
193209
194041
  }
193210
194042
  this.screenWindowCmd = screenWindowCmd_;
193211
194043
  this.logDir = logDir_;
193212
194044
  this.processInfoManager = processInfoManager_;
194045
+ this.processMu = processMu_;
193213
194046
  });
193214
194047
  ProcessInfo = $pkg.ProcessInfo = $newType(0, $kindStruct, "render.ProcessInfo", true, "github.com/supraio/client-daemon/pkg/render", true, function(ScreenID_, Pid_) {
193215
194048
  this.$val = this;
@@ -193234,36 +194067,39 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193234
194067
  sliceType = $sliceType($Uint8);
193235
194068
  ptrType = $ptrType(ProcessInfoManager);
193236
194069
  funcType = $funcType([], [], false);
194070
+ ptrType$14 = $ptrType(Geometry);
193237
194071
  sliceType$2 = $sliceType($emptyInterface);
193238
194072
  sliceType$4 = $sliceType($String);
193239
194073
  arrayType = $arrayType(funcType, 0);
193240
194074
  mapType = $mapType($String, $emptyInterface);
193241
- ptrType$15 = $ptrType(ScreenManager);
194075
+ ptrType$16 = $ptrType(ScreenManager);
193242
194076
  ScreenManager.ptr.prototype.StartScreen = function(screenID, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, secure) {
193243
194077
  var {$24r, $24r$1, $24r$2, _key, _r, _r$1, _tuple, baseUrl, clientID, clientSecret, err, height, killScreen, left, m, metadataDriver, metadataHost, params, screenDriver, screenHost, screenID, screenWindow, secure, top, width, windowOpts, $s, $deferred, $r, $c} = $restore(this, {screenID, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, secure});
193244
194078
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
193245
194079
  m = [m];
193246
194080
  screenWindow = [screenWindow];
193247
194081
  m[0] = this;
193248
- $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194082
+ $r = m[0].processMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194083
+ $deferred.push([$methodVal(m[0].processMu, "Unlock"), []]);
194084
+ $r = mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193249
194085
  $deferred.push([$methodVal(mutex, "Unlock"), []]);
193250
194086
  width = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
193251
194087
  height = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
193252
194088
  left = 0;
193253
194089
  top = 0;
193254
- windowOpts = new sliceType$4(["width=" + ($encodeRune(width)), "height=" + ($encodeRune(height)), "left=" + ($encodeRune(left)), "top=" + ($encodeRune(top)), "location=no", "menubar=no", "status=no", "titlebar=no", "toolbar=no"]);
194090
+ windowOpts = new sliceType$4(["width=" + strconv.Itoa(width), "height=" + strconv.Itoa(height), "left=" + strconv.Itoa(left), "top=" + strconv.Itoa(top), "location=no", "menubar=no", "status=no", "titlebar=no", "toolbar=no"]);
193255
194091
  params = new screenParams.ptr(screenID, (screenDriver), screenHost, (metadataDriver), metadataHost, clientID, clientSecret, secure);
193256
194092
  baseUrl = $clone($clone($clone(js.Global(), js.Value).Get("location"), js.Value).Get("origin"), js.Value).String();
193257
- _r = m[0].openWindow(baseUrl, $clone(params, screenParams), windowOpts); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194093
+ _r = m[0].openWindow(baseUrl, $clone(params, screenParams), windowOpts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193258
194094
  _tuple = _r;
193259
194095
  screenWindow[0] = $clone(_tuple[0], js.Value);
193260
194096
  err = _tuple[1];
193261
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
193262
- /* */ $s = 4; continue;
193263
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
194097
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
194098
+ /* */ $s = 5; continue;
194099
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
193264
194100
  $24r = err;
193265
- $s = 5; case 5: return $24r;
193266
- /* } */ case 4:
194101
+ $s = 6; case 6: return $24r;
194102
+ /* } */ case 5:
193267
194103
  killScreen = (function(m, screenWindow) { return function $b() {
193268
194104
  var {_r$1, err$1, $s, $r, $c} = $restore(this, {});
193269
194105
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -193277,18 +194113,18 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193277
194113
  $s = -1; return;
193278
194114
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, err$1, $s};return $f;
193279
194115
  }; })(m, screenWindow);
193280
- _r$1 = m[0].processInfoManager.WaitProcess(screenID); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194116
+ _r$1 = m[0].processInfoManager.WaitProcess(screenID); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193281
194117
  err = _r$1;
193282
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
193283
- /* */ $s = 8; continue;
193284
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
193285
- $r = killScreen(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194118
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
194119
+ /* */ $s = 9; continue;
194120
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
194121
+ $r = killScreen(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193286
194122
  $24r$1 = err;
193287
- $s = 10; case 10: return $24r$1;
193288
- /* } */ case 8:
194123
+ $s = 11; case 11: return $24r$1;
194124
+ /* } */ case 9:
193289
194125
  _key = screenID; (openScreenWindows || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $clone(screenWindow[0], js.Value) });
193290
194126
  $24r$2 = $ifaceNil;
193291
- $s = 11; case 11: return $24r$2;
194127
+ $s = 12; case 12: return $24r$2;
193292
194128
  /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ScreenManager.ptr.prototype.StartScreen, $c: true, $r, $24r, $24r$1, $24r$2, _key, _r, _r$1, _tuple, baseUrl, clientID, clientSecret, err, height, killScreen, left, m, metadataDriver, metadataHost, params, screenDriver, screenHost, screenID, screenWindow, secure, top, width, windowOpts, $s, $deferred};return $f; } }
193293
194129
  };
193294
194130
  ScreenManager.prototype.StartScreen = function(screenID, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, secure) { return this.$val.StartScreen(screenID, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, secure); };
@@ -193358,46 +194194,116 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193358
194194
  };
193359
194195
  ScreenManager.prototype.closeWindow = function(window$1) { return this.$val.closeWindow(window$1); };
193360
194196
  ScreenManager.ptr.prototype.StopScreen = function(screenID) {
193361
- var {$24r, $24r$1, $24r$2, $24r$3, _entry, _r, _r$1, _tuple, _tuple$1, err, exists, m, screenID, screenWindow, $s, $deferred, $r, $c} = $restore(this, {screenID});
194197
+ var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, bridge, deadline, err, err$1, err$2, exists, m, screenID, screenWindow, stopScreen, $s, $deferred, $r, $c} = $restore(this, {screenID});
193362
194198
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
194199
+ bridge = [bridge];
193363
194200
  m = this;
193364
- $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194201
+ $r = m.processMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194202
+ $deferred.push([$methodVal(m.processMu, "Unlock"), []]);
194203
+ $r = mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193365
194204
  $deferred.push([$methodVal(mutex, "Unlock"), []]);
193366
- _r = m.processInfoManager.GetProcessInfo(screenID); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194205
+ _r = m.processInfoManager.GetProcessInfo(screenID); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193367
194206
  _tuple = _r;
193368
194207
  err = _tuple[1];
193369
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
193370
- /* */ $s = 4; continue;
193371
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
194208
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
194209
+ /* */ $s = 5; continue;
194210
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
193372
194211
  $24r = err;
193373
- $s = 5; case 5: return $24r;
193374
- /* } */ case 4:
194212
+ $s = 6; case 6: return $24r;
194213
+ /* } */ case 5:
193375
194214
  _tuple$1 = (_entry = $mapIndex(openScreenWindows,$String.keyFor(screenID)), _entry !== undefined ? [_entry.v, true] : [new js.Value.ptr(null, false, arrayType.zero()), false]);
193376
194215
  screenWindow = $clone(_tuple$1[0], js.Value);
193377
194216
  exists = _tuple$1[1];
193378
- /* */ if (!exists) { $s = 6; continue; }
193379
- /* */ $s = 7; continue;
193380
- /* if (!exists) { */ case 6:
193381
- $24r$1 = err;
193382
- $s = 8; case 8: return $24r$1;
193383
- /* } */ case 7:
193384
- _r$1 = m.closeWindow($clone(screenWindow, js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193385
- err = _r$1;
193386
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
193387
- /* */ $s = 11; continue;
193388
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
193389
- $24r$2 = err;
193390
- $s = 12; case 12: return $24r$2;
193391
- /* } */ case 11:
194217
+ /* */ if (!exists) { $s = 7; continue; }
194218
+ /* */ $s = 8; continue;
194219
+ /* if (!exists) { */ case 7:
194220
+ _r$1 = errs.Errorf("screen window %s is not open", new sliceType$2([new $String(screenID)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194221
+ $24r$1 = _r$1;
194222
+ $s = 10; case 10: return $24r$1;
194223
+ /* } */ case 8:
194224
+ bridge[0] = $clone($clone(screenWindow, js.Value).Get("__supra"), js.Value);
194225
+ /* */ if (($clone(bridge[0], js.Value).Type() === 0) || ($clone(bridge[0], js.Value).Type() === 1)) { $s = 11; continue; }
194226
+ /* */ $s = 12; continue;
194227
+ /* if (($clone(bridge[0], js.Value).Type() === 0) || ($clone(bridge[0], js.Value).Type() === 1)) { */ case 11:
194228
+ _r$2 = errs.Errorf("screen window %s control bridge is unavailable", new sliceType$2([new $String(screenID)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194229
+ $24r$2 = _r$2;
194230
+ $s = 14; case 14: return $24r$2;
194231
+ /* } */ case 12:
194232
+ stopScreen = $clone($clone(bridge[0], js.Value).Get("stopScreen"), js.Value);
194233
+ /* */ if (!(($clone(stopScreen, js.Value).Type() === 7))) { $s = 15; continue; }
194234
+ /* */ $s = 16; continue;
194235
+ /* if (!(($clone(stopScreen, js.Value).Type() === 7))) { */ case 15:
194236
+ _r$3 = errs.Errorf("screen window %s control bridge is unavailable", new sliceType$2([new $String(screenID)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194237
+ $24r$3 = _r$3;
194238
+ $s = 18; case 18: return $24r$3;
194239
+ /* } */ case 16:
194240
+ $clone(stopScreen, js.Value).Invoke(sliceType$2.nil);
194241
+ _r$4 = time.Now(); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
194242
+ _r$5 = $clone(_r$4, time.Time).Add(new time.Duration(6, 4230196224)); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
194243
+ deadline = $clone(_r$5, time.Time);
194244
+ _r$6 = waitForScreenLifecycleExit(screenID, (function(bridge) { return function(marker) {
194245
+ var marker, value;
194246
+ value = $clone($clone(bridge[0], js.Value).Get(marker), js.Value);
194247
+ return ($clone(value, js.Value).Type() === 2) && $clone(value, js.Value).Bool();
194248
+ }; })(bridge), $clone(deadline, time.Time)); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
194249
+ err$1 = _r$6;
194250
+ /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 22; continue; }
194251
+ /* */ $s = 23; continue;
194252
+ /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 22:
194253
+ $24r$4 = err$1;
194254
+ $s = 24; case 24: return $24r$4;
194255
+ /* } */ case 23:
194256
+ _r$7 = m.closeWindow($clone(screenWindow, js.Value)); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
194257
+ err$2 = _r$7;
194258
+ /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 26; continue; }
194259
+ /* */ $s = 27; continue;
194260
+ /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 26:
194261
+ $24r$5 = err$2;
194262
+ $s = 28; case 28: return $24r$5;
194263
+ /* } */ case 27:
193392
194264
  $mapDelete(openScreenWindows, $String.keyFor(screenID));
193393
- $24r$3 = $ifaceNil;
193394
- $s = 13; case 13: return $24r$3;
193395
- /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ScreenManager.ptr.prototype.StopScreen, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _entry, _r, _r$1, _tuple, _tuple$1, err, exists, m, screenID, screenWindow, $s, $deferred};return $f; } }
194265
+ $24r$6 = $ifaceNil;
194266
+ $s = 29; case 29: return $24r$6;
194267
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ScreenManager.ptr.prototype.StopScreen, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, bridge, deadline, err, err$1, err$2, exists, m, screenID, screenWindow, stopScreen, $s, $deferred};return $f; } }
193396
194268
  };
193397
194269
  ScreenManager.prototype.StopScreen = function(screenID) { return this.$val.StopScreen(screenID); };
194270
+ waitForScreenLifecycleExit = function(screenID, markerSet, deadline) {
194271
+ var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _v, cleanupCompleted, deadline, markerSet, screenID, $s, $r, $c} = $restore(this, {screenID, markerSet, deadline});
194272
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194273
+ cleanupCompleted = false;
194274
+ /* while (true) { */ case 1:
194275
+ /* */ if (!cleanupCompleted) { $s = 3; continue; }
194276
+ /* */ $s = 4; continue;
194277
+ /* if (!cleanupCompleted) { */ case 3:
194278
+ _r = markerSet("screenStopCompleted"); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194279
+ cleanupCompleted = _r;
194280
+ /* } */ case 4:
194281
+ if (!(cleanupCompleted)) { _v = false; $s = 8; continue s; }
194282
+ _r$1 = markerSet("screenLifecycleExited"); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194283
+ _v = _r$1; case 8:
194284
+ /* */ if (_v) { $s = 6; continue; }
194285
+ /* */ $s = 7; continue;
194286
+ /* if (_v) { */ case 6:
194287
+ $s = -1; return $ifaceNil;
194288
+ /* } */ case 7:
194289
+ _r$2 = time.Now(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194290
+ _r$3 = $clone(_r$2, time.Time).After($clone(deadline, time.Time)); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194291
+ /* */ if (_r$3) { $s = 10; continue; }
194292
+ /* */ $s = 11; continue;
194293
+ /* if (_r$3) { */ case 10:
194294
+ _r$4 = errs.Errorf("screen window %s stop timed out", new sliceType$2([new $String(screenID)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
194295
+ $24r = _r$4;
194296
+ $s = 15; case 15: return $24r;
194297
+ /* } */ case 11:
194298
+ $r = time.Sleep(new time.Duration(0, 10000000)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194299
+ $s = 1; continue;
194300
+ case 2:
194301
+ $s = -1; return $ifaceNil;
194302
+ /* */ } return; } var $f = {$blk: waitForScreenLifecycleExit, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _v, cleanupCompleted, deadline, markerSet, screenID, $s};return $f;
194303
+ };
193398
194304
  NewScreenManager = function(screenWindowCmd, logDir, processInfoManager) {
193399
194305
  var logDir, processInfoManager, screenWindowCmd;
193400
- return new ScreenManager.ptr(screenWindowCmd, logDir, processInfoManager);
194306
+ return new ScreenManager.ptr(screenWindowCmd, logDir, processInfoManager, new sync.Mutex.ptr(0, 0));
193401
194307
  };
193402
194308
  $pkg.NewScreenManager = NewScreenManager;
193403
194309
  ScreenManager.ptr.prototype.ListScreens = function() {
@@ -193467,6 +194373,29 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193467
194373
  /* */ } return; } var $f = {$blk: ProcessInfoManager.ptr.prototype.RemoveProcessInfo, $c: true, $r, _r, _r$1, err, m, screenID, userProcessDirPath, $s};return $f;
193468
194374
  };
193469
194375
  ProcessInfoManager.prototype.RemoveProcessInfo = function(screenID) { return this.$val.RemoveProcessInfo(screenID); };
194376
+ ProcessInfoManager.ptr.prototype.RemoveProcessInfoByPid = function(screenID, pid) {
194377
+ var {$24r, _r, _r$1, _tuple, err, m, pid, processInfo, screenID, $s, $r, $c} = $restore(this, {screenID, pid});
194378
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194379
+ m = this;
194380
+ _r = m.GetProcessInfo(screenID); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194381
+ _tuple = _r;
194382
+ processInfo = $clone(_tuple[0], ProcessInfo);
194383
+ err = _tuple[1];
194384
+ if (os.IsNotExist(err)) {
194385
+ $s = -1; return $ifaceNil;
194386
+ }
194387
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
194388
+ $s = -1; return err;
194389
+ }
194390
+ if (!((processInfo.Pid === pid))) {
194391
+ $s = -1; return $ifaceNil;
194392
+ }
194393
+ _r$1 = m.RemoveProcessInfo(screenID); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194394
+ $24r = _r$1;
194395
+ $s = 3; case 3: return $24r;
194396
+ /* */ } return; } var $f = {$blk: ProcessInfoManager.ptr.prototype.RemoveProcessInfoByPid, $c: true, $r, $24r, _r, _r$1, _tuple, err, m, pid, processInfo, screenID, $s};return $f;
194397
+ };
194398
+ ProcessInfoManager.prototype.RemoveProcessInfoByPid = function(screenID, pid) { return this.$val.RemoveProcessInfoByPid(screenID, pid); };
193470
194399
  ProcessInfoManager.ptr.prototype.WaitProcess = function(screenID) {
193471
194400
  var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, m, screenID, startTime, x, $s, $r, $c} = $restore(this, {screenID});
193472
194401
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -193497,6 +194426,37 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193497
194426
  /* */ } return; } var $f = {$blk: ProcessInfoManager.ptr.prototype.WaitProcess, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, m, screenID, startTime, x, $s};return $f;
193498
194427
  };
193499
194428
  ProcessInfoManager.prototype.WaitProcess = function(screenID) { return this.$val.WaitProcess(screenID); };
194429
+ ProcessInfoManager.ptr.prototype.WaitProcessStopped = function(screenID, timeout) {
194430
+ var {$24r, _r, _r$1, _r$2, _r$3, _tuple, err, m, screenID, startTime, timeout, x, $s, $r, $c} = $restore(this, {screenID, timeout});
194431
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194432
+ m = this;
194433
+ _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194434
+ startTime = $clone(_r, time.Time);
194435
+ /* while (true) { */ case 2:
194436
+ _r$1 = m.GetProcessInfo(screenID); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194437
+ _tuple = _r$1;
194438
+ err = _tuple[1];
194439
+ if (os.IsNotExist(err)) {
194440
+ $s = -1; return $ifaceNil;
194441
+ }
194442
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
194443
+ $s = -1; return err;
194444
+ }
194445
+ _r$2 = time.Since($clone(startTime, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194446
+ /* */ if ((x = _r$2, (x.$high > timeout.$high || (x.$high === timeout.$high && x.$low > timeout.$low)))) { $s = 5; continue; }
194447
+ /* */ $s = 6; continue;
194448
+ /* if ((x = _r$2, (x.$high > timeout.$high || (x.$high === timeout.$high && x.$low > timeout.$low)))) { */ case 5:
194449
+ _r$3 = errs.Errorf("Waiting for process %s stop timed out", new sliceType$2([new $String(screenID)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194450
+ $24r = _r$3;
194451
+ $s = 9; case 9: return $24r;
194452
+ /* } */ case 6:
194453
+ $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194454
+ $s = 2; continue;
194455
+ case 3:
194456
+ $s = -1; return $ifaceNil;
194457
+ /* */ } return; } var $f = {$blk: ProcessInfoManager.ptr.prototype.WaitProcessStopped, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _tuple, err, m, screenID, startTime, timeout, x, $s};return $f;
194458
+ };
194459
+ ProcessInfoManager.prototype.WaitProcessStopped = function(screenID, timeout) { return this.$val.WaitProcessStopped(screenID, timeout); };
193500
194460
  ProcessInfoManager.ptr.prototype.GetProcessInfo = function(screenID) {
193501
194461
  var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, err, fileBuffer, m, processInfo, screenID, userProcessDirPath, $s, $r, $c} = $restore(this, {screenID});
193502
194462
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -193588,10 +194548,16 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193588
194548
  onScreenWindowStarted = registerJSBridge;
193589
194549
  };
193590
194550
  registerJSBridge = function(w) {
193591
- var {supraObj, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {w});
194551
+ var {_r, _tuple, deactivateFacades, facades, getCurrentStats, setEncodingPreferences, stopScreen, supraObj, supraValue, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {w});
193592
194552
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194553
+ deactivateFacades = [deactivateFacades];
194554
+ getCurrentStats = [getCurrentStats];
194555
+ setEncodingPreferences = [setEncodingPreferences];
194556
+ stopScreen = [stopScreen];
194557
+ supraValue = [supraValue];
193593
194558
  w = [w];
193594
- supraObj = $makeMap($String.keyFor, [{ k: "setEncodingPreferences", v: (x = js.FuncOf((function(w) { return function $b(this$1, args) {
194559
+ supraValue[0] = new js.Value.ptr(null, false, arrayType.zero());
194560
+ setEncodingPreferences[0] = $clone(js.FuncOf((function(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w) { return function $b(this$1, args) {
193595
194561
  var {_r, args, err, jsonStr, prefs, this$1, $s, $r, $c} = $restore(this, {this$1, args});
193596
194562
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193597
194563
  prefs = [prefs];
@@ -193615,7 +194581,8 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193615
194581
  w[0].SetEncodingPreferences($clone(prefs[0], stats.EncodingPreferences));
193616
194582
  $s = -1; return $ifaceNil;
193617
194583
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, err, jsonStr, prefs, this$1, $s};return $f;
193618
- }; })(w)), new x.constructor.elem(x)) }, { k: "getCurrentStats", v: (x$1 = js.FuncOf((function(w) { return function $b(this$1, args) {
194584
+ }; })(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w)), js.Func);
194585
+ getCurrentStats[0] = $clone(js.FuncOf((function(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w) { return function $b(this$1, args) {
193619
194586
  var {_r, _tuple, args, clientStats, data, err, this$1, $s, $r, $c} = $restore(this, {this$1, args});
193620
194587
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193621
194588
  clientStats = w[0].stats.GetClientStats();
@@ -193631,16 +194598,70 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193631
194598
  /* } */ case 3:
193632
194599
  $s = -1; return new $String(($bytesToString(data)));
193633
194600
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _tuple, args, clientStats, data, err, this$1, $s};return $f;
193634
- }; })(w)), new x$1.constructor.elem(x$1)) }]);
193635
- $clone(js.Global(), js.Value).Set("__supra", (x$2 = js.ValueOf(new mapType(supraObj)), new x$2.constructor.elem(x$2)));
193636
- $r = log.Println(new sliceType$2([new $String("Registered window.__supra JS bridge")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194601
+ }; })(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w)), js.Func);
194602
+ stopScreen[0] = $clone(js.FuncOf((function(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w) { return function $b(this$1, args) {
194603
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
194604
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194605
+ $clone(supraValue[0], js.Value).Set("screenStopped", new $Bool(true));
194606
+ $r = log.Println(new sliceType$2([new $String("Screen close lifecycle: JS bridge requested close")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194607
+ $go($methodVal(w[0], "Close"), []);
194608
+ $s = -1; return $ifaceNil;
194609
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
194610
+ }; })(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w)), js.Func);
194611
+ _r = newJSBridgeFacades($clone(setEncodingPreferences[0], js.Func), $clone(getCurrentStats[0], js.Func), $clone(stopScreen[0], js.Func)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194612
+ _tuple = _r;
194613
+ facades = $clone(_tuple[0], js.Value);
194614
+ deactivateFacades[0] = _tuple[1];
194615
+ supraObj = $makeMap($String.keyFor, [{ k: "geometry", v: geometryValue(w[0].Geometry()) }, { k: "screenStopped", v: new $Bool(false) }, { k: "screenStopCompleted", v: new $Bool(false) }, { k: "screenLifecycleExited", v: new $Bool(false) }, { k: "setEncodingPreferences", v: (x = $clone(facades, js.Value).Get("setEncodingPreferences"), new x.constructor.elem(x)) }, { k: "getCurrentStats", v: (x$1 = $clone(facades, js.Value).Get("getCurrentStats"), new x$1.constructor.elem(x$1)) }, { k: "stopScreen", v: (x$2 = $clone(facades, js.Value).Get("stopScreen"), new x$2.constructor.elem(x$2)) }]);
194616
+ js.Value.copy(supraValue[0], js.ValueOf(new mapType(supraObj)));
194617
+ $clone(js.Global(), js.Value).Set("__supra", new supraValue[0].constructor.elem(supraValue[0]));
194618
+ $r = w[0].OnClose((function(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w) { return function $b() {
194619
+ var {$s, $r, $c} = $restore(this, {});
194620
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194621
+ $r = deactivateFacades[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194622
+ $clone(setEncodingPreferences[0], js.Func).Release();
194623
+ $clone(getCurrentStats[0], js.Func).Release();
194624
+ $clone(stopScreen[0], js.Func).Release();
194625
+ $r = log.Println(new sliceType$2([new $String("Screen close lifecycle: setting JS completion marker")])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194626
+ $clone(supraValue[0], js.Value).Set("screenStopCompleted", new $Bool(true));
194627
+ $r = log.Println(new sliceType$2([new $String("Screen close lifecycle: JS completion marker set")])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194628
+ $s = -1; return;
194629
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
194630
+ }; })(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194631
+ $r = log.Println(new sliceType$2([new $String("Registered window.__supra JS bridge")])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193637
194632
  $s = -1; return;
193638
- /* */ } return; } var $f = {$blk: registerJSBridge, $c: true, $r, supraObj, w, x, x$1, x$2, $s};return $f;
194633
+ /* */ } return; } var $f = {$blk: registerJSBridge, $c: true, $r, _r, _tuple, deactivateFacades, facades, getCurrentStats, setEncodingPreferences, stopScreen, supraObj, supraValue, w, x, x$1, x$2, $s};return $f;
193639
194634
  };
193640
- ptrType$15.methods = [{prop: "StartScreen", name: "StartScreen", pkg: "", typ: $funcType([$String, netpacket.Driver, $String, netstream.Driver, $String, $String, $String, $Bool], [$error], false)}, {prop: "openWindow", name: "openWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$String, screenParams, sliceType$4], [js.Value, $error], false)}, {prop: "closeWindow", name: "closeWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([js.Value], [$error], false)}, {prop: "StopScreen", name: "StopScreen", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "pipeErrLog", name: "pipeErrLog", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$String, io.Reader], [$error], false)}, {prop: "ListScreens", name: "ListScreens", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}];
193641
- ptrType.methods = [{prop: "CreateProcessInfo", name: "CreateProcessInfo", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "RemoveProcessInfo", name: "RemoveProcessInfo", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "WaitProcess", name: "WaitProcess", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "GetProcessInfo", name: "GetProcessInfo", pkg: "", typ: $funcType([$String], [ProcessInfo, $error], false)}, {prop: "ListScreenIDs", name: "ListScreenIDs", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
194635
+ newJSBridgeFacades = function(setEncodingPreferences, getCurrentStats, stopScreen) {
194636
+ var {_r, _r$1, deactivate, facades, getCurrentStats, setEncodingPreferences, state, stopScreen, $s, $r, $c} = $restore(this, {setEncodingPreferences, getCurrentStats, stopScreen});
194637
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194638
+ state = [state];
194639
+ state[0] = $clone(js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "active", v: new $Bool(true) }, { k: "setEncodingPreferences", v: new setEncodingPreferences.constructor.elem(setEncodingPreferences) }, { k: "getCurrentStats", v: new getCurrentStats.constructor.elem(getCurrentStats) }, { k: "stopScreen", v: new stopScreen.constructor.elem(stopScreen) }]))), js.Value);
194640
+ _r = $clone($clone(js.Global(), js.Value).Get("Function"), js.Value).New(new sliceType$2([new $String("state"), new $String("return {\n\t\t\tsetEncodingPreferences: function(json) {\n\t\t\t\tif (state.active) return state.setEncodingPreferences(json);\n\t\t\t},\n\t\t\tgetCurrentStats: function() {\n\t\t\t\tif (state.active) return state.getCurrentStats();\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\tstopScreen: function() {\n\t\t\t\tif (state.active) return state.stopScreen();\n\t\t\t}\n\t\t};")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194641
+ _r$1 = $clone(_r, js.Value).Invoke(new sliceType$2([new state[0].constructor.elem(state[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194642
+ facades = $clone(_r$1, js.Value);
194643
+ deactivate = (function(state) { return function() {
194644
+ var x, x$1, x$2;
194645
+ $clone(state[0], js.Value).Set("active", new $Bool(false));
194646
+ $clone(state[0], js.Value).Set("setEncodingPreferences", (x = js.Undefined(), new x.constructor.elem(x)));
194647
+ $clone(state[0], js.Value).Set("getCurrentStats", (x$1 = js.Undefined(), new x$1.constructor.elem(x$1)));
194648
+ $clone(state[0], js.Value).Set("stopScreen", (x$2 = js.Undefined(), new x$2.constructor.elem(x$2)));
194649
+ }; })(state);
194650
+ $s = -1; return [facades, deactivate];
194651
+ /* */ } return; } var $f = {$blk: newJSBridgeFacades, $c: true, $r, _r, _r$1, deactivate, facades, getCurrentStats, setEncodingPreferences, state, stopScreen, $s};return $f;
194652
+ };
194653
+ geometryValue = function(g) {
194654
+ var g;
194655
+ if (g === ptrType$14.nil) {
194656
+ return $ifaceNil;
194657
+ }
194658
+ return new mapType($makeMap($String.keyFor, [{ k: "x", v: new $Int(g.X) }, { k: "y", v: new $Int(g.Y) }, { k: "width", v: new $Int(g.Width) }, { k: "height", v: new $Int(g.Height) }]));
194659
+ };
194660
+ ptrType$16.methods = [{prop: "StartScreen", name: "StartScreen", pkg: "", typ: $funcType([$String, netpacket.Driver, $String, netstream.Driver, $String, $String, $String, $Bool], [$error], false)}, {prop: "openWindow", name: "openWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$String, screenParams, sliceType$4], [js.Value, $error], false)}, {prop: "closeWindow", name: "closeWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([js.Value], [$error], false)}, {prop: "StopScreen", name: "StopScreen", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "pipeErrLog", name: "pipeErrLog", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$String, io.Reader], [$error], false)}, {prop: "ListScreens", name: "ListScreens", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}];
194661
+ ptrType.methods = [{prop: "CreateProcessInfo", name: "CreateProcessInfo", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "RemoveProcessInfo", name: "RemoveProcessInfo", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "RemoveProcessInfoByPid", name: "RemoveProcessInfoByPid", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "WaitProcess", name: "WaitProcess", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "WaitProcessStopped", name: "WaitProcessStopped", pkg: "", typ: $funcType([$String, time.Duration], [$error], false)}, {prop: "GetProcessInfo", name: "GetProcessInfo", pkg: "", typ: $funcType([$String], [ProcessInfo, $error], false)}, {prop: "ListScreenIDs", name: "ListScreenIDs", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
194662
+ Geometry.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Int, tag: "json:\"x\""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Int, tag: "json:\"y\""}, {prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: "json:\"width\""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: "json:\"height\""}]);
193642
194663
  screenParams.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: "url:\"screenID\""}, {prop: "ScreenDriver", name: "ScreenDriver", embedded: false, exported: true, typ: $String, tag: "url:\"screenDriver\""}, {prop: "ScreenHost", name: "ScreenHost", embedded: false, exported: true, typ: $String, tag: "url:\"screenHost\""}, {prop: "MetadataDriver", name: "MetadataDriver", embedded: false, exported: true, typ: $String, tag: "url:\"metadataDriver\""}, {prop: "MetadataHost", name: "MetadataHost", embedded: false, exported: true, typ: $String, tag: "url:\"metadataHost\""}, {prop: "ClientID", name: "ClientID", embedded: false, exported: true, typ: $String, tag: "url:\"clientID\""}, {prop: "ClientSecret", name: "ClientSecret", embedded: false, exported: true, typ: $String, tag: "url:\"clientSecret\""}, {prop: "Secure", name: "Secure", embedded: false, exported: true, typ: $Bool, tag: "url:\"secure\""}]);
193643
- ScreenManager.init("github.com/supraio/client-daemon/pkg/render", [{prop: "screenWindowCmd", name: "screenWindowCmd", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "logDir", name: "logDir", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType, tag: ""}]);
194664
+ ScreenManager.init("github.com/supraio/client-daemon/pkg/render", [{prop: "screenWindowCmd", name: "screenWindowCmd", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "logDir", name: "logDir", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "processMu", name: "processMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
193644
194665
  ProcessInfo.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}]);
193645
194666
  ProcessInfoManager.init("github.com/supraio/client-daemon/pkg/render", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processDir", name: "processDir", embedded: false, exported: false, typ: $String, tag: ""}]);
193646
194667
  $init = function() {
@@ -193685,10 +194706,11 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193685
194706
  $r = log.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193686
194707
  $r = os.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193687
194708
  $r = path.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193688
- $r = strings.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193689
- $r = sync.$init(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193690
- $r = js.$init(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193691
- $r = time.$init(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194709
+ $r = strconv.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194710
+ $r = strings.$init(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194711
+ $r = sync.$init(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194712
+ $r = js.$init(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194713
+ $r = time.$init(); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193692
194714
  onScreenWindowStarted = $throwNilPointerError;
193693
194715
  openScreenWindows = $makeMap($String.keyFor, []);
193694
194716
  mutex = new sync.Mutex.ptr(0, 0);
@@ -193712,7 +194734,7 @@ $packages["main"] = (function() {
193712
194734
  sliceType = $sliceType($String);
193713
194735
  sliceType$1 = $sliceType($emptyInterface);
193714
194736
  main = function() {
193715
- var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, cfg, commandHandler, err, err$1, logFile, processInfoManager, screenManager, signalChannel, $s, $deferred, $r, $c} = $restore(this, {});
194737
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, cfg, commandHandler, err, err$1, logFile, processInfoManager, screenManager, signalChannel, $s, $deferred, $r, $c} = $restore(this, {});
193716
194738
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
193717
194739
  commandHandler = [commandHandler];
193718
194740
  logFile = [logFile];
@@ -193780,10 +194802,11 @@ $packages["main"] = (function() {
193780
194802
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$5, err$2, $s};return $f;
193781
194803
  }; })(commandHandler, logFile), []]);
193782
194804
  $r = log.Println(new sliceType$1([new $String("Supra client-daemon started")])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193783
- $r = helper.WaitOnStopSignal(signalChannel); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194805
+ _r$5 = helper.WaitOnStopSignal(signalChannel); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
194806
+ _r$5;
193784
194807
  $r = log.Println(new sliceType$1([new $String("Supra client-daemon is stopping")])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193785
194808
  $s = -1; return;
193786
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: main, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, cfg, commandHandler, err, err$1, logFile, processInfoManager, screenManager, signalChannel, $s, $deferred};return $f; } }
194809
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: main, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, cfg, commandHandler, err, err$1, logFile, processInfoManager, screenManager, signalChannel, $s, $deferred};return $f; } }
193787
194810
  };
193788
194811
  $init = function() {
193789
194812
  $pkg.$init = function() {};