@supraio/client-daemon-js 0.0.0-master.290 → 0.0.0-master.308

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.
@@ -65687,7 +65687,7 @@ $packages["math/rand"] = (function() {
65687
65687
  return $pkg;
65688
65688
  })();
65689
65689
  $packages["github.com/supraio/client-daemon/pkg/helper"] = (function() {
65690
- var $pkg = {}, $init, log, rand, os, syscall, time, sliceType, sliceType$1, seededRand, _r, _r$1, _r$2, _r$3, GenerateStringWithCharset, GenerateStringWithLength, WaitOnStopSignal;
65690
+ var $pkg = {}, $init, log, rand, os, syscall, time, sliceType, sliceType$1, seededRand, _r, _r$1, _r$2, _r$3, GenerateStringWithCharset, GenerateStringWithLength, WaitOnStopSignal, ClampedInt64;
65691
65691
  log = $packages["log"];
65692
65692
  rand = $packages["math/rand"];
65693
65693
  os = $packages["os"];
@@ -65729,18 +65729,29 @@ $packages["github.com/supraio/client-daemon/pkg/helper"] = (function() {
65729
65729
  $go((function(signalChannel) { return function $b() {
65730
65730
  var {$s, $r, $c} = $restore(this, {});
65731
65731
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
65732
- $r = time.Sleep(new time.Duration(20116, 2437873664)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
65732
+ $r = time.Sleep(new time.Duration(140815, 4180213760)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
65733
65733
  $r = $send(signalChannel[0], new syscall.Signal(6)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
65734
65734
  $s = -1; return;
65735
65735
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
65736
65736
  }; })(signalChannel), []);
65737
65737
  _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; }
65738
65738
  sig = _r$4[0];
65739
- $r = log.Printf("Signal %s received (emulated after 24 hours).\n", new sliceType$1([sig])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
65739
+ $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; }
65740
65740
  $s = -1; return;
65741
65741
  /* */ } return; } var $f = {$blk: WaitOnStopSignal, $c: true, $r, _r$4, sig, signalChannel, $s};return $f;
65742
65742
  };
65743
65743
  $pkg.WaitOnStopSignal = WaitOnStopSignal;
65744
+ ClampedInt64 = function(value, min, max) {
65745
+ var max, min, value;
65746
+ if ((value.$high < min.$high || (value.$high === min.$high && value.$low < min.$low))) {
65747
+ return min;
65748
+ }
65749
+ if ((value.$high > max.$high || (value.$high === max.$high && value.$low > max.$low))) {
65750
+ return max;
65751
+ }
65752
+ return value;
65753
+ };
65754
+ $pkg.ClampedInt64 = ClampedInt64;
65744
65755
  $init = function() {
65745
65756
  $pkg.$init = function() {};
65746
65757
  /* */ 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:
@@ -180053,11 +180064,42 @@ $packages["github.com/supraio/client-daemon/pkg/clientscreen"] = (function() {
180053
180064
  return $pkg;
180054
180065
  })();
180055
180066
  $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
180056
- var $pkg = {}, $init, log, js, ptrType, sliceType, Await;
180067
+ var $pkg = {}, $init, errs, log, js, ptrType, sliceType, GetError, Await;
180068
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
180057
180069
  log = $packages["log"];
180058
180070
  js = $packages["syscall/js"];
180059
180071
  ptrType = $ptrType(js.Value);
180060
180072
  sliceType = $sliceType($emptyInterface);
180073
+ GetError = function(err) {
180074
+ var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, err, $s, $r, $c} = $restore(this, {err});
180075
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180076
+ /* */ if (err === ptrType.nil) { $s = 1; continue; }
180077
+ /* */ $s = 2; continue;
180078
+ /* if (err === ptrType.nil) { */ case 1:
180079
+ _r = errs.Errorf("Error is nil", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180080
+ $24r = _r;
180081
+ $s = 4; case 4: return $24r;
180082
+ /* } */ case 2:
180083
+ /* */ if ($clone(err, js.Value).Type() === 4) { $s = 5; continue; }
180084
+ /* */ if ($clone(err, js.Value).Type() === 6) { $s = 6; continue; }
180085
+ /* */ $s = 7; continue;
180086
+ /* if ($clone(err, js.Value).Type() === 4) { */ case 5:
180087
+ _r$1 = errs.Errorf("%s", new sliceType([new $String($clone(err, js.Value).String())])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180088
+ $24r$1 = _r$1;
180089
+ $s = 10; case 10: return $24r$1;
180090
+ /* } else if ($clone(err, js.Value).Type() === 6) { */ case 6:
180091
+ _r$2 = errs.Errorf("%s, stack: %s", new sliceType([new $String($clone($clone(err, js.Value).Get("message"), js.Value).String()), new $String($clone($clone(err, js.Value).Get("stack"), js.Value).String())])); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180092
+ $24r$2 = _r$2;
180093
+ $s = 12; case 12: return $24r$2;
180094
+ /* } else { */ case 7:
180095
+ _r$3 = errs.Errorf("Unknown error type: %v", new sliceType([err])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180096
+ $24r$3 = _r$3;
180097
+ $s = 14; case 14: return $24r$3;
180098
+ /* } */ case 8:
180099
+ $s = -1; return $ifaceNil;
180100
+ /* */ } return; } var $f = {$blk: GetError, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, err, $s};return $f;
180101
+ };
180102
+ $pkg.GetError = GetError;
180061
180103
  Await = function(awaitable) {
180062
180104
  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});
180063
180105
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -180074,7 +180116,7 @@ $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
180074
180116
  /* */ if (then[0] === $chanNil) { $s = 1; continue; }
180075
180117
  /* */ $s = 2; continue;
180076
180118
  /* if (then[0] === $chanNil) { */ case 1:
180077
- $r = log.Println(new sliceType([new $String("Promise already resolved cannot resolve again")])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180119
+ $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; }
180078
180120
  $s = -1; return $ifaceNil;
180079
180121
  /* } */ case 2:
180080
180122
  $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; }
@@ -180088,17 +180130,19 @@ $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
180088
180130
  catch$1[0] = $chanNil;
180089
180131
  }; })(catch$1, then), []]);
180090
180132
  catchFunc = $clone(js.FuncOf((function(catch$1, then) { return function $b(this$1, args) {
180091
- var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
180133
+ var {_arg, _r, args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
180092
180134
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180093
180135
  /* */ if (catch$1[0] === $chanNil) { $s = 1; continue; }
180094
180136
  /* */ $s = 2; continue;
180095
180137
  /* if (catch$1[0] === $chanNil) { */ case 1:
180096
- $r = log.Println(new sliceType([new $String("Promise already resolved cannot be rejected")])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180138
+ _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; }
180139
+ _arg = _r;
180140
+ $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; }
180097
180141
  $s = -1; return $ifaceNil;
180098
180142
  /* } */ case 2:
180099
- $r = $send(catch$1[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; }
180143
+ $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; }
180100
180144
  $s = -1; return $ifaceNil;
180101
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
180145
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r, args, this$1, $s};return $f;
180102
180146
  }; })(catch$1, then)), js.Func);
180103
180147
  $deferred.push([$methodVal($clone(catchFunc, js.Func), "Release"), []]);
180104
180148
  _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; }
@@ -180125,8 +180169,9 @@ $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
180125
180169
  $init = function() {
180126
180170
  $pkg.$init = function() {};
180127
180171
  /* */ 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:
180128
- $r = log.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180129
- $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180172
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180173
+ $r = log.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180174
+ $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180130
180175
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
180131
180176
  };
180132
180177
  $pkg.$init = $init;
@@ -181234,26 +181279,12 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
181234
181279
  };
181235
181280
  MetadataServer.prototype.handleData = function() { return this.$val.handleData(); };
181236
181281
  NewMetadataResponsiveSender = function(metadataServer, timeoutDuration) {
181237
- var metadataServer, timeoutDuration;
181238
- return new MetadataResponsiveSender.ptr(metadataServer, timeoutDuration, $makeMap($String.keyFor, []), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex));
181282
+ var metadataServer, s, timeoutDuration;
181283
+ s = new MetadataResponsiveSender.ptr(metadataServer, timeoutDuration, $makeMap($String.keyFor, []), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex));
181284
+ metadataServer.OnMessage($methodVal(s, "handleServerData"));
181285
+ return s;
181239
181286
  };
181240
181287
  $pkg.NewMetadataResponsiveSender = NewMetadataResponsiveSender;
181241
- MetadataResponsiveSender.ptr.prototype.Listen = function() {
181242
- var s;
181243
- s = this;
181244
- s.metadataServer.OnMessage($methodVal(s, "handleServerData"));
181245
- };
181246
- MetadataResponsiveSender.prototype.Listen = function() { return this.$val.Listen(); };
181247
- MetadataResponsiveSender.ptr.prototype.Close = function() {
181248
- var {$24r, _r, s, $s, $r, $c} = $restore(this, {});
181249
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181250
- s = this;
181251
- _r = s.metadataServer.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181252
- $24r = _r;
181253
- $s = 2; case 2: return $24r;
181254
- /* */ } return; } var $f = {$blk: MetadataResponsiveSender.ptr.prototype.Close, $c: true, $r, $24r, _r, s, $s};return $f;
181255
- };
181256
- MetadataResponsiveSender.prototype.Close = function() { return this.$val.Close(); };
181257
181288
  MetadataResponsiveSender.ptr.prototype.SendServerWaitResponse = function(msgType, data) {
181258
181289
  var {$24r, $24r$1, $24r$2, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _tuple, data, err, msgType, reqData, requestChan, requestID, resp, s, $s, $r, $c} = $restore(this, {msgType, data});
181259
181290
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -181572,7 +181603,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
181572
181603
  };
181573
181604
  Framer.prototype.parseFrames = function() { return this.$val.parseFrames(); };
181574
181605
  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$1], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "handleData", name: "handleData", pkg: "github.com/supraio/client-daemon/pkg/netclient", typ: $funcType([], [], false)}];
181575
- ptrType$2.methods = [{prop: "Listen", name: "Listen", pkg: "", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], 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)}];
181606
+ ptrType$2.methods = [{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)}];
181576
181607
  ptrType$3.methods = [{prop: "Send", name: "Send", pkg: "", typ: $funcType([message.MsgType, sliceType$1], [$error], false)}];
181577
181608
  ptrType$4.methods = [{prop: "Connect", name: "Connect", pkg: "", typ: $funcType([], [ptrType$1, $error], false)}];
181578
181609
  ptrType$5.methods = [{prop: "Send", name: "Send", pkg: "", typ: $funcType([message.MsgType, sliceType$1], [$error], false)}];
@@ -186514,466 +186545,6 @@ $packages["github.com/nuberu/webgl"] = (function() {
186514
186545
  $pkg.$init = $init;
186515
186546
  return $pkg;
186516
186547
  })();
