atome 0.4.5.4 → 0.4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -3
  3. data/Rakefile +1 -0
  4. data/app_builder_helpers/Rakefile +2 -0
  5. data/lib/atome/atome_native_extensions.rb +3 -3
  6. data/lib/atome/extensions/helper.rb +20 -31
  7. data/lib/atome/kernel/atome.rb +9 -8
  8. data/lib/atome/kernel/generators/generator.rb +210 -80
  9. data/lib/atome/kernel/generators/genesis.rb +58 -46
  10. data/lib/atome/kernel/generators/sanitizer.rb +3 -7
  11. data/lib/atome/kernel/generators/shapes.rb +25 -10
  12. data/lib/atome/{extensions → kernel/helpers}/geolocation.rb +0 -0
  13. data/lib/atome/kernel/helpers/internal_methods.rb +173 -0
  14. data/lib/atome/kernel/helpers/ping.rb +17 -0
  15. data/lib/atome/{extensions → kernel/helpers}/sha.rb +0 -0
  16. data/lib/atome/{extensions → kernel/helpers}/utilities.rb +5 -5
  17. data/lib/atome/kernel/properties/essential.rb +35 -1
  18. data/lib/atome/kernel/sparkle.rb +2 -1
  19. data/lib/atome/kernel/universe.rb +12 -4
  20. data/lib/atome/renderers/opal/extensions/geolocation.rb +0 -1
  21. data/lib/atome/renderers/renderer.rb +1 -0
  22. data/lib/atome/renderers/server/properties/generator.rb +1 -1
  23. data/lib/atome/version.rb +2 -1
  24. data/lib/atome.rb +6 -15
  25. data/vendor/assets/build/css/style.css +4 -0
  26. data/vendor/assets/build/index.html +4 -2
  27. data/vendor/assets/build/js/atome/atome.js +25 -11
  28. data/vendor/assets/build/js/third_parties/interact.min.js +2 -3
  29. data/vendor/assets/build/js/{ping.min.js → third_parties/ping.min.js} +0 -0
  30. data/vendor/assets/build/js/{utilities → third_parties}/w3color.js +0 -0
  31. data/vendor/assets/build/js/third_parties/zim.min.js +1 -0
  32. data/vendor/assets/build/medias/audios/guitar.wav +0 -0
  33. data/vendor/assets/build/medias/images/beach.jpg +0 -0
  34. data/vendor/assets/build/medias/rubies/examples/!run.rb +16 -0
  35. data/vendor/assets/build/medias/rubies/examples/box.rb +16 -1
  36. data/vendor/assets/build/medias/rubies/examples/circle.rb +1 -0
  37. data/vendor/assets/build/medias/rubies/examples/clear.rb +9 -0
  38. data/vendor/assets/build/medias/rubies/examples/code.rb +5 -0
  39. data/vendor/assets/build/medias/rubies/examples/drag.rb +42 -4
  40. data/vendor/assets/build/medias/rubies/examples/link.rb +8 -10
  41. data/vendor/assets/build/medias/rubies/examples/on.rb +16 -0
  42. data/vendor/assets/build/medias/rubies/examples/parent.rb +2 -1
  43. data/vendor/assets/build/medias/rubies/examples/read.rb +1 -1
  44. data/vendor/assets/build/medias/rubies/examples/text.rb +17 -4
  45. data/vendor/assets/build/medias/rubies/examples/video.rb +51 -3
  46. data/vendor/assets/build/medias/rubies/examples/web.rb +3 -2
  47. data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
  48. data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
  49. data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
  50. data/vendor/assets/build/medias/videos/starwars.mov +0 -0
  51. data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
  52. metadata +24 -12
  53. data/lib/atome/extensions/ping.rb +0 -13
  54. data/vendor/assets/build/js/third_parties/createjs.min.js +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49cc8d868d75099b8958e82985a3fbf1c43eaea349619ffa01e810fd9ea10ca0
4
- data.tar.gz: 5e9b7460dea168d8fb9b21de448edbb57deed81173fc1d04bf95f12262e80ba7
3
+ metadata.gz: c05926a443ccc93706250a217fe46a42d571f0c97cb9549fd445036b8cb0ff93
4
+ data.tar.gz: f9c922aaab0da02ff843af4f721f7370b538d39a4afd238338e9a6ad7071c34d
5
5
  SHA512:
