atome 0.4.5.4 → 0.5.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -3
  3. data/README.md +7 -4
  4. data/Rakefile +22 -12
  5. data/app_builder_helpers/Rakefile +65 -21
  6. data/exe/atome +91 -45
  7. data/lib/atome/atome_meta_engine.rb +132 -0
  8. data/lib/atome/extensions/atome.rb +41 -0
  9. data/lib/atome/extensions/ping.rb +15 -11
  10. data/lib/atome/extensions/sha.rb +3 -1
  11. data/lib/atome/genesis/generators/atome.rb +13 -0
  12. data/lib/atome/{renderers/headless/properties/generator.rb → genesis/generators/communication.rb} +2 -0
  13. data/lib/atome/genesis/generators/effect.rb +6 -0
  14. data/lib/atome/genesis/generators/event.rb +5 -0
  15. data/lib/atome/genesis/generators/geometry.rb +6 -0
  16. data/lib/atome/genesis/generators/identity.rb +15 -0
  17. data/lib/atome/genesis/generators/material.rb +10 -0
  18. data/lib/atome/genesis/generators/spatial.rb +12 -0
  19. data/lib/atome/genesis/generators/utility.rb +14 -0
  20. data/lib/atome/genesis/genesis.rb +51 -0
  21. data/lib/atome/genesis/sparkle.rb +58 -0
  22. data/lib/atome/helpers/color_helper/color/cmyk.rb +263 -0
  23. data/lib/atome/helpers/color_helper/color/css.rb +7 -0
  24. data/lib/atome/helpers/color_helper/color/grayscale.rb +197 -0
  25. data/lib/atome/helpers/color_helper/color/hsl.rb +240 -0
  26. data/lib/atome/helpers/color_helper/color/palette/adobecolor.rb +260 -0
  27. data/lib/atome/helpers/color_helper/color/palette/gimp.rb +104 -0
  28. data/lib/atome/helpers/color_helper/color/palette/monocontrast.rb +164 -0
  29. data/lib/atome/helpers/color_helper/color/palette.rb +4 -0
  30. data/lib/atome/helpers/color_helper/color/rgb/colors.rb +167 -0
  31. data/lib/atome/helpers/color_helper/color/rgb/contrast.rb +57 -0
  32. data/lib/atome/helpers/color_helper/color/rgb/metallic.rb +28 -0
  33. data/lib/atome/helpers/color_helper/color/rgb.rb +715 -0
  34. data/lib/atome/helpers/color_helper/color/yiq.rb +62 -0
  35. data/lib/atome/helpers/color_helper/color.rb +196 -0
  36. data/lib/atome/helpers/essentials.rb +42 -0
  37. data/lib/atome/helpers/sanitizer.rb +42 -0
  38. data/lib/atome/helpers/utilities.rb +57 -0
  39. data/lib/atome/kernel/essentials.rb +30 -0
  40. data/lib/atome/kernel/universe.rb +77 -20
  41. data/lib/atome/presets/atome.rb +66 -0
  42. data/lib/atome/processors/utilities.rb +10 -0
  43. data/lib/atome/renderers/browser/atome.rb +95 -0
  44. data/lib/atome/renderers/browser/browser.rb +158 -0
  45. data/lib/atome/renderers/browser/effect.rb +23 -0
  46. data/lib/atome/renderers/browser/event.rb +9 -0
  47. data/lib/atome/renderers/browser/geometry.rb +11 -0
  48. data/lib/atome/renderers/browser/identity.rb +20 -0
  49. data/lib/atome/renderers/browser/material.rb +43 -0
  50. data/lib/atome/renderers/{opal → browser}/opal_browser.rb +0 -2
  51. data/lib/atome/renderers/browser/spatial.rb +22 -0
  52. data/lib/atome/renderers/browser/utility.rb +26 -0
  53. data/lib/atome/renderers/html/atome.rb +47 -0
  54. data/lib/atome/renderers/html/effect.rb +19 -0
  55. data/lib/atome/renderers/html/event.rb +9 -0
  56. data/lib/atome/renderers/html/geometry.rb +11 -0
  57. data/lib/atome/renderers/html/html.rb +42 -0
  58. data/lib/atome/renderers/html/identity.rb +14 -0
  59. data/lib/atome/renderers/html/opal_browser.rb +6 -0
  60. data/lib/atome/renderers/html/spatial.rb +28 -0
  61. data/lib/atome/renderers/html/utility.rb +15 -0
  62. data/lib/atome/renderers/opal/atome_opal_extensions.rb +1 -1
  63. data/lib/atome/renderers/opal/extensions/atome.rb +29 -0
  64. data/lib/atome/renderers/opal/extensions/geolocation.rb +0 -1
  65. data/lib/atome/renderers/opal/opal.rb +4 -0
  66. data/lib/atome/version.rb +1 -1
  67. data/lib/atome.rb +22 -54
  68. data/vendor/assets/application/index.rb +3 -1
  69. data/vendor/assets/application/required_example.rb +1 -0
  70. data/{lib/atome/renderers/headless/headless.rb → vendor/assets/aui.rb} +0 -0
  71. data/vendor/assets/build/css/style.css +55 -0
  72. data/vendor/assets/build/index.html +12 -7
  73. data/vendor/assets/build/js/atome/atome.js +72 -58
  74. data/vendor/assets/build/js/third_parties/interact.min.js +2 -3
  75. data/vendor/assets/build/js/{ping.min.js → third_parties/ping.min.js} +0 -0
  76. data/vendor/assets/build/js/{utilities → third_parties}/w3color.js +0 -0
  77. data/vendor/assets/build/js/third_parties/zim.min.js +1 -0
  78. data/vendor/assets/build/medias/rubies/examples/!run.rb +16 -0
  79. data/{lib/atome/renderers/server/server.rb → vendor/assets/build/medias/rubies/examples/_animation.rb} +0 -0
  80. data/vendor/assets/build/medias/rubies/examples/_code.rb +12 -0
  81. data/vendor/assets/build/medias/rubies/examples/_id.rb +14 -0
  82. data/vendor/assets/build/medias/rubies/examples/_link.rb +17 -0
  83. data/vendor/assets/build/medias/rubies/examples/_on.rb +18 -0
  84. data/vendor/assets/build/medias/rubies/examples/_read.rb +5 -0
  85. data/vendor/assets/build/medias/rubies/examples/_refresh.rb +9 -0
  86. data/vendor/assets/build/medias/rubies/examples/atome.new.rb +13 -10
  87. data/vendor/assets/build/medias/rubies/examples/auto_height.rb +2 -0
  88. data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
  89. data/vendor/assets/build/medias/rubies/examples/blur.rb +4 -0
  90. data/vendor/assets/build/medias/rubies/examples/bottom.rb +3 -1
  91. data/vendor/assets/build/medias/rubies/examples/box.rb +23 -1
  92. data/vendor/assets/build/medias/rubies/examples/circle.rb +3 -0
  93. data/vendor/assets/build/medias/rubies/examples/clear.rb +10 -0
  94. data/vendor/assets/build/medias/rubies/examples/color.rb +47 -8
  95. data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +2 -0
  96. data/vendor/assets/build/medias/rubies/examples/delete.rb +7 -0
  97. data/vendor/assets/build/medias/rubies/examples/drag.rb +43 -4
  98. data/vendor/assets/build/medias/rubies/examples/element.rb +6 -0
  99. data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +3 -1
  100. data/vendor/assets/build/medias/rubies/examples/grab.rb +2 -0
  101. data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
  102. data/vendor/assets/build/medias/rubies/examples/image.rb +6 -2
  103. data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
  104. data/vendor/assets/build/medias/rubies/examples/monitoring.rb +20 -0
  105. data/vendor/assets/build/medias/rubies/examples/parent.rb +8 -5
  106. data/vendor/assets/build/medias/rubies/examples/repeat.rb +2 -0
  107. data/vendor/assets/build/medias/rubies/examples/right.rb +3 -1
  108. data/vendor/assets/build/medias/rubies/examples/schedule.rb +0 -4
  109. data/vendor/assets/build/medias/rubies/examples/shadow.rb +30 -0
  110. data/vendor/assets/build/medias/rubies/examples/text.rb +30 -3
  111. data/vendor/assets/build/medias/rubies/examples/touch.rb +2 -0
  112. data/vendor/assets/build/medias/rubies/examples/video.rb +51 -3
  113. data/vendor/assets/build/medias/rubies/examples/web.rb +3 -2
  114. data/vendor/assets/server/atome_server.rb +3 -5
  115. metadata +78 -166
  116. data/lib/atome/atome_native_extensions.rb +0 -5
  117. data/lib/atome/extensions/helper.rb +0 -123
  118. data/lib/atome/extensions/utilities.rb +0 -39
  119. data/lib/atome/kernel/atome.rb +0 -98
  120. data/lib/atome/kernel/generators/generator.rb +0 -387
  121. data/lib/atome/kernel/generators/genesis.rb +0 -265
  122. data/lib/atome/kernel/generators/sanitizer.rb +0 -77
  123. data/lib/atome/kernel/generators/shapes.rb +0 -40
  124. data/lib/atome/kernel/properties/essential.rb +0 -43
  125. data/lib/atome/kernel/sparkle.rb +0 -37
  126. data/lib/atome/renderers/opal/properties/generator.rb +0 -1
  127. data/lib/atome/renderers/renderer.rb +0 -12
  128. data/lib/atome/renderers/server/properties/generator.rb +0 -9
  129. data/vendor/assets/build/js/application.js +0 -0
  130. data/vendor/assets/build/js/third_parties/createjs.min.js +0 -19
  131. data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +0 -111
  132. data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +0 -12
  133. data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +0 -26
  134. data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +0 -27
  135. data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +0 -92
  136. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +0 -20
  137. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +0 -4
  138. data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +0 -17
  139. data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +0 -13
  140. data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +0 -22
  141. data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +0 -6
  142. data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +0 -15
  143. data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +0 -9
  144. data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +0 -9
  145. data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +0 -5
  146. data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +0 -57
  147. data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +0 -21
  148. data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +0 -18
  149. data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +0 -21
  150. data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +0 -11
  151. data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +0 -7
  152. data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +0 -26
  153. data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +0 -115
  154. data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +0 -14
  155. data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +0 -35
  156. data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +0 -14
  157. data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +0 -3
  158. data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +0 -11
  159. data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +0 -29
  160. data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +0 -12
  161. data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +0 -19
  162. data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +0 -10
  163. data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +0 -23
  164. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +0 -61
  165. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +0 -1
  166. data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +0 -23
  167. data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +0 -11
  168. data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +0 -6
  169. data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +0 -9
  170. data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +0 -23
  171. data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +0 -10
  172. data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +0 -37
  173. data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +0 -44
  174. data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +0 -28
  175. data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +0 -7
  176. data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +0 -24
  177. data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +0 -21
  178. data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +0 -64
  179. data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +0 -7
  180. data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +0 -10
  181. data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +0 -54
  182. data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +0 -13
  183. data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +0 -10
  184. data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +0 -19
  185. data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +0 -69
  186. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +0 -4
  187. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +0 -4
  188. data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +0 -47
  189. data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +0 -9
  190. data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +0 -6
  191. data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +0 -15
  192. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +0 -24
  193. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +0 -41
  194. data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +0 -41
  195. data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +0 -8
  196. data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +0 -37
  197. data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +0 -47
  198. data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +0 -7
  199. data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +0 -26
  200. data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +0 -9
  201. data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +0 -13
  202. data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +0 -12
  203. data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +0 -15
  204. data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +0 -22
  205. data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +0 -14
  206. data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +0 -19
  207. data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +0 -15
  208. data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +0 -7
  209. data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +0 -7
  210. data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +0 -24
  211. data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +0 -6
  212. data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +0 -7
  213. data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +0 -9
  214. data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +0 -15
  215. data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +0 -17
  216. data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +0 -31
  217. data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +0 -17
  218. data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +0 -19
  219. data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +0 -3
  220. data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +0 -11
  221. data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +0 -30
  222. data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +0 -1
  223. data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +0 -3
  224. data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +0 -41
  225. data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +0 -39
  226. data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +0 -9
  227. data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +0 -32
  228. data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +0 -6
  229. data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +0 -30
  230. data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +0 -7
  231. data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +0 -109
  232. data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +0 -5
  233. data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +0 -5
  234. data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +0 -6
  235. data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +0 -3
  236. data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +0 -18
  237. data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +0 -33
  238. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +0 -33
  239. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +0 -22
  240. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +0 -23
  241. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +0 -27
  242. data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +0 -26
  243. data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +0 -27
  244. data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +0 -46
  245. data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +0 -29
  246. data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +0 -17
  247. data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +0 -23
  248. data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +0 -5
  249. data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +0 -21
  250. data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +0 -10
  251. data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +0 -14
  252. data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +0 -16
  253. data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +0 -10
  254. data/vendor/assets/build/medias/rubies/examples/animation.rb +0 -0
  255. data/vendor/assets/build/medias/rubies/examples/link.rb +0 -13
  256. data/vendor/assets/build/medias/rubies/examples/read.rb +0 -3