186517
- $packages["golang.org/x/exp/shiny/driver/internal/dom"] = (function() {
186518
- var $pkg = {}, $init, focus, key, mouse, size, 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;
186519
- focus = $packages["golang.org/x/mobile/event/focus"];
186520
- key = $packages["golang.org/x/mobile/event/key"];
186521
- mouse = $packages["golang.org/x/mobile/event/mouse"];
186522
- size = $packages["golang.org/x/mobile/event/size"];
186523
- geom = $packages["golang.org/x/mobile/geom"];
186524
- math = $packages["math"];
186525
- strings = $packages["strings"];
186526
- js = $packages["syscall/js"];
186527
- DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/internal/dom", true, function(eventChan_, releases_) {
186528
- this.$val = this;
186529
- if (arguments.length === 0) {
186530
- this.eventChan = $chanNil;
186531
- this.releases = sliceType$1.nil;
186532
- return;
186533
- }
186534
- this.eventChan = eventChan_;
186535
- this.releases = releases_;
186536
- });
186537
- sliceType = $sliceType($emptyInterface);
186538
- funcType = $funcType([], [], false);
186539
- sliceType$1 = $sliceType(funcType);
186540
- sliceType$2 = $sliceType($Int32);
186541
- chanType = $chanType($emptyInterface, false, false);
186542
- ptrType = $ptrType(DomEvents);
186543
- GetDocWidth = function() {
186544
- return $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
186545
- };
186546
- $pkg.GetDocWidth = GetDocWidth;
186547
- GetDocHeight = function() {
186548
- return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
186549
- };
186550
- $pkg.GetDocHeight = GetDocHeight;
186551
- GetScreenWidth = function() {
186552
- return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
186553
- };
186554
- $pkg.GetScreenWidth = GetScreenWidth;
186555
- GetScreenHeight = function() {
186556
- return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
186557
- };
186558
- $pkg.GetScreenHeight = GetScreenHeight;
186559
- GetBrowserZoomRatio = function() {
186560
- var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
186561
- windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
186562
- windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
186563
- docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
186564
- scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
186565
- chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
186566
- scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
186567
- chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
186568
- scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
186569
- chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
186570
- return chromeZoom3;
186571
- };
186572
- $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
186573
- SetWindowWidth = function(newInnerWidth) {
186574
- var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
186575
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186576
- innerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
186577
- outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
186578
- outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
186579
- newOuterWidth = newInnerWidth + ((outerWidth - innerWidth >> 0)) >> 0;
186580
- screenWidth = GetScreenWidth();
186581
- if (newOuterWidth > screenWidth) {
186582
- newOuterWidth = screenWidth;
186583
- }
186584
- _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(newOuterWidth), new $Int(outerHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186585
- _r;
186586
- $s = -1; return;
186587
- /* */ } return; } var $f = {$blk: SetWindowWidth, $c: true, $r, _r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s};return $f;
186588
- };
186589
- $pkg.SetWindowWidth = SetWindowWidth;
186590
- SetWindowHeight = function(newInnerHeight) {
186591
- var {_r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s, $r, $c} = $restore(this, {newInnerHeight});
186592
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186593
- innerHeight = $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
186594
- outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
186595
- outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
186596
- newOuterHeight = newInnerHeight + ((outerHeight - innerHeight >> 0)) >> 0;
186597
- screenHeight = GetScreenHeight();
186598
- if (newOuterHeight > screenHeight) {
186599
- newOuterHeight = screenHeight;
186600
- }
186601
- _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(outerWidth), new $Int(newOuterHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186602
- _r;
186603
- $s = -1; return;
186604
- /* */ } return; } var $f = {$blk: SetWindowHeight, $c: true, $r, _r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s};return $f;
186605
- };
186606
- $pkg.SetWindowHeight = SetWindowHeight;
186607
- GetOrientation = function() {
186608
- var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
186609
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
186610
- orientation = [orientation];
186611
- orientation[0] = 0;
186612
- $deferred.push([(function(orientation) { return function() {
186613
- if (!($interfaceIsEqual($recover(), $ifaceNil))) {
186614
- orientation[0] = 0;
186615
- }
186616
- }; })(orientation), []]);
186617
- orientationType = $clone($clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("orientation"), js.Value).Get("type"), js.Value).String();
186618
- /* */ if (strings.HasPrefix(orientationType, "landscape")) { $s = 1; continue; }
186619
- /* */ $s = 2; continue;
186620
- /* if (strings.HasPrefix(orientationType, "landscape")) { */ case 1:
186621
- orientation[0] = 2;
186622
- $24r = orientation[0];
186623
- $s = 3; case 3: return $24r;
186624
- /* } */ case 2:
186625
- /* */ if (strings.HasPrefix(orientationType, "portrait")) { $s = 4; continue; }
186626
- /* */ $s = 5; continue;
186627
- /* if (strings.HasPrefix(orientationType, "portrait")) { */ case 4:
186628
- orientation[0] = 2;
186629
- $24r$1 = orientation[0];
186630
- $s = 6; case 6: return $24r$1;
186631
- /* } */ case 5:
186632
- orientation[0] = 0;
186633
- $24r$2 = orientation[0];
186634
- $s = 7; case 7: return $24r$2;
186635
- /* */ } 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; } }
186636
- };
186637
- $pkg.GetOrientation = GetOrientation;
186638
- NewDomEvents = function() {
186639
- return new DomEvents.ptr(new $Chan($emptyInterface, 0), $makeSlice(sliceType$1, 0));
186640
- };
186641
- $pkg.NewDomEvents = NewDomEvents;
186642
- DomEvents.ptr.prototype.GetEventChan = function() {
186643
- var d;
186644
- d = this;
186645
- return d.eventChan;
186646
- };
186647
- DomEvents.prototype.GetEventChan = function() { return this.$val.GetEventChan(); };
186648
- DomEvents.ptr.prototype.Release = function() {
186649
- var {_i, _ref, d, release, $s, $r, $c} = $restore(this, {});
186650
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186651
- d = this;
186652
- _ref = d.releases;
186653
- _i = 0;
186654
- /* while (true) { */ case 1:
186655
- /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
186656
- release = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
186657
- $r = release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186658
- _i++;
186659
- $s = 1; continue;
186660
- case 2:
186661
- $s = -1; return;
186662
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.Release, $c: true, $r, _i, _ref, d, release, $s};return $f;
186663
- };
186664
- DomEvents.prototype.Release = function() { return this.$val.Release(); };
186665
- DomEvents.ptr.prototype.BindEvents = function() {
186666
- var {d, $s, $r, $c} = $restore(this, {});
186667
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186668
- d = this;
186669
- $r = d.bindSizeEvents(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186670
- $go($methodVal(d, "emitSizeEvent"), []);
186671
- $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186672
- $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186673
- $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186674
- $s = -1; return;
186675
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
186676
- };
186677
- DomEvents.prototype.BindEvents = function() { return this.$val.BindEvents(); };
186678
- DomEvents.ptr.prototype.bindSizeEvents = function() {
186679
- var {_r, d, onResize, $s, $r, $c} = $restore(this, {});
186680
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186681
- d = [d];
186682
- onResize = [onResize];
186683
- d[0] = this;
186684
- onResize[0] = $clone(js.FuncOf((function(d, onResize) { return function $b(this$1, args) {
186685
- var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
186686
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186687
- $r = d[0].emitSizeEvent(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186688
- $s = -1; return $ifaceNil;
186689
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
186690
- }; })(d, onResize)), js.Func);
186691
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186692
- _r;
186693
- d[0].releases = $append(d[0].releases, (function(d, onResize) { return function $b() {
186694
- var {_r$1, $s, $r, $c} = $restore(this, {});
186695
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186696
- _r$1 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186697
- _r$1;
186698
- $clone(onResize[0], js.Func).Release();
186699
- $s = -1; return;
186700
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, $s};return $f;
186701
- }; })(d, onResize));
186702
- $s = -1; return;
186703
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindSizeEvents, $c: true, $r, _r, d, onResize, $s};return $f;
186704
- };
186705
- DomEvents.prototype.bindSizeEvents = function() { return this.$val.bindSizeEvents(); };
186706
- DomEvents.ptr.prototype.emitSizeEvent = function() {
186707
- var {_q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s, $r, $c} = $restore(this, {});
186708
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186709
- d = this;
186710
- _r = GetOrientation(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186711
- orientation = _r;
186712
- pixelsPerPt = 1;
186713
- width = GetDocWidth();
186714
- height = GetDocHeight();
186715
- $r = $send(d.eventChan, (x = new size.Event.ptr(width, height, ((_q = width / ((pixelsPerPt >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((_q$1 = height / ((pixelsPerPt >> 0)), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), pixelsPerPt, orientation), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186716
- $s = -1; return;
186717
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
186718
- };
186719
- DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
186720
- DomEvents.ptr.prototype.bindMouseEvents = function() {
186721
- var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
186722
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186723
- d = [d];
186724
- onClick = [onClick];
186725
- onMove = [onMove];
186726
- onWheel = [onWheel];
186727
- d[0] = this;
186728
- onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
186729
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186730
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186731
- _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; }
186732
- _r;
186733
- $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; }
186734
- $s = -1; return $ifaceNil;
186735
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
186736
- }; })(d, onClick, onMove, onWheel)), js.Func);
186737
- _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; }
186738
- _r;
186739
- onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
186740
- var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186741
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186742
- _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; }
186743
- _r$1;
186744
- $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; }
186745
- $s = -1; return $ifaceNil;
186746
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
186747
- }; })(d, onClick, onMove, onWheel)), js.Func);
186748
- _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; }
186749
- _r$1;
186750
- _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; }
186751
- _r$2;
186752
- onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
186753
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186754
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186755
- $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; }
186756
- $s = -1; return $ifaceNil;
186757
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
186758
- }; })(d, onClick, onMove, onWheel)), js.Func);
186759
- _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; }
186760
- _r$3;
186761
- d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
186762
- var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
186763
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186764
- _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; }
186765
- _r$4;
186766
- _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; }
186767
- _r$5;
186768
- _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; }
186769
- _r$6;
186770
- _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; }
186771
- _r$7;
186772
- $clone(onMove[0], js.Func).Release();
186773
- $clone(onClick[0], js.Func).Release();
186774
- $clone(onWheel[0], js.Func).Release();
186775
- $s = -1; return;
186776
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, _r$5, _r$6, _r$7, $s};return $f;
186777
- }; })(d, onClick, onMove, onWheel));
186778
- $s = -1; return;
186779
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindMouseEvents, $c: true, $r, _r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s};return $f;
186780
- };
186781
- DomEvents.prototype.bindMouseEvents = function() { return this.$val.bindMouseEvents(); };
186782
- getMouseDirection = function(ev) {
186783
- var dir, ev;
186784
- dir = 0;
186785
- dir = 0;
186786
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mousedown") {
186787
- dir = 1;
186788
- }
186789
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mouseup") {
186790
- dir = 2;
186791
- }
186792
- return dir;
186793
- };
186794
- getWheelButton = function(ev) {
186795
- var deltaX, deltaY, ev;
186796
- deltaY = $clone($clone(ev, js.Value).Get("deltaY"), js.Value).Int();
186797
- deltaX = $clone($clone(ev, js.Value).Get("deltaX"), js.Value).Int();
186798
- if (deltaY > 0) {
186799
- return -2;
186800
- }
186801
- if (deltaY < 0) {
186802
- return -1;
186803
- }
186804
- if (deltaX > 0) {
186805
- return -4;
186806
- }
186807
- if (deltaX < 0) {
186808
- return -3;
186809
- }
186810
- return 0;
186811
- };
186812
- getMouseButton = function(ev) {
186813
- var _1, ev;
186814
- _1 = $clone($clone(ev, js.Value).Get("button"), js.Value).Int();
186815
- if (_1 === (0)) {
186816
- return 1;
186817
- } else if (_1 === (1)) {
186818
- return 2;
186819
- } else if (_1 === (2)) {
186820
- return 3;
186821
- } else if (_1 === (3)) {
186822
- return 8;
186823
- } else if (_1 === (4)) {
186824
- return 9;
186825
- } else {
186826
- return 0;
186827
- }
186828
- };
186829
- getEventModifiers = function(ev) {
186830
- var ev, mod;
186831
- mod = 0;
186832
- if ($clone($clone(ev, js.Value).Get("altKey"), js.Value).Bool()) {
186833
- mod = (mod | (4)) >>> 0;
186834
- }
186835
- if ($clone($clone(ev, js.Value).Get("ctrlKey"), js.Value).Bool()) {
186836
- mod = (mod | (2)) >>> 0;
186837
- }
186838
- if ($clone($clone(ev, js.Value).Get("shiftKey"), js.Value).Bool()) {
186839
- mod = (mod | (1)) >>> 0;
186840
- }
186841
- if ($clone($clone(ev, js.Value).Get("metaKey"), js.Value).Bool()) {
186842
- mod = (mod | (8)) >>> 0;
186843
- }
186844
- return mod;
186845
- };
186846
- DomEvents.ptr.prototype.bindFocusEvents = function() {
186847
- var {_r, _r$1, d, onFocus, $s, $r, $c} = $restore(this, {});
186848
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186849
- d = [d];
186850
- onFocus = [onFocus];
186851
- d[0] = this;
186852
- onFocus[0] = $clone(js.FuncOf((function(d, onFocus) { return function $b(this$1, args) {
186853
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186854
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186855
- $r = $send(d[0].eventChan, (x = new focus.Event.ptr(isFocusIn($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186856
- $s = -1; return $ifaceNil;
186857
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
186858
- }; })(d, onFocus)), js.Func);
186859
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186860
- _r;
186861
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186862
- _r$1;
186863
- d[0].releases = $append(d[0].releases, (function(d, onFocus) { return function $b() {
186864
- var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
186865
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186866
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
186867
- _r$2;
186868
- _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
186869
- _r$3;
186870
- $clone(onFocus[0], js.Func).Release();
186871
- $s = -1; return;
186872
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
186873
- }; })(d, onFocus));
186874
- $s = -1; return;
186875
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindFocusEvents, $c: true, $r, _r, _r$1, d, onFocus, $s};return $f;
186876
- };
186877
- DomEvents.prototype.bindFocusEvents = function() { return this.$val.bindFocusEvents(); };
186878
- isFocusIn = function(ev) {
186879
- var ev;
186880
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "focus") {
186881
- return true;
186882
- }
186883
- return false;
186884
- };
186885
- DomEvents.ptr.prototype.bindKeyEvents = function() {
186886
- var {_r, _r$1, d, onKey, $s, $r, $c} = $restore(this, {});
186887
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186888
- d = [d];
186889
- onKey = [onKey];
186890
- d[0] = this;
186891
- onKey[0] = $clone(js.FuncOf((function(d, onKey) { return function $b(this$1, args) {
186892
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186893
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186894
- _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; }
186895
- _r;
186896
- $r = $send(d[0].eventChan, (x = new key.Event.ptr(getKeyRune($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyCode($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)), getKeyDirection($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; }
186897
- $s = -1; return $ifaceNil;
186898
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
186899
- }; })(d, onKey)), js.Func);
186900
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186901
- _r;
186902
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186903
- _r$1;
186904
- d[0].releases = $append(d[0].releases, (function(d, onKey) { return function $b() {
186905
- var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
186906
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186907
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
186908
- _r$2;
186909
- _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
186910
- _r$3;
186911
- $clone(onKey[0], js.Func).Release();
186912
- $s = -1; return;
186913
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
186914
- }; })(d, onKey));
186915
- $s = -1; return;
186916
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindKeyEvents, $c: true, $r, _r, _r$1, d, onKey, $s};return $f;
186917
- };
186918
- DomEvents.prototype.bindKeyEvents = function() { return this.$val.bindKeyEvents(); };
186919
- getKeyRune = function(ev) {
186920
- var ev, key$1;
186921
- key$1 = (new sliceType$2($stringToRunes($clone($clone(ev, js.Value).Get("key"), js.Value).String())));
186922
- if (key$1.$length === 1) {
186923
- return (0 >= key$1.$length ? ($throwRuntimeError("index out of range"), undefined) : key$1.$array[key$1.$offset + 0]);
186924
- }
186925
- return -1;
186926
- };
186927
- getKeyDirection = function(ev) {
186928
- var dir, ev;
186929
- dir = 0;
186930
- dir = 0;
186931
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keydown") {
186932
- dir = 1;
186933
- }
186934
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keyup") {
186935
- dir = 2;
186936
- }
186937
- return dir;
186938
- };
186939
- getKeyCode = function(ev) {
186940
- var _entry, _entry$1, _tuple, _tuple$1, code, code$1, domCode, domKey, ev, exists, exists$1;
186941
- domCode = $clone($clone(ev, js.Value).Get("code"), js.Value).String();
186942
- _tuple = (_entry = $mapIndex(keyCodesMap,$String.keyFor(domCode)), _entry !== undefined ? [_entry.v, true] : [0, false]);
186943
- code = _tuple[0];
186944
- exists = _tuple[1];
186945
- if (exists) {
186946
- return code;
186947
- }
186948
- domKey = $clone($clone(ev, js.Value).Get("key"), js.Value).String();
186949
- _tuple$1 = (_entry$1 = $mapIndex(keyCodesByKeyMap,$String.keyFor(domKey)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
186950
- code$1 = _tuple$1[0];
186951
- exists$1 = _tuple$1[1];
186952
- if (exists$1) {
186953
- return code$1;
186954
- }
186955
- return 0;
186956
- };
186957
- 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/internal/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}];
186958
- DomEvents.init("golang.org/x/exp/shiny/driver/internal/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
186959
- $init = function() {
186960
- $pkg.$init = function() {};
186961
- /* */ 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:
186962
- $r = focus.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186963
- $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186964
- $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186965
- $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186966
- $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186967
- $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186968
- $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186969
- $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186970
- keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
186971
- keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
186972
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
186973
- };
186974
- $pkg.$init = $init;
186975
- return $pkg;
186976
- })();
186977
186548
  $packages["golang.org/x/image/math/f64"] = (function() {
186978
186549
  var $pkg = {}, $init, Aff3;
186979
186550
  Aff3 = $pkg.Aff3 = $newType(48, $kindArray, "f64.Aff3", true, "golang.org/x/image/math/f64", true, null);
@@ -189091,6 +188662,466 @@ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
189091
188662
  $pkg.$init = $init;
189092
188663
  return $pkg;
189093
188664
  })();
