opal-browser 0.3.3 → 0.3.5

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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +28 -17
  3. data/.github/workflows/pages.yml +21 -0
  4. data/.gitignore +1 -0
  5. data/CHANGELOG.md +10 -0
  6. data/Gemfile +15 -5
  7. data/Rakefile +32 -9
  8. data/bin/rake +7 -0
  9. data/bin/setup +8 -0
  10. data/config.ru +19 -12
  11. data/opal/browser/animation_frame.rb +1 -0
  12. data/opal/browser/audio/node.rb +1 -0
  13. data/opal/browser/audio/param_schedule.rb +1 -0
  14. data/opal/browser/audio.rb +2 -1
  15. data/opal/browser/blob.rb +1 -0
  16. data/opal/browser/canvas/data.rb +1 -0
  17. data/opal/browser/canvas/gradient.rb +1 -0
  18. data/opal/browser/canvas/style.rb +1 -0
  19. data/opal/browser/canvas/text.rb +1 -0
  20. data/opal/browser/canvas.rb +1 -0
  21. data/opal/browser/console.rb +1 -0
  22. data/opal/browser/cookies.rb +1 -0
  23. data/opal/browser/crypto.rb +1 -0
  24. data/opal/browser/css/declaration.rb +1 -0
  25. data/opal/browser/css/rule/style.rb +1 -0
  26. data/opal/browser/css/rule.rb +1 -0
  27. data/opal/browser/css/style_sheet.rb +1 -0
  28. data/opal/browser/database/sql.rb +1 -0
  29. data/opal/browser/delay.rb +1 -0
  30. data/opal/browser/dom/builder.rb +1 -0
  31. data/opal/browser/dom/character_data.rb +1 -0
  32. data/opal/browser/dom/document.rb +1 -0
  33. data/opal/browser/dom/document_fragment.rb +1 -0
  34. data/opal/browser/dom/document_or_shadow_root.rb +1 -0
  35. data/opal/browser/dom/element/attributes.rb +2 -0
  36. data/opal/browser/dom/element/button.rb +2 -0
  37. data/opal/browser/dom/element/custom.rb +2 -1
  38. data/opal/browser/dom/element/data.rb +2 -0
  39. data/opal/browser/dom/element/editable.rb +2 -0
  40. data/opal/browser/dom/element/form.rb +25 -1
  41. data/opal/browser/dom/element/iframe.rb +2 -0
  42. data/opal/browser/dom/element/image.rb +6 -15
  43. data/opal/browser/dom/element/input.rb +7 -19
  44. data/opal/browser/dom/element/media.rb +5 -3
  45. data/opal/browser/dom/element/offset.rb +2 -0
  46. data/opal/browser/dom/element/scroll.rb +2 -0
  47. data/opal/browser/dom/element/select.rb +4 -7
  48. data/opal/browser/dom/element/size.rb +6 -12
  49. data/opal/browser/dom/element/template.rb +2 -0
  50. data/opal/browser/dom/element/textarea.rb +3 -3
  51. data/opal/browser/dom/element.rb +4 -0
  52. data/opal/browser/dom/mutation_observer.rb +1 -0
  53. data/opal/browser/dom/node.rb +1 -0
  54. data/opal/browser/dom/node_set.rb +1 -0
  55. data/opal/browser/dom/text.rb +1 -0
  56. data/opal/browser/dom.rb +1 -0
  57. data/opal/browser/effects.rb +1 -0
  58. data/opal/browser/event/animation.rb +5 -7
  59. data/opal/browser/event/audio_processing.rb +5 -11
  60. data/opal/browser/event/base.rb +4 -6
  61. data/opal/browser/event/before_unload.rb +2 -0
  62. data/opal/browser/event/clipboard.rb +4 -7
  63. data/opal/browser/event/close.rb +4 -7
  64. data/opal/browser/event/composition.rb +4 -7
  65. data/opal/browser/event/custom.rb +5 -3
  66. data/opal/browser/event/data_transfer.rb +3 -1
  67. data/opal/browser/event/device_light.rb +3 -3
  68. data/opal/browser/event/device_motion.rb +6 -15
  69. data/opal/browser/event/device_orientation.rb +6 -15
  70. data/opal/browser/event/device_proximity.rb +5 -11
  71. data/opal/browser/event/drag.rb +6 -14
  72. data/opal/browser/event/focus.rb +4 -7
  73. data/opal/browser/event/gamepad.rb +3 -1
  74. data/opal/browser/event/hash_change.rb +4 -7
  75. data/opal/browser/event/keyboard.rb +2 -0
  76. data/opal/browser/event/message.rb +5 -11
  77. data/opal/browser/event/mouse.rb +20 -65
  78. data/opal/browser/event/page_transition.rb +3 -3
  79. data/opal/browser/event/pop_state.rb +3 -1
  80. data/opal/browser/event/progress.rb +5 -11
  81. data/opal/browser/event/sensor.rb +2 -0
  82. data/opal/browser/event/storage.rb +7 -19
  83. data/opal/browser/event/touch.rb +2 -0
  84. data/opal/browser/event/ui.rb +4 -7
  85. data/opal/browser/event/wheel.rb +5 -11
  86. data/opal/browser/event.rb +1 -0
  87. data/opal/browser/event_source.rb +1 -0
  88. data/opal/browser/form_data.rb +1 -0
  89. data/opal/browser/history.rb +1 -0
  90. data/opal/browser/http/binary.rb +1 -0
  91. data/opal/browser/http/request.rb +1 -0
  92. data/opal/browser/http/response.rb +1 -0
  93. data/opal/browser/immediate.rb +1 -0
  94. data/opal/browser/interval.rb +1 -0
  95. data/opal/browser/location.rb +1 -0
  96. data/opal/browser/navigator.rb +1 -0
  97. data/opal/browser/polyfill/visual_viewport.rb +1 -0
  98. data/opal/browser/screen.rb +1 -0
  99. data/opal/browser/socket.rb +1 -0
  100. data/opal/browser/storage.rb +1 -0
  101. data/opal/browser/support.rb +22 -33
  102. data/opal/browser/utils.rb +1 -0
  103. data/opal/browser/version.rb +1 -1
  104. data/opal/browser/visual_viewport.rb +1 -0
  105. data/opal/browser/window/size.rb +1 -0
  106. data/opal/browser/window/view.rb +1 -0
  107. data/opal/browser/window.rb +1 -0
  108. data/opal-browser.gemspec +23 -18
  109. data/spec/browser_runner.rb.erb +14 -0
  110. data/spec/browser_runner_compat.rb +29 -0
  111. data/{index.html.erb → spec/browser_runner_index.html.erb} +1 -5
  112. data/spec/database/sql_spec.rb +1 -1
  113. data/spec/event_spec.rb +43 -0
  114. data/spec/immediate_spec.rb +1 -1
  115. data/spec/runner.rb +3 -3
  116. data/spec/spec_helper_promise.rb.erb +13 -5
  117. metadata +206 -34
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; module DOM; class Element < Node
2
4
 