@@ -1,387 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # generators
4
-
5
- Genesis.particle_creator(:html_type)
6
- Genesis.particle_creator(:html_object)
7
-
8
-
9
- Genesis.atome_creator(:shape)
10
-
11
- Genesis.atome_creator(:shadow)
12
- # Genesis.atome_creator(:additional)
13
- Genesis.atome_creator(:content)
14
-
15
- Genesis.atome_creator(:color)
16
-
17
- Genesis.atome_creator_option(:color_sanitizer_proc) do |params, atome|
18
- unless params.instance_of? Hash
19
- if RUBY_ENGINE.downcase == 'opal'
20
- rgb_color = `d = document.createElement("div");
21
- d.style.color = #{params};
22
- document.body.appendChild(d)
23
- rgb_color=(window.getComputedStyle(d).color);
24
- d.remove();
25
- `
26
- color_converted = { red: 0, green: 0, blue: 0, alpha: 1 }
27
- rgb_color.gsub("rgb(", "").gsub(")", "").split(",").each_with_index do |component, index|
28
- color_converted[color_converted.keys[index]] = component.to_i / 255
29
- end
30
- else
31
- rgb_color = Color::CSS["red"].css_rgb
32
- color_converted = { red: 0, green: 0, blue: 0, alpha: 1 }
33
- rgb_color.gsub("rgb(", "").gsub(")", "").gsub("%", "").split(",").each_with_index do |component, index|
34
- component = component.to_i / 100
35
- color_converted[color_converted.keys[index]] = component
36
- end
37
- end
38
- params = { render: [:html], id: "color_#{atome.id}", type: :color }.merge(color_converted)
39
- end
40
- params
41
- end
42
-
43
- Genesis.atome_creator(:shadow)
44
-
45
- # Example below
46
-
47
- # Genesis.atome_creator(:color) do |params|
48
- # # puts "extra color code executed!! : #{params}"
49
- # end
50
- # Genesis.atome_creator_option(:color_pre_save_proc) do |params|
51
- # puts "1- optional color_pre_save_proc: #{params}\n"
52
- # end
53
- #
54
- # Genesis.atome_creator_option(:color_post_save_proc) do |params|
55
- # puts "2- optional color_post_save_proc: #{params}\n"
56
- # end
57
- # #
58
- # Genesis.atome_creator_option(:left_pre_render_proc) do
59
- # puts "3 - optional color_pre_render_proc\n"
60
- # end
61
- # Genesis.atome_creator_option(:left_post_render_proc) do
62
- # puts "4 - optional color_post_render_proc\n"
63
- # end
64
- #
65
- # Genesis.atome_creator_option(:color_post_render_proc) do
66
- # # puts "optional color_post_render_proc\n"
67
- # end
68
- #
69
- # Genesis.atome_creator_option(:color_getter_pre_proc) do
70
- # # puts "optional color_getter_pre_proc\n"
71
- # end
72
-
73
- Genesis.particle_creator(:id) do
74
- end
75
- Genesis.particle_creator(:left)
76
- Genesis.particle_creator(:right)
77
- Genesis.particle_creator(:top)
78
- Genesis.particle_creator(:bottom)
79
- Genesis.particle_creator(:width)
80
- Genesis.particle_creator(:height)
81
- Genesis.particle_creator(:red)
82
- Genesis.particle_creator(:green)
83
- Genesis.particle_creator(:blue)
84
- Genesis.particle_creator(:alpha)
85
- Genesis.particle_creator(:type)
86
- Genesis.particle_creator(:smooth)
87
- Genesis.particle_creator(:blur)
88
- Genesis.particle_creator(:touch)
89
- # Genesis.atome_creator_option(:type_pre_render_proc) do |params|
90
- # # alert "it works and get #{params}"
91
- # params[:value]
92
- # end
93
-
94
- # important exemple below how to prevent rendering
95
- # Genesis.atome_creator_option(:top_render_proc) do |params|
96
- # puts "====---> Hurrey no rendering : #{params}"
97
- # end
98
-
99
- Genesis.particle_creator(:render)
100
- Genesis.particle_creator(:drm)
101
- Genesis.particle_creator(:parent)
102
-
103
- Genesis.atome_creator_option(:parent_pre_render_proc) do |params|
104
- unless params[:value].instance_of? Array
105
- params[:value] = [params[:value]]
106
- end
107
- params[:value]
108
- end
109
- Genesis.particle_creator(:date)
110
- Genesis.particle_creator(:location)
111
-
112
- # generate renderers
113
-
114
- Genesis.generate_html_renderer(:type) do |value, atome, proc|
115
- send("#{value}_html", value, atome, proc)
116
- end
117
-
118
- Genesis.generate_html_renderer(:shape) do |value, atome, proc|
119
- id_found = id
120
- instance_exec(&proc) if proc.is_a?(Proc)
121
- DOM do
122
- div(id: id_found).atome
123
- end.append_to($document[:user_view])
124
- @html_object = $document[id_found]
125
- @html_type = :div
126
- end
127
-
128
- Genesis.generate_html_renderer(:color) do |value, atome, proc|
129
- instance_exec(&proc) if proc.is_a?(Proc)
130
- @html_type = :style
131
- $document.head << DOM("<style atome='#{type}' id='#{id}'></style>")
132
- end
133
-
134
- Genesis.generate_html_renderer(:red) do |value, atome, proc|
135
- green_found = green
136
- green_found ||= 0
137
- blue_found = blue
138
- blue_found ||= 0
139
- alpha_found = alpha
140
- alpha_found ||= 0
141
- $document[id].inner_html = "\n.#{id}{background-color: rgba(#{value * 255},#{green_found * 255},#{blue_found * 255},#{alpha_found})}\n"
142
-
143
- end
144
- Genesis.generate_html_renderer(:green) do |value, atome, proc|
145
- red_found = red
146
- red_found ||= 0
147
- blue_found = blue
148
- blue_found ||= 0
149
- alpha_found = alpha
150
- alpha_found ||= 0
151
- $document[id].inner_html = "\n.#{id}{background-color: rgba(#{red_found * 255},#{value * 255},#{blue_found * 255},#{alpha_found})}\n"
152
-
153
- end
154
-
155
- Genesis.generate_html_renderer(:blue) do |value, atome, proc|
156
- red_found = red
157
- red_found ||= 0
158
- green_found = green
159
- green_found ||= 0
160
- alpha_found = alpha
161
- alpha_found ||= 0
162
- $document[id].inner_html = "\n.#{id}{background-color: rgba(#{red_found * 255},#{green_found * 255},#{value * 255},#{alpha_found})}\n"
163
-
164
- end
165
-
166
- Genesis.generate_html_renderer(:alpha) do |value, atome, proc|
167
- red_found = red
168
- red_found ||= 0
169
- green_found = green
170
- green_found ||= 0
171
- blue_found = blue
172
- blue_found ||= 0
173
- $document[id].inner_html = "\n.#{id}{background-color: rgba(#{red_found * 255},#{green_found * 255},#{blue_found * 255},#{value})}\n"
174
- end
175
-
176
- Genesis.generate_html_renderer(:drm) do |value, atome, proc|
177
- # instance_exec(&proc) if proc.is_a?(Proc)
178
- end
179
-
180
- Genesis.generate_html_renderer(:parent) do |values, atome, proc|
181
- instance_exec(&proc) if proc.is_a?(Proc)
182
- 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
197
- end
198
- end
199
- Genesis.generate_html_renderer(:id) do |value, atome, proc|
200
- # send("#{value}_html", value, atome, proc)
201
- end
202
-
203
- Genesis.generate_html_renderer(:left) do |value, atome, proc|
204
- @html_object.style[:left] = "#{value}px" unless @html_type == :style
205
- end
206
-
207
- Genesis.generate_html_renderer(:right) do |value, atome, proc|
208
- @html_object.style[:right] = "#{value}px" unless @html_type == :style
209
- end
210
-
211
- Genesis.generate_html_renderer(:top) do |value, atome, proc|
212
- @html_object.style[:top] = "#{value}px" unless @html_type == :style
213
- end
214
-
215
- Genesis.generate_html_renderer(:bottom) do |value, atome, proc|
216
- @html_object.style[:bottom] = "#{value}px" unless @html_type == :style
217
- end
218
-
219
- Genesis.generate_html_renderer(:width) do |value, atome, proc|
220
- @html_object.style[:width] = "#{value}px" unless @html_type == :style
221
- end
222
-
223
- Genesis.generate_html_renderer(:height) do |value, atome, proc|
224
- @html_object.style[:height] = "#{value}px" unless @html_type == :style
225
- end
226
-
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
232
- Genesis.generate_html_renderer(:rotate) do |value, atome, proc|
233
- @html_object.style[:transform] = "rotate(#{value}deg)" unless @html_type == :style
234
- end
235
-
236
- Genesis.generate_html_renderer(:smooth) do |value, atome, proc|
237
- formated_params = case value
238
- when Array
239
- properties = []
240
- value.each do |param|
241
- properties << "#{param}px"
242
- end
243
- properties.join(' ').to_s
244
- when Integer
245
- "#{value}px"
246
- else
247
- value
248
- end
249
- @html_object.style['border-radius'] = formated_params unless @html_type == :style
250
- end
251
-
252
- Genesis.generate_html_renderer(:touch) do |value, atome, proc|
253
- @html_object.on :click do |e|
254
- instance_exec(&proc) if proc.is_a?(Proc)
255
- end
256
- end
257
-
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
280
- end
281
-
282
- Genesis.particle_creator(:overflow)
283
- Genesis.generate_html_renderer(:overflow) do |value, atome, proc|
284
- @html_object.style[:overflow] = value unless @html_type == :style
285
- end
286
-
287
- Genesis.particle_creator(:bloc)
288
-
289
- # image
290
-
291
- 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
296
- Genesis.generate_html_renderer(:image) do |value, atome, proc|
297
- id_found = id
298
- instance_exec(&proc) if proc.is_a?(Proc)
299
- DOM do
300
- img({ id: id_found }).atome
301
- end.append_to($document[:user_view])
302
- @html_object = $document[id_found]
303
- @html_type = :image
304
- end
305
-
306
- # text
307
-
308
- Genesis.atome_creator(:text)
309
- Genesis.particle_creator(:string)
310
-
311
- Genesis.generate_html_renderer(:string) do |value, atome, proc|
312
- @html_object.text = value
313
- end
314
- Genesis.particle_creator(:visual)
315
- Genesis.generate_html_renderer(:visual) do |value, atome, proc|
316
- @html_object.style['font-size'] = "#{value[:size]}px"
317
- end
318
- Genesis.generate_html_renderer(:text) do |value, atome, proc|
319
- id_found = id
320
- instance_exec(&proc) if proc.is_a?(Proc)
321
- DOM do
322
- div(id: id_found).atome
323
- end.append_to($document[:user_view])
324
- @html_object = $document[id_found]
325
- @html_type = :text
326
- end
327
-
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
- # particles method below to allow to retrieve all particles for an atome
343
- Genesis.particle_creator(:particles)
344
- Genesis.atome_creator_option(:particles_getter_pre_proc) do |params|
345
- atome_found = params[:atome]
346
- particles_hash = {}
347
- atome_found.instance_variables.each do |particle_found|
348
- particle_content = atome_found.instance_variable_get(particle_found)
349
- particles_hash[particle_found] = particle_content
350
- end
351
- particles_hash
352
- end
353
-
354
-
355
- # link
356
- Genesis.particle_creator(:link)
357
- Genesis.atome_creator_option(:link_pre_render_proc) do |params|
358
- atome_found = params[:atome]
359
- atome_to_link = grab(params[:value])
360
- particles_found = atome_to_link.particles
361
- atome_type = particles_found.delete('@type')
362
- sanitized_particles = {}
363
- particles_found.each do |particle_name, value|
364
- particle_name = particle_name.gsub('@', '')
365
- sanitized_particles[particle_name] = value
366
- end
367
- sanitized_particles[:parent]=[atome_found.id]
368
- atome_found.send(atome_type, sanitized_particles)
369
- params[:value]
370
- end
371
- Genesis.atome_creator(:web)
372
- Genesis.particle_creator(:path)
373
- Genesis.generate_html_renderer(:path) do |value, atome, proc|
374
- @html_object[:src] = value
375
- end
376
- Genesis.generate_html_renderer(:web) do |value, atome, proc|
377
- id_found = id
378
- instance_exec(&proc) if proc.is_a?(Proc)
379
- DOM do
380
- iframe({ id: id_found }).atome
381
- end.append_to($document[:user_view])
382
- @html_object = $document[id_found]
383
- @html_object.attributes[:allow]='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
384
- @html_object.attributes[:allowfullscreen]=true
385
- @html_type = :web
386
- end
387
-
@@ -1,265 +0,0 @@
1
- # frozen_string_literal: true
2
- # TODO: parent are not set correctly if not explicitly specified when attaching a child ex: b=box();c=b.box, c is not
3
- # attached to b
4
- # Genesis helper
5
- module GenesisHelper
6
- def broadcaster(property, value)
7
- "broadcast : #{property} #{value}"
8
- end
9
-
10
- def history(property, value)
11
- "historize : #{property} #{value}"
12
- end
13
- end
14
-
15
- # genesis kernel
16
- module GenesisKernel
17
- # particle's methods
18
- def set_new_particle(particle, value, &proc)
19
- return false unless validation(particle)
20
-
21
- # instance_exec({ options: value }, &proc) if proc.is_a?(Proc)
22
- # now we exec the first optional method
23
- value = Genesis.run_optional_methods_helper("#{particle}_pre_render_proc".to_sym,
24
- { method: particle, value: value, atome: self, proc: proc })
25
- # render option below
26
- Genesis.run_optional_methods_helper("#{particle}_render_proc".to_sym,
27
- { method: particle, value: value, atome: self, proc: proc })
28
- # now we exec post render optional proc
29
- value = Genesis.run_optional_methods_helper("#{particle}_post_render_proc".to_sym,
30
- { method: particle, value: value, proc: proc })
31
- broadcaster(particle, value)
32
- history(particle, value)
33
- self
34
- end
35
-
36
- def get_new_particle(particle)
37
- return false unless validation(particle)
38
- particle_instance_variable = "@#{particle}"
39
- value_getted=instance_variable_get(particle_instance_variable)
40
- Genesis.run_optional_methods_helper("#{particle}_getter_pre_proc".to_sym, { value: value_getted, atome: self })
41
- end
42
-
43
- def new_particle(particle, params, proc)
44
- if params
45
- set_new_particle(particle, params, &proc)
46
- else
47
- get_new_particle(particle)
48
- end
49
- end
50
-
51
- # atome's methods
52
-
53
- def create_new_atomes(params, instance_var, _atome)
54
- new_atome = Atome.new({})
55
- instance_variable_set(instance_var, new_atome)
56
- # FIXME : move this to sanitizer and ensure that no reorder happen for "id" and "render" when
57
- params.each do |param, value|
58
- new_atome.send(param, value)
59
- end
60
- end
61
-
62
- def set_new_atome(atome, params, proc)
63
- return false unless validation(atome)
64
-
65
- instance_var = "@#{atome}"
66
- # now we exec the first optional method
67
- params=Genesis.run_optional_methods_helper("#{atome}_pre_save_proc".to_sym, { value: params, proc: proc })
68
- create_new_atomes(params[:value], instance_var, atome)
69
- # now we exec the second optional method
70
- Genesis.run_optional_methods_helper("#{atome}_post_save_proc".to_sym, { value: params, proc: proc })
71
- @dna = "#{Atome.current_user}_#{Universe.app_identity}_#{Universe.atomes.length}"
72
- self
73
- end
74
-
75
- def get_new_atome(atome)
76
- return false unless validation(atome)
77
-
78
- # Genesis.run_optional_methods_helper("#{atome}_getter_pre_proc".to_sym, { value: false })
79
- atome_instance_variable = "@#{atome}"
80
- value_getted=instance_variable_get(atome_instance_variable)
81
- Genesis.run_optional_methods_helper("#{atome}_getter_pre_proc".to_sym, { value: value_getted })
82
-
83
- end
84
-
85
- def new_atome(atome, params, proc)
86
- if params
87
- params = add_essential_properties(atome, params)
88
- params = sanitizer(params)
89
- set_new_atome(atome, params, proc)
90
- else
91
- get_new_atome(atome)
92
- end
93
- end
94
-
95
- def additional_atomes(atome, params)
96
- atome_instance_variable = "@#{atome}"
97
- if params
98
- instance_variable_get(atome_instance_variable).additional(params)
99
- else
100
- instance_variable_get(atome_instance_variable).additional
101
- end
102
- end
103
- end
104
-
105
- # main entry for genesis
106
- module Genesis
107
- include GenesisHelper
108
- include GenesisKernel
109
-
110
- # include ParticleGenesis
111
- @optionals_methods = {}
112
-
113
- def self.atome_creator_option(property_name, &proc)
114
- @optionals_methods[property_name] = proc
115
- end
116
-
117
- def self.run_optional_methods_helper(method_name, params, atome=nil)
118
- proc = nil
119
- proc = @optionals_methods[method_name] if @optionals_methods
120
- instance_exec(params,atome, &proc) if proc.is_a?(Proc)
121
- end
122
-
123
- # #fIXME : we may have to remove the 2 methods below its only for test
124
-
125
- # render methods generator
126
- def self.generate_html_renderer(method_name, &methods_proc)
127
- current_renderer = :html
128
- generated_method_name = "#{method_name}_#{current_renderer}".to_sym
129
- Atome.define_method generated_method_name do |value, atome, &user_proc|
130
- instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
131
- end
132
- end
133
-
134
- def self.generate_server_renderer(method_name, &methods_proc)
135
- current_renderer = :headless
136
- generated_method_name = "#{method_name}_#{current_renderer}".to_sym
137
- Atome.define_method generated_method_name do |value, atome, &user_proc|
138
- instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
139
- end
140
- end
141
-
142
- # rendering methods are generated below:
143
- def self.generate_renderers_methods(method_name)
144
- # now we auto generate all rendering methods
145
- Utilities.renderer_list.each do |render_method|
146
- define_singleton_method("generate_#{render_method}_renderer") do |method_name, &methods_proc|
147
- current_renderer = render_method
148
- generated_method_name = "#{method_name}_#{current_renderer}".to_sym
149
- Atome.define_method generated_method_name do |value, atome, &user_proc|
150
- instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
151
- end
152
- end
153
-
154
- send("generate_#{render_method}_renderer", method_name)
155
- end
156
-
157
- Genesis.atome_creator_option("#{method_name}_post_render_proc".to_sym) do |params|
158
- # we return the value
159
- params[:value]
160
- end
161
- end
162
-
163
- def self.optional_atome_methods(method_name)
164
- Genesis.atome_creator_option("#{method_name}_pre_save_proc".to_sym) do |params, proc|
165
- # we return the value
166
- params
167
- end
168
-
169
- Genesis.atome_creator_option("#{method_name}_sanitizer_proc".to_sym) do |params,atome, proc|
170
- # we return the value
171
- params
172
- end
173
-
174
- Genesis.atome_creator_option("#{method_name}_getter_pre_proc".to_sym) do |params,atome, proc|
175
- # we return the value
176
- params[:value]
177
- end
178
-
179
- end
180
-
181
- def self.additional_atome_methods(method_name)
182
- # here is the pluralized
183
- Atome.define_method "#{method_name}s" do |params = nil|
184
- additional_atomes(method_name, params)
185
- end
186
- # here is the fast methods
187
- Atome.define_method "set_#{method_name}" do |params = nil, &proc|
188
- set_new_atome(method_name, params, proc)
189
- end
190
- Atome.define_method "get_#{method_name}" do
191
- get_new_atome(method_name)
192
- end
193
- generate_renderers_methods(method_name)
194
- end
195
-
196
- # we create the easy methods here : ¬
197
- def self.atome_creator(method_name, &proc)
198
- instance_exec(method_name, &proc) if proc.is_a?(Proc)
199
- # we add the new method to the atome's collection of methods
200
- Utilities.atome_list(method_name)
201
- # we define many methods : easy, method=,pluralised and the fasts one, here is the easy
202
- Atome.define_method method_name do |params = nil, &user_proc|
203
- new_atome(method_name, params, user_proc)
204
- end
205
- # no we also add the method= for easy setting
206
- Atome.define_method("#{method_name}=") do |params, &user_proc|
207
- new_atome(method_name, params, user_proc)
208
- end
209
- optional_atome_methods(method_name)
210
- additional_atome_methods(method_name)
211
- end
212
-
213
- def self.optional_particle_methods(method_name)
214
- # The rendering occur here setting up the optional rendering by default
215
- Genesis.atome_creator_option("#{method_name}_render_proc".to_sym) do |params|
216
- params[:atome].render_engine(params[:method], params[:value], params[:atome], &params[:proc])
217
- # we return the value
218
- params[:value]
219
- end
220
- Genesis.atome_creator_option("#{method_name}_pre_render_proc".to_sym) do |params|
221
- particle_instance_variable = "@#{params[:method]}"
222
- params[:atome].instance_variable_set(particle_instance_variable, params[:value])
223
- # we return the value
224
- params[:value]
225
- end
226
- Genesis.atome_creator_option("#{method_name}_post_render_proc".to_sym) do |params|
227
- # we return the value
228
- params[:value]
229
- end
230
- Genesis.atome_creator_option("#{method_name}_getter_pre_proc".to_sym) do |params|
231
- # we return the value
232
- params[:value]
233
- end
234
-
235
- end
236
-
237
- def self.additional_particle_methods(method_name)
238
- # here is the fast methods
239
- Atome.define_method "set_#{method_name}" do |params, &proc|
240
- set_new_particle(method_name, params, &proc)
241
- end
242
-
243
- Atome.define_method "get_#{method_name}" do
244
- get_new_particle(method_name)
245
- end
246
- # now we generate all basic default rendering methods
247
- generate_renderers_methods(method_name)
248
- # now we generate all optional methods
249
- optional_particle_methods(method_name)
250
- end
251
-
252
- def self.particle_creator(method_name, &proc)
253
- instance_exec(method_name, &proc) if proc.is_a?(Proc)
254
- # we add the new method to the particle's collection of methods
255
- Utilities.particle_list(method_name)
256
- Atome.define_method method_name do |params = nil, &user_proc|
257
- new_particle(method_name, params, user_proc)
258
- end
259
- # no we also add the method= for easy setting
260
- Atome.define_method("#{method_name}=") do |params, &user_proc|
261
- new_particle(method_name, params, user_proc)
262
- end
263
- additional_particle_methods(method_name)
264
- end
265
- end