@supraio/client-daemon-js 1.0.0-tsfixstreamgeometrypanic.474 → 1.0.0-tsfixstreamgeometrypanic.476

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.
@@ -183521,7 +183521,7 @@ $packages["golang.org/x/mobile/event/touch"] = (function() {
183521
183521
  return $pkg;
183522
183522
  })();
183523
183523
  $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183524
- var $pkg = {}, $init, focus, key, mouse, size, touch, geom, math, strings, js, DomEvents, sliceType, funcType, arrayType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEvents, NewDomEventsForTarget, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
183524
+ var $pkg = {}, $init, focus, key, mouse, size, touch, geom, math, strings, js, DomEvents, sliceType, funcType, arrayType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEventsForTarget, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
183525
183525
  focus = $packages["golang.org/x/mobile/event/focus"];
183526
183526
  key = $packages["golang.org/x/mobile/event/key"];
183527
183527
  mouse = $packages["golang.org/x/mobile/event/mouse"];
@@ -183631,10 +183631,6 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183631
183631
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return orientation[0]; } if($curGoroutine.asleep) { var $f = {$blk: GetOrientation, $c: true, $r, $24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred};return $f; } }
183632
183632
  };
183633
183633
  $pkg.GetOrientation = GetOrientation;
183634
- NewDomEvents = function() {
183635
- return NewDomEventsForTarget($clone(js.Global(), js.Value));
183636
- };
183637
- $pkg.NewDomEvents = NewDomEvents;
183638
183634
  NewDomEventsForTarget = function(inputTarget) {
183639
183635
  var inputTarget;
183640
183636
  return new DomEvents.ptr(new $Chan($emptyInterface, 256), $clone(inputTarget, js.Value), $makeSlice(sliceType$1, 0));
@@ -183719,6 +183715,22 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183719
183715
  /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
183720
183716
  };
183721
183717
  DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
183718
+ DomEvents.ptr.prototype.inputPosition = function(ev) {
183719
+ var {_r, d, ev, getBoundingClientRect, rect, $s, $r, $c} = $restore(this, {ev});
183720
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183721
+ d = this;
183722
+ getBoundingClientRect = $clone($clone(d.inputTarget, js.Value).Get("getBoundingClientRect"), js.Value);
183723
+ /* */ if ($clone(getBoundingClientRect, js.Value).Type() === 7) { $s = 1; continue; }
183724
+ /* */ $s = 2; continue;
183725
+ /* if ($clone(getBoundingClientRect, js.Value).Type() === 7) { */ case 1:
183726
+ _r = $clone(d.inputTarget, js.Value).Call("getBoundingClientRect", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183727
+ rect = $clone(_r, js.Value);
183728
+ $s = -1; return [($fround($clone($clone(ev, js.Value).Get("clientX"), js.Value).Float() - $clone($clone(rect, js.Value).Get("left"), js.Value).Float())), ($fround($clone($clone(ev, js.Value).Get("clientY"), js.Value).Float() - $clone($clone(rect, js.Value).Get("top"), js.Value).Float()))];
183729
+ /* } */ case 2:
183730
+ $s = -1; return [($fround($clone($clone(ev, js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone(ev, js.Value).Get("offsetY"), js.Value).Float()))];
183731
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.inputPosition, $c: true, $r, _r, d, ev, getBoundingClientRect, rect, $s};return $f;
183732
+ };
183733
+ DomEvents.prototype.inputPosition = function(ev) { return this.$val.inputPosition(ev); };
183722
183734
  DomEvents.ptr.prototype.bindMouseEvents = function() {
183723
183735
  var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
183724
183736
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -183728,35 +183740,47 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183728
183740
  onWheel = [onWheel];
183729
183741
  d[0] = this;
183730
183742
  onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
183731
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
183743
+ var {_r, _r$1, _tuple, args, this$1, x, x$1, y, $s, $r, $c} = $restore(this, {this$1, args});
183732
183744
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183733
183745
  _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183734
183746
  _r;
183735
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183747
+ _r$1 = d[0].inputPosition($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183748
+ _tuple = _r$1;
183749
+ x = _tuple[0];
183750
+ y = _tuple[1];
183751
+ $r = $send(d[0].eventChan, (x$1 = new mouse.Event.ptr(x, y, 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x$1.constructor.elem(x$1))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183736
183752
  $s = -1; return $ifaceNil;
183737
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
183753
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, args, this$1, x, x$1, y, $s};return $f;
183738
183754
  }; })(d, onClick, onMove, onWheel)), js.Func);
183739
183755
  _r = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183740
183756
  _r;
183741
183757
  onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
183742
- var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
183758
+ var {_r$1, _r$2, _tuple, args, this$1, x, x$1, y, $s, $r, $c} = $restore(this, {this$1, args});
183743
183759
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183744
183760
  _r$1 = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183745
183761
  _r$1;
183746
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183762
+ _r$2 = d[0].inputPosition($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183763
+ _tuple = _r$2;
183764
+ x = _tuple[0];
183765
+ y = _tuple[1];
183766
+ $r = $send(d[0].eventChan, (x$1 = new mouse.Event.ptr(x, y, getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x$1.constructor.elem(x$1))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183747
183767
  $s = -1; return $ifaceNil;
183748
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
183768
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, _r$2, _tuple, args, this$1, x, x$1, y, $s};return $f;
183749
183769
  }; })(d, onClick, onMove, onWheel)), js.Func);
183750
183770
  _r$1 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183751
183771
  _r$1;
183752
183772
  _r$2 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183753
183773
  _r$2;
183754
183774
  onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
