atome 0.5.1.9 → 0.5.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +22 -5
- data/lib/atome/atome.rb +46 -21
- 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 +32 -3
- data/lib/atome/genesis/generators/identity.rb +32 -0
- data/lib/atome/genesis/generators/material.rb +21 -0
- data/lib/atome/genesis/generators/spatial.rb +1 -0
- data/lib/atome/genesis/generators/time.rb +5 -0
- data/lib/atome/genesis/generators/utility.rb +20 -2
- data/lib/atome/genesis/genesis.rb +4 -4
- data/lib/atome/genesis/sparkle.rb +1 -1
- data/lib/atome/helpers/callbacks.rb +36 -29
- data/lib/atome/helpers/essentials.rb +5 -2
- data/lib/atome/helpers/utilities.rb +59 -10
- data/lib/atome/kernel/universe.rb +3 -7
- data/lib/atome/presets/atome.rb +11 -7
- data/lib/atome/renderers/browser/atome.rb +7 -7
- data/lib/atome/renderers/browser/browser.rb +6 -2
- data/lib/atome/renderers/browser/effect.rb +2 -2
- data/lib/atome/renderers/browser/event.rb +25 -19
- 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 +0 -1
- data/lib/atome/renderers/browser/helpers/color_helper.rb +0 -2
- data/lib/atome/renderers/browser/helpers/drag_helper.rb +6 -6
- data/lib/atome/renderers/browser/helpers/effect_helper.rb +1 -0
- data/lib/atome/renderers/browser/helpers/event_helper.rb +59 -0
- data/lib/atome/renderers/browser/helpers/video_helper.rb +10 -3
- 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/time.rb +3 -0
- data/lib/atome/renderers/browser/utility.rb +20 -11
- 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 +7 -3
- data/sig/atome.rbs +6 -0
- data/sig/atome_js.rbs +1 -0
- data/vendor/assets/build/css/style.css +23 -16
- data/vendor/assets/build/index.html +4 -2
- 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 +24 -2
- data/vendor/assets/build/medias/rubies/examples/_audio.rb +178 -0
- data/vendor/assets/build/medias/rubies/examples/_dataset.rb +80 -0
- data/vendor/assets/build/medias/rubies/examples/_os.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/_test.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/_vie.rb +211 -0
- data/vendor/assets/build/medias/rubies/examples/add.rb +25 -0
- data/vendor/assets/build/medias/rubies/examples/animation.rb +81 -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 +35 -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 +3 -2
- 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/markers.rb +48 -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/play.rb +1 -1
- 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/shadow.rb +8 -1
- data/vendor/assets/build/medias/rubies/examples/sort.rb +7 -4
- data/vendor/assets/build/medias/rubies/examples/style.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/touch.rb +50 -7
- data/vendor/assets/build/medias/texts/lorem.txt +1 -0
- metadata +28 -5
- data/vendor/assets/build/medias/rubies/examples/_animation.rb +0 -46
- data/vendor/assets/build/medias/rubies/examples/at.rb +0 -17
@@ -37,7 +37,7 @@ Atome.new(
|
|
37
37
|
Atome.new(
|
38
38
|
{ shape: { renderers: default_render, id: :view, type: :shape, parents: [:user_view], children: [],
|
39
39
|
left: 0, right: 0, top: 0, bottom: 0, overflow: :auto,
|
40
|
-
color: { renderers: default_render, id: :view_color, type: :color,
|
40
|
+
color: { renderers: default_render, id: :view_color, type: :color, attach: [:view],
|
41
41
|
red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } }
|
42
42
|
)
|
43
43
|
|
@@ -18,13 +18,15 @@ class Atome
|
|
18
18
|
instance_exec(file, &proc) if proc.is_a?(Proc)
|
19
19
|
end
|
20
20
|
|
21
|
-
def time_callback(current_time)
|
21
|
+
def time_callback(current_time, markers)
|
22
22
|
@atome[:time] = current_time
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
markers.each_value do |marker|
|
24
|
+
# check if the current time matches the time of the marker, thanks to chat GPT for the example
|
25
|
+
if current_time >= marker[:begin] && current_time < marker[:end]
|
26
|
+
code_found = marker[:code]
|
27
|
+
instance_exec(current_time, &code_found) if code_found.is_a?(Proc)
|
28
|
+
end
|
29
|
+
end
|
28
30
|
end
|
29
31
|
|
30
32
|
def drag_start_callback(page_x, page_y, left_val, top_val)
|
@@ -54,27 +56,32 @@ class Atome
|
|
54
56
|
instance_exec(atome, &sort_proc) if sort_proc.is_a?(Proc)
|
55
57
|
end
|
56
58
|
|
57
|
-
#
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
59
|
+
# animation
|
60
|
+
def browser_animate_callback(particle_found, value, animation_hash, original_particle, animation_atome)
|
61
|
+
anim_proc = animation_hash[:code]
|
62
|
+
# we exec the callback bloc from :animate
|
63
|
+
instance_exec({ original_particle => value }, &anim_proc) if anim_proc.is_a?(Proc)
|
64
|
+
# we exec the callback bloc from :play
|
65
|
+
play_proc = animation_atome.play_active_proc
|
66
|
+
instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
|
67
|
+
# we animate:
|
68
|
+
browser_object.style[particle_found] = value if browser_object
|
69
|
+
# we update the atome property
|
70
|
+
@atome[original_particle] = value
|
71
|
+
end
|
72
|
+
|
73
|
+
def play_start_callback(_particle_found, _start_value, animation_hash, original_particle, atome_found)
|
74
|
+
value = animation_hash[:begin][original_particle]
|
75
|
+
value = atome_found.atome[original_particle] if value == :self
|
76
|
+
start_proc = @animation_start_proc
|
77
|
+
@atome[original_particle] = value
|
78
|
+
instance_exec({ original_particle => value }, &start_proc) if start_proc.is_a?(Proc)
|
79
|
+
end
|
80
|
+
|
81
|
+
def play_stop_callback(_particle_found, _end_value, animation_hash, original_particle, _atome_found)
|
82
|
+
value = animation_hash[:end][original_particle]
|
83
|
+
end_proc = @animation_stop_proc
|
84
|
+
@atome[original_particle] = value
|
85
|
+
instance_exec({ original_particle => value }, &end_proc) if end_proc.is_a?(Proc)
|
86
|
+
end
|
80
87
|
end
|
@@ -7,13 +7,16 @@ module Essentials
|
|
7
7
|
animation: { type: :animation },
|
8
8
|
element: { type: :element, renderers: [] },
|
9
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 },
|
10
11
|
left: 100, top: 100 },
|
11
12
|
circle: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99,
|
13
|
+
color: { left: 0, top: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
12
14
|
left: 100, top: 100, smooth: '100%' },
|
13
15
|
shape: { renderers: '', id: '', width: 100, type: :shape, height: 100, left: 100, top: 100,
|
14
|
-
color: { left: 0, top: 0,
|
16
|
+
color: { left: 0, top: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
15
17
|
generator: :manual },
|
16
|
-
text: { type: :text, parents: [:view], children: [], visual: { size: 25 },
|
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 },
|
17
20
|
data: 'this is a text sample', width: 199, height: 33 },
|
18
21
|
drm: { type: :drm },
|
19
22
|
shadow: {}
|
@@ -24,22 +24,51 @@ 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(altered_particle, value)
|
32
|
+
@broadcast.each_value do |particle_monitored|
|
33
|
+
if particle_monitored[:particles].include?(altered_particle)
|
34
|
+
code_found=particle_monitored[:code]
|
35
|
+
instance_exec(self, altered_particle, value, &code_found) if code_found.is_a?(Proc)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
38
40
|
public
|
39
41
|
|
40
|
-
def monitor(params, &proc_monitoring)
|
41
|
-
params
|
42
|
-
|
42
|
+
def monitor(params=nil, &proc_monitoring)
|
43
|
+
if params
|
44
|
+
atome[:monitor] ||= {}
|
45
|
+
params[:atomes].each do |atome_id|
|
46
|
+
target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
|
47
|
+
monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
|
48
|
+
atome[:monitor] [monitor_id]=params.merge({code: proc_monitoring})
|
49
|
+
target_broadcaster[monitor_id] = { particles: params[:particles], code: proc_monitoring }
|
50
|
+
end
|
51
|
+
else
|
52
|
+
atome[:monitor]
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
def store_code_bloc(element, &user_proc)
|
58
|
+
# TODO : maybe we have to change tis code if we need multiple proc for an particle
|
59
|
+
Object.attr_accessor "#{element}_code"
|
60
|
+
|
61
|
+
instance_variable_set("@#{element}_code", user_proc)
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
def particles(particles_found = nil)
|
66
|
+
if particles_found
|
67
|
+
particles_found.each do |particle_found, value_found|
|
68
|
+
atome[particle_found] = value_found
|
69
|
+
end
|
70
|
+
else
|
71
|
+
atome
|
43
72
|
end
|
44
73
|
end
|
45
74
|
|
@@ -48,6 +77,26 @@ class Atome
|
|
48
77
|
real_atome[property] << value
|
49
78
|
end
|
50
79
|
|
80
|
+
def add_to_hash(particle, values, &user_proc)
|
81
|
+
# we update the holder of any new particle if user pass a bloc
|
82
|
+
store_code_bloc(particle, &user_proc) if user_proc
|
83
|
+
values.each do |value_id, value|
|
84
|
+
@atome[particle][value_id] = value
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def add_to_array(particle, value, &_user_proc)
|
89
|
+
# we update the holder of any new particle if user pass a bloc
|
90
|
+
@atome[particle] << value
|
91
|
+
end
|
92
|
+
|
93
|
+
def add(particles, &user_proc)
|
94
|
+
particles.each do |particle, value|
|
95
|
+
particle_type = Universe.particle_list[particle]
|
96
|
+
send("add_to_#{particle_type}", particle, value, &user_proc)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
51
100
|
def refresh
|
52
101
|
collapse
|
53
102
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
class Universe
|
5
5
|
@atomes = {}
|
6
6
|
@atome_list = []
|
7
|
-
@particle_list =
|
7
|
+
@particle_list = {}
|
8
8
|
@renderer_list = %i[html browser headless server]
|
9
9
|
@options = {}
|
10
10
|
@sanitizers = {}
|
@@ -12,8 +12,8 @@ class Universe
|
|
12
12
|
class << self
|
13
13
|
attr_reader :atomes, :renderer_list, :atome_list, :particle_list
|
14
14
|
|
15
|
-
def add_to_particle_list(particle = nil)
|
16
|
-
instance_variable_get('@particle_list')
|
15
|
+
def add_to_particle_list(particle = nil, type)
|
16
|
+
instance_variable_get('@particle_list')[particle]=type
|
17
17
|
end
|
18
18
|
|
19
19
|
def add_optional_method(method_name, &method_proc)
|
@@ -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
@@ -11,6 +11,7 @@ class Atome
|
|
11
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,7 +10,7 @@ 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
|
@@ -19,7 +19,7 @@ generator.build_render_method(:browser_shape) do
|
|
19
19
|
@browser_object = BrowserHelper.browser_document[id_found]
|
20
20
|
end
|
21
21
|
|
22
|
-
generator.
|
22
|
+
generator.build_render(:browser_color) do |_value|
|
23
23
|
@browser_type = :style
|
24
24
|
id_found = @atome[:id]
|
25
25
|
type_found = @atome[:type]
|
@@ -36,7 +36,7 @@ generator.build_render_method(:browser_color) do |_value|
|
|
36
36
|
@browser_object = BrowserHelper.browser_document[id_found]
|
37
37
|
end
|
38
38
|
|
39
|
-
generator.
|
39
|
+
generator.build_render(:browser_shadow) do |_value|
|
40
40
|
@browser_type = :style
|
41
41
|
id_found = @atome[:id]
|
42
42
|
type_found = @atome[:type]
|
@@ -58,7 +58,7 @@ generator.build_render_method(:browser_shadow) do |_value|
|
|
58
58
|
@browser_object = BrowserHelper.browser_document[id_found]
|
59
59
|
end
|
60
60
|
|
61
|
-
generator.
|
61
|
+
generator.build_render(:browser_image) do |_user_prc|
|
62
62
|
@browser_type = :div
|
63
63
|
id_found = @atome[:id]
|
64
64
|
DOM do
|
@@ -67,7 +67,7 @@ generator.build_render_method(:browser_image) do |_user_prc|
|
|
67
67
|
@browser_object = BrowserHelper.browser_document[id_found]
|
68
68
|
end
|
69
69
|
|
70
|
-
generator.
|
70
|
+
generator.build_render(:browser_text) do |_value, _user_proc|
|
71
71
|
id_found = @atome[:id]
|
72
72
|
DOM do
|
73
73
|
div(id: id_found).atome.text
|
@@ -76,7 +76,7 @@ generator.build_render_method(:browser_text) do |_value, _user_proc|
|
|
76
76
|
@browser_type = :div
|
77
77
|
end
|
78
78
|
|
79
|
-
generator.
|
79
|
+
generator.build_render(:browser_web) do
|
80
80
|
@browser_type = :web
|
81
81
|
id_found = @atome[:id]
|
82
82
|
DOM do
|
@@ -87,7 +87,7 @@ generator.build_render_method(:browser_web) do
|
|
87
87
|
@browser_object.attributes[:allowfullscreen] = true
|
88
88
|
end
|
89
89
|
|
90
|
-
generator.
|
90
|
+
generator.build_render(:browser_video) do |_value, _user_proc|
|
91
91
|
@browser_type = :div
|
92
92
|
id_found = @atome[:id]
|
93
93
|
DOM do
|
@@ -8,11 +8,13 @@ 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/time'
|
11
12
|
require 'atome/renderers/browser/helpers/browser_helper'
|
12
13
|
require 'atome/renderers/browser/helpers/animation_helper'
|
13
14
|
require 'atome/renderers/browser/helpers/color_helper'
|
14
15
|
require 'atome/renderers/browser/helpers/drag_helper'
|
15
16
|
require 'atome/renderers/browser/helpers/effect_helper'
|
17
|
+
require 'atome/renderers/browser/helpers/event_helper'
|
16
18
|
require 'atome/renderers/browser/helpers/image_helper'
|
17
19
|
require 'atome/renderers/browser/helpers/shadow_helper'
|
18
20
|
require 'atome/renderers/browser/helpers/shape_helper'
|
@@ -21,7 +23,9 @@ require 'atome/renderers/browser/helpers/video_helper'
|
|
21
23
|
require 'atome/renderers/browser/helpers/web_helper'
|
22
24
|
|
23
25
|
class Atome
|
24
|
-
attr_accessor
|
26
|
+
attr_accessor 'browser_object'
|
25
27
|
end
|
26
28
|
|
27
|
-
|
29
|
+
def atome_js
|
30
|
+
`atomeJS`
|
31
|
+
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,20 +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
12
|
# first we reinit the 'at' event so the condition will be met again
|
13
|
-
@at_time[:used] = nil
|
13
|
+
# @at_time[:used] = nil
|
14
14
|
@browser_object.currentTime = value if value != true
|
15
15
|
BrowserHelper.send("browser_play_#{@atome[:type]}", value, @browser_object, @atome, self, proc)
|
16
16
|
end
|
17
17
|
|
18
|
-
generator.
|
18
|
+
generator.build_render(:browser_time) do |value = nil, _proc|
|
19
19
|
if value
|
20
20
|
@browser_object.currentTime = value
|
21
21
|
else
|
@@ -23,23 +23,23 @@ generator.build_render_method(:browser_time) do |value = nil, _proc|
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
generator.
|
26
|
+
generator.build_render(:browser_pause) do |_value, proc|
|
27
27
|
instance_exec(@browser_object.currentTime, &proc) if proc.is_a?(Proc)
|
28
28
|
@browser_object.pause
|
29
29
|
end
|
30
30
|
|
31
|
-
generator.
|
31
|
+
generator.build_render(:on) do |value, proc|
|
32
32
|
@browser_object.on(value) do |e|
|
33
33
|
instance_exec(e, &proc) if proc.is_a?(Proc)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
generator.
|
37
|
+
generator.build_render(:fullscreen) do |_value, _proc|
|
38
38
|
atome_id = atome[:id]
|
39
|
-
|
39
|
+
atome_js.JS.fullscreen(atome_id)
|
40
40
|
end
|
41
41
|
|
42
|
-
generator.
|
42
|
+
generator.build_render(:mute) do |value, _proc|
|
43
43
|
if value
|
44
44
|
browser_object.muted
|
45
45
|
else
|
@@ -47,18 +47,24 @@ generator.build_render_method(:mute) do |value, _proc|
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
generator.
|
51
|
-
@at_time = { code: proc }.merge(at)
|
52
|
-
end
|
53
|
-
|
54
|
-
generator.build_render_method(:browser_drag) do |options, proc|
|
50
|
+
generator.build_render(:browser_drag) do |options, proc|
|
55
51
|
options.each do |method, params|
|
56
52
|
atome_id = @atome[:id]
|
57
53
|
BrowserHelper.send("browser_drag_#{method}", params, atome_id, self, proc)
|
58
54
|
end
|
59
55
|
end
|
60
56
|
|
61
|
-
generator.
|
62
|
-
|
57
|
+
generator.build_render(:browser_sort) do |options, _proc|
|
58
|
+
atome_js.JS.sort(options, @atome[:id], self)
|
63
59
|
end
|
64
60
|
|
61
|
+
# TODO: for now unbind remove all touch event we should remove only the targeted one (store proc and restore it)
|
62
|
+
generator.build_render(:browser_unbind) do |options, _proc|
|
63
|
+
id_found = self.atome[:id]
|
64
|
+
`
|
65
|
+
const el = document.getElementById(#{id_found});
|
66
|
+
interact('#'+#{id_found}).unset(#{options});
|
67
|
+
`
|
68
|
+
end
|
69
|
+
|
70
|
+
|
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
generator = Genesis.generator
|
4
4
|
|
5
|
-
generator.
|
5
|
+
generator.build_render(:browser_width) do |value|
|
6
6
|
@browser_object.style[:width] = "#{value}px"
|
7
7
|
end
|
8
8
|
|
9
|
-
generator.
|
9
|
+
generator.build_render(:browser_height) do |value|
|
10
10
|
@browser_object.style[:height] = "#{value}px"
|
11
11
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# for browser rendering
|
4
|
+
module BrowserHelper
|
5
|
+
def self.anim_convertor(value)
|
6
|
+
{ left: [:left, "#{value}px"], right: [:right, "#{value}px"], top: [:top, "#{value}px"],
|
7
|
+
bottom: [:bottom, "#{value}px"], smooth: ['border-radius', "#{value}px"],
|
8
|
+
left_add: ['transform', "translateX(#{value}px)"],
|
9
|
+
right_add: ['transform', "translateY(#{value}px)"],
|
10
|
+
width: [:width, "#{value}px"], height: [:height, "#{value}px"] }
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.anim_value_analysis(value, particle_found, atome_found)
|
14
|
+
case value
|
15
|
+
when :self
|
16
|
+
# this case mean the user use the current atome so we get the particle value of the atome
|
17
|
+
value = atome_found.atome[particle_found]
|
18
|
+
when Integer
|
19
|
+
value
|
20
|
+
else
|
21
|
+
# this case mean the user try to pass an id so we get the particle value of the atome
|
22
|
+
value = grab(value).atome[particle_found]
|
23
|
+
value
|
24
|
+
end
|
25
|
+
value
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.send_anim_to_js(animation, atome_hash, atome_found, atome_id, animation_atome)
|
29
|
+
animated_particle = animation[0]
|
30
|
+
start_value = animation[1]
|
31
|
+
end_value = animation[2]
|
32
|
+
original_particle = animation[3]
|
33
|
+
atome_js.JS.animate(animated_particle, atome_hash[:duration], atome_hash[:damping], atome_hash[:ease],
|
34
|
+
atome_hash[:mass], atome_hash[:repeat], atome_hash[:stiffness], atome_hash[:velocity],
|
35
|
+
start_value, end_value, atome_id, atome_found, atome_hash, original_particle, animation_atome)
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.sanitize_anim_params(value, particle_found, atome_hash, atome_found, atome_id, animation_atome)
|
39
|
+
start_value = anim_value_analysis(value, particle_found, atome_found)
|
40
|
+
start_value = BrowserHelper.anim_convertor(start_value)[particle_found][1]
|
41
|
+
end_value = anim_value_analysis(atome_hash[:end][particle_found], particle_found, atome_found)
|
42
|
+
end_value = BrowserHelper.anim_convertor(end_value)[particle_found][1]
|
43
|
+
animated_particle = BrowserHelper.anim_convertor(value)[particle_found][0]
|
44
|
+
# animation is a stupid array to satisfy rubocop stupidity
|
45
|
+
animation = [animated_particle, start_value, end_value, particle_found]
|
46
|
+
send_anim_to_js(animation, atome_hash, atome_found, atome_id, animation_atome)
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.anim_pop_motion_converter(atome_hash, atome_found, atome_id, animation_atome)
|
50
|
+
atome_hash[:dampingRatio] = atome_hash.delete(:damping)
|
51
|
+
atome_hash[:begin].each do |particle_found, value|
|
52
|
+
sanitize_anim_params(value, particle_found, atome_hash, atome_found, atome_id, animation_atome)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.begin_animation(atome_hash, atome_found, atome_id, animation_atome)
|
57
|
+
anim_pop_motion_converter(atome_hash, atome_found, atome_id, animation_atome)
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.browser_play_animation(_options, _browser_object, atome_hash, animation_atome, proc)
|
61
|
+
atome_hash[:targets] = [:eDen] unless atome_hash[:targets]
|
62
|
+
animation_atome.play_active_proc = proc
|
63
|
+
atome_hash[:targets].each do |target|
|
64
|
+
atome_found = grab(target)
|
65
|
+
atome_id = atome_found.atome[:id]
|
66
|
+
begin_animation(atome_hash, atome_found, atome_id, animation_atome)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
# for browser rendering
|
4
4
|
module BrowserHelper
|
5
|
-
|
6
5
|
def self.browser_colorize_color(color_updated, atome)
|
7
6
|
`document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.backgroundColor = #{color_updated}`
|
8
7
|
end
|
@@ -31,5 +30,4 @@ module BrowserHelper
|
|
31
30
|
def self.browser_bottom_color(_value, _browser_object, _atome)
|
32
31
|
puts 'code to write when implementing gradient'
|
33
32
|
end
|
34
|
-
|
35
33
|
end
|
@@ -5,28 +5,28 @@
|
|
5
5
|
module BrowserHelper
|
6
6
|
def self.browser_drag_move(params, atome_id, atome, proc)
|
7
7
|
atome.drag_move_proc = proc
|
8
|
-
|
8
|
+
atome_js.JS.drag(params, atome_id, atome)
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.browser_drag_lock(params, atome_id, atome, _proc)
|
12
|
-
|
12
|
+
atome_js.JS.lock(params, atome_id, atome)
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.browser_drag_remove(params, atome_id, atome, _proc)
|
16
16
|
params = params != true
|
17
|
-
|
17
|
+
atome_js.JS.remove(params, atome_id, atome)
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.browser_drag_snap(params, atome_id, atome, _proc)
|
21
|
-
|
21
|
+
atome_js.JS.snap(params.to_n, atome_id, atome)
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.browser_drag_inertia(params, atome_id, atome, _proc)
|
25
|
-
|
25
|
+
atome_js.JS.inertia(params, atome_id, atome)
|
26
26
|
end
|
27
27
|
|
28
28
|
def self.browser_drag_constraint(params, atome_id, atome, _proc)
|
29
|
-
|
29
|
+
atome_js.JS.constraint(params.to_n, atome_id, atome)
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.browser_drag_start(_params, _atome_id, atome, proc)
|