188665
+ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
188666
+ var $pkg = {}, $init, focus, key, mouse, size, 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;
188667
+ focus = $packages["golang.org/x/mobile/event/focus"];
188668
+ key = $packages["golang.org/x/mobile/event/key"];
188669
+ mouse = $packages["golang.org/x/mobile/event/mouse"];
188670
+ size = $packages["golang.org/x/mobile/event/size"];
188671
+ geom = $packages["golang.org/x/mobile/geom"];
188672
+ math = $packages["math"];
188673
+ strings = $packages["strings"];
188674
+ js = $packages["syscall/js"];
188675
+ DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/util/dom", true, function(eventChan_, releases_) {
188676
+ this.$val = this;
188677
+ if (arguments.length === 0) {
188678
+ this.eventChan = $chanNil;
188679
+ this.releases = sliceType$1.nil;
188680
+ return;
188681
+ }
188682
+ this.eventChan = eventChan_;
188683
+ this.releases = releases_;
188684
+ });
188685
+ sliceType = $sliceType($emptyInterface);
188686
+ funcType = $funcType([], [], false);
188687
+ sliceType$1 = $sliceType(funcType);
188688
+ sliceType$2 = $sliceType($Int32);
188689
+ chanType = $chanType($emptyInterface, false, false);
188690
+ ptrType = $ptrType(DomEvents);
188691
+ GetDocWidth = function() {
188692
+ return $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
188693
+ };
188694
+ $pkg.GetDocWidth = GetDocWidth;
188695
+ GetDocHeight = function() {
188696
+ return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
188697
+ };
188698
+ $pkg.GetDocHeight = GetDocHeight;
188699
+ GetScreenWidth = function() {
188700
+ return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
188701
+ };
188702
+ $pkg.GetScreenWidth = GetScreenWidth;
188703
+ GetScreenHeight = function() {
188704
+ return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
188705
+ };
188706
+ $pkg.GetScreenHeight = GetScreenHeight;
188707
+ GetBrowserZoomRatio = function() {
188708
+ var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
188709
+ windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
188710
+ windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
188711
+ docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
188712
+ scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
188713
+ chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
188714
+ scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
188715
+ chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
188716
+ scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
188717
+ chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
188718
+ return chromeZoom3;
188719
+ };
188720
+ $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
188721
+ SetWindowWidth = function(newInnerWidth) {
188722
+ var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
188723
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188724
+ innerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
188725
+ outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
188726
+ outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
188727
+ newOuterWidth = newInnerWidth + ((outerWidth - innerWidth >> 0)) >> 0;
188728
+ screenWidth = GetScreenWidth();
188729
+ if (newOuterWidth > screenWidth) {
188730
+ newOuterWidth = screenWidth;
188731
+ }
188732
+ _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(newOuterWidth), new $Int(outerHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188733
+ _r;
188734
+ $s = -1; return;
188735
+ /* */ } return; } var $f = {$blk: SetWindowWidth, $c: true, $r, _r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s};return $f;
188736
+ };
188737
+ $pkg.SetWindowWidth = SetWindowWidth;
188738
+ SetWindowHeight = function(newInnerHeight) {
188739
+ var {_r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s, $r, $c} = $restore(this, {newInnerHeight});
188740
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188741
+ innerHeight = $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
188742
+ outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
188743
+ outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
188744
+ newOuterHeight = newInnerHeight + ((outerHeight - innerHeight >> 0)) >> 0;
188745
+ screenHeight = GetScreenHeight();
188746
+ if (newOuterHeight > screenHeight) {
188747
+ newOuterHeight = screenHeight;
188748
+ }
188749
+ _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(outerWidth), new $Int(newOuterHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188750
+ _r;
188751
+ $s = -1; return;
188752
+ /* */ } return; } var $f = {$blk: SetWindowHeight, $c: true, $r, _r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s};return $f;
188753
+ };
188754
+ $pkg.SetWindowHeight = SetWindowHeight;
188755
+ GetOrientation = function() {
188756
+ var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
188757
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
188758
+ orientation = [orientation];
188759
+ orientation[0] = 0;
188760
+ $deferred.push([(function(orientation) { return function() {
188761
+ if (!($interfaceIsEqual($recover(), $ifaceNil))) {
188762
+ orientation[0] = 0;
188763
+ }
188764
+ }; })(orientation), []]);
188765
+ orientationType = $clone($clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("orientation"), js.Value).Get("type"), js.Value).String();
188766
+ /* */ if (strings.HasPrefix(orientationType, "landscape")) { $s = 1; continue; }
188767
+ /* */ $s = 2; continue;
188768
+ /* if (strings.HasPrefix(orientationType, "landscape")) { */ case 1:
188769
+ orientation[0] = 2;
188770
+ $24r = orientation[0];
188771
+ $s = 3; case 3: return $24r;
188772
+ /* } */ case 2:
188773
+ /* */ if (strings.HasPrefix(orientationType, "portrait")) { $s = 4; continue; }
188774
+ /* */ $s = 5; continue;
188775
+ /* if (strings.HasPrefix(orientationType, "portrait")) { */ case 4:
188776
+ orientation[0] = 2;
188777
+ $24r$1 = orientation[0];
188778
+ $s = 6; case 6: return $24r$1;
188779
+ /* } */ case 5:
188780
+ orientation[0] = 0;
188781
+ $24r$2 = orientation[0];
188782
+ $s = 7; case 7: return $24r$2;
188783
+ /* */ } 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; } }
188784
+ };
188785
+ $pkg.GetOrientation = GetOrientation;
188786
+ NewDomEvents = function() {
188787
+ return new DomEvents.ptr(new $Chan($emptyInterface, 0), $makeSlice(sliceType$1, 0));
188788
+ };
188789
+ $pkg.NewDomEvents = NewDomEvents;
188790
+ DomEvents.ptr.prototype.GetEventChan = function() {
188791
+ var d;
188792
+ d = this;
188793
+ return d.eventChan;
188794
+ };
188795
+ DomEvents.prototype.GetEventChan = function() { return this.$val.GetEventChan(); };
188796
+ DomEvents.ptr.prototype.Release = function() {
188797
+ var {_i, _ref, d, release, $s, $r, $c} = $restore(this, {});
188798
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188799
+ d = this;
188800
+ _ref = d.releases;
188801
+ _i = 0;
188802
+ /* while (true) { */ case 1:
188803
+ /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
188804
+ release = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
188805
+ $r = release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188806
+ _i++;
188807
+ $s = 1; continue;
188808
+ case 2:
188809
+ $s = -1; return;
188810
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.Release, $c: true, $r, _i, _ref, d, release, $s};return $f;
188811
+ };
188812
+ DomEvents.prototype.Release = function() { return this.$val.Release(); };
188813
+ DomEvents.ptr.prototype.BindEvents = function() {
188814
+ var {d, $s, $r, $c} = $restore(this, {});
188815
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188816
+ d = this;
188817
+ $r = d.bindSizeEvents(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188818
+ $go($methodVal(d, "emitSizeEvent"), []);
188819
+ $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188820
+ $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188821
+ $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188822
+ $s = -1; return;
188823
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
188824
+ };
188825
+ DomEvents.prototype.BindEvents = function() { return this.$val.BindEvents(); };
188826
+ DomEvents.ptr.prototype.bindSizeEvents = function() {
188827
+ var {_r, d, onResize, $s, $r, $c} = $restore(this, {});
188828
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188829
+ d = [d];
188830
+ onResize = [onResize];
188831
+ d[0] = this;
188832
+ onResize[0] = $clone(js.FuncOf((function(d, onResize) { return function $b(this$1, args) {
188833
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
188834
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188835
+ $r = d[0].emitSizeEvent(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188836
+ $s = -1; return $ifaceNil;
188837
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
188838
+ }; })(d, onResize)), js.Func);
188839
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188840
+ _r;
188841
+ d[0].releases = $append(d[0].releases, (function(d, onResize) { return function $b() {
188842
+ var {_r$1, $s, $r, $c} = $restore(this, {});
188843
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188844
+ _r$1 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
188845
+ _r$1;
188846
+ $clone(onResize[0], js.Func).Release();
188847
+ $s = -1; return;
188848
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, $s};return $f;
188849
+ }; })(d, onResize));
188850
+ $s = -1; return;
188851
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindSizeEvents, $c: true, $r, _r, d, onResize, $s};return $f;
188852
+ };
188853
+ DomEvents.prototype.bindSizeEvents = function() { return this.$val.bindSizeEvents(); };
188854
+ DomEvents.ptr.prototype.emitSizeEvent = function() {
188855
+ var {_q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s, $r, $c} = $restore(this, {});
188856
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188857
+ d = this;
188858
+ _r = GetOrientation(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188859
+ orientation = _r;
188860
+ pixelsPerPt = 1;
188861
+ width = GetDocWidth();
188862
+ height = GetDocHeight();
188863
+ $r = $send(d.eventChan, (x = new size.Event.ptr(width, height, ((_q = width / ((pixelsPerPt >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((_q$1 = height / ((pixelsPerPt >> 0)), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), pixelsPerPt, orientation), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188864
+ $s = -1; return;
188865
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
188866
+ };
188867
+ DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
188868
+ DomEvents.ptr.prototype.bindMouseEvents = function() {
188869
+ var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
188870
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188871
+ d = [d];
188872
+ onClick = [onClick];
188873
+ onMove = [onMove];
188874
+ onWheel = [onWheel];
188875
+ d[0] = this;
188876
+ onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
188877
+ var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188878
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188879
+ _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; }
188880
+ _r;
188881
+ $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; }
188882
+ $s = -1; return $ifaceNil;
188883
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
188884
+ }; })(d, onClick, onMove, onWheel)), js.Func);
188885
+ _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; }
188886
+ _r;
188887
+ onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
188888
+ var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188889
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188890
+ _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; }
188891
+ _r$1;
188892
+ $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; }
188893
+ $s = -1; return $ifaceNil;
188894
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
188895
+ }; })(d, onClick, onMove, onWheel)), js.Func);
188896
+ _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; }
188897
+ _r$1;
188898
+ _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; }
188899
+ _r$2;
188900
+ onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
188901
+ var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188902
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188903
+ $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; }
188904
+ $s = -1; return $ifaceNil;
188905
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
188906
+ }; })(d, onClick, onMove, onWheel)), js.Func);
188907
+ _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; }
188908
+ _r$3;
188909
+ d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
188910
+ var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
188911
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188912
+ _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; }
188913
+ _r$4;
188914
+ _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; }
188915
+ _r$5;
188916
+ _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; }
188917
+ _r$6;
188918
+ _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; }
188919
+ _r$7;
188920
+ $clone(onMove[0], js.Func).Release();
188921
+ $clone(onClick[0], js.Func).Release();
188922
+ $clone(onWheel[0], js.Func).Release();
188923
+ $s = -1; return;
188924
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, _r$5, _r$6, _r$7, $s};return $f;
188925
+ }; })(d, onClick, onMove, onWheel));
188926
+ $s = -1; return;
188927
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindMouseEvents, $c: true, $r, _r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s};return $f;
188928
+ };
188929
+ DomEvents.prototype.bindMouseEvents = function() { return this.$val.bindMouseEvents(); };
188930
+ getMouseDirection = function(ev) {
188931
+ var dir, ev;
188932
+ dir = 0;
188933
+ dir = 0;
188934
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mousedown") {
188935
+ dir = 1;
188936
+ }
188937
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mouseup") {
188938
+ dir = 2;
188939
+ }
188940
+ return dir;
188941
+ };
188942
+ getWheelButton = function(ev) {
188943
+ var deltaX, deltaY, ev;
188944
+ deltaY = $clone($clone(ev, js.Value).Get("deltaY"), js.Value).Int();
188945
+ deltaX = $clone($clone(ev, js.Value).Get("deltaX"), js.Value).Int();
188946
+ if (deltaY > 0) {
188947
+ return -2;
188948
+ }
188949
+ if (deltaY < 0) {
188950
+ return -1;
188951
+ }
188952
+ if (deltaX > 0) {
188953
+ return -4;
188954
+ }
188955
+ if (deltaX < 0) {
188956
+ return -3;
188957
+ }
188958
+ return 0;
188959
+ };
188960
+ getMouseButton = function(ev) {
188961
+ var _1, ev;
188962
+ _1 = $clone($clone(ev, js.Value).Get("button"), js.Value).Int();
188963
+ if (_1 === (0)) {
188964
+ return 1;
188965
+ } else if (_1 === (1)) {
188966
+ return 2;
188967
+ } else if (_1 === (2)) {
188968
+ return 3;
188969
+ } else if (_1 === (3)) {
188970
+ return 8;
188971
+ } else if (_1 === (4)) {
188972
+ return 9;
188973
+ } else {
188974
+ return 0;
188975
+ }
188976
+ };
188977
+ getEventModifiers = function(ev) {
188978
+ var ev, mod;
188979
+ mod = 0;
188980
+ if ($clone($clone(ev, js.Value).Get("altKey"), js.Value).Bool()) {
188981
+ mod = (mod | (4)) >>> 0;
188982
+ }
188983
+ if ($clone($clone(ev, js.Value).Get("ctrlKey"), js.Value).Bool()) {
188984
+ mod = (mod | (2)) >>> 0;
188985
+ }
188986
+ if ($clone($clone(ev, js.Value).Get("shiftKey"), js.Value).Bool()) {
188987
+ mod = (mod | (1)) >>> 0;
188988
+ }
188989
+ if ($clone($clone(ev, js.Value).Get("metaKey"), js.Value).Bool()) {
188990
+ mod = (mod | (8)) >>> 0;
188991
+ }
188992
+ return mod;
188993
+ };
188994
+ DomEvents.ptr.prototype.bindFocusEvents = function() {
188995
+ var {_r, _r$1, d, onFocus, $s, $r, $c} = $restore(this, {});
188996
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188997
+ d = [d];
188998
+ onFocus = [onFocus];
188999
+ d[0] = this;
189000
+ onFocus[0] = $clone(js.FuncOf((function(d, onFocus) { return function $b(this$1, args) {
189001
+ var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189002
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189003
+ $r = $send(d[0].eventChan, (x = new focus.Event.ptr(isFocusIn($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189004
+ $s = -1; return $ifaceNil;
189005
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
189006
+ }; })(d, onFocus)), js.Func);
189007
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189008
+ _r;
189009
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189010
+ _r$1;
189011
+ d[0].releases = $append(d[0].releases, (function(d, onFocus) { return function $b() {
189012
+ var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
189013
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189014
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189015
+ _r$2;
189016
+ _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189017
+ _r$3;
189018
+ $clone(onFocus[0], js.Func).Release();
189019
+ $s = -1; return;
189020
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
189021
+ }; })(d, onFocus));
189022
+ $s = -1; return;
189023
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindFocusEvents, $c: true, $r, _r, _r$1, d, onFocus, $s};return $f;
189024
+ };
189025
+ DomEvents.prototype.bindFocusEvents = function() { return this.$val.bindFocusEvents(); };
189026
+ isFocusIn = function(ev) {
189027
+ var ev;
189028
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "focus") {
189029
+ return true;
189030
+ }
189031
+ return false;
189032
+ };
189033
+ DomEvents.ptr.prototype.bindKeyEvents = function() {
189034
+ var {_r, _r$1, d, onKey, $s, $r, $c} = $restore(this, {});
189035
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189036
+ d = [d];
189037
+ onKey = [onKey];
189038
+ d[0] = this;
189039
+ onKey[0] = $clone(js.FuncOf((function(d, onKey) { return function $b(this$1, args) {
189040
+ var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189041
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189042
+ _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; }
189043
+ _r;
189044
+ $r = $send(d[0].eventChan, (x = new key.Event.ptr(getKeyRune($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyCode($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)), getKeyDirection($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; }
189045
+ $s = -1; return $ifaceNil;
189046
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
189047
+ }; })(d, onKey)), js.Func);
189048
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189049
+ _r;
189050
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189051
+ _r$1;
189052
+ d[0].releases = $append(d[0].releases, (function(d, onKey) { return function $b() {
189053
+ var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
189054
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189055
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189056
+ _r$2;
189057
+ _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189058
+ _r$3;
189059
+ $clone(onKey[0], js.Func).Release();
189060
+ $s = -1; return;
189061
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
189062
+ }; })(d, onKey));
189063
+ $s = -1; return;
189064
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindKeyEvents, $c: true, $r, _r, _r$1, d, onKey, $s};return $f;
189065
+ };
189066
+ DomEvents.prototype.bindKeyEvents = function() { return this.$val.bindKeyEvents(); };
189067
+ getKeyRune = function(ev) {
189068
+ var ev, key$1;
189069
+ key$1 = (new sliceType$2($stringToRunes($clone($clone(ev, js.Value).Get("key"), js.Value).String())));
189070
+ if (key$1.$length === 1) {
189071
+ return (0 >= key$1.$length ? ($throwRuntimeError("index out of range"), undefined) : key$1.$array[key$1.$offset + 0]);
189072
+ }
189073
+ return -1;
189074
+ };
189075
+ getKeyDirection = function(ev) {
189076
+ var dir, ev;
189077
+ dir = 0;
189078
+ dir = 0;
189079
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keydown") {
189080
+ dir = 1;
189081
+ }
189082
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keyup") {
189083
+ dir = 2;
189084
+ }
189085
+ return dir;
189086
+ };
189087
+ getKeyCode = function(ev) {
189088
+ var _entry, _entry$1, _tuple, _tuple$1, code, code$1, domCode, domKey, ev, exists, exists$1;
189089
+ domCode = $clone($clone(ev, js.Value).Get("code"), js.Value).String();
189090
+ _tuple = (_entry = $mapIndex(keyCodesMap,$String.keyFor(domCode)), _entry !== undefined ? [_entry.v, true] : [0, false]);
189091
+ code = _tuple[0];
189092
+ exists = _tuple[1];
189093
+ if (exists) {
189094
+ return code;
189095
+ }
189096
+ domKey = $clone($clone(ev, js.Value).Get("key"), js.Value).String();
189097
+ _tuple$1 = (_entry$1 = $mapIndex(keyCodesByKeyMap,$String.keyFor(domKey)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
189098
+ code$1 = _tuple$1[0];
189099
+ exists$1 = _tuple$1[1];
189100
+ if (exists$1) {
189101
+ return code$1;
189102
+ }
189103
+ return 0;
189104
+ };
189105
+ 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)}];
189106
+ 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: ""}]);
189107
+ $init = function() {
189108
+ $pkg.$init = function() {};
189109
+ /* */ 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:
189110
+ $r = focus.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189111
+ $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189112
+ $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189113
+ $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189114
+ $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189115
+ $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189116
+ $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189117
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189118
+ keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
189119
+ keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
189120
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189121
+ };
189122
+ $pkg.$init = $init;
189123
+ return $pkg;
189124
+ })();
189094
189125
  $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
189095
189126
  var $pkg = {}, $init, screen, image, draw, ConvertYCbCrToRGBA;
189096
189127
  screen = $packages["golang.org/x/exp/shiny/screen"];
@@ -189125,12 +189156,12 @@ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
189125
189156
  return $pkg;
189126
189157
  })();
189127
189158
  $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189128
- var $pkg = {}, $init, fmt, webgl, types, dom, errscreen, 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, main, newScreenImpl, newBuffer;
189159
+ 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, main, newScreenImpl, newBuffer;
189129
189160
  fmt = $packages["fmt"];
189130
189161
  webgl = $packages["github.com/nuberu/webgl"];
189131
189162
  types = $packages["github.com/nuberu/webgl/types"];
189132
- dom = $packages["golang.org/x/exp/shiny/driver/internal/dom"];
189133
189163
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
189164
+ dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
189134
189165
  imageutil = $packages["golang.org/x/exp/shiny/imageutil"];
189135
189166
  screen = $packages["golang.org/x/exp/shiny/screen"];
189136
189167
  f64 = $packages["golang.org/x/image/math/f64"];
@@ -189928,8 +189959,8 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189928
189959
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189929
189960
  $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189930
189961
  $r = types.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189931
- $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189932
- $r = errscreen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189962
+ $r = errscreen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189963
+ $r = dom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189933
189964
  $r = imageutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189934
189965
  $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189935
189966
  $r = f64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -189946,7 +189977,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189946
189977
  return $pkg;
189947
189978
  })();
189948
189979
  $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function() {
189949
- var $pkg = {}, $init, errs, general, webgldriver, image, js, H264Decoder, sliceType, ptrType, funcType, arrayType, sliceType$1, ptrType$1, IsAvailable, NewDecoder;
189980
+ var $pkg = {}, $init, errs, general, webgldriver, image, js, H264Decoder, sliceType, ptrType, funcType, arrayType, sliceType$1, chanType, ptrType$1, IsAvailable, NewDecoder;
189950
189981
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
189951
189982
  general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
189952
189983
  webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
@@ -189965,6 +189996,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
189965
189996
  funcType = $funcType([], [], false);
189966
189997
  arrayType = $arrayType(funcType, 0);
189967
189998
  sliceType$1 = $sliceType($Uint8);
189999
+ chanType = $chanType($emptyInterface, false, false);
189968
190000
  ptrType$1 = $ptrType(H264Decoder);
189969
190001
  IsAvailable = function() {
189970
190002
  return !$clone($clone(js.Global(), js.Value).Get("h264Decoder"), js.Value).IsUndefined();
@@ -189976,8 +190008,8 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
189976
190008
  return new H264Decoder.ptr($clone(decoder, js.Value));
189977
190009
  };
189978
190010
  $pkg.NewDecoder = NewDecoder;
189979
- H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer) {
189980
- var {$24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer});
190011
+ H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
190012
+ var {$24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, releaseChan, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
189981
190013
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189982
190014
  m = this;
189983
190015
  nalBufferOffset = $clone($clone(m.decoder, js.Value).Get("decBuffer"), js.Value);
@@ -190024,15 +190056,10 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
190024
190056
  image.Rectangle.copy(ycbcrImg.Rect, ycbcrJSImg.Rect);
190025
190057
  ycbcrImg.SubsampleRatio = 2;
190026
190058
  $s = -1; return $ifaceNil;
190027
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s};return $f;
190059
+ /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, releaseChan, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s};return $f;
190028
190060
  };
