opal-browser 0.3.3 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
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'