opal-browser 0.1.0.beta1 → 0.2.0.beta1
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.
- checksums.yaml +4 -4
- data/.travis.yml +60 -0
- data/.yardopts +1 -1
- data/Gemfile +7 -2
- data/LICENSE +19 -0
- data/README.md +74 -10
- data/config.ru +2 -1
- data/index.html.erb +22 -0
- data/opal-browser.gemspec +9 -11
- data/opal/browser.rb +1 -1
- data/opal/browser/animation_frame.rb +66 -9
- data/opal/browser/canvas.rb +72 -18
- data/opal/browser/canvas/data.rb +1 -1
- data/opal/browser/console.rb +3 -37
- data/opal/browser/cookies.rb +80 -24
- data/opal/browser/css/declaration.rb +0 -5
- data/opal/browser/{timeout.rb → delay.rb} +13 -13
- data/opal/browser/dom.rb +0 -2
- data/opal/browser/dom/attribute.rb +6 -0
- data/opal/browser/dom/builder.rb +4 -8
- data/opal/browser/dom/character_data.rb +43 -7
- data/opal/browser/dom/document.rb +13 -11
- data/opal/browser/dom/element.rb +127 -29
- data/opal/browser/dom/element/image.rb +23 -0
- data/opal/browser/dom/element/offset.rb +27 -10
- data/opal/browser/dom/element/scroll.rb +32 -12
- data/opal/browser/dom/element/size.rb +29 -0
- data/opal/browser/dom/event.rb +88 -75
- data/opal/browser/dom/event/animation.rb +16 -4
- data/opal/browser/dom/event/audio_processing.rb +6 -4
- data/opal/browser/dom/event/base.rb +229 -64
- data/opal/browser/dom/event/before_unload.rb +6 -4
- data/opal/browser/dom/event/clipboard.rb +6 -4
- data/opal/browser/dom/event/close.rb +16 -4
- data/opal/browser/dom/event/composition.rb +16 -4
- data/opal/browser/dom/event/custom.rb +43 -8
- data/opal/browser/dom/event/device_light.rb +6 -4
- data/opal/browser/dom/event/device_motion.rb +17 -4
- data/opal/browser/dom/event/device_orientation.rb +16 -4
- data/opal/browser/dom/event/device_proximity.rb +6 -4
- data/opal/browser/dom/event/drag.rb +34 -28
- data/opal/browser/dom/event/focus.rb +21 -5
- data/opal/browser/dom/event/gamepad.rb +33 -20
- data/opal/browser/dom/event/hash_change.rb +6 -4
- data/opal/browser/dom/event/keyboard.rb +45 -23
- data/opal/browser/dom/event/message.rb +28 -8
- data/opal/browser/dom/event/mouse.rb +26 -25
- data/opal/browser/dom/event/page_transition.rb +6 -4
- data/opal/browser/dom/event/pop_state.rb +16 -4
- data/opal/browser/dom/event/progress.rb +16 -4
- data/opal/browser/dom/event/sensor.rb +6 -4
- data/opal/browser/dom/event/storage.rb +6 -4
- data/opal/browser/dom/event/touch.rb +10 -19
- data/opal/browser/dom/event/ui.rb +19 -3
- data/opal/browser/dom/event/wheel.rb +2 -2
- data/opal/browser/dom/mutation_observer.rb +65 -5
- data/opal/browser/dom/node.rb +164 -59
- data/opal/browser/dom/node_set.rb +4 -0
- data/opal/browser/dom/text.rb +16 -1
- data/opal/browser/event_source.rb +5 -2
- data/opal/browser/history.rb +51 -15
- data/opal/browser/http.rb +22 -7
- data/opal/browser/http/headers.rb +5 -0
- data/opal/browser/http/request.rb +40 -10
- data/opal/browser/immediate.rb +123 -9
- data/opal/browser/interval.rb +8 -13
- data/opal/browser/location.rb +13 -3
- data/opal/browser/navigator.rb +9 -6
- data/opal/browser/screen.rb +31 -5
- data/opal/browser/socket.rb +8 -4
- data/opal/browser/storage.rb +118 -33
- data/opal/browser/support.rb +232 -0
- data/opal/browser/utils.rb +24 -6
- data/opal/browser/version.rb +1 -1
- data/opal/browser/window.rb +1 -2
- data/opal/browser/window/scroll.rb +21 -11
- data/opal/browser/window/size.rb +16 -6
- data/opal/browser/window/view.rb +23 -5
- data/spec/dom/builder_spec.rb +19 -19
- data/spec/dom/document_spec.rb +6 -6
- data/spec/dom/element_spec.rb +5 -5
- data/spec/dom/event_spec.rb +20 -20
- data/spec/dom/mutation_observer_spec.rb +5 -5
- data/spec/dom/node_spec.rb +39 -27
- data/spec/dom_spec.rb +10 -8
- data/spec/event_source_spec.rb +12 -12
- data/spec/history_spec.rb +24 -15
- data/spec/http_spec.rb +18 -17
- data/spec/immediate_spec.rb +9 -7
- data/spec/runner.rb +114 -0
- data/spec/socket_spec.rb +8 -8
- data/spec/spec_helper.rb +1 -0
- data/spec/storage_spec.rb +6 -6
- data/spec/wgxpath.install.js +49 -0
- data/spec/window_spec.rb +2 -2
- metadata +21 -54
- data/opal/browser/compatibility.rb +0 -59
- data/opal/browser/compatibility/animation_frame.rb +0 -93
- data/opal/browser/compatibility/dom/document/window.rb +0 -15
- data/opal/browser/compatibility/dom/element/css.rb +0 -15
- data/opal/browser/compatibility/dom/element/matches.rb +0 -31
- data/opal/browser/compatibility/dom/element/offset.rb +0 -20
- data/opal/browser/compatibility/dom/element/scroll.rb +0 -25
- data/opal/browser/compatibility/dom/element/style.rb +0 -15
- data/opal/browser/compatibility/dom/mutation_observer.rb +0 -47
- data/opal/browser/compatibility/http/request.rb +0 -15
- data/opal/browser/compatibility/immediate.rb +0 -107
- data/opal/browser/compatibility/window/scroll.rb +0 -27
- data/opal/browser/compatibility/window/size.rb +0 -13
- data/opal/browser/compatibility/window/view.rb +0 -13
- data/opal/browser/dom/compatibility.rb +0 -8
- data/opal/browser/http/compatibility.rb +0 -1
- data/opal/browser/window/compatibility.rb +0 -3
|
@@ -2,12 +2,14 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class BeforeUnload < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.BeforeUnload'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
if Browser.supports? 'Event.constructor'
|
|
9
|
+
def self.construct(name, desc)
|
|
10
|
+
`new BeforeUnloadEvent(#{name}, #{desc})`
|
|
11
|
+
end
|
|
12
|
+
end if supported?
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
end; end; end
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class Clipboard < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.Clipboard'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < Definition
|
|
@@ -15,9 +15,11 @@ class Clipboard < Event
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
if Browser.supports? 'Event.constructor'
|
|
19
|
+
def self.construct(name, desc)
|
|
20
|
+
`new ClipboardEvent(#{name}, #{desc})`
|
|
21
|
+
end
|
|
22
|
+
end if supported?
|
|
21
23
|
|
|
22
24
|
alias_native :data
|
|
23
25
|
alias_native :type, :dataType
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class Close < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.Close'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < Definition
|
|
@@ -23,9 +23,21 @@ class Close < Event
|
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
if Browser.supports? 'Event.constructor'
|
|
27
|
+
def self.construct(name, desc)
|
|
28
|
+
`new CloseEvent(#{name}, #{desc})`
|
|
29
|
+
end
|
|
30
|
+
elsif Browser.supports? 'Event.create'
|
|
31
|
+
def self.construct(name, desc)
|
|
32
|
+
%x{
|
|
33
|
+
var event = document.createEvent("CloseEvent");
|
|
34
|
+
event.initCloseEvent(name, desc.bubbles, desc.cancelable,
|
|
35
|
+
desc.wasClean, desc.code, desc.reason);
|
|
36
|
+
|
|
37
|
+
return event;
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
end if supported?
|
|
29
41
|
|
|
30
42
|
alias_native :code
|
|
31
43
|
alias_native :reason
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class Composition < UI
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.Composition'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < UI::Definition
|
|
@@ -15,9 +15,21 @@ class Composition < UI
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
if Browser.supports? 'Event.constructor'
|
|
19
|
+
def self.construct(name, desc)
|
|
20
|
+
`new CompositionEvent(#{name}, #{desc})`
|
|
21
|
+
end
|
|
22
|
+
elsif Browser.supports? 'Event.create'
|
|
23
|
+
def self.construct(name, desc)
|
|
24
|
+
%x{
|
|
25
|
+
var event = document.createEvent("CompositionEvent");
|
|
26
|
+
event.initCompositionEvent(name, desc.bubbles, desc.cancelable,
|
|
27
|
+
desc.view || window, desc.data, desc.locale);
|
|
28
|
+
|
|
29
|
+
return event;
|
|
30
|
+
}
|
|
31
|
+
end
|
|
32
|
+
end if supported?
|
|
21
33
|
|
|
22
34
|
alias_native :data
|
|
23
35
|
alias_native :locale
|
|
@@ -4,20 +4,55 @@ module Browser; module DOM; class Event
|
|
|
4
4
|
|
|
5
5
|
class Custom < Event
|
|
6
6
|
def self.supported?
|
|
7
|
-
|
|
7
|
+
Browser.supports? 'Event.Custom'
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
class Definition < Definition
|
|
11
|
+
def method_missing(name, value)
|
|
12
|
+
if name.end_with? ?=
|
|
13
|
+
`#@native[#{name[0 .. -2]}] = value`
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if Browser.supports? 'Event.constructor'
|
|
19
|
+
def self.construct(name, desc)
|
|
20
|
+
`new CustomEvent(name, {
|
|
21
|
+
bubbles: desc.bubbles,
|
|
22
|
+
cancelable: desc.cancelable,
|
|
23
|
+
detail: desc })`
|
|
24
|
+
end
|
|
25
|
+
elsif Browser.supports? 'Event.create'
|
|
26
|
+
def self.construct(name, desc)
|
|
27
|
+
%x{
|
|
28
|
+
var event = document.createEvent("CustomEvent");
|
|
29
|
+
event.initCustomEvent(name, desc.bubbles, desc.cancelable, desc);
|
|
13
30
|
|
|
14
|
-
|
|
31
|
+
return event;
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
elsif Browser.supports? 'Event.createObject'
|
|
35
|
+
def self.construct(name, desc)
|
|
36
|
+
Native(`document.createEventObject()`).merge!(`{
|
|
37
|
+
type: name,
|
|
38
|
+
bubbles: desc.bubbles,
|
|
39
|
+
cancelable: desc.cancelable,
|
|
40
|
+
detail: desc }`).to_n
|
|
41
|
+
end
|
|
42
|
+
else
|
|
43
|
+
def self.construct(name, desc)
|
|
44
|
+
Native(desc).merge!(`{
|
|
45
|
+
type: name,
|
|
46
|
+
bubbles: desc.bubbles,
|
|
47
|
+
cancelable: desc.cancelable,
|
|
48
|
+
detail: desc }`).to_n
|
|
49
|
+
end
|
|
15
50
|
end
|
|
16
51
|
|
|
17
|
-
def initialize(
|
|
18
|
-
super(
|
|
52
|
+
def initialize(event, callback = nil)
|
|
53
|
+
super(event, callback)
|
|
19
54
|
|
|
20
|
-
@detail = Hash.new(`#{
|
|
55
|
+
@detail = Hash.new(`#{event}.detail`)
|
|
21
56
|
end
|
|
22
57
|
|
|
23
58
|
def method_missing(id, *)
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class DeviceLight < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.DeviceLight'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < Definition
|
|
@@ -11,9 +11,11 @@ class DeviceLight < Event
|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
if Browser.supports? 'Event.constructor'
|
|
15
|
+
def self.construct(name, desc)
|
|
16
|
+
`new DeviceLightEvent(#{name}, #{desc})`
|
|
17
|
+
end
|
|
18
|
+
end if supported?
|
|
17
19
|
|
|
18
20
|
alias_native :value
|
|
19
21
|
end
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class DeviceMotion < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.DeviceMotion'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
Acceleration = Struct.new(:x, :y, :z)
|
|
@@ -25,9 +25,22 @@ class DeviceMotion < Event
|
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
if Browser.supports? 'Event.constructor'
|
|
29
|
+
def self.construct(name, desc)
|
|
30
|
+
`new DeviceMotionEvent(#{name}, #{desc})`
|
|
31
|
+
end
|
|
32
|
+
elsif Browser.supports? 'Event.create'
|
|
33
|
+
def self.construct(name, desc)
|
|
34
|
+
%x{
|
|
35
|
+
var event = document.createEvent("DeviceMotionEvent");
|
|
36
|
+
event.initDeviceMotionEvent(name, desc.bubbles, desc.cancelable,
|
|
37
|
+
desc.acceleration, desc.accelerationIncludingGravity,
|
|
38
|
+
desc.rotationRate, desc.interval);
|
|
39
|
+
|
|
40
|
+
return event;
|
|
41
|
+
}
|
|
42
|
+
end
|
|
43
|
+
end if supported?
|
|
31
44
|
|
|
32
45
|
alias_native :acceleration
|
|
33
46
|
alias_native :acceleration_with_gravity, :accelerationIncludingGravity
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class DeviceOrientation < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.DeviceOrientation'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < Definition
|
|
@@ -23,9 +23,21 @@ class DeviceOrientation < Event
|
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
if Browser.supports? 'Event.constructor'
|
|
27
|
+
def self.construct(name, desc)
|
|
28
|
+
`new DeviceOrientationEvent(#{name}, #{desc})`
|
|
29
|
+
end
|
|
30
|
+
elsif Browser.supports? 'Event.create'
|
|
31
|
+
def self.construct(name, desc)
|
|
32
|
+
%x{
|
|
33
|
+
var event = document.createEvent("DeviceOrientationEvent");
|
|
34
|
+
event.initDeviceOrientationEvent(name, desc.bubbles, desc.cancelable,
|
|
35
|
+
desc.alpha, desc.beta, desc.gamma, desc.absolute);
|
|
36
|
+
|
|
37
|
+
return event;
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
end if supported?
|
|
29
41
|
|
|
30
42
|
alias_native :absolute
|
|
31
43
|
alias_native :alpha
|
|
@@ -2,7 +2,7 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class DeviceProximity < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.DeviceProximity'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < Definition
|
|
@@ -19,9 +19,11 @@ class DeviceProximity < Event
|
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
if Browser.supports? 'Event.constructor'
|
|
23
|
+
def self.construct(name, desc)
|
|
24
|
+
`new DeviceProximityEvent(#{name}, #{desc})`
|
|
25
|
+
end
|
|
26
|
+
end if supported?
|
|
25
27
|
|
|
26
28
|
alias_native :value
|
|
27
29
|
alias_native :min
|
|
@@ -3,7 +3,7 @@ module Browser; module DOM; class Event
|
|
|
3
3
|
# TODO: handle transfers
|
|
4
4
|
class Drag < Event
|
|
5
5
|
def self.supported?
|
|
6
|
-
|
|
6
|
+
Browser.supports? 'Event.Drag'
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
class Definition < Definition
|
|
@@ -56,38 +56,39 @@ class Drag < Event
|
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def related=(elem)
|
|
59
|
-
`#@native.relatedTarget = #{Native.
|
|
59
|
+
`#@native.relatedTarget = #{Native.convert(elem)}`
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def self.create(name, &block)
|
|
67
|
-
new(`new DragEvent(#{name}, #{Definition.new(&block)})`)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
Position = Struct.new(:x, :y)
|
|
71
|
-
|
|
72
|
-
def alt?
|
|
73
|
-
`#@native.altKey`
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def ctrl?
|
|
77
|
-
`#@native.ctrlKey`
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def meta?
|
|
81
|
-
`#@native.metaKey`
|
|
62
|
+
def transfer=(value)
|
|
63
|
+
`#@native.dataTransfer = #{Native.convert(elem)}`
|
|
64
|
+
end
|
|
82
65
|
end
|
|
83
66
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
67
|
+
if Browser.supports? 'Event.constructor'
|
|
68
|
+
def self.construct(name, desc)
|
|
69
|
+
`new DragEvent(#{name}, #{desc})`
|
|
70
|
+
end
|
|
71
|
+
elsif Browser.supports? 'Event.create'
|
|
72
|
+
def self.construct(name, desc)
|
|
73
|
+
%x{
|
|
74
|
+
var event = document.createEvent("DragEvent");
|
|
75
|
+
event.initDragEvent(name, desc.bubbles, desc.cancelable,
|
|
76
|
+
desc.view || window, 0,
|
|
77
|
+
desc.screenX || 0, desc.screenY || 0,
|
|
78
|
+
desc.clientX || 0, desc.clientY || 0,
|
|
79
|
+
desc.ctrlKey, desc.altKey, desc.shiftKey, desc.metaKey,
|
|
80
|
+
desc.button || 0, desc.relatedTarget, desc.dataTransfer);
|
|
81
|
+
|
|
82
|
+
return event;
|
|
83
|
+
}
|
|
84
|
+
end
|
|
85
|
+
end if supported?
|
|
87
86
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
alias_native :alt?, :altKey
|
|
88
|
+
alias_native :ctrl?, :ctrlKey
|
|
89
|
+
alias_native :meta?, :metaKey
|
|
90
|
+
alias_native :shift?, :shiftKey
|
|
91
|
+
alias_native :button
|
|
91
92
|
|
|
92
93
|
def client
|
|
93
94
|
Position.new(`#@native.clientX`, `#@native.clientY`)
|
|
@@ -108,6 +109,11 @@ class Drag < Event
|
|
|
108
109
|
def related
|
|
109
110
|
DOM(`#@native.relatedTarget`)
|
|
110
111
|
end
|
|
112
|
+
|
|
113
|
+
# @see https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer
|
|
114
|
+
def transfer
|
|
115
|
+
raise NotImplementedError
|
|
116
|
+
end
|
|
111
117
|
end
|
|
112
118
|
|
|
113
119
|
end; end; end
|
|
@@ -2,18 +2,34 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class Focus < UI
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.Focus'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < UI::Definition
|
|
9
|
+
def view=(value)
|
|
10
|
+
`#@native.view = #{Native.convert(value)}`
|
|
11
|
+
end
|
|
12
|
+
|
|
9
13
|
def related=(elem)
|
|
10
|
-
`#@native.relatedTarget = #{Native.
|
|
14
|
+
`#@native.relatedTarget = #{Native.convert(elem)}`
|
|
11
15
|
end
|
|
12
16
|
end
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
if Browser.supports? 'Event.constructor'
|
|
19
|
+
def self.construct(name, desc)
|
|
20
|
+
`new FocusEvent(#{name}, #{desc})`
|
|
21
|
+
end
|
|
22
|
+
elsif Browser.supports? 'Event.create'
|
|
23
|
+
def self.construct(name, desc)
|
|
24
|
+
%x{
|
|
25
|
+
var event = document.createEvent("FocusEvent");
|
|
26
|
+
event.initFocusEvent(name, desc.bubbles, desc.cancelable,
|
|
27
|
+
desc.view || window, 0, desc.relatedTarget);
|
|
28
|
+
|
|
29
|
+
return event;
|
|
30
|
+
}
|
|
31
|
+
end
|
|
32
|
+
end if supported?
|
|
17
33
|
|
|
18
34
|
def related
|
|
19
35
|
DOM(`#@native.relatedTarget`)
|
|
@@ -2,46 +2,59 @@ module Browser; module DOM; class Event
|
|
|
2
2
|
|
|
3
3
|
class Gamepad < Event
|
|
4
4
|
def self.supported?
|
|
5
|
-
|
|
5
|
+
Browser.supports? 'Event.Gamepad'
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
class Definition < Definition
|
|
9
|
-
def initialize(*)
|
|
10
|
-
super
|
|
11
|
-
|
|
12
|
-
`#@native.gamepad = {}`
|
|
13
|
-
end
|
|
14
|
-
|
|
15
9
|
def id=(value)
|
|
16
|
-
`#@native.
|
|
10
|
+
`#@native.id = #{value}`
|
|
17
11
|
end
|
|
18
12
|
|
|
19
13
|
def index=(value)
|
|
20
|
-
`#@native.
|
|
14
|
+
`#@native.index = #{value}`
|
|
21
15
|
end
|
|
22
16
|
|
|
23
|
-
def
|
|
24
|
-
`#@native.
|
|
17
|
+
def at=(value)
|
|
18
|
+
`#@native.timestamp = #{value}`
|
|
25
19
|
end
|
|
26
20
|
|
|
27
21
|
def axes=(value)
|
|
28
|
-
`#@native.
|
|
22
|
+
`#@native.axes = #{value}`
|
|
29
23
|
end
|
|
30
24
|
|
|
31
25
|
def buttons=(value)
|
|
32
|
-
`#@native.
|
|
26
|
+
`#@native.buttons = #{value}`
|
|
33
27
|
end
|
|
34
28
|
end
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
if Browser.supports? 'Event.constructor'
|
|
31
|
+
def self.construct(name, desc)
|
|
32
|
+
`new GamepadEvent(#{name}, {
|
|
33
|
+
bubbles: desc.bubbles,
|
|
34
|
+
cancelable: desc.cancelable,
|
|
35
|
+
gamepad: desc })`
|
|
36
|
+
end
|
|
37
|
+
end if supported?
|
|
38
|
+
|
|
39
|
+
def id
|
|
40
|
+
`#@native.gamepad.id`
|
|
38
41
|
end
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
def index
|
|
44
|
+
`#@native.gamepad.index`
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def at
|
|
48
|
+
`#@native.gamepad.timestamp`
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def axes
|
|
52
|
+
`#@native.gamepad.axes`
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def buttons
|
|
56
|
+
`#@native.gamepad.buttons`
|
|
57
|
+
end
|
|
45
58
|
end
|
|
46
59
|
|
|
47
60
|
end; end; end
|