opal-browser 0.2.0.beta1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +22 -8
- data/Gemfile +1 -1
- data/README.md +59 -5
- data/index.html.erb +7 -4
- data/lib/opal-browser.rb +1 -0
- data/opal-browser.gemspec +1 -1
- data/opal/browser.rb +1 -0
- data/opal/browser/animation_frame.rb +26 -1
- data/opal/browser/canvas.rb +0 -10
- data/opal/browser/canvas/data.rb +0 -10
- data/opal/browser/canvas/gradient.rb +0 -10
- data/opal/browser/canvas/style.rb +0 -10
- data/opal/browser/canvas/text.rb +0 -10
- data/opal/browser/cookies.rb +6 -8
- data/opal/browser/database/sql.rb +194 -0
- data/opal/browser/delay.rb +25 -7
- data/opal/browser/dom.rb +2 -11
- data/opal/browser/dom/attribute.rb +12 -11
- data/opal/browser/dom/builder.rb +4 -9
- data/opal/browser/dom/document.rb +105 -41
- data/opal/browser/dom/element.rb +317 -231
- data/opal/browser/dom/element/attributes.rb +87 -0
- data/opal/browser/dom/element/data.rb +67 -0
- data/opal/browser/dom/element/input.rb +12 -1
- data/opal/browser/dom/element/offset.rb +5 -0
- data/opal/browser/dom/element/position.rb +11 -2
- data/opal/browser/dom/element/scroll.rb +77 -10
- data/opal/browser/dom/element/select.rb +36 -0
- data/opal/browser/dom/element/size.rb +5 -0
- data/opal/browser/dom/element/template.rb +9 -0
- data/opal/browser/dom/element/textarea.rb +24 -0
- data/opal/browser/dom/mutation_observer.rb +2 -2
- data/opal/browser/dom/node.rb +93 -51
- data/opal/browser/dom/node_set.rb +66 -48
- data/opal/browser/effects.rb +11 -0
- data/opal/browser/{dom/event.rb → event.rb} +32 -32
- data/opal/browser/{dom/event → event}/animation.rb +2 -2
- data/opal/browser/{dom/event → event}/audio_processing.rb +2 -2
- data/opal/browser/{dom/event → event}/base.rb +65 -7
- data/opal/browser/{dom/event → event}/before_unload.rb +2 -2
- data/opal/browser/{dom/event → event}/clipboard.rb +2 -2
- data/opal/browser/{dom/event → event}/close.rb +2 -2
- data/opal/browser/{dom/event → event}/composition.rb +2 -2
- data/opal/browser/{dom/event → event}/custom.rb +2 -2
- data/opal/browser/{dom/event → event}/device_light.rb +2 -2
- data/opal/browser/{dom/event → event}/device_motion.rb +2 -2
- data/opal/browser/{dom/event → event}/device_orientation.rb +2 -2
- data/opal/browser/{dom/event → event}/device_proximity.rb +2 -2
- data/opal/browser/{dom/event → event}/drag.rb +2 -2
- data/opal/browser/{dom/event → event}/focus.rb +2 -2
- data/opal/browser/{dom/event → event}/gamepad.rb +2 -2
- data/opal/browser/{dom/event → event}/hash_change.rb +2 -2
- data/opal/browser/{dom/event → event}/keyboard.rb +2 -2
- data/opal/browser/{dom/event → event}/message.rb +2 -2
- data/opal/browser/{dom/event → event}/mouse.rb +2 -2
- data/opal/browser/{dom/event → event}/page_transition.rb +2 -2
- data/opal/browser/{dom/event → event}/pop_state.rb +2 -2
- data/opal/browser/{dom/event → event}/progress.rb +2 -2
- data/opal/browser/{dom/event → event}/sensor.rb +2 -2
- data/opal/browser/{dom/event → event}/storage.rb +2 -2
- data/opal/browser/{dom/event → event}/touch.rb +2 -2
- data/opal/browser/{dom/event → event}/ui.rb +2 -2
- data/opal/browser/{dom/event → event}/wheel.rb +2 -2
- data/opal/browser/event_source.rb +1 -1
- data/opal/browser/http.rb +25 -0
- data/opal/browser/http/binary.rb +1 -0
- data/opal/browser/http/headers.rb +16 -2
- data/opal/browser/http/request.rb +14 -38
- data/opal/browser/immediate.rb +9 -3
- data/opal/browser/interval.rb +34 -11
- data/opal/browser/navigator.rb +23 -4
- data/opal/browser/screen.rb +1 -1
- data/opal/browser/socket.rb +5 -1
- data/opal/browser/storage.rb +51 -33
- data/opal/browser/support.rb +59 -4
- data/opal/browser/version.rb +1 -1
- data/opal/browser/window.rb +17 -9
- data/opal/browser/window/size.rb +17 -3
- data/opal/opal-browser.rb +1 -0
- data/spec/database/sql_spec.rb +131 -0
- data/spec/delay_spec.rb +38 -0
- data/spec/dom/attribute_spec.rb +49 -0
- data/spec/dom/builder_spec.rb +25 -8
- data/spec/dom/document_spec.rb +20 -0
- data/spec/dom/element/attributes_spec.rb +52 -0
- data/spec/dom/element_spec.rb +139 -4
- data/spec/dom/node_set_spec.rb +44 -0
- data/spec/interval_spec.rb +50 -0
- data/spec/runner.rb +46 -28
- data/spec/socket_spec.rb +1 -0
- data/spec/spec_helper.rb +0 -4
- data/spec/storage_spec.rb +1 -1
- metadata +57 -39
- data/opal/browser/http/parameters.rb +0 -8
@@ -1,33 +1,33 @@
|
|
1
|
-
require 'browser/
|
2
|
-
require 'browser/
|
3
|
-
require 'browser/
|
4
|
-
require 'browser/
|
5
|
-
require 'browser/
|
6
|
-
require 'browser/
|
7
|
-
require 'browser/
|
8
|
-
require 'browser/
|
9
|
-
require 'browser/
|
10
|
-
require 'browser/
|
11
|
-
require 'browser/
|
12
|
-
require 'browser/
|
13
|
-
require 'browser/
|
14
|
-
require 'browser/
|
15
|
-
require 'browser/
|
16
|
-
require 'browser/
|
17
|
-
require 'browser/
|
18
|
-
require 'browser/
|
19
|
-
require 'browser/
|
20
|
-
require 'browser/
|
21
|
-
require 'browser/
|
22
|
-
require 'browser/
|
23
|
-
require 'browser/
|
24
|
-
require 'browser/
|
25
|
-
require 'browser/
|
26
|
-
require 'browser/
|
27
|
-
require 'browser/
|
28
|
-
require 'browser/
|
29
|
-
|
30
|
-
module Browser
|
1
|
+
require 'browser/event/base'
|
2
|
+
require 'browser/event/ui'
|
3
|
+
require 'browser/event/mouse'
|
4
|
+
require 'browser/event/keyboard'
|
5
|
+
require 'browser/event/focus'
|
6
|
+
require 'browser/event/wheel'
|
7
|
+
require 'browser/event/composition'
|
8
|
+
require 'browser/event/animation'
|
9
|
+
require 'browser/event/audio_processing'
|
10
|
+
require 'browser/event/before_unload'
|
11
|
+
require 'browser/event/composition'
|
12
|
+
require 'browser/event/clipboard'
|
13
|
+
require 'browser/event/device_light'
|
14
|
+
require 'browser/event/device_motion'
|
15
|
+
require 'browser/event/device_orientation'
|
16
|
+
require 'browser/event/device_proximity'
|
17
|
+
require 'browser/event/drag'
|
18
|
+
require 'browser/event/gamepad'
|
19
|
+
require 'browser/event/hash_change'
|
20
|
+
require 'browser/event/progress'
|
21
|
+
require 'browser/event/page_transition'
|
22
|
+
require 'browser/event/pop_state'
|
23
|
+
require 'browser/event/storage'
|
24
|
+
require 'browser/event/touch'
|
25
|
+
require 'browser/event/sensor'
|
26
|
+
require 'browser/event/custom'
|
27
|
+
require 'browser/event/message'
|
28
|
+
require 'browser/event/close'
|
29
|
+
|
30
|
+
module Browser
|
31
31
|
|
32
32
|
class Event
|
33
33
|
def self.aliases
|
@@ -42,7 +42,7 @@ class Event
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def self.class_for(name)
|
45
|
-
|
45
|
+
case name_for(name)
|
46
46
|
when 'animationend', 'animationiteration', 'animationstart'
|
47
47
|
Animation
|
48
48
|
|
@@ -250,4 +250,4 @@ class Event
|
|
250
250
|
end
|
251
251
|
end
|
252
252
|
|
253
|
-
end
|
253
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
|
-
module Browser
|
1
|
+
module Browser
|
2
2
|
|
3
3
|
class Event
|
4
4
|
include Native
|
5
5
|
|
6
|
+
# @see https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
|
6
7
|
class Definition
|
7
8
|
include Native
|
8
9
|
|
10
|
+
# @private
|
9
11
|
def self.new(&block)
|
10
12
|
data = super(`{ bubbles: true, cancelable: true }`)
|
11
13
|
block.call(data) if block
|
@@ -13,10 +15,12 @@ class Event
|
|
13
15
|
data.to_n
|
14
16
|
end
|
15
17
|
|
18
|
+
# Set the event as bubbling.
|
16
19
|
def bubbles=(value)
|
17
20
|
`#@native.bubbles = #{value}`
|
18
21
|
end
|
19
22
|
|
23
|
+
# Set the event as cancelable.
|
20
24
|
def cancelable=(value)
|
21
25
|
`#@native.cancelable = #{value}`
|
22
26
|
end
|
@@ -49,7 +53,7 @@ class Event
|
|
49
53
|
def self.included(klass)
|
50
54
|
klass.instance_eval {
|
51
55
|
def self.target(&block)
|
52
|
-
|
56
|
+
Event::Target.register(&block)
|
53
57
|
end
|
54
58
|
}
|
55
59
|
end
|
@@ -57,6 +61,7 @@ class Event
|
|
57
61
|
class Callback
|
58
62
|
attr_reader :target, :name, :selector
|
59
63
|
|
64
|
+
# @private
|
60
65
|
def initialize(target, name, selector = nil, &block)
|
61
66
|
@target = target
|
62
67
|
@name = name
|
@@ -64,10 +69,14 @@ class Event
|
|
64
69
|
@block = block
|
65
70
|
end
|
66
71
|
|
67
|
-
|
68
|
-
|
72
|
+
# Call the callback with the given event.
|
73
|
+
#
|
74
|
+
# @param event [native] the native event object
|
75
|
+
def call(event)
|
76
|
+
to_proc.call(event)
|
69
77
|
end
|
70
78
|
|
79
|
+
# Get the native function linked to the callback.
|
71
80
|
def to_proc
|
72
81
|
@proc ||= -> event {
|
73
82
|
%x{
|
@@ -86,10 +95,13 @@ class Event
|
|
86
95
|
}
|
87
96
|
end
|
88
97
|
|
98
|
+
# @!attribute [r] event
|
99
|
+
# @return [Class] the class for the event
|
89
100
|
def event
|
90
101
|
Event.class_for(@name)
|
91
102
|
end
|
92
103
|
|
104
|
+
# Stop listening for the event linked to the callback.
|
93
105
|
def off
|
94
106
|
target.off(self)
|
95
107
|
end
|
@@ -102,6 +114,7 @@ class Event
|
|
102
114
|
@pair = pair
|
103
115
|
end
|
104
116
|
|
117
|
+
# Stop listening for the event linked to the delegate.
|
105
118
|
def off
|
106
119
|
delegate = @target.delegated[@name]
|
107
120
|
delegate.last.delete(@pair)
|
@@ -115,6 +128,26 @@ class Event
|
|
115
128
|
|
116
129
|
Delegates = Struct.new(:callback, :handlers)
|
117
130
|
|
131
|
+
# @overload on(name, &block)
|
132
|
+
#
|
133
|
+
# Start listening for an event on the target.
|
134
|
+
#
|
135
|
+
# @param name [String] the event name
|
136
|
+
#
|
137
|
+
# @yieldparam event [Event] the event
|
138
|
+
#
|
139
|
+
# @return [Callback]
|
140
|
+
#
|
141
|
+
# @overload on(name, selector, &block)
|
142
|
+
#
|
143
|
+
# Start listening for an event on the target children.
|
144
|
+
#
|
145
|
+
# @param name [String] the event name
|
146
|
+
# @param selector [String] the CSS selector to trigger the event on
|
147
|
+
#
|
148
|
+
# @yieldparam event [Event] the event
|
149
|
+
#
|
150
|
+
# @return [Delegate]
|
118
151
|
def on(name, selector = nil, &block)
|
119
152
|
raise ArgumentError, 'no block has been given' unless block
|
120
153
|
|
@@ -152,6 +185,13 @@ class Event
|
|
152
185
|
end
|
153
186
|
end
|
154
187
|
|
188
|
+
# Start listening for an event in the capturing phase.
|
189
|
+
#
|
190
|
+
# @param name [String] the event name
|
191
|
+
#
|
192
|
+
# @yieldparam event [Event] the event
|
193
|
+
#
|
194
|
+
# @return [Callback]
|
155
195
|
def on!(name, &block)
|
156
196
|
raise ArgumentError, 'no block has been given' unless block
|
157
197
|
|
@@ -230,6 +270,13 @@ class Event
|
|
230
270
|
end
|
231
271
|
end
|
232
272
|
|
273
|
+
# @overload off()
|
274
|
+
# Stop listening for any event.
|
275
|
+
#
|
276
|
+
# @overload off(what)
|
277
|
+
# Stop listening for an event.
|
278
|
+
#
|
279
|
+
# @param what [Callback, String, Regexp] what to stop listening for
|
233
280
|
def off(what = nil)
|
234
281
|
case what
|
235
282
|
when Callback
|
@@ -295,6 +342,12 @@ class Event
|
|
295
342
|
end
|
296
343
|
end
|
297
344
|
|
345
|
+
# Trigger an event on the target.
|
346
|
+
#
|
347
|
+
# @param name [String] the event name
|
348
|
+
# @param args [Array] optional arguments to the event callback
|
349
|
+
#
|
350
|
+
# @yieldparam definition [Definition] definition to customize the event
|
298
351
|
def trigger(event, *args, &block)
|
299
352
|
if event.is_a? String
|
300
353
|
event = Event.create(event, *args, &block)
|
@@ -303,7 +356,12 @@ class Event
|
|
303
356
|
dispatch(event)
|
304
357
|
end
|
305
358
|
|
306
|
-
# Trigger
|
359
|
+
# Trigger an event on the target without bubbling.
|
360
|
+
#
|
361
|
+
# @param name [String] the event name
|
362
|
+
# @param args [Array] optional arguments to the event callback
|
363
|
+
#
|
364
|
+
# @yieldparam definition [Definition] definition to customize the event
|
307
365
|
def trigger!(event, *args, &block)
|
308
366
|
trigger event, *args do |e|
|
309
367
|
block.call(e) if block
|
@@ -356,7 +414,7 @@ class Event
|
|
356
414
|
return if element.nil? || element == event.on
|
357
415
|
|
358
416
|
delegates.handlers.each {|selector, block|
|
359
|
-
if element
|
417
|
+
if element =~ selector
|
360
418
|
new = event.dup
|
361
419
|
new.on = element
|
362
420
|
|
@@ -369,4 +427,4 @@ class Event
|
|
369
427
|
end
|
370
428
|
end
|
371
429
|
|
372
|
-
end
|
430
|
+
end
|