190029
- H264Decoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
190030
- H264Decoder.ptr.prototype.Release = function(outputBuffer) {
190031
- var m, outputBuffer;
190032
- m = this;
190033
- };
190034
- H264Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
190035
- ptrType$1.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
190061
+ H264Decoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
190062
+ ptrType$1.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}];
190036
190063
  H264Decoder.init("github.com/supraio/client-daemon/pkg/x264/h264decoder", [{prop: "decoder", name: "decoder", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190037
190064
  $init = function() {
190038
190065
  $pkg.$init = function() {};
@@ -190047,11 +190074,280 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
190047
190074
  $pkg.$init = $init;
190048
190075
  return $pkg;
190049
190076
  })();
190077
+ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/jsdecoder"] = (function() {
190078
+ var $pkg = {}, $init, js, ptrType, sliceType, initiateReset, jsNaClDecoder, ResetBeforeNextDecode, ShouldResetOnNextDecode, MarkResetDone, IsAvailable, CreateJsNaClDecoder, GetJsNaClDecoder, RemoveJsNaClDecoder;
190079
+ js = $packages["syscall/js"];
190080
+ ptrType = $ptrType(js.Value);
190081
+ sliceType = $sliceType($emptyInterface);
190082
+ ResetBeforeNextDecode = function() {
190083
+ initiateReset = true;
190084
+ };
190085
+ $pkg.ResetBeforeNextDecode = ResetBeforeNextDecode;
190086
+ ShouldResetOnNextDecode = function() {
190087
+ return initiateReset;
190088
+ };
190089
+ $pkg.ShouldResetOnNextDecode = ShouldResetOnNextDecode;
190090
+ MarkResetDone = function() {
190091
+ initiateReset = false;
190092
+ };
190093
+ $pkg.MarkResetDone = MarkResetDone;
190094
+ IsAvailable = function() {
190095
+ return !$clone($clone(js.Global(), js.Value).Get("createNaClDecoder"), js.Value).IsUndefined();
190096
+ };
190097
+ $pkg.IsAvailable = IsAvailable;
190098
+ CreateJsNaClDecoder = function() {
190099
+ var {_r, createdJsNaClDecoder, $s, $r, $c} = $restore(this, {});
190100
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190101
+ createdJsNaClDecoder = [createdJsNaClDecoder];
190102
+ if (!(jsNaClDecoder === ptrType.nil)) {
190103
+ $panic(new $String("JsNaClDecoder already created"));
190104
+ }
190105
+ _r = $clone(js.Global(), js.Value).Call("createNaClDecoder", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190106
+ createdJsNaClDecoder[0] = $clone(_r, js.Value);
190107
+ jsNaClDecoder = createdJsNaClDecoder[0];
190108
+ $s = -1; return jsNaClDecoder;
190109
+ /* */ } return; } var $f = {$blk: CreateJsNaClDecoder, $c: true, $r, _r, createdJsNaClDecoder, $s};return $f;
190110
+ };
190111
+ $pkg.CreateJsNaClDecoder = CreateJsNaClDecoder;
190112
+ GetJsNaClDecoder = function() {
190113
+ return jsNaClDecoder;
190114
+ };
190115
+ $pkg.GetJsNaClDecoder = GetJsNaClDecoder;
190116
+ RemoveJsNaClDecoder = function() {
190117
+ jsNaClDecoder = ptrType.nil;
190118
+ };
190119
+ $pkg.RemoveJsNaClDecoder = RemoveJsNaClDecoder;
190120
+ $init = function() {
190121
+ $pkg.$init = function() {};
190122
+ /* */ 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:
190123
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190124
+ jsNaClDecoder = ptrType.nil;
190125
+ initiateReset = false;
190126
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190127
+ };
190128
+ $pkg.$init = $init;
190129
+ return $pkg;
190130
+ })();
190131
+ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"] = (function() {
190132
+ var $pkg = {}, $init, errs, jshelper, general, jsdecoder, js, NaClDecoder, sliceType, ptrType, sliceType$1, chanType, ptrType$1, IsAvailable, NewDecoder;
190133
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190134
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190135
+ general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190136
+ jsdecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/jsdecoder"];
190137
+ js = $packages["syscall/js"];
190138
+ NaClDecoder = $pkg.NaClDecoder = $newType(0, $kindStruct, "nacldecoder.NaClDecoder", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder", true, function(initialized_) {
190139
+ this.$val = this;
190140
+ if (arguments.length === 0) {
190141
+ this.initialized = false;
190142
+ return;
190143
+ }
190144
+ this.initialized = initialized_;
190145
+ });
190146
+ sliceType = $sliceType($emptyInterface);
190147
+ ptrType = $ptrType(js.Value);
190148
+ sliceType$1 = $sliceType($Uint8);
190149
+ chanType = $chanType($emptyInterface, false, false);
190150
+ ptrType$1 = $ptrType(NaClDecoder);
190151
+ IsAvailable = function() {
190152
+ return jsdecoder.IsAvailable();
190153
+ };
190154
+ $pkg.IsAvailable = IsAvailable;
190155
+ NewDecoder = function(header) {
190156
+ var header;
190157
+ return new NaClDecoder.ptr(false);
190158
+ };
190159
+ $pkg.NewDecoder = NewDecoder;
190160
+ NaClDecoder.ptr.prototype.initialize = function(param) {
190161
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, config, err, graphics3DContext, initPromise, initResult, m, param, $s, $r, $c} = $restore(this, {param});
190162
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190163
+ m = this;
190164
+ _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; }
190165
+ config = $clone(_r, js.Value);
190166
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190167
+ graphics3DContext = $clone(_r$1, js.Value);
190168
+ $clone(config, js.Value).Set("graphics3DContext", new graphics3DContext.constructor.elem(graphics3DContext));
190169
+ $clone(config, js.Value).Set("profile", new $Int(0));
190170
+ $clone(config, js.Value).Set("acceleration", new $Int(2));
190171
+ $clone(config, js.Value).Set("minPictureCount", new $Int(0));
190172
+ _r$2 = $clone(jsdecoder.GetJsNaClDecoder(), js.Value).Call("initialize", new sliceType([new config.constructor.elem(config)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190173
+ initPromise = $clone(_r$2, js.Value);
190174
+ _r$3 = jshelper.Await($clone(initPromise, js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190175
+ _tuple = _r$3;
190176
+ initResult = _tuple[0];
190177
+ err = _tuple[1];
190178
+ /* */ if (!(err === ptrType.nil)) { $s = 5; continue; }
190179
+ /* */ $s = 6; continue;
190180
+ /* if (!(err === ptrType.nil)) { */ case 5:
190181
+ _r$4 = jshelper.GetError(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190182
+ _r$5 = _r$4.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190183
+ _arg = new $String(_r$5);
190184
+ _r$6 = errs.Errorf("Failed to initialize NaCl Decoder: %s", new sliceType([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190185
+ $24r = _r$6;
190186
+ $s = 10; case 10: return $24r;
190187
+ /* } */ case 6:
190188
+ /* */ if (!(($clone(initResult, js.Value).Float() === 0))) { $s = 11; continue; }
190189
+ /* */ $s = 12; continue;
190190
+ /* if (!(($clone(initResult, js.Value).Float() === 0))) { */ case 11:
190191
+ _r$7 = errs.Errorf("Failed to initialize NaCl Decoder: %f", new sliceType([new $Float64($clone(initResult, js.Value).Float())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190192
+ $24r$1 = _r$7;
190193
+ $s = 14; case 14: return $24r$1;
190194
+ /* } */ case 12:
190195
+ $s = -1; return $ifaceNil;
190196
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.initialize, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, config, err, graphics3DContext, initPromise, initResult, m, param, $s};return $f;
190197
+ };
190198
+ NaClDecoder.prototype.initialize = function(param) { return this.$val.initialize(param); };
190199
+ NaClDecoder.ptr.prototype.reset = function() {
190200
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, m, resetPromise, resetResult, $s, $r, $c} = $restore(this, {});
190201
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190202
+ m = this;
190203
+ _r = $clone(jsdecoder.GetJsNaClDecoder(), js.Value).Call("reset", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190204
+ resetPromise = $clone(_r, js.Value);
190205
+ _r$1 = jshelper.Await($clone(resetPromise, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190206
+ _tuple = _r$1;
190207
+ resetResult = _tuple[0];
190208
+ err = _tuple[1];
190209
+ /* */ if (!(err === ptrType.nil)) { $s = 3; continue; }
190210
+ /* */ $s = 4; continue;
190211
+ /* if (!(err === ptrType.nil)) { */ case 3:
190212
+ _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; }
190213
+ _r$3 = _r$2.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190214
+ _arg = new $String(_r$3);
190215
+ _r$4 = errs.Errorf("Failed to reset NaCl Decoder: %s", new sliceType([_arg])); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190216
+ $24r = _r$4;
190217
+ $s = 8; case 8: return $24r;
190218
+ /* } */ case 4:
190219
+ /* */ if (!(($clone(resetResult, js.Value).Float() === 0))) { $s = 9; continue; }
190220
+ /* */ $s = 10; continue;
190221
+ /* if (!(($clone(resetResult, js.Value).Float() === 0))) { */ case 9:
190222
+ _r$5 = errs.Errorf("Failed to reset NaCl Decoder with code: %f", new sliceType([new $Float64($clone(resetResult, js.Value).Float())])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190223
+ $24r$1 = _r$5;
190224
+ $s = 12; case 12: return $24r$1;
190225
+ /* } */ case 10:
190226
+ $s = -1; return $ifaceNil;
190227
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.reset, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, m, resetPromise, resetResult, $s};return $f;
190228
+ };
190229
+ NaClDecoder.prototype.reset = function() { return this.$val.reset(); };
190230
+ NaClDecoder.ptr.prototype.destroy = function() {
190231
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, destroyPromise, err, m, $s, $r, $c} = $restore(this, {});
190232
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190233
+ m = this;
190234
+ _r = $clone(jsdecoder.GetJsNaClDecoder(), js.Value).Call("destroy", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190235
+ destroyPromise = $clone(_r, js.Value);
190236
+ _r$1 = jshelper.Await($clone(destroyPromise, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190237
+ _tuple = _r$1;
190238
+ err = _tuple[1];
190239
+ /* */ if (!(err === ptrType.nil)) { $s = 3; continue; }
190240
+ /* */ $s = 4; continue;
190241
+ /* if (!(err === ptrType.nil)) { */ case 3:
190242
+ _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; }
190243
+ _r$3 = _r$2.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190244
+ _arg = new $String(_r$3);
190245
+ _r$4 = errs.Errorf("Failed to destroy NaCl Decoder: %s", new sliceType([_arg])); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190246
+ $24r = _r$4;
190247
+ $s = 8; case 8: return $24r;
190248
+ /* } */ case 4:
190249
+ $s = -1; return $ifaceNil;
190250
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.destroy, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, destroyPromise, err, m, $s};return $f;
190251
+ };
190252
+ NaClDecoder.prototype.destroy = function() { return this.$val.destroy(); };
190253
+ NaClDecoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
190254
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, decodeArgs, decodePromise, decodeResult, err, err$1, err$2, jsNaClDecoder, m, nal, outputBuffer, pictureBuffer, pictureUint8Array, releaseChan, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
190255
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190256
+ m = this;
190257
+ /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
190258
+ /* */ $s = 2; continue;
190259
+ /* if (jsdecoder.ShouldResetOnNextDecode()) { */ case 1:
190260
+ _r = m.reset(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190261
+ err = _r;
190262
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
190263
+ /* */ $s = 5; continue;
190264
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
190265
+ $r = errs.Print("Failed to reset NaCl Decoder", err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190266
+ _r$1 = m.destroy(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190267
+ err = _r$1;
190268
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
190269
+ /* */ $s = 9; continue;
190270
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
190271
+ $r = errs.Print("Failed to destroy NaCl Decoder", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190272
+ /* } */ case 9:
190273
+ jsdecoder.RemoveJsNaClDecoder();
190274
+ /* } */ case 5:
190275
+ m.initialized = false;
190276
+ jsdecoder.MarkResetDone();
190277
+ /* } */ case 2:
190278
+ jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
190279
+ /* */ if (jsNaClDecoder === ptrType.nil) { $s = 11; continue; }
190280
+ /* */ $s = 12; continue;
190281
+ /* if (jsNaClDecoder === ptrType.nil) { */ case 11:
190282
+ _r$2 = jsdecoder.CreateJsNaClDecoder(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190283
+ jsNaClDecoder = _r$2;
190284
+ /* } */ case 12:
190285
+ /* */ if (!m.initialized) { $s = 14; continue; }
190286
+ /* */ $s = 15; continue;
190287
+ /* if (!m.initialized) { */ case 14:
190288
+ _r$3 = m.initialize(nal); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190289
+ err$1 = _r$3;
190290
+ if (!($interfaceIsEqual(err$1, $ifaceNil))) {
190291
+ $s = -1; return err$1;
190292
+ }
190293
+ m.initialized = true;
190294
+ /* } */ case 15:
190295
+ _r$4 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190296
+ pictureBuffer = $clone(_r$4, js.Value);
190297
+ _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190298
+ pictureUint8Array = $clone(_r$5, js.Value);
190299
+ js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
190300
+ _r$6 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190301
+ decodeArgs = $clone(_r$6, js.Value);
190302
+ $clone(decodeArgs, js.Value).Set("decodeId", new $Int(0));
190303
+ $clone(decodeArgs, js.Value).Set("data", new pictureBuffer.constructor.elem(pictureBuffer));
190304
+ _r$7 = $clone(jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190305
+ decodePromise = $clone(_r$7, js.Value);
190306
+ _r$8 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
190307
+ _tuple = _r$8;
190308
+ decodeResult = _tuple[0];
190309
+ err$2 = _tuple[1];
190310
+ /* */ if (!(err$2 === ptrType.nil)) { $s = 22; continue; }
190311
+ /* */ $s = 23; continue;
190312
+ /* if (!(err$2 === ptrType.nil)) { */ case 22:
190313
+ _r$9 = jshelper.GetError(err$2); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
190314
+ _r$10 = _r$9.Error(); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
190315
+ _arg = new $String(_r$10);
190316
+ _r$11 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
190317
+ $24r = _r$11;
190318
+ $s = 27; case 27: return $24r;
190319
+ /* } */ case 23:
190320
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 28; continue; }
190321
+ /* */ $s = 29; continue;
190322
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 28:
190323
+ _r$12 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
190324
+ $24r$1 = _r$12;
190325
+ $s = 31; case 31: return $24r$1;
190326
+ /* } */ case 29:
190327
+ $s = -1; return $ifaceNil;
190328
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, decodeArgs, decodePromise, decodeResult, err, err$1, err$2, jsNaClDecoder, m, nal, outputBuffer, pictureBuffer, pictureUint8Array, releaseChan, $s};return $f;
190329
+ };
190330
+ NaClDecoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
190331
+ ptrType$1.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([sliceType$1], [$error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}];
190332
+ NaClDecoder.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder", [{prop: "initialized", name: "initialized", embedded: false, exported: false, typ: $Bool, tag: ""}]);
190333
+ $init = function() {
190334
+ $pkg.$init = function() {};
190335
+ /* */ 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:
190336
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190337
+ $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190338
+ $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190339
+ $r = jsdecoder.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190340
+ $r = js.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190341
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190342
+ };
190343
+ $pkg.$init = $init;
190344
+ return $pkg;
190345
+ })();
190050
190346
  $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190051
- var $pkg = {}, $init, fmt, dom, errscreen, 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, Main, main, newScreenImpl, newBuffer;
190347
+ 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, Main, main, newScreenImpl, newBuffer;
190052
190348
  fmt = $packages["fmt"];
190053
- dom = $packages["golang.org/x/exp/shiny/driver/internal/dom"];
190054
190349
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
190350
+ dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
190055
190351
  screen = $packages["golang.org/x/exp/shiny/screen"];
190056
190352
  f64 = $packages["golang.org/x/image/math/f64"];
190057
190353
  image = $packages["image"];
@@ -190459,8 +190755,8 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190459
190755
  $pkg.$init = function() {};
190460
190756
  /* */ 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:
190461
190757
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190462
- $r = dom.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190463
- $r = errscreen.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190758
+ $r = errscreen.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190759
+ $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190464
190760
  $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190465
190761
  $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190466
190762
  $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -190474,7 +190770,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190474
190770
  return $pkg;
190475
190771
  })();
190476
190772
  $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190477
- var $pkg = {}, $init, hex, webgl, errs, jshelper, general, canvasdriver, image, js, Decoder, sliceType, funcType, arrayType, ptrType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, IsAvailable, NewDecoder;
190773
+ var $pkg = {}, $init, hex, webgl, errs, jshelper, general, canvasdriver, image, js, Decoder, sliceType, funcType, arrayType, ptrType, sliceType$1, ptrType$1, sliceType$2, chanType, ptrType$2, IsAvailable, NewDecoder;
190478
190774
  hex = $packages["encoding/hex"];
190479
190775
  webgl = $packages["github.com/nuberu/webgl"];
190480
190776
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -190504,6 +190800,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190504
190800
  sliceType$1 = $sliceType($emptyInterface);
190505
190801
  ptrType$1 = $ptrType(canvasdriver.BufferImpl);
190506
190802
  sliceType$2 = $sliceType($Uint8);
190803
+ chanType = $chanType($emptyInterface, false, false);
190507
190804
  ptrType$2 = $ptrType(Decoder);
190508
190805
  IsAvailable = function() {
190509
190806
  return !$clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).IsUndefined();
@@ -190591,10 +190888,12 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190591
190888
  return codecName;
190592
190889
  };
190593
190890
  Decoder.prototype.detectCodecName = function(nal) { return this.$val.detectCodecName(nal); };
190594
- Decoder.ptr.prototype.Decode = function(nal, outputBuffer) {
190595
- var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, errMessage, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer});
190891
+ Decoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
190892
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, releaseChan, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
190596
190893
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190597
190894
  d = [d];
190895
+ frame = [frame];
190896
+ releaseChan = [releaseChan];
190598
190897
  d[0] = this;
190599
190898
  frameType = "delta";
190600
190899
  /* */ if ((((4 >= nal.$length ? ($throwRuntimeError("index out of range"), undefined) : nal.$array[nal.$offset + 4]) >> 0)) === 103) { $s = 1; continue; }
@@ -190635,15 +190934,15 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190635
190934
  /* } */ case 17:
190636
190935
  $s = -1; return errDec;
190637
190936
  /* } */ case 15:
190638
- framePromiseCb = $clone(js.FuncOf((function(d) { return function(this$1, args) {
190937
+ framePromiseCb = $clone(js.FuncOf((function(d, frame, releaseChan) { return function(this$1, args) {
190639
190938
  var args, this$1;
190640
190939
  d[0].resolves = $append(d[0].resolves, (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]));
190641
190940
  d[0].rejects = $append(d[0].rejects, (1 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 1]));
190642
190941
  return $ifaceNil;
190643
- }; })(d)), js.Func);
190942
+ }; })(d, frame, releaseChan)), js.Func);
190644
190943
  _r$5 = $clone($clone(js.Global(), js.Value).Get("Promise"), js.Value).New(new sliceType$1([new framePromiseCb.constructor.elem(framePromiseCb)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190645
190944
  framePromise = $clone(_r$5, js.Value);
190646
- timeoutPromiseCb = $clone(js.FuncOf((function(d) { return function $b(this$1, args) {
190945
+ timeoutPromiseCb = $clone(js.FuncOf((function(d, frame, releaseChan) { return function $b(this$1, args) {
190647
190946
  var {_arg, _r$6, _r$7, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190648
190947
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190649
190948
  _r$6 = $clone((1 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 1]), js.Value).Call("bind", new sliceType$1([$ifaceNil, new $String("Timeout")])); /* */ $s = 1; case 1: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
@@ -190652,7 +190951,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190652
190951
  _r$7;
190653
190952
  $s = -1; return $ifaceNil;
190654
190953
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r$6, _r$7, args, this$1, x, $s};return $f;
190655
- }; })(d)), js.Func);
190954
+ }; })(d, frame, releaseChan)), js.Func);
190656
190955
  _r$6 = $clone($clone(js.Global(), js.Value).Get("Promise"), js.Value).New(new sliceType$1([new timeoutPromiseCb.constructor.elem(timeoutPromiseCb)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190657
190956
  timeoutPromise = $clone(_r$6, js.Value);
190658
190957
  _r$7 = $clone($clone(js.Global(), js.Value).Get("Array"), js.Value).New(new sliceType$1([new framePromise.constructor.elem(framePromise), new timeoutPromise.constructor.elem(timeoutPromise)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
@@ -190661,50 +190960,39 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190661
190960
  racePromise = $clone(_r$8, js.Value);
190662
190961
  _r$9 = jshelper.Await($clone(racePromise, js.Value)); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
190663
190962
  _tuple = _r$9;
190664
- frame = _tuple[0];
190963
+ frame[0] = _tuple[0];
190665
190964
  err = _tuple[1];
190666
190965
  $clone(framePromiseCb, js.Func).Release();
190667
190966
  $clone(timeoutPromiseCb, js.Func).Release();
190668
190967
  /* */ if (!(err === ptrType.nil)) { $s = 24; continue; }
190669
190968
  /* */ $s = 25; continue;
190670
190969
  /* if (!(err === ptrType.nil)) { */ case 24:
190671
- errMessage = "";
190672
- if ($clone(err, js.Value).Type() === 4) {
190673
- errMessage = $clone(err, js.Value).String();
190674
- } else {
190675
- errMessage = $clone($clone(err, js.Value).Get("message"), js.Value).String();
190676
- }
190677
- _r$10 = errs.Errorf(errMessage, sliceType$1.nil); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
190970
+ _r$10 = jshelper.GetError(err); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
190678
190971
  $24r$1 = _r$10;
190679
190972
  $s = 27; case 27: return $24r$1;
190680
190973
  /* } */ case 25:
190681
190974
  ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
190682
- ycbcrJSImg.CanvasImageSource = frame;
190683
- displayWidth = $clone($clone(frame, js.Value).Get("displayWidth"), js.Value).Int();
190684
- displayHeight = $clone($clone(frame, js.Value).Get("displayHeight"), js.Value).Int();
190975
+ ycbcrJSImg.CanvasImageSource = frame[0];
190976
+ displayWidth = $clone($clone(frame[0], js.Value).Get("displayWidth"), js.Value).Int();
190977
+ displayHeight = $clone($clone(frame[0], js.Value).Get("displayHeight"), js.Value).Int();
190685
190978
  _r$11 = outputBuffer.YCbCr(); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
190686
190979
  ycbcrImg = _r$11;
190687
190980
  image.Rectangle.copy(ycbcrImg.Rect, image.Rect(0, 0, displayWidth, displayHeight));
190688
190981
  ycbcrImg.SubsampleRatio = 2;
190982
+ $go((function(d, frame, releaseChan) { return function $b() {
190983
+ var {_r$12, _r$13, $s, $r, $c} = $restore(this, {});
190984
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190985
+ _r$12 = $recv(releaseChan[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
190986
+ _r$12[0];
190987
+ _r$13 = $clone(frame[0], js.Value).Call("close", sliceType$1.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
190988
+ _r$13;
190989
+ $s = -1; return;
190990
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$12, _r$13, $s};return $f;
190991
+ }; })(d, frame, releaseChan), []);
190689
190992
  $s = -1; return $ifaceNil;
190690
- /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, errMessage, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s};return $f;
190691
- };
190692
- Decoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
190693
- Decoder.ptr.prototype.Release = function(outputBuffer) {
190694
- var {_r, m, outputBuffer, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
190695
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190696
- m = this;
190697
- ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
190698
- /* */ if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { $s = 1; continue; }
190699
- /* */ $s = 2; continue;
190700
- /* if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { */ case 1:
190701
- _r = $clone(ycbcrJSImg.CanvasImageSource, js.Value).Call("close", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190702
- _r;
190703
- /* } */ case 2:
190704
- $s = -1; return;
190705
- /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Release, $c: true, $r, _r, m, outputBuffer, ycbcrJSImg, $s};return $f;
190993
+ /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, releaseChan, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s};return $f;
190706
190994
  };
190707
- Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
190995
+ Decoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
190708
190996
  Decoder.ptr.prototype.jsSafeDecode = function(chunk) {
190709
190997
  var {$24r, _r, chunk, d, err, $s, $deferred, $r, $c} = $restore(this, {chunk});
190710
190998
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -190732,7 +191020,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190732
191020
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: Decoder.ptr.prototype.jsSafeDecode, $c: true, $r, $24r, _r, chunk, d, err, $s, $deferred};return $f; } }
190733
191021
  };
190734
191022
  Decoder.prototype.jsSafeDecode = function(chunk) { return this.$val.jsSafeDecode(chunk); };
190735
- ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [$String], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$2, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([js.Value], [$error], false)}];
191023
+ ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [$String], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$2, general.OutputBuffer, chanType], [$error], false)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([js.Value], [$error], false)}];
190736
191024
  Decoder.init("github.com/supraio/client-daemon/pkg/x264/webcodecs", [{prop: "jsVideoDecoder", name: "jsVideoDecoder", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "resolves", name: "resolves", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "rejects", name: "rejects", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "releaseVideoDecoder", name: "releaseVideoDecoder", embedded: false, exported: false, typ: funcType, tag: ""}]);
190737
191025
  $init = function() {
190738
191026
  $pkg.$init = function() {};
@@ -190751,10 +191039,11 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190751
191039
  return $pkg;
190752
191040
  })();
190753
191041
  $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190754
- var $pkg = {}, $init, errs, general, h264_decoder, webcodecs, Decoder, H264Decoder, ptrType, sliceType, sliceType$1, NewH264Decoder;
191042
+ var $pkg = {}, $init, errs, general, h264_decoder, nacldecoder, webcodecs, Decoder, H264Decoder, ptrType, sliceType, sliceType$1, chanType, NewH264Decoder;
190755
191043
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190756
191044
  general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190757
191045
  h264_decoder = $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"];
191046
+ nacldecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"];
190758
191047
  webcodecs = $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"];
190759
191048
  Decoder = $pkg.Decoder = $newType(8, $kindInterface, "x264.Decoder", true, "github.com/supraio/client-daemon/pkg/x264", true, null);
190760
191049
  H264Decoder = $pkg.H264Decoder = $newType(0, $kindStruct, "x264.H264Decoder", true, "github.com/supraio/client-daemon/pkg/x264", true, function(decoder_) {
@@ -190768,49 +191057,45 @@ $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190768
191057
  ptrType = $ptrType(H264Decoder);
190769
191058
  sliceType = $sliceType($emptyInterface);
190770
191059
  sliceType$1 = $sliceType($Uint8);
191060
+ chanType = $chanType($emptyInterface, false, false);
190771
191061
  NewH264Decoder = function(header) {
190772
191062
  var {$24r, _r, decoder, header, $s, $r, $c} = $restore(this, {header});
190773
191063
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190774
191064
  decoder = $ifaceNil;
190775
- /* */ if (webcodecs.IsAvailable()) { $s = 1; continue; }
190776
- /* */ if (h264_decoder.IsAvailable()) { $s = 2; continue; }
190777
- /* */ $s = 3; continue;
190778
- /* if (webcodecs.IsAvailable()) { */ case 1:
191065
+ /* */ if (nacldecoder.IsAvailable()) { $s = 1; continue; }
191066
+ /* */ if (webcodecs.IsAvailable()) { $s = 2; continue; }
191067
+ /* */ if (h264_decoder.IsAvailable()) { $s = 3; continue; }
191068
+ /* */ $s = 4; continue;
191069
+ /* if (nacldecoder.IsAvailable()) { */ case 1:
191070
+ decoder = nacldecoder.NewDecoder(header);
191071
+ $s = 5; continue;
191072
+ /* } else if (webcodecs.IsAvailable()) { */ case 2:
190779
191073
  decoder = webcodecs.NewDecoder(header);
190780
- $s = 4; continue;
190781
- /* } else if (h264_decoder.IsAvailable()) { */ case 2:
191074
+ $s = 5; continue;
191075
+ /* } else if (h264_decoder.IsAvailable()) { */ case 3:
190782
191076
  decoder = h264_decoder.NewDecoder(header);
190783
- $s = 4; continue;
190784
- /* } else { */ case 3:
190785
- _r = errs.Errorf("Not available any h264 decoder adapter in JS", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191077
+ $s = 5; continue;
191078
+ /* } else { */ case 4:
191079
+ _r = errs.Errorf("Not available any h264 decoder adapter in JS", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190786
191080
  $24r = [ptrType.nil, _r];
190787
- $s = 6; case 6: return $24r;
190788
- /* } */ case 4:
191081
+ $s = 7; case 7: return $24r;
191082
+ /* } */ case 5:
190789
191083
  $s = -1; return [new H264Decoder.ptr(decoder), $ifaceNil];
190790
191084
  /* */ } return; } var $f = {$blk: NewH264Decoder, $c: true, $r, $24r, _r, decoder, header, $s};return $f;
190791
191085
  };
190792
191086
  $pkg.NewH264Decoder = NewH264Decoder;
190793
- H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer) {
190794
- var {$24r, _r, m, nal, outputBuffer, $s, $r, $c} = $restore(this, {nal, outputBuffer});
191087
+ H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
191088
+ var {$24r, _r, m, nal, outputBuffer, releaseChan, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
190795
191089
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190796
191090
  m = this;
190797
- _r = m.decoder.Decode(nal, outputBuffer); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191091
+ _r = m.decoder.Decode(nal, outputBuffer, releaseChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190798
191092
  $24r = _r;
190799
191093
  $s = 2; case 2: return $24r;
190800
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _r, m, nal, outputBuffer, $s};return $f;
191094
+ /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _r, m, nal, outputBuffer, releaseChan, $s};return $f;
190801
191095
  };
190802
- H264Decoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
190803
- H264Decoder.ptr.prototype.Release = function(outputBuffer) {
190804
- var {m, outputBuffer, $s, $r, $c} = $restore(this, {outputBuffer});
190805
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190806
- m = this;
190807
- $r = m.decoder.Release(outputBuffer); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190808
- $s = -1; return;
190809
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Release, $c: true, $r, m, outputBuffer, $s};return $f;
190810
- };
190811
- H264Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
190812
- ptrType.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
190813
- Decoder.init([{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}]);
191096
+ H264Decoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
191097
+ ptrType.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}];
191098
+ Decoder.init([{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}]);
190814
191099
  H264Decoder.init("github.com/supraio/client-daemon/pkg/x264", [{prop: "decoder", name: "decoder", embedded: false, exported: false, typ: Decoder, tag: ""}]);
190815
191100
  $init = function() {
190816
191101
  $pkg.$init = function() {};
@@ -190818,7 +191103,391 @@ $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190818
191103
  $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190819
191104
  $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190820
191105
  $r = h264_decoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190821
- $r = webcodecs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191106
+ $r = nacldecoder.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191107
+ $r = webcodecs.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191108
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191109
+ };
191110
+ $pkg.$init = $init;
191111
+ return $pkg;
191112
+ })();
191113
+ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] = (function() {
191114
+ var $pkg = {}, $init, errs, jshelper, jsdecoder, dom, screen, f64, image, color, draw, log, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, funcType, arrayType, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, newWindow, newScreenImpl, Main, main, newBuffer;
191115
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191116
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
191117
+ jsdecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/jsdecoder"];
191118
+ dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
191119
+ screen = $packages["golang.org/x/exp/shiny/screen"];
191120
+ f64 = $packages["golang.org/x/image/math/f64"];
191121
+ image = $packages["image"];
191122
+ color = $packages["image/color"];
191123
+ draw = $packages["image/draw"];
191124
+ log = $packages["log"];
191125
+ sync = $packages["sync"];
191126
+ js = $packages["syscall/js"];
191127
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "nacldriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, released_) {
191128
+ this.$val = this;
191129
+ if (arguments.length === 0) {
191130
+ this.screen = ptrType.nil;
191131
+ this.mutex = ptrType$1.nil;
191132
+ this.renderingInProgress = false;
191133
+ this.domEvents = ptrType$2.nil;
191134
+ this.released = false;
191135
+ return;
191136
+ }
191137
+ this.screen = screen_;
191138
+ this.mutex = mutex_;
191139
+ this.renderingInProgress = renderingInProgress_;
191140
+ this.domEvents = domEvents_;
191141
+ this.released = released_;
191142
+ });
191143
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "nacldriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", false, function(doc_) {
191144
+ this.$val = this;
191145
+ if (arguments.length === 0) {
191146
+ this.doc = new js.Value.ptr(null, false, arrayType.zero());
191147
+ return;
191148
+ }
191149
+ this.doc = doc_;
191150
+ });
191151
+ BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "nacldriver.BufferImpl", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", true, function(screen_, size_) {
191152
+ this.$val = this;
191153
+ if (arguments.length === 0) {
191154
+ this.screen = ptrType.nil;
191155
+ this.size = new image.Point.ptr(0, 0);
191156
+ return;
191157
+ }
191158
+ this.screen = screen_;
191159
+ this.size = size_;
191160
+ });
191161
+ sliceType = $sliceType($emptyInterface);
191162
+ ptrType = $ptrType(screenImpl);
191163
+ ptrType$1 = $ptrType(sync.Mutex);
191164
+ ptrType$2 = $ptrType(dom.DomEvents);
191165
+ ptrType$3 = $ptrType(js.Value);
191166
+ funcType = $funcType([], [], false);
191167
+ arrayType = $arrayType(funcType, 0);
191168
+ ptrType$4 = $ptrType(image.RGBA);
191169
+ sliceType$1 = $sliceType($Uint8);
191170
+ ptrType$5 = $ptrType(screen.DrawOptions);
191171
+ ptrType$6 = $ptrType(windowImpl);
191172
+ ptrType$7 = $ptrType(screen.NewWindowOptions);
191173
+ ptrType$8 = $ptrType(image.YCbCr);
191174
+ ptrType$9 = $ptrType(BufferImpl);
191175
+ newWindow = function(screen$1, opts) {
191176
+ var {_r, _r$1, domEvents, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
191177
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191178
+ /* */ if (!(opts.Title === "")) { $s = 1; continue; }
191179
+ /* */ $s = 2; continue;
191180
+ /* if (!(opts.Title === "")) { */ case 1:
191181
+ _r = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191182
+ _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; }
191183
+ $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; }
191184
+ /* } */ case 2:
191185
+ domEvents = dom.NewDomEvents();
191186
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), false, domEvents, false);
191187
+ $r = domEvents.BindEvents(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191188
+ $s = -1; return w;
191189
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, domEvents, opts, screen$1, w, $s};return $f;
191190
+ };
191191
+ windowImpl.ptr.prototype.Release = function() {
191192
+ var {w, $s, $deferred, $r, $c} = $restore(this, {});
191193
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191194
+ w = this;
191195
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191196
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
191197
+ /* */ if (w.released) { $s = 2; continue; }
191198
+ /* */ $s = 3; continue;
191199
+ /* if (w.released) { */ case 2:
191200
+ $s = 4; case 4: return;
191201
+ /* } */ case 3:
191202
+ $r = w.domEvents.Release(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191203
+ w.released = true;
191204
+ $s = -1; return;
191205
+ /* */ } 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; } }
191206
+ };
191207
+ windowImpl.prototype.Release = function() { return this.$val.Release(); };
191208
+ windowImpl.ptr.prototype.Publish = function() {
191209
+ var w;
191210
+ w = this;
191211
+ if (w.released) {
191212
+ return new screen.PublishResult.ptr(false);
191213
+ }
191214
+ return new screen.PublishResult.ptr(false);
191215
+ };
191216
+ windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
191217
+ windowImpl.ptr.prototype.Send = function(event) {
191218
+ var event, w;
191219
+ w = this;
191220
+ if (w.released) {
191221
+ return;
191222
+ }
191223
+ $panic(new $String("Not implemented"));
191224
+ };
191225
+ windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
191226
+ windowImpl.ptr.prototype.SendFirst = function(event) {
191227
+ var event, w;
191228
+ w = this;
191229
+ if (w.released) {
191230
+ return;
191231
+ }
191232
+ $panic(new $String("Not implemented"));
191233
+ };
191234
+ windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
191235
+ windowImpl.ptr.prototype.NextEvent = function() {
191236
+ var {_r, ev, w, $s, $r, $c} = $restore(this, {});
191237
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191238
+ w = this;
191239
+ _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191240
+ ev = _r[0];
191241
+ $s = -1; return ev;
191242
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
191243
+ };
191244
+ windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
191245
+ windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
191246
+ var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
191247
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191248
+ w = this;
191249
+ if (w.released) {
191250
+ $s = -1; return;
191251
+ }
191252
+ _r = errs.Errorf("Not implemented, use UploadYCbCr instead", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191253
+ $panic(_r);
191254
+ $s = -1; return;
191255
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, _r, dp, sr, src, w, $s};return $f;
191256
+ };
191257
+ windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
191258
+ windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
191259
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, dp, err, err$1, jsNaClDecoder, picture, picturePromise, renderPromise, renderResult, sr, src, w, x, x$1, $s, $r, $c} = $restore(this, {dp, src, sr});
191260
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191261
+ w = this;
191262
+ if (w.released) {
191263
+ $s = -1; return;
191264
+ }
191265
+ /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
191266
+ /* */ $s = 2; continue;
191267
+ /* if (jsdecoder.ShouldResetOnNextDecode()) { */ case 1:
191268
+ $r = log.Println(new sliceType([new $String("NaClDecoder is resetting, skipping frame rendering")])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191269
+ $s = -1; return;
191270
+ /* } */ case 2:
191271
+ jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
191272
+ /* */ if (jsNaClDecoder === ptrType$3.nil) { $s = 4; continue; }
191273
+ /* */ $s = 5; continue;
191274
+ /* if (jsNaClDecoder === ptrType$3.nil) { */ case 4:
191275
+ $r = log.Println(new sliceType([new $String("JsNaClDecoder is not created, skipping frame rendering")])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191276
+ $s = -1; return;
191277
+ /* } */ case 5:
191278
+ $r = w.mutex.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191279
+ _r = $clone(jsNaClDecoder, js.Value).Call("getPicture", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191280
+ picturePromise = $clone(_r, js.Value);
191281
+ _r$1 = jshelper.Await($clone(picturePromise, js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191282
+ _tuple = _r$1;
191283
+ picture = _tuple[0];
191284
+ err = _tuple[1];
191285
+ $r = w.mutex.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191286
+ /* */ if (!(err === ptrType$3.nil)) { $s = 11; continue; }
191287
+ /* */ $s = 12; continue;
191288
+ /* if (!(err === ptrType$3.nil)) { */ case 11:
191289
+ jsdecoder.ResetBeforeNextDecode();
191290
+ _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; }
191291
+ _arg = _r$2;
191292
+ $r = errs.Print("Failed to get picture: %s", _arg); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191293
+ $s = -1; return;
191294
+ /* } */ case 12:
191295
+ /* */ if (!jsdecoder.ShouldResetOnNextDecode() && !w.renderingInProgress) { $s = 15; continue; }
191296
+ /* */ $s = 16; continue;
191297
+ /* if (!jsdecoder.ShouldResetOnNextDecode() && !w.renderingInProgress) { */ case 15:
191298
+ w.renderingInProgress = true;
191299
+ _r$3 = $clone(jsNaClDecoder, js.Value).Call("render", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191300
+ renderPromise = $clone(_r$3, js.Value);
191301
+ _r$4 = jshelper.Await($clone(renderPromise, js.Value)); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191302
+ _tuple$1 = _r$4;
191303
+ renderResult = _tuple$1[0];
191304
+ err$1 = _tuple$1[1];
191305
+ w.renderingInProgress = false;
191306
+ /* */ if (!(err$1 === ptrType$3.nil)) { $s = 19; continue; }
191307
+ /* */ $s = 20; continue;
191308
+ /* if (!(err$1 === ptrType$3.nil)) { */ case 19:
191309
+ _r$5 = jshelper.GetError(err$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
191310
+ _arg$1 = _r$5;
191311
+ $r = errs.Print("Failed to render frame: %s", _arg$1); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191312
+ $s = -1; return;
191313
+ /* } */ case 20:
191314
+ /* */ if (!(($clone(renderResult, js.Value).Float() === 0))) { $s = 23; continue; }
191315
+ /* */ $s = 24; continue;
191316
+ /* if (!(($clone(renderResult, js.Value).Float() === 0))) { */ case 23:
191317
+ $r = log.Printf("Failed to render frame with code: %f\n", new sliceType([new $Float64($clone(renderResult, js.Value).Float())])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191318
+ $s = -1; return;
191319
+ /* } */ case 24:
191320
+ /* } */ case 16:
191321
+ _r$6 = $clone(jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x$1 = picture, new x$1.constructor.elem(x$1))])); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191322
+ _r$6;
191323
+ $s = -1; return;
191324
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, dp, err, err$1, jsNaClDecoder, picture, picturePromise, renderPromise, renderResult, sr, src, w, x, x$1, $s};return $f;
191325
+ };
191326
+ windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
191327
+ windowImpl.ptr.prototype.Fill = function(dr, src, op) {
191328
+ var dr, op, src, w;
191329
+ w = this;
191330
+ if (w.released) {
191331
+ return;
191332
+ }
191333
+ $panic(new $String("Not implemented"));
191334
+ };
191335
+ windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
191336
+ windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
191337
+ var op, opts, sr, src, src2dst, w;
191338
+ w = this;
191339
+ if (w.released) {
191340
+ return;
191341
+ }
191342
+ $panic(new $String("Not implemented"));
191343
+ };
191344
+ windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
191345
+ windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
191346
+ var op, opts, sr, src, src2dst, w;
191347
+ w = this;
191348
+ if (w.released) {
191349
+ return;
191350
+ }
191351
+ $panic(new $String("Not implemented"));
191352
+ };
191353
+ windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
191354
+ windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
191355
+ var dp, op, opts, sr, src, w;
191356
+ w = this;
191357
+ if (w.released) {
191358
+ return;
191359
+ }
191360
+ $panic(new $String("Not implemented"));
191361
+ };
191362
+ windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
191363
+ windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
191364
+ var dr, op, opts, sr, src, w;
191365
+ w = this;
191366
+ if (w.released) {
191367
+ return;
191368
+ }
191369
+ $panic(new $String("Not implemented"));
191370
+ };
191371
+ windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
191372
+ newScreenImpl = function() {
191373
+ var s;
191374
+ s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
191375
+ return [s, $ifaceNil];
191376
+ };
191377
+ screenImpl.ptr.prototype.NewBuffer = function(size) {
191378
+ var buffer, s, size;
191379
+ s = this;
191380
+ buffer = newBuffer(s, $clone(size, image.Point));
191381
+ return [buffer, $ifaceNil];
191382
+ };
191383
+ screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
191384
+ screenImpl.ptr.prototype.NewTexture = function(size) {
191385
+ var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
191386
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191387
+ s = this;
191388
+ _r = errs.Errorf("Texture not implemented", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191389
+ $24r = [$ifaceNil, _r];
191390
+ $s = 2; case 2: return $24r;
191391
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
191392
+ };
191393
+ screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
191394
+ screenImpl.ptr.prototype.NewWindow = function(opts) {
191395
+ var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
191396
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191397
+ s = this;
191398
+ _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191399
+ window = _r;
191400
+ $s = -1; return [window, $ifaceNil];
191401
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
191402
+ };
191403
+ screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
191404
+ Main = function(f) {
191405
+ var {_r, err, f, $s, $r, $c} = $restore(this, {f});
191406
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191407
+ _r = main(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191408
+ err = _r;
191409
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
191410
+ $panic(err);
191411
+ }
191412
+ $s = -1; return;
191413
+ /* */ } return; } var $f = {$blk: Main, $c: true, $r, _r, err, f, $s};return $f;
191414
+ };
191415
+ $pkg.Main = Main;
191416
+ main = function(f) {
191417
+ var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
191418
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191419
+ retErr = $ifaceNil;
191420
+ _tuple = newScreenImpl();
191421
+ s = _tuple[0];
191422
+ err = _tuple[1];
191423
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
191424
+ retErr = err;
191425
+ $s = -1; return retErr;
191426
+ }
191427
+ $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191428
+ retErr = $ifaceNil;
191429
+ $s = -1; return retErr;
191430
+ /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
191431
+ };
191432
+ newBuffer = function(screen$1, size) {
191433
+ var b, screen$1, size;
191434
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point));
191435
+ return b;
191436
+ };
191437
+ BufferImpl.ptr.prototype.Size = function() {
191438
+ var b;
191439
+ b = this;
191440
+ return b.size;
191441
+ };
191442
+ BufferImpl.prototype.Size = function() { return this.$val.Size(); };
191443
+ BufferImpl.ptr.prototype.Bounds = function() {
191444
+ var b;
191445
+ b = this;
191446
+ return new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(b.size, image.Point));
191447
+ };
191448
+ BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
191449
+ BufferImpl.ptr.prototype.RGBA = function() {
191450
+ var {_r, b, $s, $r, $c} = $restore(this, {});
191451
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191452
+ b = this;
191453
+ _r = errs.Errorf("Not implemented RGBA(), use PictureResult() instead", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191454
+ $panic(_r);
191455
+ $s = -1; return ptrType$4.nil;
191456
+ /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.RGBA, $c: true, $r, _r, b, $s};return $f;
191457
+ };
191458
+ BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
191459
+ BufferImpl.ptr.prototype.YCbCr = function() {
191460
+ var b;
191461
+ b = this;
191462
+ return new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, $clone(b.Bounds(), image.Rectangle));
191463
+ };
191464
+ BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
191465
+ BufferImpl.ptr.prototype.Release = function() {
191466
+ var b;
191467
+ b = this;
191468
+ };
191469
+ BufferImpl.prototype.Release = function() { return this.$val.Release(); };
191470
+ ptrType$6.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$5], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$5], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$5], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$5], [], false)}];
191471
+ 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$7], [screen.Window, $error], false)}];
191472
+ ptrType$9.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$4], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
191473
+ windowImpl.init("github.com/supraio/client-daemon/pkg/x264/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: "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: ""}]);
191474
+ screenImpl.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191475
+ BufferImpl.init("github.com/supraio/client-daemon/pkg/x264/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: ""}]);
191476
+ $init = function() {
191477
+ $pkg.$init = function() {};
191478
+ /* */ 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:
191479
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191480
+ $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191481
+ $r = jsdecoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191482
+ $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191483
+ $r = screen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191484
+ $r = f64.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191485
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191486
+ $r = color.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191487
+ $r = draw.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191488
+ $r = log.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191489
+ $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191490
+ $r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190822
191491
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190823
191492
  };
190824
191493
  $pkg.$init = $init;
@@ -190917,13 +191586,14 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
190917
191586
  return $pkg;
190918
191587
  })();
