atome 0.5.1.4 → 0.5.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -0
  3. data/lib/atome/atome.rb +7 -6
  4. data/lib/atome/genesis/generators/event.rb +11 -0
  5. data/lib/atome/genesis/generators/identity.rb +0 -2
  6. data/lib/atome/helpers/callbacks.rb +68 -0
  7. data/lib/atome/helpers/essentials.rb +5 -3
  8. data/lib/atome/presets/atome.rb +1 -1
  9. data/lib/atome/renderers/browser/atome.rb +1 -12
  10. data/lib/atome/renderers/browser/browser.rb +12 -210
  11. data/lib/atome/renderers/browser/event.rb +30 -3
  12. data/lib/atome/renderers/browser/helpers/animation_helper.rb +0 -0
  13. data/lib/atome/renderers/browser/helpers/browser_helper.rb +18 -0
  14. data/lib/atome/renderers/browser/helpers/color_helper.rb +35 -0
  15. data/lib/atome/renderers/browser/helpers/drag_helper.rb +39 -0
  16. data/lib/atome/renderers/browser/helpers/effect_helper.rb +22 -0
  17. data/lib/atome/renderers/browser/helpers/image_helper.rb +27 -0
  18. data/lib/atome/renderers/browser/helpers/shadow_helper.rb +33 -0
  19. data/lib/atome/renderers/browser/helpers/shape_helper.rb +22 -0
  20. data/lib/atome/renderers/browser/helpers/text_helper.rb +26 -0
  21. data/lib/atome/renderers/browser/helpers/video_helper.rb +43 -0
  22. data/lib/atome/renderers/browser/helpers/web_helper.rb +30 -0
  23. data/lib/atome/renderers/browser/utility.rb +3 -3
  24. data/lib/atome/renderers/html/html.rb +1 -1
  25. data/lib/atome/version.rb +1 -1
  26. data/lib/atome.rb +0 -1
  27. data/sig/atome.rbs +1 -0
  28. data/vendor/assets/build/css/style.css +2 -1
  29. data/vendor/assets/build/index.html +8 -1
  30. data/vendor/assets/build/js/atome/atome.js +150 -145
  31. data/vendor/assets/build/js/atome/atome_helpers/atome_animate.js +65 -0
  32. data/vendor/assets/build/js/atome/atome_helpers/atome_drag.js +85 -0
  33. data/vendor/assets/build/js/atome/atome_helpers/atome_file.js +7 -0
  34. data/vendor/assets/build/js/atome/atome_helpers/atome_sort.js +20 -0
  35. data/vendor/assets/build/js/atome/atome_helpers/atome_time.js +10 -0
  36. data/vendor/assets/build/js/atome/atome_helpers/atome_video.js +12 -0
  37. data/vendor/assets/build/js/third_parties/popmotion.min.js +1 -1
  38. data/vendor/assets/build/js/third_parties/sortable.min.js +2 -0
  39. data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +23 -0
  40. data/vendor/assets/build/medias/rubies/examples/_animation.rb +46 -0
  41. data/vendor/assets/build/medias/rubies/examples/at.rb +17 -0
  42. data/vendor/assets/build/medias/rubies/examples/drag.rb +38 -0
  43. data/vendor/assets/build/medias/rubies/examples/mute.rb +22 -0
  44. data/vendor/assets/build/medias/rubies/examples/on.rb +7 -1
  45. data/vendor/assets/build/medias/rubies/examples/{parent.rb → parents.rb} +6 -6
  46. data/vendor/assets/build/medias/rubies/examples/pause.rb +15 -0
  47. data/vendor/assets/build/medias/rubies/examples/play.rb +15 -0
  48. data/vendor/assets/build/medias/rubies/examples/schedule.rb +2 -2
  49. data/vendor/assets/build/medias/rubies/examples/sort.rb +16 -0
  50. data/vendor/assets/build/medias/rubies/examples/time.rb +14 -0
  51. metadata +28 -5
  52. data/lib/atome/processors/utilities.rb +0 -10
  53. data/vendor/assets/build/medias/rubies/examples/_drag.rb +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64c8921a4ed715c0ed422e430ca3e9b6ead122f06e81032d0e8843b9fa2e0e4c