3
5
  class Select < Element
@@ -14,9 +16,7 @@ class Select < Element
14
16
  }
15
17
  end
16
18
 
17
- def value= value
18
- `#@native.value = #{value.to_n}`
19
- end
19
+ alias_native :value=
20
20
 
21
21
  def labels
22
22
  NodeSet[Native::Array.new(`#@native.labels`)]
@@ -30,10 +30,7 @@ class Select < Element
30
30
  DOM(`#@native.options[#@native.selectedIndex]`)
31
31
  end
32
32
 
33
- def index
34
- `#@native.selectedIndex`
35
- end
36
-
33
+ alias_native :index, :selectedIndex
37
34
  alias_native :multiple?, :multiple
38
35
  alias_native :required?, :required
39
36
  alias_native :length
@@ -1,6 +1,8 @@
1
1
  module Browser; module DOM; class Element < Node
2
2
 
3
3
  class Size
4
+ include Native::Wrapper
5
+
4
6
  attr_reader :element
5
7
 
6
8
  # @private
@@ -12,9 +14,7 @@ class Size
12
14
 
13
15
  # @!attribute width
14
16
  # @return [Integer] the element width
15
- def width
16
- `#@native.offsetWidth`
17
- end
17
+ alias_native :width, :offsetWidth
18
18
 