190919
191588
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
190920
- var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, errs, input, message, netclient, netpacket, netstream, stats, window, x264, webcodecs, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, X264FrameRenderer, ScreenWindow, ProcessInfo, ProcessInfoManager, FrameCollector, FrameMapItem, Frame, FrameType, ptrType, ptrType$1, ptrType$2, funcType, sliceType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, sliceType$1, sliceType$2, structType, sliceType$3, ptrType$11, ptrType$12, funcType$1, ptrType$13, chanType, chanType$1, chanType$2, chanType$3, chanType$4, mapType, NewX264FrameRenderer, NewScreenWindow, MainDriver, NewProcessInfoManager, NewFrameCollector;
191589
+ var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, errs, helper, input, message, netclient, netpacket, netstream, stats, window, x264, nacldecoder, nacldriver, webcodecs, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, X264FrameRenderer, ScreenWindow, ProcessInfo, ProcessInfoManager, FrameCollector, FrameMapItem, Frame, FrameType, ptrType, ptrType$1, structType, ptrType$2, funcType, sliceType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, sliceType$1, sliceType$2, sliceType$3, ptrType$10, ptrType$11, funcType$1, ptrType$12, ptrType$13, chanType, chanType$1, chanType$2, chanType$3, chanType$4, mapType, NewX264FrameRenderer, NewScreenWindow, MainDriver, NewProcessInfoManager, NewFrameCollector;
190921
191590
  binary = $packages["encoding/binary"];