6
- metadata.gz: 12f981205e19cfc5f4243e8498c190b7b5903009660f0c68219c4eaee95195b47e0ff69fcecc67c69cd7624b66a8dd10340249dc7bc9576682d05031ec497ed3
7
- data.tar.gz: ee6814778ba2ca00d75a7fb714847c680982ce20ffccc2df34160554340f1cb400efaab3a996d1820e91879ba72a0430f5bd90c2eb2463c39a25a2e1becdc540
6
+ metadata.gz: 6067a7cc1206d75a5245c3098976993745d17bf296ae6931ed3a3eda13d885389c89e7f47af061a506092866ec7a637e4e848089caefc74595693f90b18dd46d
7
+ data.tar.gz: 02a14025506b36a050d885fb5b09be305f011a3f2a067561994608a7e77fa236d18a62f3d92293b311459418fd384645b9f3447fc462881da2c77e3db3e27c09
data/Gemfile CHANGED
@@ -9,6 +9,4 @@ gem "rake", "~> 13.0"
9
9
 
10
10
  gem "minitest", "~> 5.0"
11
11
  gem 'rubocop', group: 'development'
12
- gem 'rubocop', group: 'development'
13
- gem 'rubocop', group: 'development'
14
- gem 'rubocop', group: 'development'
12
+
data/Rakefile CHANGED
@@ -13,6 +13,7 @@
13
13
  # task default: :test
14
14
 
15
15
  task :test do