19
19
  def width=(value)
20
20
  @element.style[:width] = value
@@ -22,9 +22,7 @@ class Size
22
22
 
23
23
  # @!attribute height
24
24
  # @return [Integer] the element height
25
- def height
26
- `#@native.offsetHeight`
27
- end
25
+ alias_native :height, :offsetHeight
28
26
 
29
27
  def height=(value)
30
28
  @element.style[:height] = value
@@ -32,15 +30,11 @@ class Size
32
30
 
33
31
  # @!attribute client_width
34
32
  # @return [Integer] the content-box width of an element
35
- def client_width
36
- `#@native.clientWidth`
37
- end
33
+ alias_native :client_width, :clientWidth
38
34
 
39
35
  # @!attribute client_height
40
36
  # @return [Integer] the content-box height of an element
41
- def client_height
42
- `#@native.clientHeight`
43
- end
37
+ alias_native :client_height, :clientHeight
44
38
  end
45
39
 
46
40
  end; end; end
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; module DOM; class Element < Node
2
4
 
3
5
  class Template < Element
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; module DOM; class Element < Node
2
4
 
3
5
  class Textarea < Element
@@ -14,9 +16,7 @@ class Textarea < Element
14
16
  }
15
17
  end
16
18
 
17
- def value=(value)
18
- `#@native.value = #{value}`
19
- end
19
+ alias_native :value=
20
20
 
21
21
  def clear
22
22
  `#@native.value = ''`
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  # Requires are moved to the bottom of this file.
2
4
 
3
5
  module Browser; module DOM
@@ -367,6 +369,8 @@ class Element < Node
367
369
  self << node
368
370
  end
369
371
 
372
+ alias children= inner_dom=
373
+
370
374
  # @!attribute inner_html
371
375
  # @return [String] the inner HTML of the element
372
376
  def inner_html
@@ -1,3 +1,4 @@
1
+ # backtick_javascript: true
1
2
  module Browser; module DOM
2
3
 
3
4
  # A {MutationObserver} is a performant way to observe changes in the DOM,
@@ -1,3 +1,4 @@
1
+ # backtick_javascript: true
1
2
  module Browser; module DOM
2
3
 
3
4
  # Abstract class for all DOM node types.
@@ -1,3 +1,4 @@
1
+ # backtick_javascript: true
1
2
  module Browser; module DOM
2
3
 
3
4
  # Allows manipulation of a set of {Node}s.
@@ -1,3 +1,4 @@
1
+ # backtick_javascript: true
1
2
  module Browser; module DOM
2
3
 
3
4
  # Encapsulates a text node.
data/opal/browser/dom.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # backtick_javascript: true
1
2
  require 'browser/dom/node_set'
2
3
  require 'browser/dom/node'
3
4
  require 'browser/dom/attribute'
@@ -1,3 +1,4 @@
1
+ # backtick_javascript: true
1
2
  require 'browser/animation_frame'
2
3
 
3
4
  module Browser; module DOM
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Animation < Event
@@ -8,13 +10,9 @@ class Animation < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def animation=(value)
12
- `#@native.animationName = #{value}`
13
- end
14
-
15
- def elapsed=(value)
16
- `#@native.elapsedTime = #{value}`
17
- end
13
+ alias_native :name=, :animationName=
14
+ alias_native :animation=, :animationName=
15
+ alias_native :elapsed=, :elapsedTime=
18
16
  end
19
17
 
20
18
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class AudioProcessing < Event
@@ -8,17 +10,9 @@ class AudioProcessing < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def time=(value)
12
- `#@native.playbackTime = #{value}`
13
- end
14
-
15
- def input=(value)
16
- `#@native.inputBuffer = #{value}`
17
- end
18
-
19
- def output=(value)
20
- `#@native.outputBuffer = #{value}`
21
- end
13
+ alias_native :time=, :playbackTime=
14
+ alias_native :input=, :inputBuffer=
15
+ alias_native :output=, :outputBuffer=
22
16
  end