190922
191591
  json = $packages["encoding/json"];
190923
191592
  query = $packages["github.com/google/go-querystring/query"];
190924
191593
  clientscreen = $packages["github.com/supraio/client-daemon/pkg/clientscreen"];
190925
191594
  clipboard = $packages["github.com/supraio/client-daemon/pkg/clipboard"];
190926
191595
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191596
+ helper = $packages["github.com/supraio/client-daemon/pkg/helper"];
190927
191597
  input = $packages["github.com/supraio/client-daemon/pkg/input"];
190928
191598
  message = $packages["github.com/supraio/client-daemon/pkg/message"];
190929
191599
  netclient = $packages["github.com/supraio/client-daemon/pkg/netclient"];
@@ -190932,6 +191602,8 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
190932
191602
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
190933
191603
  window = $packages["github.com/supraio/client-daemon/pkg/window"];
190934
191604
  x264 = $packages["github.com/supraio/client-daemon/pkg/x264"];
191605
+ nacldecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"];
191606
+ nacldriver = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"];
190935
191607
  webcodecs = $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"];
190936
191608
  canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
190937
191609
  webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
@@ -190965,7 +191637,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
190965
191637
  this.stats = stats_;
190966
191638
  this.dec = dec_;
190967
191639
  });
190968
- ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, screenSize_, renderMutex_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, screenReconnecting_, metadataServer_, frameCollector_, x264Renderer_, screenSender_, metadataSender_, metadataResponsiveSender_, sizeHandler_, keyHandler_, mouseHandler_, healthchecker_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, winCloseChannel_) {
191640
+ ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, screenSize_, renderMutex_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, screenReconnecting_, metadataServer_, frameCollector_, x264Renderer_, sizeHandler_, keyHandler_, mouseHandler_, healthchecker_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, winCloseChannel_) {
190969
191641
  this.$val = this;
190970
191642
  if (arguments.length === 0) {
190971
191643
  this.processInfoManager = ptrType$2.nil;
@@ -190990,13 +191662,10 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
190990
191662
  this.metadataServer = ptrType$3.nil;
190991
191663
  this.frameCollector = ptrType$4.nil;
190992
191664
  this.x264Renderer = ptrType$5.nil;
190993
- this.screenSender = $ifaceNil;
190994
- this.metadataSender = $ifaceNil;
190995
- this.metadataResponsiveSender = ptrType$6.nil;
190996
- this.sizeHandler = ptrType$7.nil;
190997
- this.keyHandler = ptrType$8.nil;
190998
- this.mouseHandler = ptrType$9.nil;
190999
- this.healthchecker = ptrType$10.nil;
191665
+ this.sizeHandler = ptrType$6.nil;
191666
+ this.keyHandler = ptrType$7.nil;
191667
+ this.mouseHandler = ptrType$8.nil;
191668
+ this.healthchecker = ptrType$9.nil;
191000
191669
  this.keyEventChan = $chanNil;
191001
191670
  this.mouseEventChan = $chanNil;
191002
191671
  this.sizeEventChan = $chanNil;
@@ -191026,9 +191695,6 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191026
191695
  this.metadataServer = metadataServer_;
191027
191696
  this.frameCollector = frameCollector_;
191028
191697
  this.x264Renderer = x264Renderer_;
191029
- this.screenSender = screenSender_;
191030
- this.metadataSender = metadataSender_;
191031
- this.metadataResponsiveSender = metadataResponsiveSender_;
191032
191698
  this.sizeHandler = sizeHandler_;
191033
191699
  this.keyHandler = keyHandler_;
191034
191700
  this.mouseHandler = mouseHandler_;
@@ -191108,84 +191774,93 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191108
191774
  FrameType = $pkg.FrameType = $newType(1, $kindUint8, "render.FrameType", true, "github.com/supraio/client-daemon/pkg/render", true, null);
191109
191775
  ptrType = $ptrType(stats.Stats);
191110
191776
  ptrType$1 = $ptrType(x264.H264Decoder);
191777
+ structType = $structType("", []);
191111
191778
  ptrType$2 = $ptrType(ProcessInfoManager);
191112
191779
  funcType = $funcType([], [], false);
191113
191780
  sliceType = $sliceType(funcType);
191114
191781
  ptrType$3 = $ptrType(netclient.MetadataServer);
191115
191782
  ptrType$4 = $ptrType(FrameCollector);
191116
191783
  ptrType$5 = $ptrType(X264FrameRenderer);
191117
- ptrType$6 = $ptrType(netclient.MetadataResponsiveSender);
191118
- ptrType$7 = $ptrType(window.SizeHandler);
191119
- ptrType$8 = $ptrType(input.KeyHandler);
191120
- ptrType$9 = $ptrType(input.MouseHandler);
191121
- ptrType$10 = $ptrType(netclient.Healthchecker);
191784
+ ptrType$6 = $ptrType(window.SizeHandler);
191785
+ ptrType$7 = $ptrType(input.KeyHandler);
191786
+ ptrType$8 = $ptrType(input.MouseHandler);
191787
+ ptrType$9 = $ptrType(netclient.Healthchecker);
191122
191788
  sliceType$1 = $sliceType($emptyInterface);
191123
191789
  sliceType$2 = $sliceType($Uint8);
191124
- structType = $structType("", []);
191125
191790
  sliceType$3 = $sliceType($String);
191126
- ptrType$11 = $ptrType(Frame);
191127
- ptrType$12 = $ptrType(FrameMapItem);
191791
+ ptrType$10 = $ptrType(Frame);
191792
+ ptrType$11 = $ptrType(FrameMapItem);
191128
191793
  funcType$1 = $funcType([], [$error], false);
191794
+ ptrType$12 = $ptrType(netclient.MetadataResponsiveSender);
191129
191795
  ptrType$13 = $ptrType(ScreenWindow);
191130
191796
  chanType = $chanType(key.Event, false, false);
191131
191797
  chanType$1 = $chanType(mouse.Event, false, false);
191132
191798
  chanType$2 = $chanType(size.Event, false, false);
191133
191799
  chanType$3 = $chanType(focus.Event, false, false);
191134
191800
  chanType$4 = $chanType($emptyInterface, false, false);
191135
- mapType = $mapType($Uint16, ptrType$12);
191801
+ mapType = $mapType($Uint16, ptrType$11);
191136
191802
  NewX264FrameRenderer = function(screenBuffer, window$1, stats$1) {
191137
191803
  var screenBuffer, stats$1, window$1;
191138
191804
  return new X264FrameRenderer.ptr(screenBuffer, window$1, stats$1, ptrType$1.nil);
191139
191805
  };
191140
191806
  $pkg.NewX264FrameRenderer = NewX264FrameRenderer;
191141
191807
  X264FrameRenderer.ptr.prototype.Render = function(frame) {
191142
- var {_arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, err, frame, r, $s, $deferred, $r, $c} = $restore(this, {frame});
191143
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191144
- r = this;
191808
+ var {_r, _r$1, _tuple, err, frame, r, releaseChannel, $s, $r, $c} = $restore(this, {frame});
191809
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191810
+ r = [r];
191811
+ releaseChannel = [releaseChannel];
191812
+ r[0] = this;
191145
191813
  err = $ifaceNil;
191146
- /* */ if (r.dec === ptrType$1.nil) { $s = 1; continue; }
191814
+ /* */ if (r[0].dec === ptrType$1.nil) { $s = 1; continue; }
191147
191815
  /* */ $s = 2; continue;
191148
- /* if (r.dec === ptrType$1.nil) { */ case 1:
191816
+ /* if (r[0].dec === ptrType$1.nil) { */ case 1:
191149
191817
  _r = x264.NewH264Decoder(frame.buffer); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191150
191818
  _tuple = _r;
191151
- r.dec = _tuple[0];
191819
+ r[0].dec = _tuple[0];
191152
191820
  err = _tuple[1];
191153
191821
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
191154
191822
  /* */ $s = 5; continue;
191155
191823
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
191156
191824
  $r = errs.Print("Decoder cannot be created", err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191157
- $s = 7; case 7: return;
191825
+ $s = -1; return;
191158
191826
  /* } */ case 5:
191159
191827
  /* } */ case 2:
191160
- $r = r.stats.NotifyFrameDecodeStarted(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191161
- _r$1 = r.dec.Decode(frame.buffer, r.screenBuffer); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191828
+ releaseChannel[0] = new $Chan($emptyInterface, 0);
191829
+ $r = r[0].stats.NotifyFrameDecodeStarted(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191830
+ _r$1 = r[0].dec.Decode(frame.buffer, r[0].screenBuffer, releaseChannel[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191162
191831
  err = _r$1;
191163
- $r = r.stats.NotifyFrameDecodeEnded(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191164
- $deferred.push([$methodVal(r.dec, "Release"), [r.screenBuffer]]);
191165
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
191166
- /* */ $s = 12; continue;
191167
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
191168
- $r = errs.Print("Frame cannot be decoded", err); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191169
- $s = 14; case 14: return;
191170
- /* } */ case 12:
191171
- $r = r.stats.NotifyFrameRenderStarted(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191172
- _arg = $clone(new image.Point.ptr(0, 0), image.Point);
191173
- _arg$1 = r.screenBuffer;
191174
- _r$2 = r.screenBuffer.YCbCr(); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191175
- _arg$2 = $clone(_r$2.Rect, image.Rectangle);
191176
- $r = r.window.UploadYCbCr(_arg, _arg$1, _arg$2); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191177
- _r$3 = r.window.Publish(); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191178
- _r$3;
191179
- $r = r.stats.NotifyFrameRenderEnded(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191832
+ $r = r[0].stats.NotifyFrameDecodeEnded(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191833
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
191834
+ /* */ $s = 11; continue;
191835
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
191836
+ $r = errs.Print("Frame cannot be decoded", err); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191837
+ $s = -1; return;
191838
+ /* } */ case 11:
191839
+ $go((function(r, releaseChannel) { return function $b() {
191840
+ var {_arg, _arg$1, _arg$2, _r$2, _r$3, x, $s, $r, $c} = $restore(this, {});
191841
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191842
+ $r = r[0].stats.NotifyFrameRenderStarted(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191843
+ _arg = $clone(new image.Point.ptr(0, 0), image.Point);
191844
+ _arg$1 = r[0].screenBuffer;
191845
+ _r$2 = r[0].screenBuffer.YCbCr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191846
+ _arg$2 = $clone(_r$2.Rect, image.Rectangle);
191847
+ $r = r[0].window.UploadYCbCr(_arg, _arg$1, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191848
+ _r$3 = r[0].window.Publish(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191849
+ _r$3;
191850
+ $r = r[0].stats.NotifyFrameRenderEnded(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191851
+ $r = $send(releaseChannel[0], (x = new structType.ptr(), new x.constructor.elem(x))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191852
+ $s = -1; return;
191853
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _arg$1, _arg$2, _r$2, _r$3, x, $s};return $f;
191854
+ }; })(r, releaseChannel), []);
191180
191855
  $s = -1; return;
191181
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: X264FrameRenderer.ptr.prototype.Render, $c: true, $r, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, err, frame, r, $s, $deferred};return $f; } }
191856
+ /* */ } return; } var $f = {$blk: X264FrameRenderer.ptr.prototype.Render, $c: true, $r, _r, _r$1, _tuple, err, frame, r, releaseChannel, $s};return $f;
191182
191857
  };
191183
191858
  X264FrameRenderer.prototype.Render = function(frame) { return this.$val.Render(frame); };
191184
191859
  NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, screenSize, timeoutDuration) {
191185
191860
  var {$24r, _r, clientID, clientSecret, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenSize, secure, timeoutDuration, $s, $r, $c} = $restore(this, {processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, screenSize, timeoutDuration});
191186
191861
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191187
191862
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191188
- $24r = new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(screenSize, image.Point), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex), timeoutDuration, true, _r, sliceType.nil, $ifaceNil, $ifaceNil, $ifaceNil, false, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, $ifaceNil, $ifaceNil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, new $Chan(key.Event, 0), new $Chan(mouse.Event, 0), new $Chan(size.Event, 0), new $Chan(focus.Event, 0), new $Chan($emptyInterface, 0));
191863
+ $24r = new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(screenSize, image.Point), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex), timeoutDuration, true, _r, sliceType.nil, $ifaceNil, $ifaceNil, $ifaceNil, false, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, new $Chan(key.Event, 0), new $Chan(mouse.Event, 0), new $Chan(size.Event, 0), new $Chan(focus.Event, 0), new $Chan($emptyInterface, 0));
191189
191864
  $s = 2; case 2: return $24r;
191190
191865
  /* */ } return; } var $f = {$blk: NewScreenWindow, $c: true, $r, $24r, _r, clientID, clientSecret, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenSize, secure, timeoutDuration, $s};return $f;
191191
191866
  };
@@ -191245,22 +191920,17 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191245
191920
  $s = -1; return;
191246
191921
  }
191247
191922
  w.closed = true;
191248
- w.healthchecker.Close();
191249
- w.healthchecker = ptrType$10.nil;
191250
- w.keyHandler.Close();
191251
- w.keyHandler = ptrType$8.nil;
191252
- w.mouseHandler.Close();
191253
- w.mouseHandler = ptrType$9.nil;
191254
- w.sizeHandler.Close();
191255
- w.sizeHandler = ptrType$7.nil;
191256
- _r = w.screenSender.Send(3, new sliceType$2([])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191923
+ if (!(w.healthchecker === ptrType$9.nil)) {
191924
+ w.healthchecker.Close();
191925
+ w.healthchecker = ptrType$9.nil;
191926
+ }
191927
+ _r = w.createScreenSender().Send(3, new sliceType$2([])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191257
191928
  err = _r;
191258
191929
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
191259
191930
  /* */ $s = 3; continue;
191260
191931
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
191261
191932
  $r = errs.Print("Cannot close screen stream", err); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191262
191933
  /* } */ case 3:
191263
- w.screenSender = $ifaceNil;
191264
191934
  _r$1 = w.metadataServer.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191265
191935
  err = _r$1;
191266
191936
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
@@ -191453,7 +192123,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191453
192123
  $r = errs.Print("Cannot encode clipboard info", err$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191454
192124
  /* continue; */ $s = 1; continue;
191455
192125
  /* } */ case 9:
191456
- _r$3 = w[0].metadataSender.Send(47, data); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192126
+ _r$3 = w[0].createMetadataSender().Send(47, data); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191457
192127
  err$1 = _r$3;
191458
192128
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 12; continue; }
191459
192129
  /* */ $s = 13; continue;
@@ -191495,7 +192165,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191495
192165
  };
191496
192166
  ScreenWindow.prototype.retriableOpen = function(retries, open) { return this.$val.retriableOpen(retries, open); };
191497
192167
  ScreenWindow.ptr.prototype.openMetadata = function() {
191498
- var {_r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, conn, connect, err, metadataClient, w, $s, $r, $c} = $restore(this, {});
192168
+ var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, conn, connect, err, metadataClient, metadataSender, metadataServerErr, netStreamErr, w, $s, $r, $c} = $restore(this, {});
191499
192169
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191500
192170
  w = [w];
191501
192171
  w[0] = this;
@@ -191519,44 +192189,87 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191519
192189
  _tuple$2 = _r$2;
191520
192190
  w[0].metadataServer = _tuple$2[0];
191521
192191
  err = _tuple$2[1];
191522
- if (!($interfaceIsEqual(err, $ifaceNil))) {
192192
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
192193
+ /* */ $s = 5; continue;
192194
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
192195
+ _r$3 = conn.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192196
+ netStreamErr = _r$3;
192197
+ /* */ if (!($interfaceIsEqual(netStreamErr, $ifaceNil))) { $s = 7; continue; }
192198
+ /* */ $s = 8; continue;
192199
+ /* if (!($interfaceIsEqual(netStreamErr, $ifaceNil))) { */ case 7:
192200
+ $r = errs.Print("Cannot close metadata connection", netStreamErr); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192201
+ /* } */ case 8:
191523
192202
  $s = -1; return err;
191524
- }
191525
- w[0].metadataSender = netclient.NewMetadataMessageSender(w[0].metadataServer);
191526
- w[0].metadataResponsiveSender = netclient.NewMetadataResponsiveSender(w[0].metadataServer, w[0].timeoutDuration);
191527
- w[0].metadataResponsiveSender.Listen();
191528
- w[0].keyHandler = input.NewKeyHandler(w[0].keyEventChan, w[0].focusEventChan, w[0].metadataSender);
191529
- _r$3 = w[0].keyHandler.Start(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191530
- err = _r$3;
192203
+ /* } */ case 5:
192204
+ _r$4 = w[0].sendStats(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192205
+ err = _r$4;
192206
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
192207
+ /* */ $s = 12; continue;
192208
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
192209
+ _r$5 = w[0].metadataServer.Close(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192210
+ metadataServerErr = _r$5;
192211
+ /* */ if (!($interfaceIsEqual(metadataServerErr, $ifaceNil))) { $s = 14; continue; }
192212
+ /* */ $s = 15; continue;
192213
+ /* if (!($interfaceIsEqual(metadataServerErr, $ifaceNil))) { */ case 14:
192214
+ $r = errs.Print("Cannot close metadata connection", metadataServerErr); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192215
+ /* } */ case 15:
192216
+ $s = -1; return err;
192217
+ /* } */ case 12:
192218
+ metadataSender = w[0].createMetadataSender();
192219
+ w[0].keyHandler = input.NewKeyHandler(w[0].keyEventChan, w[0].focusEventChan, metadataSender);
192220
+ _r$6 = w[0].keyHandler.Start(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
192221
+ err = _r$6;
191531
192222
  if (!($interfaceIsEqual(err, $ifaceNil))) {
191532
192223
  $s = -1; return err;
191533
192224
  }
191534
- w[0].mouseHandler = input.NewMouseHandler(w[0].mouseEventChan, w[0].metadataSender);
192225
+ w[0].mouseHandler = input.NewMouseHandler(w[0].mouseEventChan, metadataSender);
191535
192226
  w[0].mouseHandler.Start();
191536
- w[0].sizeHandler = window.NewSizeHandler(w[0].sizeEventChan, w[0].metadataSender);
192227
+ w[0].sizeHandler = window.NewSizeHandler(w[0].sizeEventChan, metadataSender);
191537
192228
  w[0].sizeHandler.Start();
191538
192229
  $go($methodVal(w[0], "startTimestampSyncing"), []);
191539
192230
  $go($methodVal(w[0], "startStatsSyncing"), []);
191540
192231
  w[0].metadataServer.OnClose((function(w) { return function $b() {
191541
- var {_r$4, err$1, $s, $r, $c} = $restore(this, {});
192232
+ var {_r$7, err$1, $s, $r, $c} = $restore(this, {});
191542
192233
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192234
+ w[0].metadataServer = ptrType$3.nil;
191543
192235
  w[0].keyHandler.Close();
192236
+ w[0].keyHandler = ptrType$7.nil;
191544
192237
  w[0].mouseHandler.Close();
192238
+ w[0].mouseHandler = ptrType$8.nil;
191545
192239
  w[0].sizeHandler.Close();
191546
- _r$4 = w[0].retriableOpen(-1, $methodVal(w[0], "openMetadata")); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191547
- err$1 = _r$4;
192240
+ w[0].sizeHandler = ptrType$6.nil;
192241
+ _r$7 = w[0].retriableOpen(-1, $methodVal(w[0], "openMetadata")); /* */ $s = 1; case 1: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
192242
+ err$1 = _r$7;
191548
192243
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
191549
192244
  /* */ $s = 3; continue;
191550
192245
  /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
191551
192246
  $r = errs.Print("Reconnecting metadata", err$1); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191552
192247
  /* } */ case 3:
191553
192248
  $s = -1; return;
191554
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, err$1, $s};return $f;
192249
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$7, err$1, $s};return $f;
191555
192250
  }; })(w));
191556
192251
  $s = -1; return $ifaceNil;
191557
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.openMetadata, $c: true, $r, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, conn, connect, err, metadataClient, w, $s};return $f;
192252
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.openMetadata, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, conn, connect, err, metadataClient, metadataSender, metadataServerErr, netStreamErr, w, $s};return $f;
191558
192253
  };
191559
192254
  ScreenWindow.prototype.openMetadata = function() { return this.$val.openMetadata(); };
192255
+ ScreenWindow.ptr.prototype.createMetadataResponsiveSender = function() {
192256
+ var w;
192257
+ w = this;
192258
+ return netclient.NewMetadataResponsiveSender(w.metadataServer, w.timeoutDuration);
192259
+ };
192260
+ ScreenWindow.prototype.createMetadataResponsiveSender = function() { return this.$val.createMetadataResponsiveSender(); };
192261
+ ScreenWindow.ptr.prototype.createMetadataSender = function() {
192262
+ var w;
192263
+ w = this;
192264
+ return netclient.NewMetadataMessageSender(w.metadataServer);
192265
+ };
192266
+ ScreenWindow.prototype.createMetadataSender = function() { return this.$val.createMetadataSender(); };
192267
+ ScreenWindow.ptr.prototype.createScreenSender = function() {
192268
+ var w;
192269
+ w = this;
192270
+ return netclient.NewMessageSender(w.screenConn);
192271
+ };
192272
+ ScreenWindow.prototype.createScreenSender = function() { return this.$val.createScreenSender(); };
191560
192273
  ScreenWindow.ptr.prototype.startTimestampSyncing = function() {
191561
192274
  var {_r, _r$1, _r$2, _tuple, err, latencyEnd, latencyNano, latencyStart, serverTimestamp, serverTimestampAhead, serverTimestampData, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {});
191562
192275
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191564,27 +192277,33 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191564
192277
  $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191565
192278
  /* while (true) { */ case 2:
191566
192279
  /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 3; continue; }
191567
- _r = time.Now(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192280
+ /* */ if (w.metadataServer === ptrType$3.nil) { $s = 4; continue; }
192281
+ /* */ $s = 5; continue;
192282
+ /* if (w.metadataServer === ptrType$3.nil) { */ case 4:
192283
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192284
+ /* continue; */ $s = 2; continue;
192285
+ /* } */ case 5:
192286
+ _r = time.Now(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191568
192287
  latencyStart = $clone(_r, time.Time);
191569
- _r$1 = w.metadataResponsiveSender.SendServerWaitResponse(46, new sliceType$2([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192288
+ _r$1 = w.createMetadataResponsiveSender().SendServerWaitResponse(46, new sliceType$2([])); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191570
192289
  _tuple = _r$1;
191571
192290
  serverTimestampData = _tuple[0];
191572
192291
  err = _tuple[1];
191573
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
191574
- /* */ $s = 7; continue;
191575
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
191576
- $r = errs.Print("Timestamp sync", err); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191577
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192292
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
192293
+ /* */ $s = 10; continue;
192294
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
192295
+ $r = errs.Print("Timestamp sync", err); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192296
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191578
192297
  /* continue; */ $s = 2; continue;
191579
- /* } */ case 7:
192298
+ /* } */ case 10:
191580
192299
  serverTimestamp = $clone(binary.BigEndian, binary.bigEndian).Uint64(serverTimestampData);
191581
- _r$2 = time.Now(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192300
+ _r$2 = time.Now(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191582
192301
  latencyEnd = $clone(_r$2, time.Time);
191583
192302
  latencyNano = $div64($clone(latencyEnd, time.Time).Sub($clone(latencyStart, time.Time)).Nanoseconds(), new $Int64(0, 2), false);
191584
192303
  serverTimestampAhead = (x = (x$1 = (new $Int64(serverTimestamp.$high, serverTimestamp.$low)), new $Int64(x$1.$high + latencyNano.$high, x$1.$low + latencyNano.$low)), x$2 = $clone(latencyEnd, time.Time).UnixNano(), new $Int64(x.$high - x$2.$high, x.$low - x$2.$low));
191585
192304
  w.stats.SetLatency(latencyNano);
191586
192305
  w.stats.SetServerTimestampAhead(serverTimestampAhead);
191587
- $r = time.Sleep(new time.Duration(6, 4230196224)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192306
+ $r = time.Sleep(new time.Duration(6, 4230196224)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191588
192307
  $s = 2; continue;
191589
192308
  case 3:
191590
192309
  $s = -1; return;
@@ -191592,60 +192311,87 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191592
192311
  };
191593
192312
  ScreenWindow.prototype.startTimestampSyncing = function() { return this.$val.startTimestampSyncing(); };
191594
192313
  ScreenWindow.ptr.prototype.startStatsSyncing = function() {
191595
- var {_r, _r$1, _tuple, _tuple$1, clientStats, data, err, w, $s, $r, $c} = $restore(this, {});
192314
+ var {_r, err, w, $s, $r, $c} = $restore(this, {});
191596
192315
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191597
192316
  w = this;
191598
192317
  $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191599
192318
  /* while (true) { */ case 2:
191600
192319
  /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 3; continue; }
191601
- clientStats = w.stats.GetClientStats();
191602
- _r = json.Marshal(clientStats); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191603
- _tuple = _r;
191604
- data = _tuple[0];
191605
- err = _tuple[1];
191606
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
191607
- /* */ $s = 6; continue;
191608
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
191609
- $r = errs.Print("Stats serialize", err); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191610
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192320
+ /* */ if (w.metadataServer === ptrType$3.nil) { $s = 4; continue; }
192321
+ /* */ $s = 5; continue;
192322
+ /* if (w.metadataServer === ptrType$3.nil) { */ case 4:
192323
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191611
192324
  /* continue; */ $s = 2; continue;
191612
- /* } */ case 6:
191613
- _r$1 = w.metadataResponsiveSender.SendServerWaitResponse(48, data); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191614
- _tuple$1 = _r$1;
191615
- err = _tuple$1[1];
191616
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
191617
- /* */ $s = 11; continue;
191618
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
191619
- $r = errs.Print("Stats sync", err); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191620
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192325
+ /* } */ case 5:
192326
+ _r = w.sendStats(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192327
+ err = _r;
192328
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
192329
+ /* */ $s = 9; continue;
192330
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
192331
+ $r = errs.Print("Stats sync", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192332
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191621
192333
  /* continue; */ $s = 2; continue;
191622
- /* } */ case 11:
191623
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192334
+ /* } */ case 9:
192335
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191624
192336
  $s = 2; continue;
191625
192337
  case 3:
191626
192338
  $s = -1; return;
191627
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startStatsSyncing, $c: true, $r, _r, _r$1, _tuple, _tuple$1, clientStats, data, err, w, $s};return $f;
192339
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startStatsSyncing, $c: true, $r, _r, err, w, $s};return $f;
191628
192340
  };
191629
192341
  ScreenWindow.prototype.startStatsSyncing = function() { return this.$val.startStatsSyncing(); };
192342
+ ScreenWindow.ptr.prototype.sendStats = function() {
192343
+ var {_r, _r$1, _tuple, _tuple$1, clientStats, data, err, w, $s, $r, $c} = $restore(this, {});
192344
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192345
+ w = this;
192346
+ clientStats = w.stats.GetClientStats();
192347
+ _r = json.Marshal(clientStats); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192348
+ _tuple = _r;
192349
+ data = _tuple[0];
192350
+ err = _tuple[1];
192351
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
192352
+ $s = -1; return err;
192353
+ }
192354
+ _r$1 = w.createMetadataResponsiveSender().SendServerWaitResponse(48, data); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192355
+ _tuple$1 = _r$1;
192356
+ err = _tuple$1[1];
192357
+ $s = -1; return err;
192358
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.sendStats, $c: true, $r, _r, _r$1, _tuple, _tuple$1, clientStats, data, err, w, $s};return $f;
192359
+ };
192360
+ ScreenWindow.prototype.sendStats = function() { return this.$val.sendStats(); };
192361
+ ScreenWindow.ptr.prototype.getHealthcheckTimeout = function() {
192362
+ var clampedTimeoutMs, frameDurationMs, framerate, timeoutMs, w;
192363
+ w = this;
192364
+ framerate = w.stats.GetFrameRate();
192365
+ if (framerate === 0) {
192366
+ return new time.Duration(2, 1410065408);
192367
+ }
192368
+ frameDurationMs = $div64(new $Int64(0, 1), (new $Int64(0, framerate)), false);
192369
+ timeoutMs = $mul64(frameDurationMs, new $Int64(0, 90));
192370
+ clampedTimeoutMs = helper.ClampedInt64(timeoutMs, new $Int64(0, 3000), new $Int64(0, 10000));
192371
+ return $mul64((new time.Duration(clampedTimeoutMs.$high, clampedTimeoutMs.$low)), new time.Duration(0, 1000000));
192372
+ };
192373
+ ScreenWindow.prototype.getHealthcheckTimeout = function() { return this.$val.getHealthcheckTimeout(); };
191630
192374
  ScreenWindow.ptr.prototype.openScreen = function() {
191631
- var {_r, _r$1, _r$2, _tuple, _tuple$1, conn, connect, err, lastFrameID, maxPacketSize, msgData, w, $s, $r, $c} = $restore(this, {});
192375
+ var {_r, _r$1, _r$2, _tuple, _tuple$1, conn, connect, err, lastFrameID, maxPacketSize, msgData, screenSender, w, $s, $r, $c} = $restore(this, {});
191632
192376
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192377
+ err = [err];
192378
+ screenSender = [screenSender];
191633
192379
  w = [w];
191634
192380
  w[0] = this;
191635
- err = $ifaceNil;
192381
+ err[0] = $ifaceNil;
191636
192382
  _r = netpacket.Create(w[0].screenDriver); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191637
192383
  _tuple = _r;
191638
192384
  connect = _tuple[0];
191639
- err = _tuple[1];
191640
- if (!($interfaceIsEqual(err, $ifaceNil))) {
191641
- $s = -1; return err;
192385
+ err[0] = _tuple[1];
192386
+ if (!($interfaceIsEqual(err[0], $ifaceNil))) {
192387
+ $s = -1; return err[0];
191642
192388
  }
191643
192389
  _r$1 = connect(w[0].screenHost, new time.Duration(0, 1000000000), w[0].secure); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191644
192390
  _tuple$1 = _r$1;
191645
192391
  conn = _tuple$1[0];
191646
- err = _tuple$1[1];
191647
- if (!($interfaceIsEqual(err, $ifaceNil))) {
191648
- $s = -1; return err;
192392
+ err[0] = _tuple$1[1];
192393
+ if (!($interfaceIsEqual(err[0], $ifaceNil))) {
192394
+ $s = -1; return err[0];
191649
192395
  }
191650
192396
  w[0].screenConn = conn;
191651
192397
  lastFrameID = 65535;
@@ -191654,62 +192400,62 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191654
192400
  }
191655
192401
  maxPacketSize = netpacket.GetMaxPacketSize(w[0].screenDriver);
191656
192402
  w[0].frameCollector = NewFrameCollector(conn, w[0].stats, lastFrameID, maxPacketSize);
191657
- w[0].screenSender = netclient.NewMessageSender(conn);
192403
+ screenSender[0] = w[0].createScreenSender();
191658
192404
  msgData = (new sliceType$2($stringToBytes(w[0].clientID + w[0].clientSecret + w[0].screenID)));
191659
- _r$2 = w[0].screenSender.Send(1, msgData); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191660
- err = _r$2;
191661
- if (!($interfaceIsEqual(err, $ifaceNil))) {
191662
- $s = -1; return err;
192405
+ _r$2 = screenSender[0].Send(1, msgData); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192406
+ err[0] = _r$2;
192407
+ if (!($interfaceIsEqual(err[0], $ifaceNil))) {
192408
+ $s = -1; return err[0];
191663
192409
  }
191664
- w[0].healthchecker = netclient.NewHealthchecker(w[0].screenSender);
192410
+ w[0].healthchecker = netclient.NewHealthchecker(screenSender[0]);
191665
192411
  w[0].healthchecker.Start();
191666
- $go((function(w) { return function $b() {
191667
- var {_r$3, _r$4, _r$5, _r$6, _r$7, err$1, originalHealthchecker, originalScreenConn, originalScreenSender, $s, $r, $c} = $restore(this, {});
192412
+ w[0].screenReconnecting = false;
192413
+ $go((function(err, screenSender, w) { return function $b() {
192414
+ var {_r$3, _r$4, _r$5, _r$6, _r$7, err$1, $s, $r, $c} = $restore(this, {});
191668
192415
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191669
192416
  /* while (true) { */ case 1:
191670
192417
  /* if (!(!w[0].closed)) { break; } */ if(!(!w[0].closed)) { $s = 2; continue; }
191671
192418
  $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191672
192419
  _r$3 = time.Now(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191673
- _r$4 = $clone($clone(w[0].stats.GetLastFrameAt(), time.Time).Add(new time.Duration(0, 1000000000)), time.Time).Before($clone(_r$3, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192420
+ _r$4 = $clone($clone(w[0].stats.GetLastFrameAt(), time.Time).Add(w[0].getHealthcheckTimeout()), time.Time).Before($clone(_r$3, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191674
192421
  /* */ if (_r$4) { $s = 4; continue; }
191675
192422
  /* */ $s = 5; continue;
191676
192423
  /* if (_r$4) { */ case 4:
191677
192424
  w[0].screenReconnecting = true;
191678
- originalHealthchecker = w[0].healthchecker;
191679
- originalScreenConn = w[0].screenConn;
191680
- originalScreenSender = w[0].screenSender;
191681
- _r$5 = w[0].retriableOpen(-1, $methodVal(w[0], "openScreen")); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
191682
- err$1 = _r$5;
191683
- /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; }
192425
+ if (!(w[0].healthchecker === ptrType$9.nil)) {
192426
+ w[0].healthchecker.Close();
192427
+ w[0].healthchecker = ptrType$9.nil;
192428
+ }
192429
+ _r$5 = screenSender[0].Send(3, new sliceType$2([])); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192430
+ err[0] = _r$5;
192431
+ /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 9; continue; }
191684
192432
  /* */ $s = 10; continue;
191685
- /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9:
191686
- $r = errs.Print("Reconnecting screen", err$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192433
+ /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 9:
192434
+ $r = errs.Print("Could not send disconnect msg to screen", err[0]); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191687
192435
  /* } */ case 10:
191688
- originalHealthchecker.Close();
191689
- _r$6 = originalScreenSender.Send(3, new sliceType$2([])); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191690
- err$1 = _r$6;
191691
- /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
192436
+ _r$6 = w[0].screenConn.Close(); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
192437
+ err[0] = _r$6;
192438
+ /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 13; continue; }
191692
192439
  /* */ $s = 14; continue;
191693
- /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
191694
- $r = errs.Print("Could not send disconnect msg to screen", err$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192440
+ /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 13:
192441
+ $r = errs.Print("Could not disconnect screen", err[0]); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191695
192442
  /* } */ case 14:
191696
- _r$7 = originalScreenConn.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
192443
+ _r$7 = w[0].retriableOpen(-1, $methodVal(w[0], "openScreen")); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
191697
192444
  err$1 = _r$7;
191698
192445
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 17; continue; }
191699
192446
  /* */ $s = 18; continue;
191700
192447
  /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 17:
191701
- $r = errs.Print("Could disconnect screen", err$1); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192448
+ $r = errs.Print("Reconnecting screen", err$1); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191702
192449
  /* } */ case 18:
191703
- w[0].screenReconnecting = false;
191704
192450
  /* break; */ $s = 2; continue;
191705
192451
  /* } */ case 5:
191706
192452
  $s = 1; continue;
191707
192453
  case 2:
191708
192454
  $s = -1; return;
191709
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$3, _r$4, _r$5, _r$6, _r$7, err$1, originalHealthchecker, originalScreenConn, originalScreenSender, $s};return $f;
191710
- }; })(w), []);
192455
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$3, _r$4, _r$5, _r$6, _r$7, err$1, $s};return $f;
192456
+ }; })(err, screenSender, w), []);
191711
192457
  $s = -1; return $ifaceNil;
191712
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.openScreen, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, conn, connect, err, lastFrameID, maxPacketSize, msgData, w, $s};return $f;
192458
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.openScreen, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, conn, connect, err, lastFrameID, maxPacketSize, msgData, screenSender, w, $s};return $f;
191713
192459
  };
191714
192460
  ScreenWindow.prototype.openScreen = function() { return this.$val.openScreen(); };
191715
192461
  ScreenWindow.ptr.prototype.startStream = function() {
@@ -191744,21 +192490,20 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191744
192490
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 4; continue; }
191745
192491
  /* */ $s = 5; continue;
191746
192492
  /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4:
191747
- /* */ if (!w[0].closed) { $s = 6; continue; }
191748
- /* */ $s = 7; continue;
191749
- /* if (!w[0].closed) { */ case 6:
191750
- $r = errs.Print("Frame error, skipping", err$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191751
- /* } */ case 7:
191752
- $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191753
- /* */ if (w[0].screenReconnecting) { $s = 10; continue; }
191754
- /* */ $s = 11; continue;
191755
- /* if (w[0].screenReconnecting) { */ case 10:
191756
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191757
- /* } */ case 11:
192493
+ $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192494
+ /* */ if (w[0].screenReconnecting) { $s = 7; continue; }
192495
+ /* */ if (!w[0].closed) { $s = 8; continue; }
192496
+ /* */ $s = 9; continue;
192497
+ /* if (w[0].screenReconnecting) { */ case 7:
192498
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192499
+ $s = 9; continue;
192500
+ /* } else if (!w[0].closed) { */ case 8:
192501
+ $r = errs.Print("Frame error, skipping", err$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192502
+ /* } */ case 9:
191758
192503
  /* continue; */ $s = 1; continue;
191759
192504
  /* } */ case 5:
191760
192505
  $go($methodVal(w[0], "renderFrame"), [frame]);
191761
- $r = w[0].stats.NotifyFrame(frame); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192506
+ $r = w[0].stats.NotifyFrame(frame); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191762
192507
  $s = 1; continue;
191763
192508
  case 2:
191764
192509
  $s = -1; return;
@@ -191794,14 +192539,18 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191794
192539
  MainDriver = function(f) {
191795
192540
  var {f, $s, $r, $c} = $restore(this, {f});
191796
192541
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191797
- /* */ if (webcodecs.IsAvailable()) { $s = 1; continue; }
191798
- /* */ $s = 2; continue;
191799
- /* if (webcodecs.IsAvailable()) { */ case 1:
191800
- $r = canvasdriver.Main(f); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191801
- $s = 3; continue;
191802
- /* } else { */ case 2:
191803
- $r = webgldriver.Main(f); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191804
- /* } */ case 3:
192542
+ /* */ if (nacldecoder.IsAvailable()) { $s = 1; continue; }
192543
+ /* */ if (webcodecs.IsAvailable()) { $s = 2; continue; }
192544
+ /* */ $s = 3; continue;
192545
+ /* if (nacldecoder.IsAvailable()) { */ case 1:
192546
+ $r = nacldriver.Main(f); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192547
+ $s = 4; continue;
192548
+ /* } else if (webcodecs.IsAvailable()) { */ case 2:
192549
+ $r = canvasdriver.Main(f); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192550
+ $s = 4; continue;
192551
+ /* } else { */ case 3:
192552
+ $r = webgldriver.Main(f); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192553
+ /* } */ case 4:
191805
192554
  $s = -1; return;
191806
192555
  /* */ } return; } var $f = {$blk: MainDriver, $c: true, $r, f, $s};return $f;
191807
192556
  };
@@ -191992,13 +192741,13 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191992
192741
  bufferLength = _tuple[0];
191993
192742
  err = _tuple[1];
191994
192743
  if (!($interfaceIsEqual(err, $ifaceNil))) {
191995
- $s = -1; return [ptrType$11.nil, err];
192744
+ $s = -1; return [ptrType$10.nil, err];
191996
192745
  }
191997
192746
  headerSize = 6;
191998
192747
  frameID = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 0, 2));
191999
192748
  seq = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 2, 4));
192000
192749
  total = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 4, 6));
192001
- _tuple$1 = (_entry = $mapIndex(c.framesMap,$Uint16.keyFor(frameID)), _entry !== undefined ? [_entry.v, true] : [ptrType$12.nil, false]);
192750
+ _tuple$1 = (_entry = $mapIndex(c.framesMap,$Uint16.keyFor(frameID)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]);
192002
192751
  frameMapItem = _tuple$1[0];
192003
192752
  frameExists = _tuple$1[1];
192004
192753
  /* */ if (!frameExists || (seq === 0) || !((total === frameMapItem.total))) { $s = 4; continue; }
@@ -192042,7 +192791,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192042
192791
  /* } */ case 8:
192043
192792
  $s = 1; continue;
192044
192793
  case 2:
192045
- $s = -1; return [ptrType$11.nil, $ifaceNil];
192794
+ $s = -1; return [ptrType$10.nil, $ifaceNil];
192046
192795
  /* */ } return; } var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, _entry, _key, _r, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, received, seq, total, $s};return $f;