183755
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
183775
+ var {_r$3, _tuple, args, this$1, x, x$1, y, $s, $r, $c} = $restore(this, {this$1, args});
183756
183776
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183757
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183777
+ _r$3 = d[0].inputPosition($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183778
+ _tuple = _r$3;
183779
+ x = _tuple[0];
183780
+ y = _tuple[1];
183781
+ $r = $send(d[0].eventChan, (x$1 = new mouse.Event.ptr(x, y, getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183758
183782
  $s = -1; return $ifaceNil;
183759
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
183783
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$3, _tuple, args, this$1, x, x$1, y, $s};return $f;
183760
183784
  }; })(d, onClick, onMove, onWheel)), js.Func);
183761
183785
  _r$3 = $clone(d[0].inputTarget, js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183762
183786
  _r$3;
@@ -183966,7 +183990,7 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183966
183990
  opts = [opts];
183967
183991
  d[0] = this;
183968
183992
  handler[0] = $clone(js.FuncOf((function(d, eventName, eventType, handler, opts) { return function $b(this$1, args) {
183969
- var {_r, args, changedTouches, ev, t, this$1, $s, $r, $c} = $restore(this, {this$1, args});
183993
+ var {_r, _r$1, _tuple, args, changedTouches, ev, t, this$1, x, y, $s, $r, $c} = $restore(this, {this$1, args});
183970
183994
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183971
183995
  if (args.$length === 0) {
183972
183996
  $s = -1; return $ifaceNil;
@@ -183979,9 +184003,13 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
183979
184003
  $s = -1; return $ifaceNil;
183980
184004
  }
183981
184005
  t = $clone($clone(changedTouches, js.Value).Index(0), js.Value);
183982
- d[0].emitTouchEvent($clone(new touch.Event.ptr(($fround($clone($clone(t, js.Value).Get("clientX"), js.Value).Float())), ($fround($clone($clone(t, js.Value).Get("clientY"), js.Value).Float())), (new touch.Sequence(0, $clone($clone(t, js.Value).Get("identifier"), js.Value).Int())), eventType[0]), touch.Event));
184006
+ _r$1 = d[0].inputPosition($clone(t, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
184007
+ _tuple = _r$1;
184008
+ x = _tuple[0];
184009
+ y = _tuple[1];
184010
+ d[0].emitTouchEvent($clone(new touch.Event.ptr(x, y, (new touch.Sequence(0, $clone($clone(t, js.Value).Get("identifier"), js.Value).Int())), eventType[0]), touch.Event));
183983
184011
  $s = -1; return $ifaceNil;
183984
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, changedTouches, ev, t, this$1, $s};return $f;
184012
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, args, changedTouches, ev, t, this$1, x, y, $s};return $f;
183985
184013
  }; })(d, eventName, eventType, handler, opts)), js.Func);
183986
184014
  _r = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183987
184015
  opts[0] = $clone(_r, js.Value);
@@ -184033,7 +184061,7 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
184033
184061
  /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindTouchEvents, $c: true, $r, d, $s};return $f;
184034
184062
  };
184035
184063
  DomEvents.prototype.bindTouchEvents = function() { return this.$val.bindTouchEvents(); };