23
17
 
24
18
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser
2
4
 
3
5
  class Event
@@ -16,14 +18,10 @@ class Event
16
18
  end
17
19
 
18
20
  # Set the event as bubbling.
19
- def bubbles=(value)
20
- `#@native.bubbles = #{value}`
21
- end
21
+ alias_native :bubbles=
22
22
 
23
23
  # Set the event as cancelable.
24
- def cancelable=(value)
25
- `#@native.cancelable = #{value}`
26
- end
24
+ alias_native :cancelable=
27
25
  end
28
26
 
29
27
  module Target
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class BeforeUnload < Event
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Clipboard < Event
@@ -8,13 +10,8 @@ class Clipboard < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def data=(value)
12
- `#@native.data = #{value}`
13
- end
14
-
15
- def type=(value)
16
- `#@native.dataType = #{value}`
17
- end
13
+ alias_native :data=
14
+ alias_native :type=, :dataType=
18
15
  end
19
16
 
20
17
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Close < Event
@@ -8,13 +10,8 @@ class Close < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def code=(value)
12
- `#@native.code = #{value}`
13
- end
14
-
15
- def reason=(value)
16
- `#@native.reason = #{value}`
17
- end
13
+ alias_native :code=
14
+ alias_native :reason=
18
15
 
19
16
  def clean!(value)
20
17
  `#@native.wasClean = true`
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Composition < UI
@@ -8,13 +10,8 @@ class Composition < UI
8
10
  end
9
11
 
10
12
  class Definition < UI::Definition
11
- def data=(value)
12
- `#@native.data = #{value}`
13
- end
14
-
15
- def locale=(value)
16
- `#@native.locale = #{value}`
17
- end
13
+ alias_native :data=
14
+ alias_native :locale=
18
15
  end
19
16
 
20
17
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  require 'ostruct'
2
4
 
3
5
  module Browser; class Event
@@ -11,6 +13,8 @@ class Custom < Event
11
13
  def method_missing(name, value)
12
14
  if name.end_with? ?=
13
15
  `#@native[#{name[0 .. -2]}] = value`
16
+ else
17
+ super
14
18
  end
15
19
  end
16
20
  end
@@ -51,12 +55,10 @@ class Custom < Event
51
55
 
52
56
  def initialize(event, callback = nil)
53
57
  super(event, callback)
54
-
55
- @detail = Hash.new(`#{event}.detail`)
56
58
  end
57
59
 
58
60
  def method_missing(id, *)
59
- return @detail[id] if @detail.has_key?(id)
61
+ `if (#@native.detail != null && Object.hasOwn(#@native.detail, id)) return #@native.detail[id]`
60
62
 
61
63
  super
62
64
  end
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  require 'browser/blob'
2
4
 
3
5
  module Browser; class Event
@@ -92,4 +94,4 @@ class DataTransfer
92
94
  end
93
95
  end
94
96
 
95
- end; end
97
+ end; end
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class DeviceLight < Event
@@ -8,9 +10,7 @@ class DeviceLight < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def value=(value)
12
- `#@native.value = #{value}`
13
- end
13
+ alias_native :value
14
14
  end
15
15
 
16
16
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class DeviceMotion < Event
@@ -10,21 +12,10 @@ class DeviceMotion < Event
10
12
  Acceleration = Struct.new(:x, :y, :z)
11
13
 
12
14
  class Definition < Definition
13
- def acceleration=(value)
14
- `#@native.acceleration = #{value.to_n}`
15
- end
16
-
17
- def acceleration_with_gravity=(value)
18
- `#@native.accelerationIncludingGravity = #{value.to_n}`
19
- end
20
-
21
- def rotation=(value)
22
- `#@native.rotationRate = #{value}`
23
- end
24
-
25
- def interval=(value)
26
- `#@native.interval = #{value}`
27
- end
15
+ alias_native :acceleration=
16
+ alias_native :acceleration_with_gravity=, :accelerationIncludingGravity=
17
+ alias_native :rotation=, :rotationRate=
18
+ alias_native :interval=
28
19
  end
