atome 0.5.3.8.1 → 0.5.4.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +52 -17
  3. data/app_builder_helpers/Rakefile +20 -3
  4. data/exe/atome +33 -1
  5. data/lib/atome/atome.rb +64 -75
  6. data/lib/atome/extensions/atome.rb +82 -52
  7. data/lib/atome/extensions/mathematic.rb +8 -12
  8. data/lib/atome/extensions/matrix.rb +141 -202
  9. data/lib/atome/genesis/generators/atome.rb +13 -96
  10. data/lib/atome/genesis/generators/communication.rb +0 -1
  11. data/lib/atome/genesis/generators/effect.rb +0 -6
  12. data/lib/atome/genesis/generators/event.rb +64 -77
  13. data/lib/atome/genesis/generators/geometry.rb +0 -18
  14. data/lib/atome/genesis/generators/identity.rb +56 -52
  15. data/lib/atome/genesis/generators/material.rb +3 -54
  16. data/lib/atome/genesis/generators/spatial.rb +8 -8
  17. data/lib/atome/genesis/generators/utility.rb +82 -68
  18. data/lib/atome/genesis/genesis.rb +15 -4
  19. data/lib/atome/genesis/sparkle.rb +38 -19
  20. data/lib/atome/helpers/callbacks.rb +47 -1
  21. data/lib/atome/helpers/essentials.rb +21 -18
  22. data/lib/atome/helpers/sanitizer.rb +0 -10
  23. data/lib/atome/helpers/utilities.rb +143 -45
  24. data/lib/atome/kernel/batch.rb +13 -36
  25. data/lib/atome/kernel/universe.rb +3 -1
  26. data/lib/atome/presets/atome.rb +14 -23
  27. data/lib/atome/renderers/browser/atome.rb +2 -1
  28. data/lib/atome/renderers/browser/browser.rb +2 -0
  29. data/lib/atome/renderers/browser/event.rb +18 -0
  30. data/lib/atome/renderers/browser/helpers/browser_helper.rb +17 -0
  31. data/lib/atome/renderers/browser/helpers/drag_helper.rb +13 -0
  32. data/lib/atome/renderers/browser/helpers/drop_helper.rb +13 -0
  33. data/lib/atome/renderers/browser/helpers/event_helper.rb +16 -11
  34. data/lib/atome/renderers/browser/helpers/over_helper.rb +13 -0
  35. data/lib/atome/renderers/browser/helpers/text_helper.rb +14 -2
  36. data/lib/atome/renderers/browser/identity.rb +23 -5
  37. data/lib/atome/renderers/browser/spatial.rb +3 -2
  38. data/lib/atome/renderers/browser/utility.rb +7 -6
  39. data/lib/atome/renderers/renderer.rb +1 -0
  40. data/lib/atome/version.rb +2 -2
  41. data/lib/atome.rb +1 -0
  42. data/sig/atome.rbs +36 -0
  43. data/sig/batch.rbs +7 -0
  44. data/sig/browser_helper.rbs +14 -0
  45. data/sig/essentials.rbs +11 -0
  46. data/sig/matrix.rbs +5 -0
  47. data/sig/object.rbs +3 -0
  48. data/vendor/assets/aui.rb +5 -0
  49. data/vendor/assets/src/index.html +15 -3
  50. data/vendor/assets/src/js/atome/atome.js +1 -1
  51. data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +1 -1
  52. data/vendor/assets/src/js/atome/atome_helpers/atome_communication.js +40 -0
  53. data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +40 -3
  54. data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +12 -0
  55. data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +166 -0
  56. data/vendor/assets/src/js/atome/atome_helpers/atome_file.js +6 -1
  57. data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +43 -0
  58. data/vendor/assets/src/medias/images/icons/email.svg +12 -12
  59. data/vendor/assets/src/medias/rubies/demos.rb +63 -0
  60. data/vendor/assets/src/medias/rubies/examples/add.rb +3 -4
  61. data/vendor/assets/src/medias/rubies/examples/animation.rb +2 -2
  62. data/vendor/assets/src/medias/rubies/examples/atome_new.rb +18 -6
  63. data/vendor/assets/src/medias/rubies/examples/attach.rb +15 -0
  64. data/vendor/assets/src/medias/rubies/examples/attached.rb +5 -6
  65. data/vendor/assets/src/medias/rubies/examples/batch.rb +17 -0
  66. data/vendor/assets/src/medias/rubies/examples/blur.rb +2 -2
  67. data/vendor/assets/src/medias/rubies/examples/box.rb +2 -2
  68. data/vendor/assets/src/medias/rubies/examples/code.rb +1 -1
  69. data/vendor/assets/src/medias/rubies/examples/color.rb +20 -4
  70. data/vendor/assets/src/medias/rubies/examples/delete.rb +18 -2
  71. data/vendor/assets/src/medias/rubies/examples/detached.rb +3 -3
  72. data/vendor/assets/src/medias/rubies/examples/drag.rb +53 -2
  73. data/vendor/assets/src/medias/rubies/examples/drop.rb +26 -0
  74. data/vendor/assets/src/medias/rubies/examples/fullscreen.rb +2 -2
  75. data/vendor/assets/src/medias/rubies/examples/image.rb +2 -2
  76. data/vendor/assets/src/medias/rubies/examples/link.rb +7 -5
  77. data/vendor/assets/src/medias/rubies/examples/markers.rb +2 -2
  78. data/vendor/assets/src/medias/rubies/examples/materials.rb +15 -0
  79. data/vendor/assets/src/medias/rubies/examples/matrix.rb +85 -41
  80. data/vendor/assets/src/medias/rubies/examples/matrix_changes.rb +483 -0
  81. data/vendor/assets/src/medias/rubies/examples/matrix_simple.rb +32 -0
  82. data/vendor/assets/src/medias/rubies/examples/monitoring.rb +44 -18
  83. data/vendor/assets/src/medias/rubies/examples/mute.rb +1 -1
  84. data/vendor/assets/src/medias/rubies/examples/on.rb +1 -1
  85. data/vendor/assets/src/medias/rubies/examples/over.rb +6 -4
  86. data/vendor/assets/src/medias/rubies/examples/pause.rb +1 -1
  87. data/vendor/assets/src/medias/rubies/examples/physical.rb +19 -0
  88. data/vendor/assets/src/medias/rubies/examples/play.rb +1 -1
  89. data/vendor/assets/src/medias/rubies/examples/read.rb +2 -2
  90. data/vendor/assets/src/medias/rubies/examples/repeat.rb +3 -2
  91. data/vendor/assets/src/medias/rubies/examples/shadow.rb +1 -1
  92. data/vendor/assets/src/medias/rubies/examples/sort.rb +3 -4
  93. data/vendor/assets/src/medias/rubies/examples/tags.rb +10 -0
  94. data/vendor/assets/src/medias/rubies/examples/text.rb +4 -4
  95. data/vendor/assets/src/medias/rubies/examples/time.rb +3 -3
  96. data/vendor/assets/src/medias/rubies/examples/video.rb +2 -2
  97. data/vendor/assets/src/medias/rubies/examples/web.rb +2 -2
  98. data/vendor/assets/src/medias/rubies/{examples → unstable}/_2_solve.rb +1 -1
  99. data/vendor/assets/src/medias/rubies/{examples → unstable}/_audio.rb +1 -1
  100. data/vendor/assets/src/medias/rubies/{examples → unstable}/_dataset.rb +4 -4
  101. data/vendor/assets/src/medias/rubies/unstable/_matrix.rb +58 -0
  102. data/vendor/assets/src/medias/rubies/{examples → unstable}/_table2.rb +2 -2
  103. data/vendor/assets/src/medias/rubies/{examples → unstable}/_vie.rb +2 -2
  104. data/vendor/assets/src/utilities/mode.rb +0 -0
  105. data/vendor/assets/src-tauri/tauri.conf.json +2 -2
  106. metadata +34 -14
  107. data/vendor/assets/src/medias/rubies/examples/parents.rb +0 -15
  108. data/vendor/assets/src/medias/rubies/examples/table.rb +0 -479
  109. /data/vendor/assets/src/medias/rubies/{examples → unstable}/!run.rb +0 -0
  110. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_attach.rb +0 -0
  111. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_os.rb +0 -0
  112. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_test.rb +0 -0
