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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +28 -17
- data/.github/workflows/pages.yml +21 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile +15 -5
- data/Rakefile +32 -9
- data/bin/rake +7 -0
- data/bin/setup +8 -0
- data/config.ru +19 -12
- data/opal/browser/animation_frame.rb +1 -0
- data/opal/browser/audio/node.rb +1 -0
- data/opal/browser/audio/param_schedule.rb +1 -0
- data/opal/browser/audio.rb +2 -1
- data/opal/browser/blob.rb +1 -0
- data/opal/browser/canvas/data.rb +1 -0
- data/opal/browser/canvas/gradient.rb +1 -0
- data/opal/browser/canvas/style.rb +1 -0
- data/opal/browser/canvas/text.rb +1 -0
- data/opal/browser/canvas.rb +1 -0
- data/opal/browser/console.rb +1 -0
- data/opal/browser/cookies.rb +1 -0
- data/opal/browser/crypto.rb +1 -0
- data/opal/browser/css/declaration.rb +1 -0
- data/opal/browser/css/rule/style.rb +1 -0
- data/opal/browser/css/rule.rb +1 -0
- data/opal/browser/css/style_sheet.rb +1 -0
- data/opal/browser/database/sql.rb +1 -0
- data/opal/browser/delay.rb +1 -0
- data/opal/browser/dom/builder.rb +1 -0
- data/opal/browser/dom/character_data.rb +1 -0
- data/opal/browser/dom/document.rb +1 -0
- data/opal/browser/dom/document_fragment.rb +1 -0
- data/opal/browser/dom/document_or_shadow_root.rb +1 -0
- data/opal/browser/dom/element/attributes.rb +2 -0
- data/opal/browser/dom/element/button.rb +2 -0
- data/opal/browser/dom/element/custom.rb +2 -1
- data/opal/browser/dom/element/data.rb +2 -0
- data/opal/browser/dom/element/editable.rb +2 -0
- data/opal/browser/dom/element/form.rb +25 -1
- data/opal/browser/dom/element/iframe.rb +2 -0
- data/opal/browser/dom/element/image.rb +6 -15
- data/opal/browser/dom/element/input.rb +7 -19
- data/opal/browser/dom/element/media.rb +5 -3
- data/opal/browser/dom/element/offset.rb +2 -0
- data/opal/browser/dom/element/scroll.rb +2 -0
- data/opal/browser/dom/element/select.rb +4 -7
- data/opal/browser/dom/element/size.rb +6 -12
- data/opal/browser/dom/element/template.rb +2 -0
- data/opal/browser/dom/element/textarea.rb +3 -3
- data/opal/browser/dom/element.rb +4 -0
- data/opal/browser/dom/mutation_observer.rb +1 -0
- data/opal/browser/dom/node.rb +1 -0
- data/opal/browser/dom/node_set.rb +1 -0
- data/opal/browser/dom/text.rb +1 -0
- data/opal/browser/dom.rb +1 -0
- data/opal/browser/effects.rb +1 -0
- data/opal/browser/event/animation.rb +5 -7
- data/opal/browser/event/audio_processing.rb +5 -11
- data/opal/browser/event/base.rb +4 -6
- data/opal/browser/event/before_unload.rb +2 -0
- data/opal/browser/event/clipboard.rb +4 -7
- data/opal/browser/event/close.rb +4 -7
- data/opal/browser/event/composition.rb +4 -7
- data/opal/browser/event/custom.rb +5 -3
- data/opal/browser/event/data_transfer.rb +3 -1
- data/opal/browser/event/device_light.rb +3 -3
- data/opal/browser/event/device_motion.rb +6 -15
- data/opal/browser/event/device_orientation.rb +6 -15
- data/opal/browser/event/device_proximity.rb +5 -11
- data/opal/browser/event/drag.rb +6 -14
- data/opal/browser/event/focus.rb +4 -7
- data/opal/browser/event/gamepad.rb +3 -1
- data/opal/browser/event/hash_change.rb +4 -7
- data/opal/browser/event/keyboard.rb +2 -0
- data/opal/browser/event/message.rb +5 -11
- data/opal/browser/event/mouse.rb +20 -65
- data/opal/browser/event/page_transition.rb +3 -3
- data/opal/browser/event/pop_state.rb +3 -1
- data/opal/browser/event/progress.rb +5 -11
- data/opal/browser/event/sensor.rb +2 -0
- data/opal/browser/event/storage.rb +7 -19
- data/opal/browser/event/touch.rb +2 -0
- data/opal/browser/event/ui.rb +4 -7
- data/opal/browser/event/wheel.rb +5 -11
- data/opal/browser/event.rb +1 -0
- data/opal/browser/event_source.rb +1 -0
- data/opal/browser/form_data.rb +1 -0
- data/opal/browser/history.rb +1 -0
- data/opal/browser/http/binary.rb +1 -0
- data/opal/browser/http/request.rb +1 -0
- data/opal/browser/http/response.rb +1 -0
- data/opal/browser/immediate.rb +1 -0
- data/opal/browser/interval.rb +1 -0
- data/opal/browser/location.rb +1 -0
- data/opal/browser/navigator.rb +1 -0
- data/opal/browser/polyfill/visual_viewport.rb +1 -0
- data/opal/browser/screen.rb +1 -0
- data/opal/browser/socket.rb +1 -0
- data/opal/browser/storage.rb +1 -0
- data/opal/browser/support.rb +22 -33
- data/opal/browser/utils.rb +1 -0
- data/opal/browser/version.rb +1 -1
- data/opal/browser/visual_viewport.rb +1 -0
- data/opal/browser/window/size.rb +1 -0
- data/opal/browser/window/view.rb +1 -0
- data/opal/browser/window.rb +1 -0
- data/opal-browser.gemspec +23 -18
- data/spec/browser_runner.rb.erb +14 -0
- data/spec/browser_runner_compat.rb +29 -0
- data/{index.html.erb → spec/browser_runner_index.html.erb} +1 -5
- data/spec/database/sql_spec.rb +1 -1
- data/spec/event_spec.rb +43 -0
- data/spec/immediate_spec.rb +1 -1
- data/spec/runner.rb +3 -3
- data/spec/spec_helper_promise.rb.erb +13 -5
- 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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 Textarea < Element
|
@@ -14,9 +16,7 @@ class Textarea < Element
|
|
14
16
|
}
|
15
17
|
end
|
16
18
|
|
17
|
-
|
18
|
-
`#@native.value = #{value}`
|
19
|
-
end
|
19
|
+
alias_native :value=
|
20
20
|
|
21
21
|
def clear
|
22
22
|
`#@native.value = ''`
|
data/opal/browser/dom/element.rb
CHANGED
@@ -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
|
data/opal/browser/dom/node.rb
CHANGED
data/opal/browser/dom/text.rb
CHANGED
data/opal/browser/dom.rb
CHANGED
data/opal/browser/effects.rb
CHANGED
@@ -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
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
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'
|
data/opal/browser/event/base.rb
CHANGED
@@ -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
|
-
|
20
|
-
`#@native.bubbles = #{value}`
|
21
|
-
end
|
21
|
+
alias_native :bubbles=
|
22
22
|
|
23
23
|
# Set the event as cancelable.
|
24
|
-
|
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 Clipboard < Event
|
@@ -8,13 +10,8 @@ class Clipboard < Event
|
|
8
10
|
end
|
9
11
|
|
10
12
|
class Definition < Definition
|
11
|
-
|
12
|
-
|
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'
|
data/opal/browser/event/close.rb
CHANGED
@@ -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
|
-
|
12
|
-
|
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
|
-
|
12
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
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'
|
data/opal/browser/event/drag.rb
CHANGED
@@ -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
|
-
|
16
|
-
|
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
|
-
|
28
|
-
|
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!
|
data/opal/browser/event/focus.rb
CHANGED
@@ -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
|
-
|
12
|
-
|
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,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
|
-
|
12
|
-
|
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
|
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
|
-
|
14
|
-
|
15
|
-
|
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'
|