192047
192796
  };
192048
192797
  FrameCollector.prototype.CollectFrame = function() { return this.$val.CollectFrame(); };
@@ -192052,13 +192801,13 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192052
192801
  return f.timestamp;
192053
192802
  };
192054
192803
  Frame.prototype.GetTimestmap = function() { return this.$val.GetTimestmap(); };
192055
- ptrType$5.methods = [{prop: "Render", name: "Render", pkg: "", typ: $funcType([ptrType$11], [], false)}];
192056
- ptrType$13.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "startStatsSyncing", name: "startStatsSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startStream", name: "startStream", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "renderFrame", name: "renderFrame", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([ptrType$11], [], false)}];
192804
+ ptrType$5.methods = [{prop: "Render", name: "Render", pkg: "", typ: $funcType([ptrType$10], [], false)}];
192805
+ ptrType$13.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createMetadataResponsiveSender", name: "createMetadataResponsiveSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [ptrType$12], false)}, {prop: "createMetadataSender", name: "createMetadataSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "createScreenSender", name: "createScreenSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "startStatsSyncing", name: "startStatsSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "sendStats", name: "sendStats", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "getHealthcheckTimeout", name: "getHealthcheckTimeout", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [time.Duration], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startStream", name: "startStream", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "renderFrame", name: "renderFrame", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([ptrType$10], [], false)}];
192057
192806
  ptrType$2.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$3, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