184036
- ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "addTouchListener", name: "addTouchListener", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([$String, touch.Type], [], false)}, {prop: "emitTouchEvent", name: "emitTouchEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([touch.Event], [], false)}, {prop: "bindTouchEvents", name: "bindTouchEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
184064
+ ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "inputPosition", name: "inputPosition", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([js.Value], [$Float32, $Float32], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "addTouchListener", name: "addTouchListener", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([$String, touch.Type], [], false)}, {prop: "emitTouchEvent", name: "emitTouchEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([touch.Event], [], false)}, {prop: "bindTouchEvents", name: "bindTouchEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
184037
184065
  DomEvents.init("golang.org/x/exp/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "inputTarget", name: "inputTarget", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
184038
184066
  $init = function() {
184039
184067
  $pkg.$init = function() {};
@@ -186192,7 +186220,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
186192
186220
  ptrType$8 = $ptrType(screen.NewWindowOptions);
186193
186221
  ptrType$9 = $ptrType(image.YCbCr);
186194
186222
  newWindow = function(screen$1, opts) {
186195
- var {_r, _r$1, domEvents, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
186223
+ var {_r, _r$1, _r$2, domEvents, inputTarget, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
186196
186224
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186197
186225
  /* */ if (!(opts.Title === "")) { $s = 1; continue; }
186198
186226
  /* */ $s = 2; continue;
@@ -186201,11 +186229,17 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
186201
186229
  _r$1 = $clone(_r, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186202
186230
  $r = $clone(_r$1, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186203
186231
  /* } */ case 2:
186204
- domEvents = dom.NewDomEvents();
186232
+ _r$2 = $clone(screen$1.doc, js.Value).Call("getElementById", new sliceType([new $String("nacl_module")])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
186233
+ inputTarget = $clone(_r$2, js.Value);
186234
+ if ($clone(inputTarget, js.Value).IsNull() || $clone(inputTarget, js.Value).IsUndefined()) {
186235
+ $panic(new $String("NaCl renderer input target not found"));
186236
+ }
186237
+ $clone($clone(inputTarget, js.Value).Get("style"), js.Value).Set("touchAction", new $String("none"));
186238
+ domEvents = dom.NewDomEventsForTarget($clone(inputTarget, js.Value));
186205
186239
  w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), domEvents, false, new $Chan(structType, 0));
186206
- $r = domEvents.BindEvents(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186240
+ $r = domEvents.BindEvents(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186207
186241
  $s = -1; return w;
186208
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, domEvents, opts, screen$1, w, $s};return $f;
186242
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, domEvents, inputTarget, opts, screen$1, w, $s};return $f;
186209
186243
  };
186210
186244
  windowImpl.ptr.prototype.Release = function() {
186211
186245
  var {w, $s, $r, $c} = $restore(this, {});
@@ -191407,7 +191441,7 @@ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
191407
191441
  return $pkg;
191408
191442
  })();
191409
191443
  $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191410
- var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, newWindow, newScreenImpl, main, newBuffer;
191444
+ var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, structType, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, chanType, ptrType$9, ptrType$10, newWindow, newScreenImpl, main, newBuffer;
191411
191445
  fmt = $packages["fmt"];
191412
191446
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
191413
191447
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
@@ -191418,7 +191452,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191418
191452
  draw = $packages["image/draw"];
191419
191453
  sync = $packages["sync"];
191420
191454
  js = $packages["syscall/js"];
191421
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_) {
191455
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_, frontEvents_, backEvents_, eventWake_) {
191422
191456
  this.$val = this;
191423
191457
  if (arguments.length === 0) {
191424
191458
  this.screen = ptrType$1.nil;
@@ -191428,6 +191462,9 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191428
191462
  this.released = false;
191429
191463
  this.domEvents = ptrType$3.nil;
191430
191464
  this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
191465
+ this.frontEvents = sliceType.nil;
191466
+ this.backEvents = sliceType.nil;
191467
+ this.eventWake = $chanNil;
191431
191468
  return;
191432
191469
  }
191433
191470
  this.screen = screen_;
@@ -191437,6 +191474,9 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191437
191474
  this.released = released_;
191438
191475
  this.domEvents = domEvents_;
191439
191476
  this.resizeCallback = resizeCallback_;
191477
+ this.frontEvents = frontEvents_;
191478
+ this.backEvents = backEvents_;
191479
+ this.eventWake = eventWake_;
191440
191480
  });
191441
191481
  screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
191442
191482
  this.$val = this;
@@ -191481,12 +191521,14 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191481
191521
  funcType = $funcType([], [], false);
191482
191522
  arrayType = $arrayType(funcType, 0);
191483
191523
  ptrType$3 = $ptrType(dom.DomEvents);
191524
+ structType = $structType("", []);
191484
191525
  ptrType$4 = $ptrType(BufferImpl);
191485
191526
  sliceType$1 = $sliceType($Uint8);
191486
191527
  ptrType$5 = $ptrType(YCbCrJS);
191487
191528
  ptrType$6 = $ptrType(js.Value);
191488
191529
  ptrType$7 = $ptrType(screen.DrawOptions);
191489
191530
  ptrType$8 = $ptrType(windowImpl);
191531
+ chanType = $chanType(structType, false, false);
191490
191532
  ptrType$9 = $ptrType(image.RGBA);
191491
191533
  ptrType$10 = $ptrType(image.YCbCr);
191492
191534
  newWindow = function(screen$1, opts) {
@@ -191564,7 +191606,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191564
191606
  $panic(_r$8);
191565
191607
  /* } */ case 24:
191566
191608
  domEvents = dom.NewDomEventsForTarget($clone(canvasEl[0], js.Value));
191567
- w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
191609
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func), sliceType.nil, sliceType.nil, new $Chan(structType, 1));
191568
191610
  $r = domEvents.BindEvents(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191569
191611
  $s = -1; return w;
191570
191612
  /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, adaptCanvas, canvasEl, ctx2d, domEvents, hasGeometry, opts, resizeCallback, screen$1, style, w, $s};return $f;
@@ -191601,33 +191643,126 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191601
191643
  };
191602
191644
  windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
191603
191645
  windowImpl.ptr.prototype.Send = function(event) {
191604
- var event, w;
191646
+ var {event, eventChan, w, $s, $r, $c} = $restore(this, {event});
191647
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191605
191648
  w = this;
191606
- if (w.released) {
191607
- return;
191608
- }
191609
- $panic(new $String("Not implemented"));
191649
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191650
+ /* */ if (w.released) { $s = 2; continue; }
191651
+ /* */ $s = 3; continue;
191652
+ /* if (w.released) { */ case 2:
191653
+ $r = w.mutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191654
+ $s = -1; return;
191655
+ /* } */ case 3:
191656
+ eventChan = w.domEvents.GetEventChan();
191657
+ $r = w.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191658
+ $r = $send(eventChan, event); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191659
+ $s = -1; return;
191660
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Send, $c: true, $r, event, eventChan, w, $s};return $f;
191610
191661
  };
191611
191662
  windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
191663
+ windowImpl.ptr.prototype.SendNonBlocking = function(event) {
191664
+ var {$24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
191665
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191666
+ w = this;
191667
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191668
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
191669
+ /* */ if (w.released) { $s = 2; continue; }
191670
+ /* */ $s = 3; continue;
191671
+ /* if (w.released) { */ case 2:
191672
+ $24r = false;
191673
+ $s = 4; case 4: return $24r;
191674
+ /* } */ case 3:
191675
+ _selection = $select([[w.domEvents.GetEventChan(), event], []]);
191676
+ /* */ if (_selection[0] === 0) { $s = 5; continue; }
191677
+ /* */ if (_selection[0] === 1) { $s = 6; continue; }
191678
+ /* */ $s = 7; continue;
191679
+ /* if (_selection[0] === 0) { */ case 5:
191680
+ $24r$1 = true;
191681
+ $s = 8; case 8: return $24r$1;
191682
+ /* } else if (_selection[0] === 1) { */ case 6:
191683
+ $24r$2 = false;
191684
+ $s = 9; case 9: return $24r$2;
191685
+ /* } */ case 7:
191686
+ $s = -1; return false;
191687
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendNonBlocking, $c: true, $r, $24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred};return $f; } }
191688
+ };
191689
+ windowImpl.prototype.SendNonBlocking = function(event) { return this.$val.SendNonBlocking(event); };
191612
191690
  windowImpl.ptr.prototype.SendFirst = function(event) {
191613
- var event, w;
191691
+ var {_selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
191692
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191614
191693
  w = this;
191615
- if (w.released) {
191616
- return;
191694
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191695
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
191696
+ /* */ if (w.released) { $s = 2; continue; }
191697
+ /* */ $s = 3; continue;
191698
+ /* if (w.released) { */ case 2:
191699
+ $s = 4; case 4: return;
191700
+ /* } */ case 3:
191701
+ w.frontEvents = $append(w.frontEvents, event);
191702
+ _selection = $select([[w.eventWake, $clone(new structType.ptr(), structType)], []]);
191703
+ if (_selection[0] === 0) {
191704
+ } else if (_selection[0] === 1) {
191617
191705
  }
191618
- $panic(new $String("Not implemented"));
191706
+ $s = -1; return;
191707
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendFirst, $c: true, $r, _selection, event, w, $s, $deferred};return $f; } }
191619
191708
  };