16
+ FileUtils.copy_entry('vendor/assets/build/js/atome/', 'test/test_app/build/js/atome/')
16
17
  `gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
17
18
  `cd test/test_app;atome update;atome run guard`
18
19
  end
@@ -195,6 +195,8 @@ end
195
195
  task :system_updater, :user_project_path, :production do |_t, args|
196
196
  user_project_path = args[:user_project_path]
197
197
  production = args[:production]
198
+ gem_location = File.join(File.dirname(__FILE__))
199
+ build_libraries(user_project_path, gem_location)
198
200
  build_common_libraries(user_project_path, production)
199
201
  end
200
202
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'atome/extensions/sha'
4
- require 'atome/extensions/ping'
5
- require 'atome/extensions/geolocation'
3
+ require 'atome/kernel/helpers/sha'
4
+ require 'atome/kernel/helpers/ping'
5
+ require 'atome/kernel/helpers/geolocation'
@@ -1,27 +1,12 @@
1
- def grab(val)
2
- Atome.grab(val)
3
- end
4
1
 
5
2
 
6
- def read_ruby(file)
7
- `
8
- fetch('medias/rubies/'+#{file})
9
- .then(response => response.text())
10
- .then(text => Opal.eval(text))
11
- `
12
- end
13
-
14
- def read_text(file)
15
- `
16
- fetch('medias/rubies/'+#{file})
17
- .then(response => response.text())
18
- .then(text => console.log(text))
19
- `
3
+ def grab(val)
4
+ Atome.grab(val)
20
5
  end
21
6
 
22
7
 
23
8
  def read(file, action=:text)
24
- send("read_#{action}", file)
9
+ Internal.send("read_#{action}", file)
25
10
  end
26
11
 
27
12
  def wait(seconds)
@@ -49,19 +34,6 @@ if (++x ===#{repeat} ) {
49
34
  end
50
35
 
51
36
 
52
-
53
- `
54
- const atome = {
55
- jsSchedule: function (years, months, days, hours, minutes, seconds, proc) {
56
- const now = new Date();
57
- const formatedDate = new Date(years, months - 1, days, hours, minutes, seconds);
58
- const diffTime = Math.abs(formatedDate - now);
59
- setTimeout(function () {
60
- Opal.Object.$schedule_callback(proc);
61
- }, diffTime);
62
- }}
63
- `
64
-
65
37
  def schedule(date, &proc)
66
38
  date = date.to_s
67
39
  delimiters = [",", " ", ":", "-"]
@@ -120,4 +92,21 @@ end
120
92
 
121
93
  def schedule_callback(proc)
122
94
  instance_exec(&proc) if proc.is_a?(Proc)
95
+ end
96
+
97
+ def play_video(params, &proc)
98
+ params[:atome].html_object.play
99
+ # TODO : change timeupdate for when possible requestVideoFrameCallback (opal-browser/opal/browser/event.rb line 36)
100
+ video_callback = params[:atome].bloc # this is the video callback not the play callback
101
+ play_callback = params[:proc] # this is the video callback not the play callback
102
+ params[:atome].html_object.on(:timeupdate) do |e|
103
+ # e.prevent # Prevent the default action (eg. form submission)
104
+ # You can also use `e.stop` to stop propagating the event to other handlers.
105
+ instance_exec(params[:atome].html_object.currentTime, &video_callback) if video_callback.is_a?(Proc)
106
+ instance_exec(params[:atome].html_object.currentTime, &play_callback) if play_callback.is_a?(Proc)
107
+ end
108
+ end
109
+
110
+ def pause_video(params, &proc)
111
+ params[:atome].html_object.pause
123
112
  end
@@ -19,6 +19,7 @@ class Atome
19
19
  include Sanitizer
20
20
  include ServerRenderer
21
21
  include Render
22
+ include Internal
22
23
  # include OpalRenderer
23
24
  # include HeadlessRenderer
24
25
  def self.atome(params)
@@ -79,20 +80,20 @@ class Atome
79
80
  end
80
81
  end
81
82
 
82
- def initialize(params = {}, &proc)
83
- # We initialize the renderer here
84
- @render=[]
83
+ def initialize(params = {}, &bloc)
84
+ @render = []
85
+ @child = []
86
+ @html_type = :unset
85
87
  # # TODO: check if we need to add properties for the root object before sending the params
86
88
  params.each do |atome, values|
87
- # We add the proc if it exist
88
- values[:bloc] = { bloc: proc }
89
- send(atome, values)
89
+ send(atome, values, &bloc)
90
90
  end
91
- Universe.atomes_add(self)
92
91
  end
92
+
93
+
94
+
93
95
  end
94
96
 
95
97
  # initialize Universe
96
98
  Universe.connected
97
99
  # Atome.new( identity: {type: :eVe, aui: :a_97987987987})
98
- puts "atome version : #{Atome::VERSION}"
@@ -3,8 +3,8 @@
3
3
  # generators
4
4
 
5
5
  Genesis.particle_creator(:html_type)
6
- Genesis.particle_creator(:html_object)
7
6
 
7
+ Genesis.particle_creator(:html_object)
8
8
 
9
9
  Genesis.atome_creator(:shape)
10
10
 
@@ -42,6 +42,20 @@ end
42
42
 
43
43
  Genesis.atome_creator(:shadow)
44
44
 
45
+ Genesis.atome_creator(:video) do |params, &proc|
46
+ # todo: factorise code below
47
+ if params
48
+ default_renderer = Sanitizer.default_params[:render]
49
+ generated_id = params[:id] || "video_#{Universe.atomes.length}"
50
+ generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
51
+ generated_parent = params[:parent] || id
52
+ default_params = { render: [generated_render], id: generated_id, type: :video, parent: [generated_parent],
53
+ path: './medias/videos/video_missing.mp4', left: 139, top: 333, width: 199, height: 199 }
54
+ params = default_params.merge(params)
55
+ end
56
+ params
57
+ end
58
+
45
59
  # Example below
46
60
 
47
61
  # Genesis.atome_creator(:color) do |params|
@@ -70,8 +84,7 @@ Genesis.atome_creator(:shadow)
70
84
  # # puts "optional color_getter_pre_proc\n"
71
85
  # end
72
86
 
73
- Genesis.particle_creator(:id) do
74
- end
87
+ Genesis.particle_creator(:id)
75
88
  Genesis.particle_creator(:left)
76
89
  Genesis.particle_creator(:right)
77
90
  Genesis.particle_creator(:top)
@@ -86,8 +99,12 @@ Genesis.particle_creator(:type)
86
99
  Genesis.particle_creator(:smooth)
87
100
  Genesis.particle_creator(:blur)
88
101
  Genesis.particle_creator(:touch)
102
+ Genesis.particle_creator(:play)
103
+ Genesis.particle_creator(:pause)
104
+ Genesis.particle_creator(:time)
105
+
89
106
  # Genesis.atome_creator_option(:type_pre_render_proc) do |params|
90
- # # alert "it works and get #{params}"
107
+ # # "it works and get #{params}"
91
108
  # params[:value]
92
109
  # end
93
110
 
@@ -98,21 +115,47 @@ Genesis.particle_creator(:touch)
98
115
 
99
116
  Genesis.particle_creator(:render)
100
117
  Genesis.particle_creator(:drm)
101
- Genesis.particle_creator(:parent)
118
+
119
+ Genesis.particle_creator(:child)
120
+
121
+ Genesis.particle_creator(:parent) do |parents|
122
+ parents.each do |parent|
123
+ #TODO : create a root atome instead of using the condition below
124
+ if parent != :user_view
125
+ grab(parent).child << id
126
+ end
127
+ end
128
+ parents
129
+ end
102
130
 
103
131
  Genesis.atome_creator_option(:parent_pre_render_proc) do |params|
132
+ current_atome = params[:atome]
104
133
  unless params[:value].instance_of? Array
105
134
  params[:value] = [params[:value]]
106
135
  end
107
- params[:value]
136
+ current_atome.instance_variable_set("@parent", params[:value])
108
137
  end
138
+
109
139
  Genesis.particle_creator(:date)
110
140
  Genesis.particle_creator(:location)
111
141
 
142
+ Genesis.atome_creator_option(:id_pre_render_proc) do |params|
143
+ new_id = params[:value]
144
+ current_atome = params[:atome]
145
+ old_id = current_atome.id
146
+ current_atome.instance_variable_set('@id', new_id)
147
+ # we change id id the atomes hash
148
+ Universe.change_atome_id(old_id, new_id)
149
+ current_atome.html_object.id = new_id if current_atome.html_object
150
+
151
+ end
152
+
153
+
112
154
  # generate renderers
113
155
 
114
156
  Genesis.generate_html_renderer(:type) do |value, atome, proc|
115
157
  send("#{value}_html", value, atome, proc)
158
+ value
116
159
  end
117
160
 
118
161
  Genesis.generate_html_renderer(:shape) do |value, atome, proc|
@@ -128,7 +171,9 @@ end
128
171
  Genesis.generate_html_renderer(:color) do |value, atome, proc|
129
172
  instance_exec(&proc) if proc.is_a?(Proc)
130
173
  @html_type = :style
131
- $document.head << DOM("<style atome='#{type}' id='#{id}'></style>")
174
+ # we remove previous unused style tag
175
+ $document[id].remove if $document[id]
176
+ $document.head << DOM("<style atome='#{type}' id='#{id}'></style>")
132
177
  end
133
178
 
134
179
  Genesis.generate_html_renderer(:red) do |value, atome, proc|
@@ -173,29 +218,17 @@ Genesis.generate_html_renderer(:alpha) do |value, atome, proc|
173
218
  $document[id].inner_html = "\n.#{id}{background-color: rgba(#{red_found * 255},#{green_found * 255},#{blue_found * 255},#{value})}\n"
174
219
  end
175
220
 
176
- Genesis.generate_html_renderer(:drm) do |value, atome, proc|
177
- # instance_exec(&proc) if proc.is_a?(Proc)
178
- end
221
+ Genesis.generate_html_renderer(:drm)
179
222
 
180
223
  Genesis.generate_html_renderer(:parent) do |values, atome, proc|
181
224
  instance_exec(&proc) if proc.is_a?(Proc)
182
225
  values.each do |value|
183
- if @html_type == :style
184
- # we remove previous class if the are of the same type of the type
185
- # ex if there's a color already assign we remove it to allow the new one to be visible
186
- html_parent = grab(value).instance_variable_get("@html_object")
187
- html_parent.class_names.each do |class_name|
188
- if $document[class_name] && $document[class_name].attributes[:atome]
189
- class_to_remove = $document[class_name].attributes[:id]
190
- html_parent.remove_class(class_to_remove)
191
- end
192
- end
193
- $document[value].add_class(id)
194
- else
195
- @html_object.append_to($document[value])
196
- end
226
+ atome.html_decision(@html_type, value, id)
197
227
  end
198
228
  end
229
+
230
+
231
+
199
232
  Genesis.generate_html_renderer(:id) do |value, atome, proc|
200
233
  # send("#{value}_html", value, atome, proc)
201
234
  end
@@ -224,11 +257,8 @@ Genesis.generate_html_renderer(:height) do |value, atome, proc|
224
257
  @html_object.style[:height] = "#{value}px" unless @html_type == :style
225
258
  end
226
259
 
227
- Genesis.particle_creator(:rotate) do |params, atome, &proc|
228
- # puts atome
229
- # alert :pl
230
- instance_exec(method_name, params, atome, &proc) if proc.is_a?(Proc)
231
- end
260
+ Genesis.particle_creator(:rotate)
261
+
232
262
  Genesis.generate_html_renderer(:rotate) do |value, atome, proc|
233
263
  @html_object.style[:transform] = "rotate(#{value}deg)" unless @html_type == :style
234
264
  end
@@ -255,30 +285,17 @@ Genesis.generate_html_renderer(:touch) do |value, atome, proc|
255
285
  end
256
286
  end
257
287
 
258
- #drag
259
- def dragCallback(page_x, page_y, x, y, current_object, proc)
260
- current_object.instance_variable_set('@left', x)
261
- current_object.instance_variable_set('@top', y)
262
- instance_exec(page_x, page_y, &proc) if proc.is_a?(Proc)
263
- end
264
-
265
- Genesis.particle_creator(:drag)
266
-
267
- Genesis.generate_headless_renderer(:drag) do |value, atome, user_proc|
268
- puts "msg from headless drag method: value is #{value} , atome class is #{atome.class}"
269
- instance_exec(&user_proc) if user_proc.is_a?(Proc)
270
- end
271
-
272
- Genesis.generate_html_renderer(:drag) do |value, atome, user_proc|
273
- # FIXME: we should find a s solution to pass the proc to the dragCallback toavoid the test below
274
- @html_drag = user_proc if user_proc
275
- if value == :remove
276
- @html_object.remove_class(:draggable)
277
- else
278
- @html_object.add_class(:draggable)
279
- end
288
+ Genesis.generate_html_renderer(:video) do |value, atome, proc|
289
+ id_found = id
290
+ instance_exec(&proc) if proc.is_a?(Proc)
291
+ DOM do
292
+ video({ id: id_found, autoplay: false }).atome
293
+ end.append_to($document[:user_view])
294
+ @html_object = $document[id_found]
295
+ @html_type = :video
280
296
  end
281
297
 
298
+ # overflow
282
299
  Genesis.particle_creator(:overflow)
283
300
  Genesis.generate_html_renderer(:overflow) do |value, atome, proc|
284
301
  @html_object.style[:overflow] = value unless @html_type == :style
@@ -289,10 +306,7 @@ Genesis.particle_creator(:bloc)
289
306
  # image
290
307
 
291
308
  Genesis.atome_creator(:image)
292
- Genesis.particle_creator(:path)
293
- Genesis.generate_html_renderer(:path) do |value, atome, proc|
294
- @html_object[:src] = value
295
- end
309
+
296
310
  Genesis.generate_html_renderer(:image) do |value, atome, proc|
297
311
  id_found = id
298
312
  instance_exec(&proc) if proc.is_a?(Proc)
@@ -305,40 +319,41 @@ end
305
319
 
306
320
  # text
307
321
 
308
- Genesis.atome_creator(:text)
322
+ Genesis.atome_creator(:text) do |params|
323
+ # TODO: factorise code below
324
+ if params
325
+ default_renderer = Sanitizer.default_params[:render]
326
+ generated_id = params[:id] || "text_#{Universe.atomes.length}"
327
+ generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
328
+ generated_parent = params[:parent] || id
329
+
330
+ default_params = { render: [generated_render], id: generated_id, type: :text, parent: [generated_parent],
331
+ visual: { size: 33 }, data: "hello world", left: 39, top: 33,
332
+ color: { render: [generated_render], id: "color_#{generated_id}", type: :color,
333
+ red: 0.09, green: 1, blue: 0.12, alpha: 1 }
334
+ }
335
+ params = default_params.merge(params)
336
+ params
337
+ end
338
+ # params
339
+ end
309
340
  Genesis.particle_creator(:string)
310
341
 
311
- Genesis.generate_html_renderer(:string) do |value, atome, proc|
312
- @html_object.text = value
313
- end
314
342
  Genesis.particle_creator(:visual)
315
343
  Genesis.generate_html_renderer(:visual) do |value, atome, proc|
316
344
  @html_object.style['font-size'] = "#{value[:size]}px"
317
345
  end
346
+
318
347
  Genesis.generate_html_renderer(:text) do |value, atome, proc|
319
348
  id_found = id
320
349
  instance_exec(&proc) if proc.is_a?(Proc)
321
350
  DOM do
322
- div(id: id_found).atome
351
+ div(id: id_found).atome.text
323
352
  end.append_to($document[:user_view])
324
353
  @html_object = $document[id_found]
325
354
  @html_type = :text
326
355
  end
327
356
 
328
-
329
- # video
330
- Genesis.atome_creator(:video)
331
- Genesis.generate_html_renderer(:video) do |value, atome, proc|
332
- id_found = id
333
- instance_exec(&proc) if proc.is_a?(Proc)
334
- DOM do
335
- video({ id: id_found, autoplay: true }).atome
336
- end.append_to($document[:user_view])
337
- @html_object = $document[id_found]
338
- @html_type = :video
339
- end
340
-
341
-
342
357
  # particles method below to allow to retrieve all particles for an atome
343
358
  Genesis.particle_creator(:particles)
344
359
  Genesis.atome_creator_option(:particles_getter_pre_proc) do |params|
@@ -346,25 +361,24 @@ Genesis.atome_creator_option(:particles_getter_pre_proc) do |params|
346
361
  particles_hash = {}
347
362
  atome_found.instance_variables.each do |particle_found|
348
363
  particle_content = atome_found.instance_variable_get(particle_found)
349
- particles_hash[particle_found] = particle_content
364
+ particles_hash[particle_found.sub('@', '')] = particle_content
350
365
  end
351
366
  particles_hash
352
367
  end
353
368
 
354
-
355
369
  # link
356
370
  Genesis.particle_creator(:link)
357
371
  Genesis.atome_creator_option(:link_pre_render_proc) do |params|
358
372
  atome_found = params[:atome]
359
373
  atome_to_link = grab(params[:value])
360
374
  particles_found = atome_to_link.particles
361
- atome_type = particles_found.delete('@type')
375
+ atome_type = particles_found.delete(:type)
362
376
  sanitized_particles = {}
363
377
  particles_found.each do |particle_name, value|
364
378
  particle_name = particle_name.gsub('@', '')
365
379
  sanitized_particles[particle_name] = value
366
380
  end
367
- sanitized_particles[:parent]=[atome_found.id]
381
+ sanitized_particles[:parent] = [atome_found.id]
368
382
  atome_found.send(atome_type, sanitized_particles)
369
383
  params[:value]
370
384
  end
@@ -373,6 +387,7 @@ Genesis.particle_creator(:path)
373
387
  Genesis.generate_html_renderer(:path) do |value, atome, proc|
374
388
  @html_object[:src] = value
375
389
  end
390
+
376
391
  Genesis.generate_html_renderer(:web) do |value, atome, proc|
377
392
  id_found = id
378
393
  instance_exec(&proc) if proc.is_a?(Proc)
@@ -380,8 +395,123 @@ Genesis.generate_html_renderer(:web) do |value, atome, proc|
380
395
  iframe({ id: id_found }).atome
381
396
  end.append_to($document[:user_view])
382
397
  @html_object = $document[id_found]
383
- @html_object.attributes[:allow]='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
384
- @html_object.attributes[:allowfullscreen]=true
398
+ @html_object.attributes[:allow] = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
399
+ @html_object.attributes[:allowfullscreen] = true
385
400
  @html_type = :web
386
401
  end
387
402
 
403
+ Genesis.particle_creator(:data)
404
+
405
+ Genesis.generate_html_renderer(:data) do |value, atome, proc|
406
+ # TODO: create a method for each type
407
+ send("#{type}_data", value)
408
+ end
409
+
410
+ Genesis.particle_creator(:code)
411
+ Genesis.atome_creator_option(:code_pre_render_proc) do |params|
412
+ def get_binding
413
+ binding
414
+ end
415
+
416
+ str = params[:value][:code]
417
+ eval str, get_binding, __FILE__, __LINE__
418
+ params[:value]
419
+ end
420
+ Genesis.particle_creator(:on)
421
+
422
+ Genesis.generate_html_renderer(:on) do |value, atome, proc|
423
+ @html_object.on(value) do |e|
424
+ instance_exec(e, &proc) if proc.is_a?(Proc)
425
+ end
426
+ end
427
+
428
+ Genesis.atome_creator_option(:shape_post_save_proc) do |params|
429
+ current_atome = params[:atome]
430
+ #FIXME: look why we have to look in [:value][:value] this looks suspect
431
+ bloc_found = params[:value][:value][:bloc]
432
+ current_atome.instance_exec(params, &bloc_found) if bloc_found.is_a?(Proc)
433
+ params
434
+ end
435
+
436
+ Genesis.atome_creator_option(:text_post_save_proc) do |params|
437
+ current_atome = params[:atome]
438
+ #FIXME: look why we have to look in [:value][:value] this looks suspect
439
+ bloc_found = params[:value][:value][:bloc]
440
+ current_atome.instance_exec(params, &bloc_found) if bloc_found.is_a?(Proc)
441
+ params
442
+ end
443
+
444
+ Genesis.atome_creator_option(:play_pre_render_proc) do |params|
445
+ params[:atome].send("play_#{params[:atome].type}", params)
446
+ end
447
+
448
+ Genesis.atome_creator_option(:pause_pre_render_proc) do |params|
449
+ params[:atome].send("pause_#{params[:atome].type}", params)
450
+ proc_found = params[:proc]
451
+ params[:atome].instance_exec('::call back from pause render', &proc_found) if proc_found.is_a?(Proc)
452
+ end
453
+
454
+ Genesis.generate_html_renderer(:time) do |value, atome, proc|
455
+ # params[:atome].html_object.currentTime= 33
456
+ @html_object.currentTime = value
457
+ end
458
+
459
+ #drag
460
+ Genesis.generate_html_renderer(:drag) do |value, atome, proc|
461
+ alert ("this is very strange that I had a style tag please check")
462
+ instance_exec(&proc) if proc.is_a?(Proc)
463
+ @html_type = :style
464
+ $document.head << DOM("<style atome='#{type}' id='#{id}'></style>")
465
+ end
466
+ Genesis.particle_creator(:lock)
467
+ Genesis.particle_creator(:target)
468
+ Genesis.atome_creator(:drag) do |params|
469
+ # TODO: factorise code below
470
+ if params
471
+ default_renderer = Sanitizer.default_params[:render]
472
+ generated_id = params[:id] || "drag_#{Universe.atomes.length}"
473
+ generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
474
+ generated_parent = params[:parent] || id
475
+ default_params = { render: [generated_render], id: generated_id, type: :drag, parent: [generated_parent], target: [generated_parent]
476
+ }
477
+ params = default_params.merge(params)
478
+ params
479
+ end
480
+ params
481
+ end
482
+ Genesis.particle_creator(:remove)
483
+ Genesis.particle_creator(:fixed)
484
+ Genesis.particle_creator(:max)
485
+ Genesis.particle_creator(:inside)
486
+ Genesis.atome_creator_option(:remove_pre_render_proc) do |params|
487
+ type_found = params[:atome].type
488
+ current_atome = params[:atome]
489
+ particle_to_remove = params[:value]
490
+ current_atome.send("#{type_found}_remove_#{particle_to_remove}", current_atome)
491
+ end
492
+ Genesis.atome_creator_option(:max_pre_render_proc) do |params|
493
+ current_atome = params[:atome]
494
+ current_atome.constraint_helper(params, current_atome, :max)
495
+ end
496
+ Genesis.atome_creator_option(:inside_pre_render_proc) do |params|
497
+ current_atome = params[:atome]
498
+ params[:value] = grab(params[:value]).html_object
499
+ current_atome.constraint_helper(params, current_atome, :max)
500
+ end
501
+ Genesis.atome_creator_option(:lock_pre_render_proc) do |params|
502
+ current_atome = params[:atome]
503
+ current_atome.constraint_helper(params, current_atome, :lock)
504
+ end
505
+ Genesis.atome_creator_option(:fixed_pre_render_proc) do |params|
506
+ current_atome = params[:atome]
507
+ current_atome.constraint_helper(params, current_atome, :fixed)
508
+ end
509
+ Genesis.generate_html_renderer(:target) do |targets, atome, proc|
510
+ targets.each do |value|
511
+ atome_found = grab(value)
512
+ # we get the id of the drag and ad add it as a html class to all children so they become draggable
513
+ atome_found.html_object.add_class(id)
514
+ end
515
+ html_drag_helper(atome, {})
516
+ end
517
+