4
- data.tar.gz: 7920b914b719630b1a930d1f27616d31161e8befe33fd409098a55a90cf30ced
3
+ metadata.gz: 108def7ca1abaccd885638fdea127766d1f97c4ac2559faee3eec445b52bdbac
4
+ data.tar.gz: bf00b2ccb9e339a08c16221964b11cd6c2440cc415f6886bef2e4c18ac1967f1
5
5
  SHA512:
6
- metadata.gz: 2d1fe5f8e8967e1869da808953904dbcd41327676bf644cf19b260cc56f0febdf38a3d3673056ab51406ca0b6743708dcf2c5b1d8fb6e20cd7f8f8b94d425ebd
7
- data.tar.gz: 314bec01e683e3bcf0e57abfe1bc273bf38a91650da89f277449226b8f23dc7626c1d3d76e0d8408bdc7e82f5c337e8beb2fae3e73b23cd827102374d8b62c24
6
+ metadata.gz: 3ecf2a30c425a8b46f88f08cd5b436d6298dd36b8db8984a50190a15a360639c6ac161725c3c5a7b327c740927032315a46a988fbdf5790fe830e31a5d22d4a4
7
+ data.tar.gz: 5585b8e500d715c86799172790bcc7be0bbc67cfbc438a6fedf03be8aecfea287df999588d4771d4c50f6a62dbad35fa2002f387b425fc602de776c9ff310ca0
data/Rakefile CHANGED
@@ -19,6 +19,10 @@ task :test_browser do
19
19
  `cd test/test_app;atome update;atome run guard`
20
20
  end
21
21
 
22
+ task :run_browser do
23
+ `cd test/test_app;atome run guard`
24
+ end
25
+
22
26
  task :test_server do
23
27
  FileUtils.copy_entry('vendor/assets/build/js/', 'test/test_app/build/js/')
24
28
  FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/css/')
data/lib/atome/atome.rb CHANGED
@@ -15,6 +15,7 @@ class Atome
15
15
  atomes.each_value do |elements|
16
16
  # the instance variable below contain the id all any atomes that need to be informed when changes occurs
17
17
  @broadcast = {}
18
+ @at_time = {}
18
19
  # now we store the proc in a an atome's property called :bloc
19
20
  elements[:code] = atomes_proc if atomes_proc
20
21
  @atome = elements
@@ -63,9 +64,9 @@ class Atome
63
64
  end
64
65
  end
65
66
 
66
- def run_optional_proc(proc_name, atome = self, value = '')
67
+ def run_optional_proc(proc_name, atome = self, value = '', &user_proc)
67
68
  option_found = Universe.get_optional_method(proc_name)
68
- atome.instance_exec(value, &option_found) if option_found.is_a?(Proc)
69
+ atome.instance_exec(value,user_proc, &option_found) if option_found.is_a?(Proc)
69
70
  end
70
71
 
71
72
  def inject_value(element, value)
@@ -82,7 +83,7 @@ class Atome
82
83
 
83
84
  # the line below is used for ephemera atomes
84
85
  attr_accessor :property, :value, :real_atome, :user_proc
85
- attr_reader :atome, :structure
86
+ attr_reader :atome, :structure, :at_time
86
87
 
87
88
  def set(value)
88
89
  @real_atome[@property] = value
@@ -91,9 +92,9 @@ class Atome
91
92
  def create_particle(element, value, &user_proc)
92
93
  return false unless security_pass(element, value)
93
94
 
94
- run_optional_proc("pre_render_#{element}".to_sym, self, value)
95
+ run_optional_proc("pre_render_#{element}".to_sym, self, value, &user_proc)
95
96
  rendering(element, value, &user_proc)
96
- run_optional_proc("post_render_#{element}".to_sym, self, value)
97
+ run_optional_proc("post_render_#{element}".to_sym, self, value, &user_proc)
97
98
  store_value(element, value)