191620
191709
  windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
191621
191710
  windowImpl.ptr.prototype.NextEvent = function() {
191622
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
191711
+ var {_r, _selection, _tuple, event, event$1, ok, w, x, $s, $r, $c} = $restore(this, {});
191623
191712
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191624
191713
  w = this;
191625
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191626
- ev = _r[0];
191627
- $s = -1; return ev;
191628
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
191714
+ /* while (true) { */ case 1:
191715
+ $r = w.mutex.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191716
+ _tuple = w.nextQueuedEvent();
191717
+ event = _tuple[0];
191718
+ ok = _tuple[1];
191719
+ /* */ if (ok) { $s = 4; continue; }
191720
+ /* */ $s = 5; continue;
191721
+ /* if (ok) { */ case 4:
191722
+ $r = w.mutex.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191723
+ $s = -1; return event;
191724
+ /* } */ case 5:
191725
+ $r = w.mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191726
+ _r = $select([[w.domEvents.GetEventChan()], [w.eventWake]]); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191727
+ _selection = _r;
191728
+ /* */ if (_selection[0] === 0) { $s = 9; continue; }
191729
+ /* */ if (_selection[0] === 1) { $s = 10; continue; }
191730
+ /* */ $s = 11; continue;
191731
+ /* if (_selection[0] === 0) { */ case 9:
191732
+ event$1 = _selection[1][0];
191733
+ $r = w.mutex.Lock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191734
+ w.backEvents = $append(w.backEvents, $ifaceNil);
191735
+ $copySlice($subslice(w.backEvents, 1), $subslice(w.backEvents, 0, (w.backEvents.$length - 1 >> 0)));
191736
+ (x = w.backEvents, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = event$1));
191737
+ $r = w.mutex.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191738
+ $s = 11; continue;
191739
+ /* } else if (_selection[0] === 1) { */ case 10:
191740
+ /* } */ case 11:
191741
+ $s = 1; continue;
191742
+ case 2:
191743
+ $s = -1; return $ifaceNil;
191744
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, _selection, _tuple, event, event$1, ok, w, x, $s};return $f;
191629
191745
  };
191630
191746
  windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
191747
+ windowImpl.ptr.prototype.nextQueuedEvent = function() {
191748
+ var event, event$1, last, w, x, x$1, x$2, x$3;
191749
+ w = this;
191750
+ last = w.frontEvents.$length - 1 >> 0;
191751
+ if (last >= 0) {
191752
+ event = (x = w.frontEvents, ((last < 0 || last >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + last]));
191753
+ (x$1 = w.frontEvents, ((last < 0 || last >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + last] = $ifaceNil));
191754
+ w.frontEvents = $subslice(w.frontEvents, 0, last);
191755
+ return [event, true];
191756
+ }
191757
+ if (w.backEvents.$length > 0) {
191758
+ event$1 = (x$2 = w.backEvents, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]));
191759
+ (x$3 = w.backEvents, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = $ifaceNil));
191760
+ w.backEvents = $subslice(w.backEvents, 1);
191761
+ return [event$1, true];
191762
+ }
191763
+ return [$ifaceNil, false];
191764
+ };
191765
+ windowImpl.prototype.nextQueuedEvent = function() { return this.$val.nextQueuedEvent(); };
191631
191766
  windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
191632
191767
  var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
191633
191768
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191811,10 +191946,10 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191811
191946
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
191812
191947
  };
191813
191948
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
191814
- ptrType$8.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "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$7], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}];
191949
+ ptrType$8.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "nextQueuedEvent", name: "nextQueuedEvent", pkg: "golang.org/x/exp/shiny/driver/canvasdriver", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}];
191815
191950
  ptrType$1.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType], [screen.Window, $error], false)}];
191816
191951
  ptrType$4.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$5], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
191817
- windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}]);
191952
+ windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}, {prop: "frontEvents", name: "frontEvents", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "backEvents", name: "backEvents", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "eventWake", name: "eventWake", embedded: false, exported: false, typ: chanType, tag: ""}]);
191818
191953
  screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191819
191954
  YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$6, tag: ""}]);
191820
191955
  BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$5, tag: ""}]);
@@ -192033,7 +192168,7 @@ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
192033
192168
  return $pkg;
192034
192169
  })();
192035
192170
  $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192036
- var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$3, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, main, newScreenImpl, newBuffer;
192171
+ var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, structType, ptrType$8, sliceType$3, ptrType$9, ptrType$10, ptrType$11, chanType, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, main, newScreenImpl, newBuffer;
192037
192172
  fmt = $packages["fmt"];
192038
192173
  webgl = $packages["github.com/nuberu/webgl"];
