opal-browser 0.2.0.beta1 → 0.2.0
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 +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
|