98
99
  self
99
100
  end
@@ -108,7 +109,7 @@ class Atome
108
109
  virtual_atome.real_atome = @atome
109
110
  virtual_atome.property = element
110
111
  virtual_atome.user_proc = user_proc
111
- run_optional_proc("pre_get_#{element}".to_sym, virtual_atome)
112
+ run_optional_proc("pre_get_#{element}".to_sym, virtual_atome, &user_proc)
112
113
  virtual_atome
113
114
  end
114
115
 
@@ -8,3 +8,14 @@ generator.build_particle(:time)
8
8
  generator.build_particle(:pause)
9
9
  generator.build_particle(:on)
10
10
  generator.build_particle(:fullscreen)
11
+ generator.build_particle(:mute)
12
+ # TODO : add the at event to ny particle : (width, left, ...) maybe use monitor particle
13
+ generator.build_particle(:at)
14
+ generator.build_particle(:drag)
15
+ generator.build_sanitizer(:drag) do |params|
16
+ params = { move: true } if params == true
17
+ params
18
+ end
19
+ generator.build_particle(:sort) do |_value, sort_proc|
20
+ @sort_proc = sort_proc
21
+ end
@@ -10,7 +10,6 @@ generator.build_particle(:link) do |child_id|
10
10
  child_found.atome[:parents] << @atome[:id]
11
11
  child_found.refresh
12
12
  end
13
-
14
13
  generator.build_particle(:id)
15
14
  generator.build_sanitizer(:id) do |params|
16
15
  if @atome[:id] != params
@@ -20,7 +19,6 @@ generator.build_sanitizer(:id) do |params|
20
19
  end
21
20
  params
22
21
  end
23
-
24
22
  generator.build_option(:pre_render_parents) do |parents_id_found|
25
23
  parents_id_found.each do |parents_id|
26
24
  parents_found = grab(parents_id)
@@ -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,64 @@ 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
+ @atome[:time] = current_time
23
+ return unless @at_time[:time] && (current_time.round(1) > @at_time[:time] && @at_time[:used].nil?)
24
+
25
+ proc = @at_time[:code]
26
+ instance_exec(current_time, &proc) if proc.is_a?(Proc)
27
+ @at_time[:used] = true
28
+ end
29
+
30
+ def drag_start_callback(page_x, page_y, left_val, top_val)
31
+ @atome[:left] = left_val
32
+ @atome[:top] = top_val
33
+ proc = @drag_start_proc
34
+ instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
35
+ end
36
+
37
+ def drag_move_callback(page_x, page_y, left_val, top_val)
38
+ proc = @drag_move_proc
39
+ @atome[:left] = left_val
40
+ @atome[:top] = top_val
41
+ instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
42
+ end
43
+
44
+ def drag_end_callback(page_x, page_y, left_val, top_val)
45
+ @atome[:left] = left_val
46
+ @atome[:top] = top_val
47
+ proc = @drag_end_proc
48
+ instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
49
+ end
50
+
51
+ # sort callbacks
52
+ def sort_callback(atome)
53
+ sort_proc = @sort_proc
54
+ instance_exec(atome, &sort_proc) if sort_proc.is_a?(Proc)
55
+ end
56
+
57
+ # def play_start_callback(particle_found, value)
58
+ # @atome[particle_found] = value
59
+ # play_proc = play_start_proc
60
+ # anim_proc = animation_start_proc
61
+ # instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
62
+ # instance_exec({ @atome[particle_found] => value }, &anim_proc) if anim_proc.is_a?(Proc)
63
+ # end
64
+ #
65
+ # def play_active_callback(particle_found, value)
66
+ # @atome[particle_found] = value
67
+ # play_proc = play_active_proc
68
+ # anim_proc = animation_active_proc
69
+ # instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
70
+ # instance_exec({ @atome[particle_found] => value }, &anim_proc) if anim_proc.is_a?(Proc)
71
+ # end
72
+ #
73
+ # def play_stop_callback(particle_found, value)
74
+ # @atome[particle_found] = value
75
+ # play_proc = play_end_proc
76
+ # anim_proc = animation_end_proc
77
+ # instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
78
+ # instance_exec({ @atome[particle_found] => value }, &anim_proc) if anim_proc.is_a?(Proc)
79
+ # end
12
80
  end