192039
192174
  types = $packages["github.com/nuberu/webgl/types"];
@@ -192047,7 +192182,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192047
192182
  draw = $packages["image/draw"];
192048
192183
  sync = $packages["sync"];
192049
192184
  js = $packages["syscall/js"];
192050
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, width_, height_) {
192185
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, frontEvents_, backEvents_, eventWake_, width_, height_) {
192051
192186
  this.$val = this;
192052
192187
  if (arguments.length === 0) {
192053
192188
  this.screen = ptrType$1.nil;
@@ -192063,6 +192198,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192063
192198
  this.vertexArray = ptrType$6.nil;
192064
192199
  this.released = false;
192065
192200
  this.domEvents = ptrType$7.nil;
192201
+ this.frontEvents = sliceType$2.nil;
192202
+ this.backEvents = sliceType$2.nil;
192203
+ this.eventWake = $chanNil;
192066
192204
  this.width = 0;
192067
192205
  this.height = 0;
192068
192206
  return;
@@ -192080,6 +192218,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192080
192218
  this.vertexArray = vertexArray_;
192081
192219
  this.released = released_;
192082
192220
  this.domEvents = domEvents_;
192221
+ this.frontEvents = frontEvents_;
192222
+ this.backEvents = backEvents_;
192223
+ this.eventWake = eventWake_;
192083
192224
  this.width = width_;
192084
192225
  this.height = height_;
192085
192226
  });
@@ -192158,11 +192299,13 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192158
192299
  ptrType$5 = $ptrType(types.Texture);
192159
192300
  ptrType$6 = $ptrType(types.VertexArray);
192160
192301
  ptrType$7 = $ptrType(dom.DomEvents);
192302
+ structType = $structType("", []);
192161
192303
  ptrType$8 = $ptrType(BufferImpl);
192162
192304
  sliceType$3 = $sliceType($Uint8);
192163
192305
  ptrType$9 = $ptrType(YCbCrJS);
192164
192306
  ptrType$10 = $ptrType(screen.DrawOptions);
192165
192307
  ptrType$11 = $ptrType(windowImpl);
192308
+ chanType = $chanType(structType, false, false);
192166
192309
  ptrType$12 = $ptrType(ArrayBufferSlice);
192167
192310
  ptrType$13 = $ptrType(image.RGBA);
192168
192311
  ptrType$14 = $ptrType(image.YCbCr);
@@ -192199,7 +192342,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192199
192342
  $panic(err);
192200
192343
  }
192201
192344
  domEvents = dom.NewDomEventsForTarget($clone(canvasEl, js.Value));
192202
- w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl, js.Value), gl, ptrType$4.nil, ptrType$5.nil, ptrType$4.nil, ptrType$5.nil, ptrType$5.nil, ptrType$5.nil, ptrType$6.nil, false, domEvents, 0, 0);
192345
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl, js.Value), gl, ptrType$4.nil, ptrType$5.nil, ptrType$4.nil, ptrType$5.nil, ptrType$5.nil, ptrType$5.nil, ptrType$6.nil, false, domEvents, sliceType$2.nil, sliceType$2.nil, new $Chan(structType, 1), 0, 0);
192203
192346
  /* */ if (!((opts.Width === 0))) { $s = 14; continue; }
192204
192347
  /* */ $s = 15; continue;
192205
192348
  /* if (!((opts.Width === 0))) { */ case 14:
@@ -192273,33 +192416,126 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192273
192416
  };
192274
192417
  windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
192275
192418
  windowImpl.ptr.prototype.Send = function(event) {
192276
- var event, w;
192419
+ var {event, eventChan, w, $s, $r, $c} = $restore(this, {event});
192420
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192277
192421
  w = this;
192278
- if (w.released) {
192279
- return;
192280
- }
192281
- $panic(new $String("Not implemented"));
192422
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192423
+ /* */ if (w.released) { $s = 2; continue; }
192424
+ /* */ $s = 3; continue;
192425
+ /* if (w.released) { */ case 2:
192426
+ $r = w.mutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192427
+ $s = -1; return;
192428
+ /* } */ case 3:
192429
+ eventChan = w.domEvents.GetEventChan();
192430
+ $r = w.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192431
+ $r = $send(eventChan, event); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192432
+ $s = -1; return;
192433
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Send, $c: true, $r, event, eventChan, w, $s};return $f;
192282
192434
  };
192283
192435
  windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
192436
+ windowImpl.ptr.prototype.SendNonBlocking = function(event) {
192437
+ var {$24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
192438
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192439
+ w = this;
192440
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192441
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
192442
+ /* */ if (w.released) { $s = 2; continue; }
192443
+ /* */ $s = 3; continue;
192444
+ /* if (w.released) { */ case 2:
192445
+ $24r = false;
192446
+ $s = 4; case 4: return $24r;
192447
+ /* } */ case 3:
192448
+ _selection = $select([[w.domEvents.GetEventChan(), event], []]);
192449
+ /* */ if (_selection[0] === 0) { $s = 5; continue; }
192450
+ /* */ if (_selection[0] === 1) { $s = 6; continue; }
192451
+ /* */ $s = 7; continue;
192452
+ /* if (_selection[0] === 0) { */ case 5:
192453
+ $24r$1 = true;
192454
+ $s = 8; case 8: return $24r$1;
192455
+ /* } else if (_selection[0] === 1) { */ case 6:
192456
+ $24r$2 = false;
192457
+ $s = 9; case 9: return $24r$2;
192458
+ /* } */ case 7:
192459
+ $s = -1; return false;
192460
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendNonBlocking, $c: true, $r, $24r, $24r$1, $24r$2, _selection, event, w, $s, $deferred};return $f; } }
192461
+ };
192462
+ windowImpl.prototype.SendNonBlocking = function(event) { return this.$val.SendNonBlocking(event); };
192284
192463
  windowImpl.ptr.prototype.SendFirst = function(event) {
192285
- var event, w;
192464
+ var {_selection, event, w, $s, $deferred, $r, $c} = $restore(this, {event});
192465
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192286
192466
  w = this;
192287
- if (w.released) {
192288
- return;
192467
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192468
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
192469
+ /* */ if (w.released) { $s = 2; continue; }
192470
+ /* */ $s = 3; continue;
192471
+ /* if (w.released) { */ case 2:
192472
+ $s = 4; case 4: return;
192473
+ /* } */ case 3:
192474
+ w.frontEvents = $append(w.frontEvents, event);
192475
+ _selection = $select([[w.eventWake, $clone(new structType.ptr(), structType)], []]);
192476
+ if (_selection[0] === 0) {
192477
+ } else if (_selection[0] === 1) {
192289
192478
  }
192290
- $panic(new $String("Not implemented"));
192479
+ $s = -1; return;
192480
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.SendFirst, $c: true, $r, _selection, event, w, $s, $deferred};return $f; } }
192291
192481
  };
