atome 0.5.1.4 → 0.5.1.9

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.
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