@@ -4,15 +4,17 @@
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
+ left: 100, top: 100 },
9
11
  circle: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99,
10
- smooth: '100%' },
12
+ left: 100, top: 100, smooth: '100%' },
11
13
  shape: { renderers: '', id: '', width: 100, type: :shape, height: 100, left: 100, top: 100,
12
14
  color: { left: 0, top: 0, z: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
13
15
  generator: :manual },
14
16
  text: { type: :text, parents: [:view], children: [], visual: { size: 25 },
15
- data: 'this is a text sample', width: 199, height: 33 },
17
+ data: 'this is a text sample', width: 199, height: 33 },
16
18
  drm: { type: :drm },
17
19
  shadow: {}
18
20
  }
@@ -8,7 +8,7 @@
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
14
  temp_default[:renderers] = generated_render
@@ -17,8 +17,6 @@ generator.build_render_method(:browser_shape) 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
22
  generator.build_render_method(:browser_color) do |_value|
@@ -36,10 +34,6 @@ 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
39
  generator.build_render_method(:browser_shadow) do |_value|
@@ -71,8 +65,6 @@ generator.build_render_method(:browser_image) do |_user_prc|
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
70
  generator.build_render_method(:browser_text) do |_value, _user_proc|
@@ -82,8 +74,6 @@ generator.build_render_method(:browser_text) do |_value, _user_proc|
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
79
  generator.build_render_method(:browser_web) 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
90
  generator.build_render_method(: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: true }).atome
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,20 @@ 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/image_helper'
17
+ require 'atome/renderers/browser/helpers/shadow_helper'
18
+ require 'atome/renderers/browser/helpers/shape_helper'
19
+ require 'atome/renderers/browser/helpers/text_helper'
20
+ require 'atome/renderers/browser/helpers/video_helper'
21
+ require 'atome/renderers/browser/helpers/web_helper'
11
22
 
12
23
  class Atome
13
24
  attr_accessor :browser_object
14
25
  end
15
26
 
16
- # for opal rendering
17
- module BrowserHelper
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
225
- end
27
+ AtomeJS=`atomeJS`
@@ -9,6 +9,9 @@ generator.build_render_method(:browser_touch) do |_value, proc|
9
9
  end
10
10
 
