atome 0.5.1.4 → 0.5.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +23 -2
- data/lib/atome/atome.rb +40 -18
- data/lib/atome/extensions/atome.rb +5 -26
- data/lib/atome/extensions/geolocation.rb +0 -1
- data/lib/atome/extensions/matrix.rb +171 -0
- data/lib/atome/extensions/ping.rb +9 -11
- data/lib/atome/genesis/generators/atome.rb +14 -2
- data/lib/atome/genesis/generators/communication.rb +1 -1
- data/lib/atome/genesis/generators/event.rb +36 -0
- data/lib/atome/genesis/generators/identity.rb +28 -2
- data/lib/atome/genesis/generators/material.rb +21 -0
- data/lib/atome/genesis/generators/spatial.rb +1 -0
- data/lib/atome/genesis/generators/utility.rb +20 -2
- data/lib/atome/genesis/genesis.rb +2 -2
- data/lib/atome/genesis/sparkle.rb +1 -1
- data/lib/atome/helpers/callbacks.rb +76 -0
- data/lib/atome/helpers/essentials.rb +10 -5
- data/lib/atome/helpers/utilities.rb +52 -8
- data/lib/atome/kernel/universe.rb +0 -4
- data/lib/atome/presets/atome.rb +12 -8
- data/lib/atome/renderers/browser/atome.rb +8 -19
- data/lib/atome/renderers/browser/browser.rb +15 -210
- data/lib/atome/renderers/browser/effect.rb +2 -2
- data/lib/atome/renderers/browser/event.rb +49 -11
- data/lib/atome/renderers/browser/geometry.rb +2 -2
- data/lib/atome/renderers/browser/helpers/animation_helper.rb +69 -0
- data/lib/atome/renderers/browser/helpers/browser_helper.rb +17 -0
- data/lib/atome/renderers/browser/helpers/color_helper.rb +33 -0
- data/lib/atome/renderers/browser/helpers/drag_helper.rb +39 -0
- data/lib/atome/renderers/browser/helpers/effect_helper.rb +26 -0
- data/lib/atome/renderers/browser/helpers/event_helper.rb +59 -0
- data/lib/atome/renderers/browser/helpers/image_helper.rb +27 -0
- data/lib/atome/renderers/browser/helpers/shadow_helper.rb +33 -0
- data/lib/atome/renderers/browser/helpers/shape_helper.rb +22 -0
- data/lib/atome/renderers/browser/helpers/text_helper.rb +26 -0
- data/lib/atome/renderers/browser/helpers/video_helper.rb +43 -0
- data/lib/atome/renderers/browser/helpers/web_helper.rb +30 -0
- data/lib/atome/renderers/browser/identity.rb +10 -3
- data/lib/atome/renderers/browser/material.rb +28 -5
- data/lib/atome/renderers/browser/spatial.rb +36 -5
- data/lib/atome/renderers/browser/utility.rb +21 -12
- data/lib/atome/renderers/headless/utility.rb +2 -2
- data/lib/atome/renderers/html/atome.rb +5 -5
- data/lib/atome/renderers/html/effect.rb +1 -1
- data/lib/atome/renderers/html/event.rb +1 -1
- data/lib/atome/renderers/html/geometry.rb +2 -2
- data/lib/atome/renderers/html/html.rb +1 -1
- data/lib/atome/renderers/html/identity.rb +2 -2
- data/lib/atome/renderers/html/spatial.rb +5 -5
- data/lib/atome/renderers/html/utility.rb +7 -7
- data/lib/atome/renderers/server/utility.rb +2 -2
- data/lib/atome/version.rb +1 -1
- data/lib/atome.rb +6 -4
- data/sig/atome.rbs +1 -0
- data/sig/atome_js.rbs +1 -0
- data/vendor/assets/build/css/style.css +25 -17
- data/vendor/assets/build/index.html +12 -3
- data/vendor/assets/build/js/atome/atome.js +150 -145
- data/vendor/assets/build/js/atome/atome_helpers/atome_animate.js +65 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_drag.js +85 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_file.js +7 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_sort.js +20 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_time.js +10 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_video.js +12 -0
- data/vendor/assets/build/js/third_parties/popmotion.min.js +1 -1
- data/vendor/assets/build/js/third_parties/sortable.min.js +2 -0
- data/vendor/assets/build/js/third_parties/wad.min.js +9 -0
- data/vendor/assets/build/medias/audios/Binrpilot.mp3 +0 -0
- data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +45 -0
- data/vendor/assets/build/medias/rubies/examples/_audio.rb +178 -0
- data/vendor/assets/build/medias/rubies/examples/_dataset.rb +82 -0
- data/vendor/assets/build/medias/rubies/examples/_markers.rb +57 -0
- data/vendor/assets/build/medias/rubies/examples/_os.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/_vie.rb +211 -0
- data/vendor/assets/build/medias/rubies/examples/animation.rb +81 -0
- data/vendor/assets/build/medias/rubies/examples/at.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/{atome.new.rb → atome_new.rb} +5 -5
- data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/center.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/clone.rb +20 -0
- data/vendor/assets/build/medias/rubies/examples/color.rb +20 -15
- data/vendor/assets/build/medias/rubies/examples/cursor.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/delete.rb +25 -3
- data/vendor/assets/build/medias/rubies/examples/drag.rb +39 -0
- data/vendor/assets/build/medias/rubies/examples/edit.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/empty_atome.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/hide.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/matrix.rb +58 -0
- data/vendor/assets/build/medias/rubies/examples/monitoring.rb +22 -11
- data/vendor/assets/build/medias/rubies/examples/mute.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/on.rb +7 -1
- data/vendor/assets/build/medias/rubies/examples/{parent.rb → parents.rb} +6 -6
- data/vendor/assets/build/medias/rubies/examples/pause.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/play.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/read.rb +7 -4
- data/vendor/assets/build/medias/rubies/examples/remove.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/right.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/schedule.rb +2 -2
- data/vendor/assets/build/medias/rubies/examples/shadow.rb +8 -1
- data/vendor/assets/build/medias/rubies/examples/sort.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/style.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/time.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/touch.rb +50 -7
- data/vendor/assets/build/medias/texts/lorem.txt +1 -0
- metadata +50 -7
- data/lib/atome/processors/utilities.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/_animation.rb +0 -0
- data/vendor/assets/build/medias/rubies/examples/_drag.rb +0 -44
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
# callbacks methods here
|
4
4
|
class Atome
|
5
|
+
private
|
6
|
+
|
7
|
+
attr_accessor :drag_start_proc, :drag_move_proc, :drag_end_proc,
|
8
|
+
:play_start_proc, :play_active_proc, :play_end_proc,
|
9
|
+
:animation_start_proc, :animation_active_proc, :animation_stop_proc
|
10
|
+
|
11
|
+
public
|
12
|
+
|
5
13
|
def schedule_callback(proc)
|
6
14
|
instance_exec(&proc) if proc.is_a?(Proc)
|
7
15
|
end
|
@@ -9,4 +17,72 @@ class Atome
|
|
9
17
|
def read_callback(file, proc)
|
10
18
|
instance_exec(file, &proc) if proc.is_a?(Proc)
|
11
19
|
end
|
20
|
+
|
21
|
+
def time_callback(current_time)
|
22
|
+
# puts "time_callback = #{current_time.round(1)}\n#{current_time}"
|
23
|
+
@atome[:time] = current_time
|
24
|
+
# the line below is used only to set up a one shot event
|
25
|
+
# return unless @at_time[:time] && (current_time > @at_time[:time] && @at_time[:used].nil?)
|
26
|
+
|
27
|
+
return unless @at_time[:time] && (current_time > @at_time[:time])
|
28
|
+
proc = @at_time[:code]
|
29
|
+
instance_exec(current_time, &proc) if proc.is_a?(Proc)
|
30
|
+
# @at_time[:used] = true
|
31
|
+
end
|
32
|
+
|
33
|
+
def drag_start_callback(page_x, page_y, left_val, top_val)
|
34
|
+
@atome[:left] = left_val
|
35
|
+
@atome[:top] = top_val
|
36
|
+
proc = @drag_start_proc
|
37
|
+
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
38
|
+
end
|
39
|
+
|
40
|
+
def drag_move_callback(page_x, page_y, left_val, top_val)
|
41
|
+
proc = @drag_move_proc
|
42
|
+
@atome[:left] = left_val
|
43
|
+
@atome[:top] = top_val
|
44
|
+
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
45
|
+
end
|
46
|
+
|
47
|
+
def drag_end_callback(page_x, page_y, left_val, top_val)
|
48
|
+
@atome[:left] = left_val
|
49
|
+
@atome[:top] = top_val
|
50
|
+
proc = @drag_end_proc
|
51
|
+
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
52
|
+
end
|
53
|
+
|
54
|
+
# sort callbacks
|
55
|
+
def sort_callback(atome)
|
56
|
+
sort_proc = @sort_proc
|
57
|
+
instance_exec(atome, &sort_proc) if sort_proc.is_a?(Proc)
|
58
|
+
end
|
59
|
+
|
60
|
+
# animation
|
61
|
+
def browser_animate_callback(particle_found, value, animation_hash, original_particle, animation_atome)
|
62
|
+
anim_proc = animation_hash[:code]
|
63
|
+
# we exec the callback bloc from :animate
|
64
|
+
instance_exec({ original_particle => value }, &anim_proc) if anim_proc.is_a?(Proc)
|
65
|
+
# we exec the callback bloc from :play
|
66
|
+
play_proc = animation_atome.play_active_proc
|
67
|
+
instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
|
68
|
+
# we animate:
|
69
|
+
browser_object.style[particle_found] = value if browser_object
|
70
|
+
# we update the atome property
|
71
|
+
@atome[original_particle] = value
|
72
|
+
end
|
73
|
+
|
74
|
+
def play_start_callback(_particle_found, _start_value, animation_hash, original_particle, atome_found)
|
75
|
+
value = animation_hash[:begin][original_particle]
|
76
|
+
value = atome_found.atome[original_particle] if value == :self
|
77
|
+
start_proc = @animation_start_proc
|
78
|
+
@atome[original_particle] = value
|
79
|
+
instance_exec({ original_particle => value }, &start_proc) if start_proc.is_a?(Proc)
|
80
|
+
end
|
81
|
+
|
82
|
+
def play_stop_callback(_particle_found, _end_value, animation_hash, original_particle, _atome_found)
|
83
|
+
value = animation_hash[:end][original_particle]
|
84
|
+
end_proc = @animation_stop_proc
|
85
|
+
@atome[original_particle] = value
|
86
|
+
instance_exec({ original_particle => value }, &end_proc) if end_proc.is_a?(Proc)
|
87
|
+
end
|
12
88
|
end
|
@@ -4,15 +4,20 @@
|
|
4
4
|
module Essentials
|
5
5
|
@default_params = {
|
6
6
|
render_engines: [:browser],
|
7
|
+
animation: { type: :animation },
|
7
8
|
element: { type: :element, renderers: [] },
|
8
|
-
box: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99
|
9
|
+
box: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99,
|
10
|
+
color: { left: 0, top: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
11
|
+
left: 100, top: 100 },
|
9
12
|
circle: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99,
|
10
|
-
|
13
|
+
color: { left: 0, top: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
14
|
+
left: 100, top: 100, smooth: '100%' },
|
11
15
|
shape: { renderers: '', id: '', width: 100, type: :shape, height: 100, left: 100, top: 100,
|
12
|
-
color: { left: 0, top: 0,
|
16
|
+
color: { left: 0, top: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
13
17
|
generator: :manual },
|
14
|
-
text: { type: :text, parents: [:view], children: [], visual: { size: 25 },
|
15
|
-
|
18
|
+
text: { renderers: '', id: '',type: :text, parents: [:view], children: [], visual: { size: 25 },
|
19
|
+
color: { left: 0, top: 0, red: 0.3, green: 0.3, blue: 0.3, alpha: 1, diffusion: :linear },
|
20
|
+
data: 'this is a text sample', width: 199, height: 33 },
|
16
21
|
drm: { type: :drm },
|
17
22
|
shadow: {}
|
18
23
|
}
|
@@ -24,22 +24,66 @@ class Atome
|
|
24
24
|
{ date: Time.now, location: geolocation }
|
25
25
|
end
|
26
26
|
|
27
|
-
def broadcasting(element, value)
|
28
|
-
return unless @broadcast[:particles]&.include?(element)
|
29
|
-
|
30
|
-
bloc_found = @broadcast[:bloc]
|
31
|
-
instance_exec(self, element, value, &bloc_found) if bloc_found.is_a?(Proc)
|
32
|
-
end
|
33
|
-
|
34
27
|
def history(property, value)
|
35
28
|
"historize : #{property} #{value}"
|
36
29
|
end
|
37
30
|
|
31
|
+
# def broadcasting(modified_particle, value)
|
32
|
+
# @broadcast.each_value do |particle_monitored|
|
33
|
+
# if particle_monitored[modified_particle]
|
34
|
+
# code_found = particle_monitored[modified_particle]
|
35
|
+
# instance_exec(self, modified_particle, value, &code_found) if code_found.is_a?(Proc)
|
36
|
+
# end
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# public
|
41
|
+
#
|
42
|
+
# def monitor(params, &proc_monitoring)
|
43
|
+
# atome[:monitor] ||= {}
|
44
|
+
# params[:atomes].each do |atome_id|
|
45
|
+
# target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
|
46
|
+
# monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
|
47
|
+
# atome[:monitor] [monitor_id]=params.merge({code: proc_monitoring})
|
48
|
+
# params[:particles].each do |targeted_particle|
|
49
|
+
# target_broadcaster[monitor_id] = { targeted_particle => proc_monitoring }
|
50
|
+
# end
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
|
54
|
+
def broadcasting(altered_particle, value)
|
55
|
+
@broadcast.each_value do |particle_monitored|
|
56
|
+
if particle_monitored[:particles].include?(altered_particle)
|
57
|
+
code_found=particle_monitored[:code]
|
58
|
+
instance_exec(self, altered_particle, value, &code_found) if code_found.is_a?(Proc)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
38
63
|
public
|
39
64
|
|
40
65
|
def monitor(params, &proc_monitoring)
|
66
|
+
atome[:monitor] ||= {}
|
41
67
|
params[:atomes].each do |atome_id|
|
42
|
-
grab(atome_id).
|
68
|
+
target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
|
69
|
+
monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
|
70
|
+
atome[:monitor] [monitor_id]=params.merge({code: proc_monitoring})
|
71
|
+
target_broadcaster[monitor_id] = { particles: params[:particles], code: proc_monitoring }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
def store_code_bloc(element, &user_proc)
|
75
|
+
Object.attr_accessor "#{element}_code"
|
76
|
+
|
77
|
+
instance_variable_set("@#{element}_code", user_proc)
|
78
|
+
end
|
79
|
+
|
80
|
+
def particles(particles_found = nil)
|
81
|
+
if particles_found
|
82
|
+
particles_found.each do |particle_found, value_found|
|
83
|
+
atome[particle_found] = value_found
|
84
|
+
end
|
85
|
+
else
|
86
|
+
atome
|
43
87
|
end
|
44
88
|
end
|
45
89
|
|
@@ -58,10 +58,6 @@ class Universe
|
|
58
58
|
# and finally the object is 3 as this the third object created by the main server
|
59
59
|
end
|
60
60
|
|
61
|
-
# def change_atome_id(prev_id, new_id)
|
62
|
-
# @atomes[new_id] = @atomes.delete(prev_id)
|
63
|
-
# end
|
64
|
-
|
65
61
|
def delete(id)
|
66
62
|
@atomes.delete(id)
|
67
63
|
end
|
data/lib/atome/presets/atome.rb
CHANGED
@@ -8,9 +8,10 @@
|
|
8
8
|
# shaper creation
|
9
9
|
class Atome
|
10
10
|
def atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
11
|
-
temp_default = Essentials.default_params[atome_type]
|
11
|
+
temp_default = Essentials.default_params[atome_type] || {}
|
12
12
|
temp_default[:id] = generated_id
|
13
13
|
temp_default[:parents] = generated_parents
|
14
|
+
temp_default[:clones] = []
|
14
15
|
temp_default[:renderers] = generated_render
|
15
16
|
temp_default.merge(params)
|
16
17
|
end
|
@@ -22,8 +23,6 @@ class Atome
|
|
22
23
|
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
23
24
|
generated_parents = params[:parents] || [id.value]
|
24
25
|
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
25
|
-
color_generated = sanitize(:color, { parents: [generated_id], red: 0.3, green: 0.3, blue: 0.3 })
|
26
|
-
params[:color] = color_generated
|
27
26
|
Atome.new({ atome_type => params }, &bloc)
|
28
27
|
end
|
29
28
|
|
@@ -34,14 +33,11 @@ class Atome
|
|
34
33
|
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
35
34
|
generated_parents = params[:parents] || [id.value]
|
36
35
|
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
37
|
-
color_generated = sanitize(:color, { parents: [generated_id], red: 0.6, green: 0.6, blue: 0.6 })
|
38
|
-
params[:color] = color_generated
|
39
36
|
Atome.new({ atome_type => params }, &bloc)
|
40
37
|
end
|
41
38
|
|
42
39
|
def image(params = {}, &bloc)
|
43
40
|
default_renderer = Essentials.default_params[:render_engines]
|
44
|
-
|
45
41
|
generated_id = params[:id] || "image_#{Universe.atomes.length}"
|
46
42
|
generated_render = params[:renderers] || default_renderer
|
47
43
|
generated_parents = params[:parents] || id.value
|
@@ -59,8 +55,6 @@ class Atome
|
|
59
55
|
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
60
56
|
generated_parents = params[:parents] || [id.value]
|
61
57
|
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
62
|
-
color_generated = sanitize(:color, { parents: [generated_id], red: 0.9, green: 0.9, blue: 0.9 })
|
63
|
-
params[:color] = color_generated
|
64
58
|
Atome.new({ atome_type => params }, &bloc)
|
65
59
|
end
|
66
60
|
|
@@ -85,4 +79,14 @@ class Atome
|
|
85
79
|
params = temp_default.merge(params)
|
86
80
|
Atome.new({ image: params }, &bloc)
|
87
81
|
end
|
82
|
+
|
83
|
+
def animation(params = {}, &bloc)
|
84
|
+
default_renderer = Essentials.default_params[:render_engines]
|
85
|
+
atome_type = :animation
|
86
|
+
generated_render = params[:renderers] || default_renderer
|
87
|
+
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
88
|
+
generated_parents = params[:parents] || []
|
89
|
+
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
90
|
+
Atome.new({ atome_type => params }, &bloc)
|
91
|
+
end
|
88
92
|
end
|
@@ -10,18 +10,16 @@ def parents(_val) end
|
|
10
10
|
|
11
11
|
generator = Genesis.generator
|
12
12
|
|
13
|
-
generator.
|
13
|
+
generator.build_render(:browser_shape) do
|
14
14
|
@browser_type = :div
|
15
15
|
id_found = @atome[:id]
|
16
16
|
DOM do
|
17
17
|
div(id: id_found).atome
|
18
18
|
end.append_to(BrowserHelper.browser_document[:user_view])
|
19
19
|
@browser_object = BrowserHelper.browser_document[id_found]
|
20
|
-
# Render particles below
|
21
|
-
# collapse
|
22
20
|
end
|
23
21
|
|
24
|
-
generator.
|
22
|
+
generator.build_render(:browser_color) do |_value|
|
25
23
|
@browser_type = :style
|
26
24
|
id_found = @atome[:id]
|
27
25
|
type_found = @atome[:type]
|
@@ -36,13 +34,9 @@ generator.build_render_method(:browser_color) do |_value|
|
|
36
34
|
#{green_found * 255},#{blue_found * 255},#{alpha_found})}</style>")
|
37
35
|
# TODO/ use the code below to modify the style tag
|
38
36
|
@browser_object = BrowserHelper.browser_document[id_found]
|
39
|
-
# now we just have to attach the color atome
|
40
|
-
# parents(@atome[:parents])
|
41
|
-
# children(@atome[:children])
|
42
|
-
# collapse
|
43
37
|
end
|
44
38
|
|
45
|
-
generator.
|
39
|
+
generator.build_render(:browser_shadow) do |_value|
|
46
40
|
@browser_type = :style
|
47
41
|
id_found = @atome[:id]
|
48
42
|
type_found = @atome[:type]
|
@@ -64,29 +58,25 @@ generator.build_render_method(:browser_shadow) do |_value|
|
|
64
58
|
@browser_object = BrowserHelper.browser_document[id_found]
|
65
59
|
end
|
66
60
|
|
67
|
-
generator.
|
61
|
+
generator.build_render(:browser_image) do |_user_prc|
|
68
62
|
@browser_type = :div
|
69
63
|
id_found = @atome[:id]
|
70
64
|
DOM do
|
71
65
|
img({ id: id_found }).atome
|
72
66
|
end.append_to(BrowserHelper.browser_document[:user_view])
|
73
67
|
@browser_object = BrowserHelper.browser_document[id_found]
|
74
|
-
# Render particles below
|
75
|
-
# collapse
|
76
68
|
end
|
77
69
|
|
78
|
-
generator.
|
70
|
+
generator.build_render(:browser_text) do |_value, _user_proc|
|
79
71
|
id_found = @atome[:id]
|
80
72
|
DOM do
|
81
73
|
div(id: id_found).atome.text
|
82
74
|
end.append_to(BrowserHelper.browser_document[:user_view])
|
83
75
|
@browser_object = BrowserHelper.browser_document[id_found]
|
84
76
|
@browser_type = :div
|
85
|
-
# Render particles below
|
86
|
-
# collapse
|
87
77
|
end
|
88
78
|
|
89
|
-
generator.
|
79
|
+
generator.build_render(:browser_web) do
|
90
80
|
@browser_type = :web
|
91
81
|
id_found = @atome[:id]
|
92
82
|
DOM do
|
@@ -95,14 +85,13 @@ generator.build_render_method(:browser_web) do
|
|
95
85
|
@browser_object = BrowserHelper.browser_document[id_found]
|
96
86
|
@browser_object.attributes[:allow] = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
|
97
87
|
@browser_object.attributes[:allowfullscreen] = true
|
98
|
-
@html_type = :web
|
99
88
|
end
|
100
89
|
|
101
|
-
generator.
|
90
|
+
generator.build_render(:browser_video) do |_value, _user_proc|
|
102
91
|
@browser_type = :div
|
103
92
|
id_found = @atome[:id]
|
104
93
|
DOM do
|
105
|
-
video({ id: id_found, autoplay: false, loop: false, muted:
|
94
|
+
video({ id: id_found, autoplay: false, loop: false, muted: false }).atome
|
106
95
|
end.append_to(BrowserHelper.browser_document[:user_view])
|
107
96
|
@browser_object = BrowserHelper.browser_document[id_found]
|
108
97
|
end
|
@@ -8,218 +8,23 @@ require 'atome/renderers/browser/material'
|
|
8
8
|
require 'atome/renderers/browser/spatial'
|
9
9
|
require 'atome/renderers/browser/atome'
|
10
10
|
require 'atome/renderers/browser/utility'
|
11
|
+
require 'atome/renderers/browser/helpers/browser_helper'
|
12
|
+
require 'atome/renderers/browser/helpers/animation_helper'
|
13
|
+
require 'atome/renderers/browser/helpers/color_helper'
|
14
|
+
require 'atome/renderers/browser/helpers/drag_helper'
|
15
|
+
require 'atome/renderers/browser/helpers/effect_helper'
|
16
|
+
require 'atome/renderers/browser/helpers/event_helper'
|
17
|
+
require 'atome/renderers/browser/helpers/image_helper'
|
18
|
+
require 'atome/renderers/browser/helpers/shadow_helper'
|
19
|
+
require 'atome/renderers/browser/helpers/shape_helper'
|
20
|
+
require 'atome/renderers/browser/helpers/text_helper'
|
21
|
+
require 'atome/renderers/browser/helpers/video_helper'
|
22
|
+
require 'atome/renderers/browser/helpers/web_helper'
|
11
23
|
|
12
24
|
class Atome
|
13
|
-
attr_accessor
|
25
|
+
attr_accessor 'browser_object'
|
14
26
|
end
|
15
27
|
|
16
|
-
|
17
|
-
|
18
|
-
def self.browser_document
|
19
|
-
# Work because of the patched version of opal-browser(0.39)
|
20
|
-
Browser.window
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.browser_attach_div(parents, html_object, _atome)
|
24
|
-
html_object.append_to(browser_document[parents])
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.browser_attach_web(parents, html_object, _atome)
|
28
|
-
html_object.append_to(browser_document[parents])
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.browser_attach_style(parents, _html_object, atome)
|
32
|
-
browser_document[parents].add_class(atome[:id])
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.browser_blur_style(_browser_object, value, atome)
|
36
|
-
b_left = "#{atome[:left]}px"
|
37
|
-
b_top = "#{atome[:top]}px"
|
38
|
-
b_blur = "#{atome[:blur] = value}px"
|
39
|
-
b_red = atome[:red] * 255
|
40
|
-
b_green = atome[:green] * 255
|
41
|
-
b_blue = (atome[:blue]) * 255
|
42
|
-
b_direction = atome[:direction]
|
43
|
-
b_alpha = atome[:alpha]
|
44
|
-
|
45
|
-
shadow_updated = "#{b_left} #{b_top} #{b_blur} rgba(#{b_red}, #{b_green}, #{b_blue}, #{b_alpha}) #{b_direction}"
|
46
|
-
`document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.boxShadow = #{shadow_updated}`
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.browser_blur_div(browser_object, value, _atome)
|
50
|
-
browser_object.style[:filter] = "blur(#{value}px)"
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.browser_colorize_color(color_updated, atome)
|
54
|
-
`document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.backgroundColor = #{color_updated}`
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.browser_colorize_shadow(color_updated, atome)
|
58
|
-
left = atome[:left]
|
59
|
-
top = atome[:top]
|
60
|
-
blur = atome[:blur]
|
61
|
-
direction = atome[:direction]
|
62
|
-
shadow_updated = "#{left}px #{top}px #{blur}px #{color_updated} #{direction}"
|
63
|
-
`document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.boxShadow = #{shadow_updated}`
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.browser_left_shape(value, browser_object, _atome)
|
67
|
-
browser_object.style[:left] = "#{value}px"
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.browser_right_shape(value, browser_object, _atome)
|
71
|
-
browser_object.style[:right] = "#{value}px"
|
72
|
-
end
|
73
|
-
|
74
|
-
def self.browser_top_shape(value, browser_object, _atome)
|
75
|
-
browser_object.style[:top] = "#{value}px"
|
76
|
-
end
|
77
|
-
|
78
|
-
def self.browser_bottom_shape(value, browser_object, _atome)
|
79
|
-
browser_object.style[:bottom] = "#{value}px"
|
80
|
-
end
|
81
|
-
|
82
|
-
# image
|
83
|
-
def self.browser_left_image(value, browser_object, _atome)
|
84
|
-
browser_object.style[:left] = "#{value}px"
|
85
|
-
end
|
86
|
-
|
87
|
-
def self.browser_right_image(value, browser_object, _atome)
|
88
|
-
browser_object.style[:right] = "#{value}px"
|
89
|
-
end
|
90
|
-
|
91
|
-
def self.browser_top_image(value, browser_object, _atome)
|
92
|
-
browser_object.style[:top] = "#{value}px"
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.browser_bottom_image(value, browser_object, _atome)
|
96
|
-
browser_object.style[:bottom] = "#{value}px"
|
97
|
-
end
|
98
|
-
|
99
|
-
def self.browser_path_image(value, browser_object, _atome)
|
100
|
-
browser_object[:src] = value
|
101
|
-
end
|
102
|
-
|
103
|
-
# shadow
|
104
|
-
def self.browser_left_shadow(value, _browser_object, atome)
|
105
|
-
ls_left = "#{atome[:left] = value}px"
|
106
|
-
ls_top = "#{atome[:top]}px"
|
107
|
-
ls_blur = "#{atome[:blur]}px"
|
108
|
-
red = atome[:red] * 255
|
109
|
-
green = atome[:green] * 255
|
110
|
-
blue = (atome[:blue]) * 255
|
111
|
-
direction = atome[:direction]
|
112
|
-
alpha = atome[:alpha]
|
113
|
-
|
114
|
-
shadow_updated = "#{ls_left} #{ls_top} #{ls_blur} rgba(#{red}, #{green}, #{blue}, #{alpha}) #{direction}"
|
115
|
-
`document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.boxShadow = #{shadow_updated}`
|
116
|
-
end
|
117
|
-
|
118
|
-
def self.browser_top_shadow(value, _browser_object, atome)
|
119
|
-
rs_left = "#{atome[:left]}px"
|
120
|
-
rs_top = "#{atome[:top] = value}px"
|
121
|
-
rs_blur = "#{atome[:blur]}px"
|
122
|
-
red = atome[:red] * 255
|
123
|
-
green = atome[:green] * 255
|
124
|
-
blue = (atome[:blue]) * 255
|
125
|
-
direction = atome[:direction]
|
126
|
-
alpha = atome[:alpha]
|
127
|
-
|
128
|
-
shadow_updated = "#{rs_left}px #{rs_top}px #{rs_blur}px rgba(#{red}, #{green}, #{blue}, #{alpha}) #{direction}"
|
129
|
-
`document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.boxShadow = #{shadow_updated}`
|
130
|
-
end
|
131
|
-
|
132
|
-
def self.browser_left_color(_value, _browser_object, _atome)
|
133
|
-
puts 'code to write when implementing gradient'
|
134
|
-
end
|
135
|
-
|
136
|
-
def self.browser_right_color(_value, _browser_object, _atome)
|
137
|
-
puts 'code to write when implementing gradient'
|
138
|
-
end
|
139
|
-
|
140
|
-
def self.browser_top_color(_value, _browser_object, _atome)
|
141
|
-
puts 'code to write when implementing gradient'
|
142
|
-
end
|
143
|
-
|
144
|
-
def self.browser_bottom_color(_value, _browser_object, _atome)
|
145
|
-
puts 'code to write when implementing gradient'
|
146
|
-
end
|
147
|
-
|
148
|
-
# text
|
149
|
-
def self.browser_left_text(value, browser_object, _atome)
|
150
|
-
browser_object.style[:left] = "#{value}px"
|
151
|
-
end
|
152
|
-
|
153
|
-
def self.browser_right_text(value, browser_object, _atome)
|
154
|
-
browser_object.style[:right] = "#{value}px"
|
155
|
-
end
|
156
|
-
|
157
|
-
def self.browser_top_text(value, browser_object, _atome)
|
158
|
-
browser_object.style[:top] = "#{value}px"
|
159
|
-
end
|
160
|
-
|
161
|
-
def self.browser_bottom_text(value, browser_object, _atome)
|
162
|
-
browser_object.style[:bottom] = "#{value}px"
|
163
|
-
end
|
164
|
-
|
165
|
-
def self.browser_data_text(value)
|
166
|
-
browser_object.text = value
|
167
|
-
end
|
168
|
-
|
169
|
-
# web
|
170
|
-
def self.browser_left_web(value, browser_object, _atome)
|
171
|
-
browser_object.style[:left] = "#{value}px"
|
172
|
-
end
|
173
|
-
|
174
|
-
def self.browser_right_web(value, browser_object, _atome)
|
175
|
-
browser_object.style[:right] = "#{value}px"
|
176
|
-
end
|
177
|
-
|
178
|
-
def self.browser_top_web(value, browser_object, _atome)
|
179
|
-
browser_object.style[:top] = "#{value}px"
|
180
|
-
end
|
181
|
-
|
182
|
-
def self.browser_bottom_web(value, browser_object, _atome)
|
183
|
-
browser_object.style[:bottom] = "#{value}px"
|
184
|
-
end
|
185
|
-
|
186
|
-
def self.browser_path_web(value, browser_object, _atome)
|
187
|
-
browser_object[:src] = value
|
188
|
-
end
|
189
|
-
|
190
|
-
# video
|
191
|
-
def self.browser_left_video(value, browser_object, _atome)
|
192
|
-
browser_object.style[:left] = "#{value}px"
|
193
|
-
end
|
194
|
-
|
195
|
-
def self.browser_right_videob(value, browser_object, _atome)
|
196
|
-
browser_object.style[:right] = "#{value}px"
|
197
|
-
end
|
198
|
-
|
199
|
-
def self.browser_top_video(value, browser_object, _atome)
|
200
|
-
browser_object.style[:top] = "#{value}px"
|
201
|
-
end
|
202
|
-
|
203
|
-
def self.browser_bottom_video(value, browser_object, _atome)
|
204
|
-
browser_object.style[:bottom] = "#{value}px"
|
205
|
-
end
|
206
|
-
|
207
|
-
def self.browser_path_video(value, browser_object, _atome)
|
208
|
-
browser_object[:src] = value
|
209
|
-
end
|
210
|
-
|
211
|
-
def self.browser_play_video(_value, browser_object_found, atome_found, atome_object, proc)
|
212
|
-
browser_object_found.play
|
213
|
-
# TODO : change timeupdate for when possible requestVideoFrameCallback
|
214
|
-
# (opal-browser/opal/browser/event.rb line 36)
|
215
|
-
video_callback = atome_found[:code] # this is the video callback not the play callback
|
216
|
-
play_callback = proc # this is the video callback not the play callback
|
217
|
-
browser_object_found.on(:timeupdate) do |e|
|
218
|
-
e.prevent # Prevent the default action (eg. form submission)
|
219
|
-
# You can also use `e.stop` to stop propagating the event to other handlers.
|
220
|
-
current_time = browser_object_found.currentTime
|
221
|
-
atome_object.instance_exec(current_time, &video_callback) if video_callback.is_a?(Proc)
|
222
|
-
atome_object.instance_exec(current_time, &play_callback) if play_callback.is_a?(Proc)
|
223
|
-
end
|
224
|
-
end
|
28
|
+
def atome_js
|
29
|
+
`atomeJS`
|
225
30
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
generator = Genesis.generator
|
4
4
|
|
5
|
-
generator.
|
5
|
+
generator.build_render(:browser_smooth) do |value|
|
6
6
|
format_params = case value
|
7
7
|
when Array
|
8
8
|
properties = []
|
@@ -18,6 +18,6 @@ generator.build_render_method(:browser_smooth) do |value|
|
|
18
18
|
@browser_object.style['border-radius'] = format_params
|
19
19
|
end
|
20
20
|
|
21
|
-
generator.
|
21
|
+
generator.build_render(:browser_blur) do |value|
|
22
22
|
BrowserHelper.send("browser_blur_#{@browser_type}", @browser_object, value, @atome)
|
23
23
|
end
|
@@ -2,17 +2,20 @@
|
|
2
2
|
|
3
3
|
generator = Genesis.generator
|
4
4
|
|
5
|
-
generator.
|
6
|
-
@browser_object.
|
7
|
-
|
8
|
-
end
|
5
|
+
generator.build_render(:browser_touch) do |value, proc|
|
6
|
+
atome_id = @browser_object.attribute(:id)
|
7
|
+
BrowserHelper.send("browser_touch_#{value}", atome_id, proc)
|
8
|
+
# end
|
9
9
|
end
|
10
10
|
|
11
|
-
generator.
|
11
|
+
generator.build_render(:browser_play) do |value, proc|
|
12
|
+
# first we reinit the 'at' event so the condition will be met again
|
13
|
+
# @at_time[:used] = nil
|
14
|
+
@browser_object.currentTime = value if value != true
|
12
15
|
BrowserHelper.send("browser_play_#{@atome[:type]}", value, @browser_object, @atome, self, proc)
|
13
16
|
end
|
14
17
|
|
15
|
-
generator.
|
18
|
+
generator.build_render(:browser_time) do |value = nil, _proc|
|
16
19
|
if value
|
17
20
|
@browser_object.currentTime = value
|
18
21
|
else
|
@@ -20,18 +23,53 @@ generator.build_render_method(:browser_time) do |value = nil, _proc|
|
|
20
23
|
end
|
21
24
|
end
|
22
25
|
|
23
|
-
generator.
|
26
|
+
generator.build_render(:browser_pause) do |_value, proc|
|
24
27
|
instance_exec(@browser_object.currentTime, &proc) if proc.is_a?(Proc)
|
25
28
|
@browser_object.pause
|
26
29
|
end
|
27
30
|
|
28
|
-
generator.
|
31
|
+
generator.build_render(:on) do |value, proc|
|
29
32
|
@browser_object.on(value) do |e|
|
30
33
|
instance_exec(e, &proc) if proc.is_a?(Proc)
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
34
|
-
generator.
|
35
|
-
atome_id=atome[:id]
|
36
|
-
|
37
|
+
generator.build_render(:fullscreen) do |_value, _proc|
|
38
|
+
atome_id = atome[:id]
|
39
|
+
atome_js.JS.fullscreen(atome_id)
|
40
|
+
end
|
41
|
+
|
42
|
+
generator.build_render(:mute) do |value, _proc|
|
43
|
+
if value
|
44
|
+
browser_object.muted
|
45
|
+
else
|
46
|
+
browser_object.unmuted
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
generator.build_render(:browser_at) do |at, proc|
|
51
|
+
# @atime is check at each toick of frame in 'time_callback'
|
52
|
+
@at_time = { code: proc }.merge(at)
|
37
53
|
end
|
54
|
+
|
55
|
+
generator.build_render(:browser_drag) do |options, proc|
|
56
|
+
options.each do |method, params|
|
57
|
+
atome_id = @atome[:id]
|
58
|
+
BrowserHelper.send("browser_drag_#{method}", params, atome_id, self, proc)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
generator.build_render(:browser_sort) do |options, _proc|
|
63
|
+
atome_js.JS.sort(options, @atome[:id], self)
|
64
|
+
end
|
65
|
+
|
66
|
+
# TODO: for now unbind remove all touch event we should remove only the targeted one (store proc and restore it)
|
67
|
+
generator.build_render(:browser_unbind) do |options, _proc|
|
68
|
+
id_found = self.atome[:id]
|
69
|
+
`
|
70
|
+
const el = document.getElementById(#{id_found});
|
71
|
+
interact('#'+#{id_found}).unset(#{options});
|
72
|
+
`
|
73
|
+
end
|
74
|
+
|
75
|
+
|