29
20
 
30
21
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class DeviceOrientation < Event
@@ -8,21 +10,10 @@ class DeviceOrientation < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def absolute=(value)
12
- `#@native.absolute = #{value}`
13
- end
14
-
15
- def alpha=(value)
16
- `#@native.alpha = #{value}`
17
- end
18
-
19
- def beta=(value)
20
- `#@native.beta = #{value}`
21
- end
22
-
23
- def gamma=(value)
24
- `#@native.gamma = #{value}`
25
- end
13
+ alias_native :absolute=
14
+ alias_native :alpha=
15
+ alias_native :beta=
16
+ alias_native :gamma=
26
17
  end
27
18
 
28
19
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class DeviceProximity < Event
@@ -8,17 +10,9 @@ class DeviceProximity < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def value=(value)
12
- `#@native.value = #{value}`
13
- end
14
-
15
- def min=(value)
16
- `#@native.min = #{value}`
17
- end
18
-
19
- def max=(value)
20
- `#@native.max = #{value}`
21
- end
13
+ alias_native :value=
14
+ alias_native :min=
15
+ alias_native :max=
22
16
  end
23
17
 
24
18
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Drag < Event
@@ -12,25 +14,15 @@ class Drag < Event
12
14
  class Client
13
15
  include Native::Wrapper
14
16
 
15
- def x=(value)
16
- `#@native.clientX = #{value}`
17
- end
18
-
19
- def y=(value)
20
- `#@native.clientY = #{value}`
21
- end
17
+ alias_native :x=, :clientX
18
+ alias_native :y=, :clientY
22
19
  end
23
20
 
24
21
  class Screen
25
22
  include Native::Wrapper
26
23
 
27
- def x=(value)
28
- `#@native.screenX = #{value}`
29
- end
30
-
31
- def y=(value)
32
- `#@native.screenY = #{value}`
33
- end
24
+ alias_native :x=, :screenX
25
+ alias_native :y=, :screenY
34
26
  end
35
27
 
36
28
  def alt!
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Focus < UI
@@ -8,13 +10,8 @@ class Focus < UI
8
10
  end
9
11
 
10
12
  class Definition < UI::Definition
11
- def view=(value)
12
- `#@native.view = #{Native.convert(value)}`
13
- end
14
-
15
- def related=(elem)
16
- `#@native.relatedTarget = #{Native.convert(elem)}`
17
- end
13
+ alias_native :view=
14
+ alias_native :related=, :relatedTarget
18
15
  end
19
16
 
20
17
  if Browser.supports? 'Event.constructor'
@@ -1,6 +1,8 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
- class Gamepad < Event
5
+ class Gamepad < Event
4
6
  handles 'gamepadconnected', 'gamepaddisconnected'
5
7
 
6
8
  def self.supported?
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class HashChange < Event
@@ -8,13 +10,8 @@ class HashChange < Event
8
10
  end
9
11
 
10
12
  class Definition < Definition
11
- def old=(value)
12
- `#@native.oldURL = #{value}`
13
- end
14
-
15
- def new=(value)
16
- `#@native.newURL = #{value}`
17
- end
13
+ alias_native :old=, :oldURL=
14
+ alias_native :new=, :newURL=
18
15
  end
19
16
 
20
17
  if Browser.supports? 'Event.constructor'
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  module Browser; class Event
2
4
 
3
5
  class Keyboard < UI
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  require 'buffer'
2
4
 
3
5
  module Browser; class Event
@@ -10,17 +12,9 @@ class Message < Event
10
12
  end
11
13
 
12
14
  class Definition < Definition
13
- def data=(value)
14
- `#@native.data = value`
15
- end
16
-
17
- def origin=(value)
18
- `#@native.origin = value`
19
- end
20
-
21
- def source=(value)
22
- `#@native.source = #{Native.convert(value)}`
23
- end
15
+ alias_native :data=
16
+ alias_native :origin=
17
+ alias_native :source=
24
18
  end
25
19
 
26
20
  if Browser.supports? 'Event.constructor'