11
11
  generator.build_render_method(: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
 
@@ -31,7 +34,31 @@ generator.build_render_method(:on) do |value, proc|
31
34
  end
32
35
  end
33
36
 
34
- generator.build_render_method(:fullscreen) do |value, proc|
35
- atome_id=atome[:id]
36
- `atome.js_Fullscreen(#{atome_id})`
37
+ generator.build_render_method(:fullscreen) do |_value, _proc|
38
+ atome_id = atome[:id]
39
+ AtomeJS.JS.fullscreen(atome_id)
37
40
  end
41
+
42
+ generator.build_render_method(: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_method(:browser_at) do |at, proc|
51
+ @at_time = { code: proc }.merge(at)
52
+ end
53
+
54
+ generator.build_render_method(:browser_drag) do |options, proc|
55
+ options.each do |method, params|
56
+ atome_id = @atome[:id]
57
+ BrowserHelper.send("browser_drag_#{method}", params, atome_id, self, proc)
58
+ end
59
+ end
60
+
61
+ generator.build_render_method(:browser_sort) do |options, _proc|
62
+ AtomeJS.JS.sort(options, @atome[:id], self)
63
+ end
64
+
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ # for browser rendering
4
+ module BrowserHelper
5
+ def self.browser_document
6
+ # Work because of the patched version of opal-browser(0.39)
7
+ Browser.window
8
+ end
9
+
10
+ def self.browser_attach_div(parents, html_object, _atome)
11
+ html_object.append_to(browser_document[parents])
12
+ end
13
+
14
+ def self.browser_attach_style(parents, _html_object, atome)
15
+ browser_document[parents].add_class(atome[:id])
16
+ end
17
+
18
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # for browser rendering
4
+ module BrowserHelper
5
+
6
+ def self.browser_colorize_color(color_updated, atome)
7
+ `document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.backgroundColor = #{color_updated}`
8
+ end
9
+
10
+ def self.browser_colorize_shadow(color_updated, atome)
11
+ left = atome[:left]
12
+ top = atome[:top]
13
+ blur = atome[:blur]
14
+ direction = atome[:direction]
15
+ shadow_updated = "#{left}px #{top}px #{blur}px #{color_updated} #{direction}"
16
+ `document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.boxShadow = #{shadow_updated}`
17
+ end
18
+
19
+ def self.browser_left_color(_value, _browser_object, _atome)
20
+ puts 'code to write when implementing gradient'
21
+ end
22
+
23
+ def self.browser_right_color(_value, _browser_object, _atome)
24
+ puts 'code to write when implementing gradient'
25
+ end
26
+
27
+ def self.browser_top_color(_value, _browser_object, _atome)
28
+ puts 'code to write when implementing gradient'
29
+ end
30
+
31
+ def self.browser_bottom_color(_value, _browser_object, _atome)
32
+ puts 'code to write when implementing gradient'
33
+ end
34
+
35
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ # for browser rendering
4
+
5
+ module BrowserHelper
6
+ def self.browser_drag_move(params, atome_id, atome, proc)
7
+ atome.drag_move_proc = proc
8
+ AtomeJS.JS.drag(params, atome_id, atome)
9
+ end
10
+
11
+ def self.browser_drag_lock(params, atome_id, atome, _proc)
12
+ AtomeJS.JS.lock(params, atome_id, atome)
13
+ end
14
+
15
+ def self.browser_drag_remove(params, atome_id, atome, _proc)
16
+ params = params != true
17
+ AtomeJS.JS.remove(params, atome_id, atome)
18
+ end
19
+
20
+ def self.browser_drag_snap(params, atome_id, atome, _proc)
21
+ AtomeJS.JS.snap(params.to_n, atome_id, atome)
22
+ end
23
+
24
+ def self.browser_drag_inertia(params, atome_id, atome, _proc)
25
+ AtomeJS.JS.inertia(params, atome_id, atome)
26
+ end
27
+
28
+ def self.browser_drag_constraint(params, atome_id, atome, _proc)
29
+ AtomeJS.JS.constraint(params.to_n, atome_id, atome)
30
+ end
31
+
32
+ def self.browser_drag_start(_params, _atome_id, atome, proc)
33
+ atome.drag_start_proc = proc
34
+ end
35
+
36
+ def self.browser_drag_end(_params, _atome_id, atome, proc)
37
+ atome.drag_end_proc = proc
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # for browser rendering
4
+ module BrowserHelper
5
+ def self.browser_blur_style(_browser_object, value, atome)
6
+ b_left = "#{atome[:left]}px"
7
+ b_top = "#{atome[:top]}px"
8
+ b_blur = "#{atome[:blur] = value}px"
9
+ b_red = atome[:red] * 255
10
+ b_green = atome[:green] * 255
11
+ b_blue = (atome[:blue]) * 255
12
+ b_direction = atome[:direction]
13
+ b_alpha = atome[:alpha]
14
+
15
+ shadow_updated = "#{b_left} #{b_top} #{b_blur} rgba(#{b_red}, #{b_green}, #{b_blue}, #{b_alpha}) #{b_direction}"
16
+ `document.getElementById(#{atome[:id]}).sheet.cssRules[0].style.boxShadow = #{shadow_updated}`
17
+ end
18
+
19
+ def self.browser_blur_div(browser_object, value, _atome)
20
+ browser_object.style[:filter] = "blur(#{value}px)"
21
+ end
22
+ end