@@ -0,0 +1,483 @@
1
+ # frozen_string_literal: true
2
+
3
+ params = {
4
+
5
+ id: :my_table, left: 0, top: 0, width: 500, height: 399, smooth: 8, color: :yellowgreen,
6
+ columns: { count: 8,
7
+ titles: { 1 => :col1, 3 => :mycol },
8
+ data: { 3 => :col_content },
9
+ actions: { 2 => { touch: :the_action } },
10
+ particles: { color: :blue }
11
+ },
12
+ rows: { count: 6,
13
+ titles: { 1 => :my_first_row, 5 => :other_row },
14
+ data: { 0 => :col_content },
15
+ actions: {},
16
+ particles: { shadows: :black }
17
+ },
18
+ cells: {
19
+ # data: { 0 => :here, 2 => "hello", 4 => :hi, 5 => :good, 7 => :super },
20
+ # actions: { 2 => { touch: :my_lambda } },
21
+ particles: { margin: 9, color: :blue, smooth: 9, shadow: { blur: 9, left: 3, top: 3 } }
22
+ },
23
+ exceptions: {
24
+ columns: {
25
+ # divided: { 2 => 3 },
26
+ fusion: { 1 => [3, 5], 7 => [2, 5] }
27
+ },
28
+ rows: {
29
+ divided: { 1 => 3 },
30
+ fusion: { 2 => [0, 3], 5 => [2, 5] }
31
+ }
32
+ }
33
+ }
34
+ m = matrix(params)
35
+
36
+ found = m.columns(5) do |el|
37
+ el.color(:yellow)
38
+ end
39
+
40
+ m.rows(3) do |el|
41
+ el.color(:orange)
42
+ end
43
+
44
+ m.rows(1) do |el|
45
+ el.color(:lightgray)
46
+ end
47
+
48
+ found.data.each do |el|
49
+ el.color(:red)
50
+ end
51
+
52
+ # found.data[0..2].each do |el|
53
+ # el.color(:cyan)
54
+ # end
55
+ #
56
+ grab(:my_table_21).color(:pink)
57
+ grab(:my_table_26).color(:purple)
58
+ # m.cells([20, 5]).rotate(15)
59
+ # m.cell(9).color(:black)
60
+ # test = m.cells([23, 26])
61
+ # test.color(:blue)
62
+ # m.columns(6).data[0..3].color(:white)
63
+
64
+ grab(m.id).drag({ move: true }) do |e|
65
+ puts e
66
+ end
67
+ wait 1 do
68
+ m.add_columns(3)
69
+ m.rows(3) do |el|
70
+ el.color(:orange)
71
+ end
72
+ wait 1 do
73
+ m.add_rows(4)
74
+ m.rows(1) do |el|
75
+ el.color(:lightgray)
76
+ end
77
+ wait 1 do
78
+ found.data.each do |el|
79
+ el.color(:red)
80
+ end
81
+ m.resize(330, 300)
82
+
83
+ m.fusion(rows: { 2 => [0, 3], 3 => [2, 5] })
84
+ end
85
+ end
86
+ end
87
+
88
+ #
89
+ m.fusion(columns: { 3=> [3, 5], 4 => [2, 5] })
90
+ m.fusion(rows: { 0 => [0, 3], 3 => [5, 9] })
91
+ # m.override( {
92
+ # columns: { number: [ 0, 3 ] ,width: 200},
93
+ # rows: { number: [ 1, 4 ] ,height: 200},
94
+ # })
95
+ m.last(:rows) do |el|
96
+ el.color(:violet)
97
+ end
98
+ m.divide( rows: {1 => 3})
99
+ m.cell(9).box({left: 0, top: 0, id: :the_big_one, width: 66, height: 66, color: :black})
100
+ # m.cell(9).content([box({ left: 0, top: 0, id: :another_one, width: 66, height: 66, color: :black })])
101
+
102
+
103
+
104
+
105
+ # # puts m.cell(9).content
106
+ # m.relations({ relation_1: {
107
+ # # start: {cell_id => out_nb},
108
+ # # end: {cell_id => in_nb},
109
+ # start: { 9 => 2 },
110
+ # end: { 2 => 3 }
111
+ # } })
112
+ # m.add({ relations: {
113
+ # # start: {cell_id => out_nb},
114
+ # # end: {cell_id => in_nb},
115
+ # rel_2: { start: { 7 => 3 },
116
+ # end: { 1 => 4 } }
117
+ # }
118
+ # })
119
+ # m.delete({ relations: :rel_2 })
120
+ # # alert m.relations
121
+ # # "sourceComponent": 0,
122
+ # # "sourceOutputSlot": 1,
123
+ # # "targetComponent": 1,
124
+ # # "targetInputSlot": 1
125
+ # # puts m.cell(9)
126
+ # # m.children.each do |child|
127
+ # # puts "#{grab(child).id} : #{grab(child).width}"
128
+ # # end
129
+ #
130
+ # # alert(grab("my_table_9"))
131
+ # # grab("my_table_9").children .each do |child|
132
+ # # grab(child).color(:white)
133
+ # # end
134
+ # matrix_ratio=m.height/m.width
135
+ # # alert prev_size
136
+ # $window.on :resize do |e|
137
+ # # m.top(0)
138
+ # # m.left(0)
139
+ # # ratio_w=m.width.value/$window.view.width
140
+ # # ratio_h=m.height.value/$window.view.height
141
+ # # puts "=====> :#{ratio_w}"
142
+ # # m.resize(ratio_w*$window.view.width,ratio_h*$window.view.height)
143
+ # m.resize($window.view.width, $window.view.width*matrix_ratio)
144
+ # end
145
+ # # m.ratio(:fixed)
146
+ #
147
+ # #TODO : add cell => style, actions, data, content, relation
148
+ # #TODO : mega important => I must have a reflection on .value
149
+ #
150
+ #
151
+ # # TODO : try matrix in a matrix's cell
152
+ # # TODO : store data, actions, and titles
153
+ # # alert m.cell(0)
154
+ # # ############################## end table tests #############
155
+ # # TODO : alteration data persistence when resizing color, and other particles are lost
156
+ #
157
+ # # generator = Genesis.generator
158
+ # ############
159
+ #
160
+ # # generator.build_option(:pre_render_parents) do |parents_ids|
161
+ # # parents_ids.each do |parents_id|
162
+ # # parents_found = grab(parents_id)
163
+ # # parents_found.atome[:children] << id if parents_found
164
+ # # end
165
+ # # family(parents_ids)
166
+ # # end
167
+ # #
168
+ # # generator.build_option(:pre_render_children) do |children_pass|
169
+ # # children_pass.each do |child_found|
170
+ # # atome_found = grab(child_found)
171
+ # # atome_found.parents([@atome[:id]])
172
+ # # end
173
+ # # end
174
+ # #
175
+ # # generator.build_particle(:family)
176
+ # #
177
+ # # generator.build_option(:pre_render_family) do |parents_ids|
178
+ # #
179
+ # # end
180
+ # #
181
+ # # ###### render #####
182
+ # #
183
+ # # generator.build_render(:browser_family) do |parents_found|
184
+ # # parents_found.each do |parent_found|
185
+ # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
186
+ # # end
187
+ # # end
188
+ # ############################## new attempt
189
+ # #
190
+ # # generator.build_sanitizer(:color) do |params|
191
+ # # parent_found = found_parents_and_renderers[:parent]
192
+ # # render_found = found_parents_and_renderers[:renderers]
193
+ # # default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
194
+ # # attach: parent_found,children: [],
195
+ # # red: 0, green: 0, blue: 0, alpha: 1 }
196
+ # # params = create_color_hash(params) unless params.instance_of? Hash
197
+ # # new_params = default_params.merge!(params)
198
+ # # atome[:color] = new_params
199
+ # # new_params
200
+ # # end
201
+ # #
202
+ # # generator.build_option(:pre_render_parents) do |parents_ids|
203
+ # # # family(parents_ids)
204
+ # # end
205
+ # # generator.build_option(:pre_render_children) do |children_pass|
206
+ # # # children_pass.each do |child_found|
207
+ # # # atome_found = grab(child_found)
208
+ # # # atome_found.parents([@atome[:id]])
209
+ # # # end
210
+ # # end
211
+ # # # render
212
+ # # generator.build_render(:browser_parent) do |parents_found|
213
+ # # # parents_found.each do |parent_found|
214
+ # # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
215
+ # # # end
216
+ # # end
217
+ # #
218
+ # # generator.build_render(:browser_children) do |parents_found|
219
+ # # # parents_found.each do |parent_found|
220
+ # # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
221
+ # # # end
222
+ # # end
223
+ #
224
+ # ########### #########
225
+ #
226
+ # # module BrowserHelper
227
+ # # def self.browser_document
228
+ # # # Work because of the patched version of opal-browser(0.39)
229
+ # # Browser.window
230
+ # # end
231
+ # #
232
+ # # def self.browser_attach_div(parents, html_object, _atome)
233
+ # # html_object.append_to(browser_document[parents])
234
+ # # end
235
+ # #
236
+ # # def self.browser_attach_style(parents, _html_object, atome)
237
+ # # browser_document[parents].add_class(atome[:id])
238
+ # # end
239
+ # # end
240
+ #
241
+ # # generator.build_option(:pre_render_parents) do |parents_ids|
242
+ # # parents_ids.each do |parents_id|
243
+ # # if parents_id.instance_of? Atome
244
+ # # parents_id = parents_id.value
245
+ # # end
246
+ # # parents_found = grab(parents_id)
247
+ # # family(parents_id)
248
+ # # parents_found.atome[:children] << atome[:id]
249
+ # # end
250
+ # # end
251
+ # #
252
+ # # generator.build_option(:pre_render_children) do |children_ids|
253
+ # # children_ids.each do |child_id|
254
+ # # if child_id.instance_of? Atome
255
+ # # child_id = child_id.value
256
+ # # end
257
+ # # child_found = grab(child_id)
258
+ # # parents_found=@atome[:id]
259
+ # # child_found.family(parents_found)
260
+ # # child_found.atome[:parents] = [parents_found]
261
+ # # end
262
+ # # end
263
+ # #
264
+ #
265
+ # # generator.build_particle(:family, { render: true, store: false })
266
+ # # generator.build_render(:browser_family) do |parents_found|
267
+ # # BrowserHelper.send("browser_attach_#{@browser_type}", parents_found, @browser_object, @atome)
268
+ # # end
269
+ #
270
+ # # class Universe
271
+ # # def add_to_atomes(id, atome)
272
+ # # # instance_variable_get('@atomes').merge!(atome)
273
+ # # @atomes[id] = atome
274
+ # # end
275
+ # #
276
+ # # def update_atome_id(id, atome, prev_id)
277
+ # # puts :ok
278
+ # # @atomes[id] = atome
279
+ # # @atomes.delete(prev_id)
280
+ # # end
281
+ # # end
282
+ #
283
+ # # generator.build_sanitizer(:id) do |params|
284
+ # # if @atome[:id] != params
285
+ # # Universe.update_atome_id(params, self, @atome[:id])
286
+ # # else
287
+ # # Universe.add_to_atomes(params, self)
288
+ # # end
289
+ # # params
290
+ # # end
291
+ # #
292
+ # # generator.build_render(:browser_id) do |params|
293
+ # # browser_object.id = params if @atome[:id] != params
294
+ # # end
295
+ #
296
+ #
297
+ #
298
+ # # b = box({ id: :titi })
299
+ # # c = color(:orange)
300
+ # # c.id(:tutu)
301
+ # # b.children([:tutu])
302
+ #
303
+ #
304
+ # # alert b.children
305
+ # # alert b
306
+ # # b.circle({id: :toto})
307
+ # # grab(:box_color).parents([:titi])
308
+ # # b.children([:box_color])
309
+ # # alert b
310
+ #
311
+ # # generator.build_render(:browser_parents) do |parents_found|
312
+ # # # p :number_parents
313
+ # # # parents_found.each do |parent_found|
314
+ # # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
315
+ # # # end
316
+ # # end
317
+ # #
318
+ # # generator.build_render(:browser_children) do |children_found|
319
+ # # # p :number_children
320
+ # # # children_found.each do |child_found|
321
+ # # # BrowserHelper.send("browser_attach_#{@browser_type}", child_found, @browser_object, @atome)
322
+ # # # end
323
+ # # end
324
+ #
325
+ # # b = box({ id: :the_test_box })
326
+ # # i = 0
327
+ # # while i < 9
328
+ # # # puts :ok
329
+ # # box({ left: i * 30, width: 9 })
330
+ # # i += 1
331
+ # # end
332
+ # # # c = color({red: 0, green: 1, blue: 0.3, alpha: 1, id: :thcol, children: []})
333
+ # # c = color(:red)
334
+ # # # alert a
335
+ # # # wait 1 do
336
+ # # b.children([c.id])
337
+ # # # c.parents([b.id])
338
+ # # # puts "box is :\n#{b}\n\n color is :\n#{c}"
339
+ # #
340
+ # # puts '-----'
341
+ # # puts "familly content #{b.family}"
342
+ # # # end
343
+ #
344
+ # # generator.build_option(:pre_render_parents) do |parents_ids|
345
+ # # parents_ids.each do |parents_id|
346
+ # # parents_found = grab(parents_id)
347
+ # # parents_found.atome[:children]<< id if parents_found
348
+ # # end
349
+ # # family({attach: parents_ids, children: [] })
350
+ # # end
351
+ # #
352
+ # #
353
+ # # #mess below
354
+ # # generator.build_option(:pre_render_children) do |children_ids|
355
+ # # children_ids.each do |child_found|
356
+ # # atome_found = grab(child_found)
357
+ # # atome_found.atome[:parents]=[@atome[:id]]
358
+ # # end
359
+ # # # family({children: children_ids, attach: [] })
360
+ # # end
361
+ # #
362
+ # #
363
+ # # generator.build_particle(:family)
364
+ # #
365
+ # #
366
+ # # ####################
367
+ # # generator.build_render(:browser_family) do |params|
368
+ # # # puts "kool super kool! : #{parents_found} , type : #{@browser_type}, object : #{@browser_object} ,atome : #{@atome}"
369
+ # # # puts "atome : #{@atome[:id]}, parent : #{parents_found}}"
370
+ # # # puts "atome : #{@atome} : #{params[:parents]}"
371
+ # # puts " #{params[:parents]}"
372
+ # # parents_found=params[:parents]
373
+ # # children_found=params[:children]
374
+ # # parents_found.each do |parent_found|
375
+ # # # atome=
376
+ # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
377
+ # # end
378
+ # #
379
+ # # children_found.each do |parent_found|
380
+ # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
381
+ # # end
382
+ # #
383
+ # # end
384
+ # #
385
+ # # generator.build_render(:browser_parents) do |parents_found|
386
+ # # # puts "moinskool super kool! : #{parents_found} "
387
+ # # # puts "moinskool super kool! : #{parents_found} , type : #{@browser_type}, object : #{@browser_object} ,atome : #{@atome}"
388
+ # # # parents_found.each do |parent_found|
389
+ # # # BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
390
+ # # # end
391
+ # # end
392
+ #
393
+ # ###################
394
+ # # class Atome
395
+ # #
396
+ # # def store_value(element)
397
+ # # params=instance_variable_get("@#{element}")
398
+ # # @atome[element] = params
399
+ # # end
400
+ # #
401
+ # # def build_particle(particle_name,options,&particle_proc)
402
+ # # type = options[:type]
403
+ # # type = :string if options[:type].nil?
404
+ # # store = options[:store]
405
+ # # store = true if options[:store].nil?
406
+ # # render = options[:render]
407
+ # # render = true if options[:render].nil?
408
+ # #
409
+ # # # we add the new method to the particle's collection of methods
410
+ # # Universe.add_to_particle_list(particle_name, type)
411
+ # # auto_render_generator(particle_name) if render # automatise the creation of an empty render method for current particle
412
+ # # new_particle(particle_name,store,render , &particle_proc)
413
+ # # additional_particle_methods(particle_name, &particle_proc) # create alternative methods such as create 'method='
414
+ # # end
415
+ # #
416
+ # # def additional_particle_methods(element, &method_proc)
417
+ # # Atome.define_method "#{element}=" do |params = nil, &user_proc|
418
+ # # instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
419
+ # # end
420
+ # # end
421
+ # #
422
+ # # def new_particle(element,store,render, &method_proc)
423
+ # # Atome.define_method element do |params = nil, &user_proc|
424
+ # # if params || params == false
425
+ # # # the line below execute the proc created when using the build_particle method
426
+ # # instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
427
+ # # params = sanitize(element, params)
428
+ # # create_particle(element,store,render)
429
+ # # send("set_#{element}", params, &user_proc)
430
+ # # else
431
+ # # get_particle(element, &user_proc)
432
+ # # end
433
+ # # end
434
+ # # end
435
+ # # def run_optional_proc(proc_name, atome = self, element, &user_proc)
436
+ # # params=instance_variable_get("@#{element}")
437
+ # # option_found = Universe.get_optional_method(proc_name)
438
+ # # atome.instance_exec(params, user_proc, atome, &option_found) if option_found.is_a?(Proc)
439
+ # # end
440
+ # #
441
+ # # def rendering(element, &user_proc)
442
+ # # params=instance_variable_get("@#{element}")
443
+ # # render_engines = @atome[:renderers]
444
+ # # render_engines.each do |render_engine|
445
+ # # send("#{render_engine}_#{element}", params, &user_proc)
446
+ # # end
447
+ # # end
448
+ # #
449
+ # # def broadcasting(element)
450
+ # # params=instance_variable_get("@#{element}")
451
+ # # @broadcast.each_value do |particle_monitored|
452
+ # # if particle_monitored[:particles].include?(element)
453
+ # # code_found=particle_monitored[:code]
454
+ # # instance_exec(self, element, params, &code_found) if code_found.is_a?(Proc)
455
+ # # end
456
+ # # end
457
+ # # end
458
+ # #
459
+ # # def particle_creation(element, params,store,render, &user_proc)
460
+ # # return false unless security_pass(element, params)
461
+ # # # we create a proc holder of any new particle if user pass a bloc
462
+ # # store_code_bloc(element, &user_proc) if user_proc
463
+ # # # Params is now an instance variable so it should be passed thru different methods
464
+ # # instance_variable_set("@#{element}", params)
465
+ # # run_optional_proc("pre_render_#{@atome[:type]}".to_sym, self, element, &user_proc)
466
+ # # run_optional_proc("pre_render_#{element}".to_sym, self, element, &user_proc)
467
+ # # rendering(element, &user_proc) if render
468
+ # # run_optional_proc("post_render_#{@atome[:type]}".to_sym, self, element, &user_proc)
469
+ # # run_optional_proc("post_render_#{element}".to_sym, self, element, &user_proc)
470
+ # # broadcasting(element)
471
+ # # store_value(element) if store
472
+ # # self
473
+ # # end
474
+ # #
475
+ # # def create_particle(element,store,render)
476
+ # # Atome.define_method "set_#{element}" do |params, &user_proc|
477
+ # # particle_creation(element, params, store,render,&user_proc)
478
+ # # end
479
+ # # end
480
+ # #
481
+ # # end
482
+
483
+
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ m=matrix({ id: :my_table, left: 330, top: 0, width: 500, height: 399, smooth: 8, color: :yellowgreen,
4
+ cells: {
5
+ particles: { margin: 9, color: :red, smooth: 9, shadow: { blur: 9, left: 3, top: 3,id: :cell_shadow } }
6
+ }
7
+ })
8
+
9
+ m.cells do |el|
10
+ batch(el)
11
+ batch.color(:white).rotate(22).text(:hello)
12
+ end
13
+
14
+ m.cells(["my_table_2", 9, "my_table_5"]) do |el|
15
+ batch(el)
16
+ batch.color(:red).rotate(33)
17
+ end
18
+
19
+
20
+ mm=matrix
21
+ #
22
+ mm.cells do |el|
23
+ batch(el)
24
+ batch.color(:yellowgreen).rotate(33)
25
+ end
26
+
27
+
28
+
29
+ mm.cells.each do |el|
30
+ el_found=grab(el)
31
+ el_found.rotate(22).text(:hello).color(:red)
32
+ end
@@ -1,26 +1,45 @@
1
1
  # frozen_string_literal: true