192058
- ptrType$4.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType$11, $error], false)}];
192059
- ptrType$11.methods = [{prop: "GetTimestmap", name: "GetTimestmap", pkg: "", typ: $funcType([], [$Uint64], false)}];
192807
+ ptrType$4.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType$10, $error], false)}];
192808
+ ptrType$10.methods = [{prop: "GetTimestmap", name: "GetTimestmap", pkg: "", typ: $funcType([], [$Uint64], false)}];
192060
192809
  X264FrameRenderer.init("github.com/supraio/client-daemon/pkg/render", [{prop: "screenBuffer", name: "screenBuffer", embedded: false, exported: false, typ: screen.Buffer, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "dec", name: "dec", embedded: false, exported: false, typ: ptrType$1, tag: ""}]);
192061
- ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "screenSize", name: "screenSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "renderMutex", name: "renderMutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "screenReconnecting", name: "screenReconnecting", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "x264Renderer", name: "x264Renderer", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "screenSender", name: "screenSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "metadataSender", name: "metadataSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "metadataResponsiveSender", name: "metadataResponsiveSender", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "healthchecker", name: "healthchecker", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$4, tag: ""}]);
192810
+ ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "screenSize", name: "screenSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "renderMutex", name: "renderMutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "screenReconnecting", name: "screenReconnecting", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "x264Renderer", name: "x264Renderer", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "healthchecker", name: "healthchecker", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$4, tag: ""}]);
192062
192811
  ProcessInfo.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}]);
192063
192812
  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: ""}]);
192064
192813
  FrameCollector.init("github.com/supraio/client-daemon/pkg/render", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesMap", name: "framesMap", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "lastFullFrameID", name: "lastFullFrameID", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "maxPacketSize", name: "maxPacketSize", embedded: false, exported: false, typ: $Int, tag: ""}]);
@@ -192073,33 +192822,36 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192073
192822
  $r = clientscreen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192074
192823
  $r = clipboard.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192075
192824
  $r = errs.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192076
- $r = input.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192077
- $r = message.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192078
- $r = netclient.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192079
- $r = netpacket.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192080
- $r = netstream.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192081
- $r = stats.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192082
- $r = window.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192083
- $r = x264.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192084
- $r = webcodecs.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192085
- $r = canvasdriver.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192086
- $r = webgldriver.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192087
- $r = screen.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192088
- $r = focus.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192089
- $r = key.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192090
- $r = lifecycle.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192091
- $r = mouse.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192092
- $r = size.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192093
- $r = image.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192094
- $r = io.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192095
- $r = ioutil.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192096
- $r = log.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192097
- $r = os.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192098
- $r = path.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192099
- $r = strings.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192100
- $r = sync.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192101
- $r = js.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192102
- $r = time.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192825
+ $r = helper.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192826
+ $r = input.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192827
+ $r = message.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192828
+ $r = netclient.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192829
+ $r = netpacket.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192830
+ $r = netstream.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192831
+ $r = stats.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192832
+ $r = window.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192833
+ $r = x264.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192834
+ $r = nacldecoder.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192835
+ $r = nacldriver.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192836
+ $r = webcodecs.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192837
+ $r = canvasdriver.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192838
+ $r = webgldriver.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192839
+ $r = screen.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192840
+ $r = focus.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192841
+ $r = key.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192842
+ $r = lifecycle.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192843
+ $r = mouse.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192844
+ $r = size.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192845
+ $r = image.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192846
+ $r = io.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192847
+ $r = ioutil.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192848
+ $r = log.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192849
+ $r = os.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192850
+ $r = path.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192851
+ $r = strings.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192852
+ $r = sync.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192853
+ $r = js.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192854
+ $r = time.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192103
192855
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
192104
192856
  };
192105
192857
  $pkg.$init = $init;