192292
192482
  windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
192293
192483
  windowImpl.ptr.prototype.NextEvent = function() {
192294
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
192484
+ var {_r, _selection, _tuple, event, event$1, ok, w, x, $s, $r, $c} = $restore(this, {});
192295
192485
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192296
192486
  w = this;
192297
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192298
- ev = _r[0];
192299
- $s = -1; return ev;
192300
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
192487
+ /* while (true) { */ case 1:
192488
+ $r = w.mutex.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192489
+ _tuple = w.nextQueuedEvent();
192490
+ event = _tuple[0];
192491
+ ok = _tuple[1];
192492
+ /* */ if (ok) { $s = 4; continue; }
192493
+ /* */ $s = 5; continue;
192494
+ /* if (ok) { */ case 4:
192495
+ $r = w.mutex.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192496
+ $s = -1; return event;
192497
+ /* } */ case 5:
192498
+ $r = w.mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192499
+ _r = $select([[w.domEvents.GetEventChan()], [w.eventWake]]); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192500
+ _selection = _r;
192501
+ /* */ if (_selection[0] === 0) { $s = 9; continue; }
192502
+ /* */ if (_selection[0] === 1) { $s = 10; continue; }
192503
+ /* */ $s = 11; continue;
192504
+ /* if (_selection[0] === 0) { */ case 9:
192505
+ event$1 = _selection[1][0];
192506
+ $r = w.mutex.Lock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192507
+ w.backEvents = $append(w.backEvents, $ifaceNil);
192508
+ $copySlice($subslice(w.backEvents, 1), $subslice(w.backEvents, 0, (w.backEvents.$length - 1 >> 0)));
192509
+ (x = w.backEvents, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = event$1));
192510
+ $r = w.mutex.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192511
+ $s = 11; continue;
192512
+ /* } else if (_selection[0] === 1) { */ case 10:
192513
+ /* } */ case 11:
192514
+ $s = 1; continue;
192515
+ case 2:
192516
+ $s = -1; return $ifaceNil;
192517
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, _selection, _tuple, event, event$1, ok, w, x, $s};return $f;
192301
192518
  };
192302
192519
  windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
192520
+ windowImpl.ptr.prototype.nextQueuedEvent = function() {
192521
+ var event, event$1, last, w, x, x$1, x$2, x$3;
192522
+ w = this;
192523
+ last = w.frontEvents.$length - 1 >> 0;
192524
+ if (last >= 0) {
192525
+ event = (x = w.frontEvents, ((last < 0 || last >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + last]));
192526
+ (x$1 = w.frontEvents, ((last < 0 || last >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + last] = $ifaceNil));
192527
+ w.frontEvents = $subslice(w.frontEvents, 0, last);
192528
+ return [event, true];
192529
+ }
192530
+ if (w.backEvents.$length > 0) {
192531
+ event$1 = (x$2 = w.backEvents, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]));
192532
+ (x$3 = w.backEvents, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = $ifaceNil));
192533
+ w.backEvents = $subslice(w.backEvents, 1);
192534
+ return [event$1, true];
192535
+ }
192536
+ return [$ifaceNil, false];
192537
+ };
192538
+ windowImpl.prototype.nextQueuedEvent = function() { return this.$val.nextQueuedEvent(); };
192303
192539
  windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
192304
192540
  var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
192305
192541
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -192825,11 +193061,11 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192825
193061
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
192826
193062
  };
192827
193063
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
192828
- ptrType$11.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "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$10], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$6], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$5], false)}];
193064
+ ptrType$11.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "nextQueuedEvent", name: "nextQueuedEvent", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$6], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$5], false)}];
192829
193065
  ptrType$1.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType], [screen.Window, $error], false)}];
192830
193066
  ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
192831
193067
  ptrType$8.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
192832
- windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
193068
+ windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "frontEvents", name: "frontEvents", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "backEvents", name: "backEvents", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "eventWake", name: "eventWake", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
192833
193069
  screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