2
+ bb=text({data: :hello })
3
+ #
4
+ bb.touch(true) do
5
+ bb.left(333)
6
+ end
7
+
8
+ # alert grab(:view).attached
9
+ bb.monitor({ atomes: grab(:view).attached, particles: [:left] }) do |_atome, _element, value|
10
+ puts "the left value of #{id} was change to : #{value}"
11
+ end
2
12
 
3
13
  a = text({ data: "open the console!" })
4
14
  a.right(44).left(66)
5
-
6
- b = Atome.new(shape: { type: :shape, id: :my_shape, children: [], parents: [:view], renderers: [:browser],
7
- left: 0, right: 33
15
+ color({red: 1, id: :the_red_col})
16
+ b = Atome.new(shape: { type: :shape, id: :my_shape, attach: [:view], renderers: [:browser],
17
+ left: 0, right: 33, attached: :the_red_col, width: 33, height: 33
8
18
  })
9
19
 
10
- c = Atome.new(shape: { type: :shape, id: :my_pix, children: [], parents: [:view], renderers: [:browser],
11
- left: 50, right: 78
20
+ c = Atome.new(shape: { type: :shape, id: :my_pix, attach: [:view], renderers: [:browser],
21
+ left: 50, right: 78, attached: :the_red_col, width: 33, height: 33
12
22
  })
13
23
 
14
- a.monitor({ atomes: grab(:view).children, particles: [:left] }) do |atome, element, value|
15
- puts "monitoring: #{atome.id}, #{element}, #{value}"
16
- end
24
+
25
+
17
26
 
18
27
  b.left(936)
19
- b.left(777)
20
- c.left(888)
28
+ wait 0.5 do
29
+ b.left(777)
30
+ wait 0.5 do
31
+ c.left(888)
32
+ end
33
+ end
34
+
35
+ puts "bb monitor is #{bb.monitor}"
21
36
 
22
37
  # test 2
23
38
  aa = text({ data: 'touch me and look in the console', top: 99, width: 399, left: 120 })
39
+
40
+
41
+ bb=box({ id: :the_boxy })
42
+
24
43
  aa.touch(true) do
25
44
  aa.color(:red)
26
45
  aa.left(333)
@@ -28,17 +47,24 @@ aa.touch(true) do
28
47
  aa.right(4)
29
48
  aa.height(199)
30
49
  end
50
+ bb.drag(true)
51
+ bb.monitor({ atomes: grab(:view).attached, particles: [:left] }) do |_atome, _element, value|
52
+ puts "the left value of #{id} was change to : #{value}"
53
+ end
31
54
 
32
- aa.box({ id: :theboxy })
33
-
34
- aa.monitor({ atomes: grab(:view).children, particles: [:left] }) do |_atome, _element, value|
35
- puts "the left value was change to : #{value}"
55
+ bb.monitor({ atomes: grab(:view).attached, particles: [:top] }) do |_atome, _element, value|
56
+ puts "the top value of #{id} was change to : #{value}"
36
57
  end
37
58
 
38
- aa.monitor({ atomes: grab(:view).children, particles: [:width] }) do |_atome, _element, value|
39
- puts "the width's value was change to : #{value}"
59
+ bb.monitor({ atomes: grab(:view).attached, particles: [:width] }) do |_atome, _element, value|
60
+ puts "the width's value of #{id} was change to : #{value}"
40
61
  end
41
62
 
42
- aa.monitor({ atomes: grab(:view).children, particles: [:left], id: :my_monitorer }) do |_atome, _element, value|
43
- puts "the second monitor left value was log to : #{value}"
63
+ bb.monitor({ atomes: grab(:view).attached, particles: [:left], id: :my_monitorer }) do |_atome, _element, value|
64
+ puts "the second monitor left value of #{id} was log to : #{value}"
44
65
  end
66
+ # puts aa.monitor
67
+ bb.top(66)
68
+ a.monitor({ atomes: grab(:view).attached, particles: [:left] }) do |atome, element, value|
69
+ puts "monitoring #{id} : #{atome.id}, #{element}, #{value}"
70
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  my_video2 = Atome.new(
4
- video: { renderers: [:browser], id: :video9, type: :video, parents: [:view], path: './medias/videos/madmax.mp4',
4
+ video: { renderers: [:browser], id: :video9, type: :video, attach: [:view], path: './medias/videos/madmax.mp4',
5
5
  left: 666, top: 333, width: 199, height: 99,
6
6
  }) do |params|
7
7
  puts "2- video callback time is #{params}, id is : #{id}"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  my_video = Atome.new(
4
- video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],
4
+ video: { renderers: [:browser], id: :video1, type: :video, attach: [:view],
5
5
  path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
6
6
  }
7
7
  ) do |params|
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
-
3
- b=circle
2
+ c=circle
3
+ b=circle({left: 333, id: :the_c})
4
4
  b.touch(true) do
5
5
  self.color(:blue)
6
6
  end
@@ -11,9 +11,11 @@ b.touch(:long) do
11
11
  end
12
12
 
13
13
  b.over(:enter) do
14
- self.color(:red)
14
+ self.color(:black)
15
+
15
16
  end
16
17
 
17
18
  b.over(:leave) do
19
+
18
20
  self.color(:blue)
19
- end
21
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  my_video = Atome.new(
4
- video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],
4
+ video: { renderers: [:browser], id: :video1, type: :video, attach: [:view],
5
5
  path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
6
6
  }
7
7
  ) do |params|
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ b = box({left: 333, id: :the_one_box})
4
+ b.color(:red)
5
+
6
+ b.circle({top: 66, id: :the_circle, color: :green})
7
+ b.box({left: 166,top: 166, id: :the_box, color: :green})
8
+ b.text({left: 166, id: :the_text, data: :green})
9
+ b.image('red_planet.png')
10
+ `console.clear()`
11
+ puts "b: #{b}"
12
+
13
+
14
+
15
+ wait 2 do
16
+ b.physical.each do |attached_atome_id|
17
+ b.delete({id: attached_atome_id})
18
+ end
19
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  my_video = Atome.new(
4
- video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],clones: [],
4
+ video: { renderers: [:browser], id: :video1, type: :video, attach: [:view],clones: [],
5
5
  time: 33, path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
6
6
  }
7
7
  ) do |params|
@@ -4,8 +4,8 @@ puts "Attention this method only work with a server due to security restriction
4
4
  a=box
5
5
  text("touch the box to read the file")
6
6
  a.touch(true) do
7
- a.read('rubies/examples/image.rb') do |params|
8
- text({data: params, visual:{size: 9}})
7
+ a.read('texts/lorem.txt') do |params|
8
+ text({data: params, visual:{size: 16}})
9
9
  end
10
10
  end
11
11