opal-browser 0.1.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 +7 -0
- data/.gitignore +5 -0
- data/.yardopts +1 -0
- data/Gemfile +11 -0
- data/README.md +106 -0
- data/Rakefile +5 -0
- data/config.ru +63 -0
- data/lib/opal/browser.rb +4 -0
- data/opal-browser.gemspec +23 -0
- data/opal/browser.rb +10 -0
- data/opal/browser/animation_frame.rb +29 -0
- data/opal/browser/canvas.rb +277 -0
- data/opal/browser/canvas/data.rb +73 -0
- data/opal/browser/canvas/gradient.rb +37 -0
- data/opal/browser/canvas/style.rb +123 -0
- data/opal/browser/canvas/text.rb +55 -0
- data/opal/browser/compatibility.rb +59 -0
- data/opal/browser/compatibility/animation_frame.rb +93 -0
- data/opal/browser/compatibility/dom/document/window.rb +15 -0
- data/opal/browser/compatibility/dom/element/css.rb +15 -0
- data/opal/browser/compatibility/dom/element/matches.rb +31 -0
- data/opal/browser/compatibility/dom/element/offset.rb +20 -0
- data/opal/browser/compatibility/dom/element/scroll.rb +25 -0
- data/opal/browser/compatibility/dom/element/style.rb +15 -0
- data/opal/browser/compatibility/dom/mutation_observer.rb +47 -0
- data/opal/browser/compatibility/http/request.rb +15 -0
- data/opal/browser/compatibility/immediate.rb +107 -0
- data/opal/browser/compatibility/window/scroll.rb +27 -0
- data/opal/browser/compatibility/window/size.rb +13 -0
- data/opal/browser/compatibility/window/view.rb +13 -0
- data/opal/browser/console.rb +137 -0
- data/opal/browser/cookies.rb +79 -0
- data/opal/browser/css.rb +24 -0
- data/opal/browser/css/declaration.rb +88 -0
- data/opal/browser/css/rule.rb +48 -0
- data/opal/browser/css/rule/style.rb +16 -0
- data/opal/browser/css/style_sheet.rb +83 -0
- data/opal/browser/css/unit.rb +188 -0
- data/opal/browser/dom.rb +95 -0
- data/opal/browser/dom/attribute.rb +19 -0
- data/opal/browser/dom/builder.rb +97 -0
- data/opal/browser/dom/cdata.rb +9 -0
- data/opal/browser/dom/character_data.rb +37 -0
- data/opal/browser/dom/comment.rb +9 -0
- data/opal/browser/dom/compatibility.rb +8 -0
- data/opal/browser/dom/document.rb +83 -0
- data/opal/browser/dom/document_fragment.rb +7 -0
- data/opal/browser/dom/element.rb +290 -0
- data/opal/browser/dom/element/input.rb +17 -0
- data/opal/browser/dom/element/offset.rb +67 -0
- data/opal/browser/dom/element/position.rb +37 -0
- data/opal/browser/dom/element/scroll.rb +49 -0
- data/opal/browser/dom/event.rb +240 -0
- data/opal/browser/dom/event/animation.rb +26 -0
- data/opal/browser/dom/event/audio_processing.rb +31 -0
- data/opal/browser/dom/event/base.rb +207 -0
- data/opal/browser/dom/event/before_unload.rb +13 -0
- data/opal/browser/dom/event/clipboard.rb +26 -0
- data/opal/browser/dom/event/close.rb +35 -0
- data/opal/browser/dom/event/composition.rb +38 -0
- data/opal/browser/dom/event/custom.rb +30 -0
- data/opal/browser/dom/event/device_light.rb +21 -0
- data/opal/browser/dom/event/device_motion.rb +38 -0
- data/opal/browser/dom/event/device_orientation.rb +36 -0
- data/opal/browser/dom/event/device_proximity.rb +31 -0
- data/opal/browser/dom/event/drag.rb +113 -0
- data/opal/browser/dom/event/focus.rb +23 -0
- data/opal/browser/dom/event/gamepad.rb +47 -0
- data/opal/browser/dom/event/hash_change.rb +26 -0
- data/opal/browser/dom/event/keyboard.rb +93 -0
- data/opal/browser/dom/event/message.rb +50 -0
- data/opal/browser/dom/event/mouse.rb +253 -0
- data/opal/browser/dom/event/page_transition.rb +21 -0
- data/opal/browser/dom/event/pop_state.rb +21 -0
- data/opal/browser/dom/event/progress.rb +31 -0
- data/opal/browser/dom/event/sensor.rb +13 -0
- data/opal/browser/dom/event/storage.rb +41 -0
- data/opal/browser/dom/event/touch.rb +69 -0
- data/opal/browser/dom/event/ui.rb +22 -0
- data/opal/browser/dom/event/wheel.rb +49 -0
- data/opal/browser/dom/mutation_observer.rb +118 -0
- data/opal/browser/dom/node.rb +317 -0
- data/opal/browser/dom/node_set.rb +88 -0
- data/opal/browser/dom/text.rb +21 -0
- data/opal/browser/effects.rb +39 -0
- data/opal/browser/event_source.rb +67 -0
- data/opal/browser/history.rb +54 -0
- data/opal/browser/http.rb +129 -0
- data/opal/browser/http/binary.rb +57 -0
- data/opal/browser/http/compatibility.rb +1 -0
- data/opal/browser/http/headers.rb +90 -0
- data/opal/browser/http/parameters.rb +8 -0
- data/opal/browser/http/request.rb +331 -0
- data/opal/browser/http/response.rb +115 -0
- data/opal/browser/immediate.rb +43 -0
- data/opal/browser/interval.rb +93 -0
- data/opal/browser/location.rb +77 -0
- data/opal/browser/navigator.rb +151 -0
- data/opal/browser/screen.rb +40 -0
- data/opal/browser/socket.rb +115 -0
- data/opal/browser/storage.rb +149 -0
- data/opal/browser/timeout.rb +60 -0
- data/opal/browser/utils.rb +56 -0
- data/opal/browser/version.rb +3 -0
- data/opal/browser/window.rb +113 -0
- data/opal/browser/window/compatibility.rb +3 -0
- data/opal/browser/window/scroll.rb +49 -0
- data/opal/browser/window/size.rb +35 -0
- data/opal/browser/window/view.rb +18 -0
- data/spec/dom/builder_spec.rb +69 -0
- data/spec/dom/document_spec.rb +40 -0
- data/spec/dom/element_spec.rb +46 -0
- data/spec/dom/event_spec.rb +127 -0
- data/spec/dom/mutation_observer_spec.rb +37 -0
- data/spec/dom/node_spec.rb +154 -0
- data/spec/dom_spec.rb +13 -0
- data/spec/event_source_spec.rb +42 -0
- data/spec/history_spec.rb +48 -0
- data/spec/http_spec.rb +87 -0
- data/spec/immediate_spec.rb +12 -0
- data/spec/json2.js +486 -0
- data/spec/sizzle.js +5 -0
- data/spec/socket_spec.rb +43 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/storage_spec.rb +26 -0
- data/spec/window_spec.rb +10 -0
- metadata +240 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
class DeviceProximity < Event
|
|
4
|
+
def self.supported?
|
|
5
|
+
not $$[:DeviceProximityEvent].nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Definition < Definition
|
|
9
|
+
def value=(value)
|
|
10
|
+
`#@native.value = #{value}`
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def min=(value)
|
|
14
|
+
`#@native.min = #{value}`
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def max=(value)
|
|
18
|
+
`#@native.max = #{value}`
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.create(name, &block)
|
|
23
|
+
new(`new DeviceProximityEvent(#{name}, #{Definition.new(&block)})`)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
alias_native :value
|
|
27
|
+
alias_native :min
|
|
28
|
+
alias_native :max
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end; end; end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
# TODO: handle transfers
|
|
4
|
+
class Drag < Event
|
|
5
|
+
def self.supported?
|
|
6
|
+
not $$[:DragEvent].nil?
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Definition < Definition
|
|
10
|
+
class Client
|
|
11
|
+
include Native
|
|
12
|
+
|
|
13
|
+
def x=(value)
|
|
14
|
+
`#@native.clientX = #{value}`
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def y=(value)
|
|
18
|
+
`#@native.clientY = #{value}`
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Screen
|
|
23
|
+
include Native
|
|
24
|
+
|
|
25
|
+
def x=(value)
|
|
26
|
+
`#@native.screenX = #{value}`
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def y=(value)
|
|
30
|
+
`#@native.screenY = #{value}`
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def alt!
|
|
35
|
+
`#@native.altKey = true`
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def ctrl!
|
|
39
|
+
`#@native.ctrlKey = true`
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def meta!
|
|
43
|
+
`#@native.metaKey = true`
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def button=(value)
|
|
47
|
+
`#@native.button = #{value}`
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def client
|
|
51
|
+
Client.new(@native)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def screen
|
|
55
|
+
Screen.new(@native)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def related=(elem)
|
|
59
|
+
`#@native.relatedTarget = #{Native.try_convert(elem)}`
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
end
|
|
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`
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def shift?
|
|
85
|
+
`#@native.shiftKey`
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def button
|
|
89
|
+
`#@native.button`
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def client
|
|
93
|
+
Position.new(`#@native.clientX`, `#@native.clientY`)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def screen
|
|
97
|
+
Position.new(`#@native.screenX`, `#@native.screenY`) if defined?(`#@native.screenX`)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def x
|
|
101
|
+
screen.x
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def y
|
|
105
|
+
screen.y
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def related
|
|
109
|
+
DOM(`#@native.relatedTarget`)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
end; end; end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
class Focus < UI
|
|
4
|
+
def self.supported?
|
|
5
|
+
not $$[:FocusEvent].nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Definition < UI::Definition
|
|
9
|
+
def related=(elem)
|
|
10
|
+
`#@native.relatedTarget = #{Native.try_convert(elem)}`
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.create(name, &block)
|
|
15
|
+
new(`new FocusEvent(#{name}, #{Definition.new(&block)})`)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def related
|
|
19
|
+
DOM(`#@native.relatedTarget`)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end; end; end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
class Gamepad < Event
|
|
4
|
+
def self.supported?
|
|
5
|
+
not $$[:GamepadEvent].nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Definition < Definition
|
|
9
|
+
def initialize(*)
|
|
10
|
+
super
|
|
11
|
+
|
|
12
|
+
`#@native.gamepad = {}`
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def id=(value)
|
|
16
|
+
`#@native.gamepad.id = #{value}`
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def index=(value)
|
|
20
|
+
`#@native.gamepad.index = #{value}`
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def timestamp=(value)
|
|
24
|
+
`#@native.gamepad.timestamp = #{value}`
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def axes=(value)
|
|
28
|
+
`#@native.gamepad.axes = #{value}`
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def buttons=(value)
|
|
32
|
+
`#@native.gamepad.buttons = #{value}`
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.create(name, &block)
|
|
37
|
+
new(`new GamepadEvent(#{name}, #{Definition.new(&block)})`)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
%w(id index timestamp axes buttons).each {|name|
|
|
41
|
+
define_method name do
|
|
42
|
+
`#@native.gamepad[#{name}]`
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end; end; end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
class HashChange < Event
|
|
4
|
+
def self.supported?
|
|
5
|
+
not $$[:HashChangeEvent].nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Definition < Definition
|
|
9
|
+
def old=(value)
|
|
10
|
+
`#@native.oldURL = #{value}`
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def new=(value)
|
|
14
|
+
`#@native.newURL = #{value}`
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.create(name, &block)
|
|
19
|
+
new(`new HashChangeEvent(#{name}, #{Definition.new(&block)})`)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
alias_native :old, :oldURL
|
|
23
|
+
alias_native :new, :newURL
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end; end; end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
class Keyboard < UI
|
|
4
|
+
def self.supported?
|
|
5
|
+
not $$[:KeyboardEvent].nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Definition < UI::Definition
|
|
9
|
+
def alt!
|
|
10
|
+
`#@native.altKey = true`
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def ctrl!
|
|
14
|
+
`#@native.ctrlKey = true`
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def meta!
|
|
18
|
+
`#@native.metaKey = true`
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def shift!
|
|
22
|
+
`#@native.shiftKey = true`
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def code=(code)
|
|
26
|
+
`#@native.keyCode = #@native.which = #{code}`
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def key=(key)
|
|
30
|
+
`#@native.key = #{key}`
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def char=(char)
|
|
34
|
+
`#@native.char = #@native.charCode = #{char}`
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def repeat!
|
|
38
|
+
`#@native.repeat = true`
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.create(name, &block)
|
|
43
|
+
new(`new KeyboardEvent(#{name}, #{Definition.new(&block)})`)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def alt?
|
|
47
|
+
`#@native.altKey`
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def ctrl?
|
|
51
|
+
`#@native.ctrlKey`
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def meta?
|
|
55
|
+
`#@native.metaKey`
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def shift?
|
|
59
|
+
`#@native.shiftKey`
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def repeat?
|
|
63
|
+
`#@native.repeat`
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def key
|
|
67
|
+
`#@native.key || #@native.keyIdentifier || nil`
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def code
|
|
71
|
+
`#@native.keyCode || #@native.which || nil`
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def char
|
|
75
|
+
`#@native.char || #@native.charCode || #{code ? code.chr : nil}`
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
alias to_i key
|
|
79
|
+
|
|
80
|
+
def down?
|
|
81
|
+
name.downcase == 'keydown'
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def press?
|
|
85
|
+
name.downcase == 'keypress'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def up?
|
|
89
|
+
name.downcase == 'keyup'
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end; end; end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'buffer'
|
|
2
|
+
|
|
3
|
+
module Browser; module DOM; class Event
|
|
4
|
+
|
|
5
|
+
class Message < Event
|
|
6
|
+
def self.supported?
|
|
7
|
+
not $$[:MessageEvent].nil?
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class Definition < Definition
|
|
11
|
+
def data=(value)
|
|
12
|
+
`#@native.data = #{value.to_n}`
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.create(name, &block)
|
|
17
|
+
new(`new MessageEvent(#{name}, #{Definition.new(&block)})`)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def data
|
|
21
|
+
%x{
|
|
22
|
+
if (#@native.data instanceof ArrayBuffer) {
|
|
23
|
+
return #{Buffer.new(`#@native.data`)};
|
|
24
|
+
}
|
|
25
|
+
else if (#@native.data instanceof Blob) {
|
|
26
|
+
return #{Blob.new(`#@native.data`)};
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return #@native.data;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
alias_native :origin
|
|
35
|
+
|
|
36
|
+
def source
|
|
37
|
+
%x{
|
|
38
|
+
var source = #@native.source;
|
|
39
|
+
|
|
40
|
+
if (source instanceof window.Window) {
|
|
41
|
+
return #{Window.new(`source`)};
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return nil;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end; end; end
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
module Browser; module DOM; class Event
|
|
2
|
+
|
|
3
|
+
class Mouse < UI
|
|
4
|
+
def self.supported?
|
|
5
|
+
not $$[:MouseEvent].nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Definition < UI::Definition
|
|
9
|
+
class Client
|
|
10
|
+
include Native
|
|
11
|
+
|
|
12
|
+
def x=(value)
|
|
13
|
+
`#@native.clientX = #{value}`
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def y=(value)
|
|
17
|
+
`#@native.clientY = #{value}`
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Layer
|
|
22
|
+
include Native
|
|
23
|
+
|
|
24
|
+
def x=(value)
|
|
25
|
+
`#@native.layerX = #{value}`
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def y=(value)
|
|
29
|
+
`#@native.layerY = #{value}`
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class Offset
|
|
34
|
+
include Native
|
|
35
|
+
|
|
36
|
+
def x=(value)
|
|
37
|
+
`#@native.offsetX = #{value}`
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def y=(value)
|
|
41
|
+
`#@native.offsetY= #{value}`
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class Page
|
|
46
|
+
include Native
|
|
47
|
+
|
|
48
|
+
def x=(value)
|
|
49
|
+
`#@native.pageX = #{value}`
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def y=(value)
|
|
53
|
+
`#@native.pageY = #{value}`
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class Screen
|
|
58
|
+
include Native
|
|
59
|
+
|
|
60
|
+
def x=(value)
|
|
61
|
+
`#@native.screenX = #{value}`
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def y=(value)
|
|
65
|
+
`#@native.screenY = #{value}`
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
class Ancestor
|
|
70
|
+
include Native
|
|
71
|
+
|
|
72
|
+
def x=(value)
|
|
73
|
+
`#@native.x = #{value}`
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def y=(value)
|
|
77
|
+
`#@native.y = #{value}`
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def x=(value)
|
|
82
|
+
`#@native.screenX = #{value}`
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def y=(value)
|
|
86
|
+
`#@native.screenY = #{value}`
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def alt!
|
|
90
|
+
`#@native.altKey = true`
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def ctrl!
|
|
94
|
+
`#@native.ctrlKey = true`
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def meta!
|
|
98
|
+
`#@native.metaKey = true`
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def button=(value)
|
|
102
|
+
`#@native.button = #{value}`
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def client
|
|
106
|
+
Client.new(@native)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def layer
|
|
110
|
+
Layer.new(@native)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def offset
|
|
114
|
+
Offset.new(@native)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def page
|
|
118
|
+
Page.new(@native)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def screen
|
|
122
|
+
Screen.new(@native)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def ancestor
|
|
126
|
+
Ancestor.new(@native)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def related=(elem)
|
|
130
|
+
`#@native.relatedTarget = #{Native.try_convert(elem)}`
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def from=(elem)
|
|
134
|
+
`#@native.fromElement = #{Native.try_convert(elem)}`
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def to=(elem)
|
|
138
|
+
`#@native.toElement = #{Native.try_convert(elem)}`
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def self.create(name, &block)
|
|
143
|
+
new(`new MouseEvent(#{name}, #{Definition.new(&block)})`)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
Position = Struct.new(:x, :y)
|
|
147
|
+
|
|
148
|
+
def alt?
|
|
149
|
+
`#@native.altKey`
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def ctrl?
|
|
153
|
+
`#@native.ctrlKey`
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def meta?
|
|
157
|
+
`#@native.metaKey`
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def shift?
|
|
161
|
+
`#@native.shiftKey`
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def button
|
|
165
|
+
`#@native.button`
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def client
|
|
169
|
+
Position.new(`#@native.clientX`, `#@native.clientY`)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def layer
|
|
173
|
+
Position.new(`#@native.layerX`, `#@native.layerY`) unless `#@native.layerX == null`
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def offset
|
|
177
|
+
Position.new(`#@native.offsetX`, `#@native.offsetY`) unless `#@native.offsetX == null`
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def page
|
|
181
|
+
Position.new(`#@native.pageX`, `#@native.pageY`) unless `#@native.pageX == null`
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def screen
|
|
185
|
+
Position.new(`#@native.screenX`, `#@native.screenY`) unless `#@native.screenX == null`
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def ancestor
|
|
189
|
+
Position.new(`#@native.x`, `#@native.y`) unless `#@native.x == null`
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def x
|
|
193
|
+
screen.x
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def y
|
|
197
|
+
screen.y
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def related
|
|
201
|
+
DOM(`#@native.relatedTarget`) unless `#@native.relatedTarget == null`
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def from
|
|
205
|
+
DOM(`#@native.fromElement`) unless `#@native.fromElement == null`
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def to
|
|
209
|
+
DOM(`#@native.toElement`) unless `#@native.toElement == null`
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def click?
|
|
213
|
+
name.downcase == 'click'
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def double_click?
|
|
217
|
+
name.downcase == 'dblclick'
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def down?
|
|
221
|
+
name.downcase == 'mousedown'
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def enter?
|
|
225
|
+
name.downcase == 'mouseenter'
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def leave?
|
|
229
|
+
name.downcase == 'mouseleave'
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def move?
|
|
233
|
+
name.downcase == 'mousemove'
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def out?
|
|
237
|
+
name.downcase == 'mouseout'
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def over?
|
|
241
|
+
name.downcase == 'mouseover'
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def up?
|
|
245
|
+
name.downcase == 'mouseup'
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def show?
|
|
249
|
+
name.downcase == 'show'
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
end; end; end
|