192834
193070
  ArrayBufferSlice.init("", [{prop: "ArrayBuffer", name: "ArrayBuffer", embedded: false, exported: true, typ: js.Value, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Length", name: "Length", embedded: false, exported: true, typ: $Int, tag: ""}]);
192835
193071
  YCbCrJS.init("", [{prop: "Y", name: "Y", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cb", name: "Cb", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cr", name: "Cr", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "YStride", name: "YStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CStride", name: "CStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SubsampleRatio", name: "SubsampleRatio", embedded: false, exported: true, typ: image.YCbCrSubsampleRatio, tag: ""}, {prop: "Rect", name: "Rect", embedded: false, exported: true, typ: image.Rectangle, tag: ""}, {prop: "Use", name: "Use", embedded: false, exported: true, typ: $Bool, tag: ""}]);
@@ -193289,7 +193525,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
193289
193525
  return $pkg;
193290
193526
  })();
193291
193527
  $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (function() {
193292
- var $pkg = {}, $init, errs, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, newWindow, newScreenImpl, main, newBuffer;
193528
+ var $pkg = {}, $init, fmt, errs, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, newWindow, overlayDimension, newScreenImpl, main, newBuffer;
193529
+ fmt = $packages["fmt"];
193293
193530
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
193294
193531
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
193295
193532
  screen = $packages["golang.org/x/exp/shiny/screen"];
@@ -193299,13 +193536,15 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193299
193536
  draw = $packages["image/draw"];
193300
193537
  sync = $packages["sync"];
193301
193538
  js = $packages["syscall/js"];
193302
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "overlaydriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, released_) {
193539
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "overlaydriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, inputTarget_, ownsInputTarget_, released_) {
193303
193540
  this.$val = this;
193304
193541
  if (arguments.length === 0) {
193305
193542
  this.screen = ptrType.nil;
193306
193543
  this.mutex = ptrType$1.nil;
193307
193544
  this.renderingInProgress = false;
193308
193545
  this.domEvents = ptrType$2.nil;
193546
+ this.inputTarget = new js.Value.ptr(null, false, arrayType.zero());
193547
+ this.ownsInputTarget = false;
193309
193548
  this.released = false;
193310
193549
  return;
193311
193550
  }
@@ -193313,15 +193552,19 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193313
193552
  this.mutex = mutex_;
193314
193553
  this.renderingInProgress = renderingInProgress_;
193315
193554
  this.domEvents = domEvents_;
193555
+ this.inputTarget = inputTarget_;
193556
+ this.ownsInputTarget = ownsInputTarget_;
193316
193557
  this.released = released_;
193317
193558
  });
193318
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "overlaydriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(doc_) {
193559
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "overlaydriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(doc_, inputTarget_) {
193319
193560
  this.$val = this;
193320
193561
  if (arguments.length === 0) {
193321
193562
  this.doc = new js.Value.ptr(null, false, arrayType.zero());
193563
+ this.inputTarget = new js.Value.ptr(null, false, arrayType.zero());
193322
193564
  return;
193323
193565
  }
193324
193566
  this.doc = doc_;
193567
+ this.inputTarget = inputTarget_;
193325
193568
  });
193326
193569
  BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "overlaydriver.BufferImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", true, function(screen_, size_) {
193327
193570
  this.$val = this;
@@ -193347,7 +193590,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193347
193590
  ptrType$7 = $ptrType(image.YCbCr);
193348
193591
  ptrType$8 = $ptrType(BufferImpl);
193349
193592
  newWindow = function(screen$1, opts) {
193350
- var {_r, _r$1, domEvents, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
193593
+ var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, domEvents, inputTarget, opts, ownsInputTarget, screen$1, style, w, $s, $r, $c} = $restore(this, {screen$1, opts});
193351
193594
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193352
193595
  /* */ if (!(opts.Title === "")) { $s = 1; continue; }
193353
193596
  /* */ $s = 2; continue;
@@ -193356,14 +193599,52 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193356
193599
  _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; }
193357
193600
  $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; }
193358
193601
  /* } */ case 2:
193359
- domEvents = dom.NewDomEvents();
193360
- w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), false, domEvents, false);
193361
- $r = domEvents.BindEvents(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193602
+ inputTarget = $clone(screen$1.inputTarget, js.Value);
193603
+ ownsInputTarget = false;
193604
+ /* */ if ($clone(inputTarget, js.Value).IsNull() || $clone(inputTarget, js.Value).IsUndefined()) { $s = 6; continue; }
193605
+ /* */ $s = 7; continue;
193606
+ /* if ($clone(inputTarget, js.Value).IsNull() || $clone(inputTarget, js.Value).IsUndefined()) { */ case 6:
193607
+ _r$2 = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType([new $String("div")])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193608
+ js.Value.copy(inputTarget, _r$2);
193609
+ style = $clone($clone(inputTarget, js.Value).Get("style"), js.Value);
193610
+ $clone(style, js.Value).Set("position", new $String("fixed"));
193611
+ _r$3 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.X)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193612
+ _arg = new $String(_r$3);
193613
+ $r = $clone(style, js.Value).Set("left", _arg); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193614
+ _r$4 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.Y)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193615
+ _arg$1 = new $String(_r$4);
193616
+ $r = $clone(style, js.Value).Set("top", _arg$1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193617
+ _r$5 = overlayDimension(opts.Width, $clone($clone($clone(screen$1.doc, js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193618
+ _arg$2 = new $String(_r$5);
193619
+ $r = $clone(style, js.Value).Set("width", _arg$2); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193620
+ _r$6 = overlayDimension(opts.Height, $clone($clone($clone(screen$1.doc, js.Value).Get("documentElement"), js.Value).Get("clientHeight"), js.Value)); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
193621
+ _arg$3 = new $String(_r$6);
193622
+ $r = $clone(style, js.Value).Set("height", _arg$3); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193623
+ $clone(style, js.Value).Set("zIndex", new $String("2147483647"));
193624
+ _r$7 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType([new inputTarget.constructor.elem(inputTarget)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
193625
+ _r$7;
193626
+ ownsInputTarget = true;
193627
+ /* } */ case 7:
193628
+ $clone($clone(inputTarget, js.Value).Get("style"), js.Value).Set("touchAction", new $String("none"));
193629
+ domEvents = dom.NewDomEventsForTarget($clone(inputTarget, js.Value));
193630
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), false, domEvents, $clone(inputTarget, js.Value), ownsInputTarget, false);
193631
+ $r = domEvents.BindEvents(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193362
193632
  $s = -1; return w;
193363
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, domEvents, opts, screen$1, w, $s};return $f;
193633
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, domEvents, inputTarget, opts, ownsInputTarget, screen$1, style, w, $s};return $f;
193634
+ };
193635
+ overlayDimension = function(size, fallback) {
193636
+ var {$24r, _r, fallback, size, $s, $r, $c} = $restore(this, {size, fallback});
193637
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193638
+ if (size <= 0) {
193639
+ size = $clone(fallback, js.Value).Int();
193640
+ }
193641
+ _r = fmt.Sprintf("%dpx", new sliceType([new $Int(size)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193642
+ $24r = _r;
193643
+ $s = 2; case 2: return $24r;
193644
+ /* */ } return; } var $f = {$blk: overlayDimension, $c: true, $r, $24r, _r, fallback, size, $s};return $f;
193364
193645
  };
193365
193646
  windowImpl.ptr.prototype.Release = function() {
193366
- var {w, $s, $deferred, $r, $c} = $restore(this, {});
193647
+ var {_r, parent, w, x, $s, $deferred, $r, $c} = $restore(this, {});
193367
193648
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
193368
193649
  w = this;
193369
193650
  $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -193374,9 +193655,20 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193374
193655
  $s = 4; case 4: return;
193375
193656
  /* } */ case 3:
193376
193657
  $r = w.domEvents.Release(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193658
+ /* */ if (w.ownsInputTarget) { $s = 6; continue; }
193659
+ /* */ $s = 7; continue;
193660
+ /* if (w.ownsInputTarget) { */ case 6:
193661
+ parent = $clone($clone(w.inputTarget, js.Value).Get("parentNode"), js.Value);
193662
+ /* */ if (!$clone(parent, js.Value).IsNull() && !$clone(parent, js.Value).IsUndefined()) { $s = 8; continue; }
193663
+ /* */ $s = 9; continue;
193664
+ /* if (!$clone(parent, js.Value).IsNull() && !$clone(parent, js.Value).IsUndefined()) { */ case 8:
193665
+ _r = $clone(parent, js.Value).Call("removeChild", new sliceType([(x = w.inputTarget, new x.constructor.elem(x))])); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193666
+ _r;
193667
+ /* } */ case 9:
193668
+ /* } */ case 7:
193377
193669
  w.released = true;
193378
193670
  $s = -1; return;
193379
- /* */ } 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; } }
193671
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, _r, parent, w, x, $s, $deferred};return $f; } }
193380
193672
  };
193381
193673
  windowImpl.prototype.Release = function() { return this.$val.Release(); };
193382
193674
  windowImpl.ptr.prototype.Publish = function() {
@@ -193516,9 +193808,9 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193516
193808
  $panic(new $String("Not implemented"));
193517
193809
  };
193518
193810
  windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
193519
- newScreenImpl = function() {
193520
- var s;
193521
- s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
193811
+ newScreenImpl = function(inputTarget) {
193812
+ var inputTarget, s;
193813
+ s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value), $clone(inputTarget, js.Value));
193522
193814
  return [s, $ifaceNil];
193523
193815
  };
193524
193816
  screenImpl.ptr.prototype.NewBuffer = function(size) {
@@ -193548,11 +193840,11 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193548
193840
  /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
193549
193841
  };
193550
193842
  screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
193551
- main = function(f) {
193552
- var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
193843
+ main = function(f, inputTarget) {
193844
+ var {_tuple, err, f, inputTarget, retErr, s, $s, $r, $c} = $restore(this, {f, inputTarget});
193553
193845
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193554
193846
  retErr = $ifaceNil;
193555
- _tuple = newScreenImpl();
193847
+ _tuple = newScreenImpl($clone(inputTarget, js.Value));
193556
193848
  s = _tuple[0];
193557
193849
  err = _tuple[1];
193558
193850
  if (!($interfaceIsEqual(err, $ifaceNil))) {
@@ -193562,7 +193854,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193562
193854
  $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193563
193855
  retErr = $ifaceNil;
193564
193856
  $s = -1; return retErr;
193565
- /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
193857
+ /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, inputTarget, retErr, s, $s};return $f;
193566
193858
  };
193567
193859
  newBuffer = function(screen$1, size) {
193568
193860
  var b, screen$1, size;
@@ -193605,21 +193897,22 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193605
193897
  ptrType$5.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$4], [], false)}];
193606
193898
  ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$6], [screen.Window, $error], false)}];
193607
193899
  ptrType$8.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
193608
- windowImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
193609
- screenImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
193900
+ windowImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "inputTarget", name: "inputTarget", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ownsInputTarget", name: "ownsInputTarget", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
193901
+ screenImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "inputTarget", name: "inputTarget", embedded: false, exported: false, typ: js.Value, tag: ""}]);
193610
193902
  BufferImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}]);
193611
193903
  $init = function() {
193612
193904
  $pkg.$init = function() {};
193613
193905
  /* */ 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:
193614
- $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193615
- $r = dom.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193616
- $r = screen.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193617
- $r = f64.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193618
- $r = image.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193619
- $r = color.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193620
- $r = draw.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193621
- $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193622
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193906
+ $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193907
+ $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193908
+ $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193909
+ $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193910
+ $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193911
+ $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193912
+ $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193913
+ $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193914
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193915
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193623
193916
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
193624
193917
  };
193625
193918
  $pkg.$init = $init;