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
@@ -19,6 +19,7 @@ end
19
19
 
20
20
  generator.build_render(:browser_color) do |_value|
21
21
  @browser_type = :style
22
+ # puts "1 - for the id : #{id} the browser type is ::::> #{@browser_type}"
22
23
  id_found = @atome[:id]
23
24
  type_found = @atome[:type]
24
25
  # we remove previous unused style tag
@@ -30,7 +31,7 @@ generator.build_render(:browser_color) do |_value|
30
31
  BrowserHelper.browser_document.head << Browser.DOM("<style atome='#{type_found}'
31
32
  id='#{id_found}'>.#{id_found}{background-color: rgba(#{red_found * 255},
32
33
  #{green_found * 255},#{blue_found * 255},#{alpha_found})}</style>")
33
- # TODO/ use the code below to modify the style tag
34
+ # # TODO/ use the code below to modify the style tag
34
35
  @browser_object = BrowserHelper.browser_document[id_found]
35
36
  end
36
37
 
@@ -13,6 +13,8 @@ require 'atome/renderers/browser/helpers/browser_helper'
13
13
  require 'atome/renderers/browser/helpers/animation_helper'
14
14
  require 'atome/renderers/browser/helpers/color_helper'
15
15
  require 'atome/renderers/browser/helpers/drag_helper'
16
+ require 'atome/renderers/browser/helpers/drop_helper'
17
+ # require 'atome/renderers/browser/helpers/over_helper'
16
18
  require 'atome/renderers/browser/helpers/effect_helper'
17
19
  require 'atome/renderers/browser/helpers/event_helper'
18
20
  require 'atome/renderers/browser/helpers/image_helper'
@@ -16,6 +16,15 @@ generator.build_render(:browser_over) do |value, proc|
16
16
  BrowserHelper.send("browser_over_#{value}", @browser_object,self, proc)
17
17
  end
18
18
 
19
+ # generator.build_render(:browser_over) do |options, proc|
20
+ # # puts "method : #{options}, params : #{options}"
21
+ # options.each do |method, params|
22
+ # atome_id = @atome[:id]
23
+ # BrowserHelper.send("browser_over_#{method}", params, atome_id, self, proc)
24
+ # end
25
+ # end
26
+
27
+
19
28
  generator.build_render(:browser_play) do |value, proc|
20
29
  # first we reinit the 'at' event so the condition will be met again
21
30
  # @at_time[:used] = nil
@@ -62,6 +71,15 @@ generator.build_render(:browser_drag) do |options, proc|
62
71
  end
63
72
  end
64
73
 
74
+ generator.build_render(:browser_drop) do |options, proc|
75
+ # puts "method : #{options}, params : #{options}"
76
+ options.each do |method, params|
77
+ atome_id = @atome[:id]
78
+ BrowserHelper.send("browser_drop_#{method}", params, atome_id, self, proc)
79
+ end
80
+ end
81
+
82
+
65
83
  generator.build_render(:browser_sort) do |options, _proc|
66
84
  atome_js.JS.sort(options, @atome[:id], self)
67
85
  end
@@ -7,6 +7,10 @@ module BrowserHelper
7
7
  Browser.window
8
8
  end
9
9
 
10
+ def self.browser_attach_(_parents, _html_object, _atome)
11
+ # dummy methods to catch atomes that do not need to be attached to any particular visual atime
12
+ end
13
+
10
14
  def self.browser_attach_div(parents, html_object, _atome)
11
15
  html_object.append_to(browser_document[parents])
12
16
  end
@@ -15,6 +19,19 @@ module BrowserHelper
15
19
  browser_document[parents].add_class(atome[:id])
16
20
  end
17
21
 
22
+ def self.browser_attached_div(children, _html_object, atome)
23
+ children.each do |child_found|
24
+ # atome_child.browser_attach_div
25
+ html_child=grab(child_found).browser_object
26
+ html_child.append_to(browser_document[atome[:id]])
27
+ end
28
+ end
29
+
30
+ def self.browser_attached_style(children, _html_object, atome)
31
+
32
+ browser_document[atome[:id]].add_class(children)
33
+ end
34
+
18
35
  def self.value_parse(value)
19
36
  if value.instance_of?(String)
20
37
  value
@@ -3,11 +3,19 @@
3
3
  # for browser rendering
4
4
 
5
5
  module BrowserHelper
6
+
7
+ # drag helper
6
8
  def self.browser_drag_move(params, atome_id, atome, proc)
7
9
  atome.drag_move_proc = proc
8
10
  atome_js.JS.drag(params, atome_id, atome)
9
11
  end
10
12
 
13
+ # def self.browser_drag_end(params, atome_id, atome, proc)
14
+ # # alert :kool
15
+ # # atome.drag_move_proc = proc
16
+ # # atome_js.JS.drag(params, atome_id, atome)
17
+ # end
18
+
11
19
  def self.browser_drag_lock(params, atome_id, atome, _proc)
12
20
  atome_js.JS.lock(params, atome_id, atome)
13
21
  end
@@ -36,4 +44,9 @@ module BrowserHelper
36
44
  def self.browser_drag_end(_params, _atome_id, atome, proc)
37
45
  atome.drag_end_proc = proc
38
46
  end
47
+
48
+ def self.browser_drag_start(_params, _atome_id, atome, proc)
49
+ atome.drag_start_proc = proc
50
+ end
51
+
39
52
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # for browser rendering
4
+
5
+ module BrowserHelper
6
+
7
+ #drop helper
8
+ def self.browser_drop_action(params, atome_id, atome, proc)
9
+ atome.drop_action_proc = proc
10
+ atome_js.JS.drop(params, atome_id, atome)
11
+ end
12
+
13
+ end
@@ -3,11 +3,11 @@
3
3
  # for browser rendering
4
4
  module BrowserHelper
5
5
 
6
- def self.touch_helper_callback(event,atome, proc)
6
+ def self.touch_helper_callback(event, atome, proc)
7
7
  atome.instance_exec(event, &proc) if proc.is_a?(Proc)
8
8
  end
9
9
 
10
- def self.browser_touch_true(browser_object,atome, proc)
10
+ def self.browser_touch_true(browser_object, atome, proc)
11
11
  `
12
12
  interact('#'+#{browser_object})
13
13
  .on('tap', function (event) {
@@ -16,7 +16,7 @@ Opal.BrowserHelper.$touch_helper_callback(event,#{atome},#{proc});
16
16
  `
17
17
  end
18
18
 
19
- def self.browser_touch_long(browser_object,atome, proc)
19
+ def self.browser_touch_long(browser_object, atome, proc)
20
20
  `
21
21
  interact('#'+#{browser_object})
22
22
  .on('hold', function (event) {
@@ -25,7 +25,7 @@ Opal.BrowserHelper.$touch_helper_callback(event,#{atome},#{proc});
25
25
  `
26
26
  end
27
27
 
28
- def self.browser_touch_double(browser_object,atome, proc)
28
+ def self.browser_touch_double(browser_object, atome, proc)
29
29
  `
30
30
  interact('#'+#{browser_object})
31
31
  .on('doubletap', function (event) {
@@ -34,7 +34,7 @@ Opal.BrowserHelper.$touch_helper_callback(event,#{atome},#{proc});
34
34
  `
35
35
  end
36
36
 
37
- def self.browser_touch_down(browser_object,atome, proc)
37
+ def self.browser_touch_down(browser_object, atome, proc)
38
38
 
39
39
  `
40
40
  interact('#'+#{browser_object})
@@ -45,7 +45,7 @@ Opal.BrowserHelper.$touch_helper_callback(event,#{atome},#{proc});
45
45
  `
46
46
  end
47
47
 
48
- def self.browser_touch_up(browser_object, atome,proc)
48
+ def self.browser_touch_up(browser_object, atome, proc)
49
49
  `
50
50
  interact('#'+#{browser_object})
51
51
  .on('up', function (event) {
@@ -54,15 +54,20 @@ Opal.BrowserHelper.$touch_helper_callback(event,#{atome},#{proc});
54
54
  `
55
55
  end
56
56
 
57
- def self.browser_over_enter(browser_object,atome, proc)
58
- browser_object.on :mouseover do |event|
59
- atome.instance_exec(event, &proc) if proc.is_a?(Proc)
57
+ def self.browser_over_enter(browser_object, atome)
58
+ browser_object.on :mouseenter do |event|
59
+ atome.enter_action_callback( event)
60
+ # atome.instance_exec(event, &proc) if proc.is_a?(Proc)
61
+ # atome_id = atome.id
62
+ # atome_js.JS.over_enter(atome_id, atome, proc, :enter)
60
63
  end
61
64
  end
62
65
 
63
- def self.browser_over_leave(browser_object, atome,proc)
66
+ def self.browser_over_leave(browser_object, atome)
64
67
  browser_object.on :mouseout do |event|
65
- atome.instance_exec(event, &proc) if proc.is_a?(Proc)
68
+ atome.leave_action_callback(event)
69
+ # atome.instance_exec(event, &proc) if proc.is_a?(Proc)
70
+ # atome_js.JS.over_leave(atome_id, atome,proc,:leave)
66
71
  end
67
72
  end
68
73
 
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # for browser rendering
4
+
5
+ # module BrowserHelper
6
+ #
7
+ # #drop helper
8
+ # def self.browser_over_action(params, atome_id, atome, proc)
9
+ # # atome.over_action_proc = proc
10
+ # atome_js.JS.over(params, atome_id, atome)
11
+ # end
12
+ #
13
+ # end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # for browser rendering
4
4
  module BrowserHelper
5
- # text
5
+
6
6
  def self.browser_left_text(value, browser_object, _atome)
7
7
  browser_object.style[:left] = BrowserHelper.value_parse(value)
8
8
  end
@@ -20,7 +20,19 @@ module BrowserHelper
20
20
  end
21
21
 
22
22
  def self.browser_data_text(value,atome_send)
23
- atome_send.browser_object.text = value
23
+ value = value.gsub(/\n/, '<br/>')
24
+ atome_send.browser_object.inner_html = value
25
+ end
26
+
27
+ def self.browser_data_shape(_value,_atome_send)
28
+
29
+ end
30
+ def self.browser_data_color(_value,_atome_send)
31
+
32
+ end
33
+
34
+ def self.browser_data_find(value,_atome_send)
35
+
24
36
  end
25
37
 
26
38
  end
@@ -15,17 +15,35 @@ generator.build_render(:browser_type) do |params|
15
15
  send("browser_#{params}", user_proc)
16
16
  end
17
17
 
18
- generator.build_render(:browser_family) do |parents_found|
19
- BrowserHelper.send("browser_attach_#{@browser_type}", parents_found, @browser_object, @atome)
20
- end
18
+ # generator.build_render(:browser_family) do |parents_found|
19
+ # BrowserHelper.send("browser_attach_#{@browser_type}", parents_found, @browser_object, @atome)
20
+ # end
21
21
 
22
22
  generator.build_render(:browser_attach) do |parents_found|
23
+ # puts "parents_found : #{parents_found}, #{parents_found.class}"
23
24
  parents_found.each do |parent_found|
25
+ # puts "2 : >>>>> model: browser_type #{@browser_type} parents_found #{parents_found} , @browser_object, #{@browser_object}, self : #{self.id}"
24
26
  BrowserHelper.send("browser_attach_#{@browser_type}", parent_found, @browser_object, @atome)
25
27
  end
26
28
  end
27
29
 
28
- generator.build_render(:browser_detached) do |value, _user_proc|
29
- @browser_object.remove_class(value)
30
+ generator.build_render(:browser_attached) do |children_found|
31
+ children_found.each do |child_found|
32
+ # puts ">>>>> modeled: browser_type #{@browser_type} parents_found #{children_found} , @browser_object, #{@browser_object}, self : #{self.id}"
33
+ children_browser_type = grab(child_found).instance_variable_get('@browser_type')
34
+ BrowserHelper.send("browser_attached_#{children_browser_type}", children_found, @browser_object, @atome)
35
+ end
36
+ end
37
+
38
+ generator.build_render(:browser_detached) do |values, _user_proc|
39
+ values.each do |value|
40
+ # FIXME: ugly patch to check if the value passed is an atome must create a more robust global solution for .value
41
+ value = value.value if value.instance_of? Atome
42
+ if grab(value).instance_variable_get('@browser_type') == :style
43
+ @browser_object.remove_class(value)
44
+ else
45
+ BrowserHelper.browser_document[value]&.remove
46
+ end
47
+ end
30
48
  end
31
49
 
@@ -2,7 +2,8 @@
2
2
 
3
3
  generator = Genesis.generator
4
4
 
5
- generator.build_render(:browser_left) do |value, _user_proc|
5
+
6
+ new({ browser: :left, type: :integer }) do |value, _user_proc|
6
7
  BrowserHelper.send("browser_left_#{@atome[:type]}", value, @browser_object, @atome)
7
8
  end
8
9
 
@@ -52,7 +53,7 @@ generator.build_render(:browser_center) do |value, _user_proc|
52
53
 
53
54
  end
54
55
 
55
- new ({browser: :depth}) do |value|
56
+ new ({ browser: :depth }) do |value|
56
57
  @browser_object.style['z-index'] = value
57
58
  end
58
59
 
@@ -7,12 +7,13 @@ generator.build_render(:browser_delete) do |params|
7
7
  browser_object&.remove if params == true
8
8
  end
9
9
 
10
- generator.build_render(:browser_clear) do
11
- @atome[:children].each do |child_found|
12
- grab(child_found).browser_object&.remove
13
- end
14
- children([])
15
- end
10
+ # do not use browser_clear
11
+ # #
12
+ # # generator.build_render(:browser_clear) do
13
+ # # @atome[:attached].each do |child_found|
14
+ # # grab(child_found).browser_object&.remove
15
+ # # end
16
+ # # end
16
17
 
17
18
  generator.build_render(:browser_path) do |value|
18
19
  BrowserHelper.send("browser_path_#{@atome[:type]}", value, @browser_object, @atome)
@@ -8,6 +8,7 @@ class Atome
8
8
  # params=instance_variable_get("@#{element}")
9
9
  render_engines = @atome[:renderers]
10
10
  render_engines.each do |render_engine|
11
+ # puts "rendering : send('#{render_engine}_#{element}', #{params}, &user_proc)"
11
12
  send("#{render_engine}_#{element}", params, &user_proc)
12
13
  end
13
14
  end
data/lib/atome/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Atome
4
- VERSION = '0.5.3.8.1'
5
- end
4
+ VERSION = '0.5.4.0.9'
5
+ end
data/lib/atome.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'fileutils'
4
+ require 'securerandom'
4
5
  require 'atome/version'
5
6
  require 'atome/genesis/genesis'
6
7
  require 'atome/kernel/essentials'
data/sig/atome.rbs CHANGED
@@ -1,6 +1,14 @@
1
1
  module Atome
2
2
  VERSION: String
3
3
  # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ def *: -> untyped
5
+
6
+ def +: -> untyped
7
+
8
+ def -: -> untyped
9
+
10
+ def /: -> untyped
11
+
4
12
  def add: -> untyped
5
13
 
6
14
  def add_to_array: -> untyped
@@ -9,8 +17,12 @@ module Atome
9
17
 
10
18
  def apply_style: -> untyped
11
19
 
20
+ def atome_common: -> untyped
21
+
12
22
  def auto_render_generator: -> untyped
13
23
 
24
+ def box: -> untyped
25
+
14
26
  def build_atome: -> Atome
15
27
 
16
28
  def build_option: -> untyped
@@ -21,8 +33,18 @@ module Atome
21
33
 
22
34
  def build_sanitizer: -> untyped
23
35
 
36
+ def calculate_sha: -> untyped
37
+
38
+ def circle: -> untyped
39
+
40
+ def detach_atome: -> untyped
41
+
42
+ def each_with_index: -> untyped
43
+
24
44
  def format_matrix: -> untyped
25
45
 
46
+ def geolocation: -> untyped
47
+
26
48
  def get_column: -> untyped
27
49
 
28
50
  def get_column_or_row: -> untyped
@@ -31,7 +53,21 @@ module Atome
31
53
 
32
54
  def matrix: -> untyped
33
55
 
56
+ def ping: -> untyped
57
+
34
58
  def set: -> untyped
35
59
 
36
60
  def sort_callback: -> untyped
61
+
62
+ def up?: -> untyped
63
+
64
+ def visuals: -> untyped
65
+
66
+ private
67
+
68
+ def atome_parsing: -> untyped
69
+
70
+ def found_parents_and_renderers: -> untyped
71
+
72
+ def new_render_engine: -> untyped
37
73
  end
data/sig/batch.rbs ADDED
@@ -0,0 +1,7 @@
1
+ class Batch
2
+ @data: untyped
3
+
4
+ def dispatch: -> untyped
5
+
6
+ def each: -> untyped
7
+ end
@@ -0,0 +1,14 @@
1
+ module BrowserHelper
2
+ @enter_action_proc: untyped
3
+ @leave_action_proc: untyped
4
+
5
+ def self.anim_convertor: -> untyped
6
+
7
+ def self.anim_value_analysis: -> untyped
8
+
9
+ def self.browser_over_enter: -> untyped
10
+
11
+ def self.browser_over_leave: -> untyped
12
+
13
+ def self.send_anim_to_js: -> untyped
14
+ end
@@ -0,0 +1,11 @@
1
+ module Essentials
2
+ @default_params: untyped
3
+
4
+ def self.default_params: -> untyped
5
+
6
+ def self.new_default_params: -> untyped
7
+
8
+ def add_essential_drm: -> untyped
9
+
10
+ def validation: -> untyped
11
+ end
data/sig/matrix.rbs ADDED
@@ -0,0 +1,5 @@
1
+ module Matrix
2
+ def cell: -> untyped
3
+
4
+ def content: -> untyped
5
+ end
data/sig/object.rbs ADDED
@@ -0,0 +1,3 @@
1
+ class Object
2
+ def create_method_at_object_level: -> untyped
3
+ end
data/vendor/assets/aui.rb CHANGED
@@ -0,0 +1,5 @@
1
+ class Atome
2
+ def self.aui
3
+ SecureRandom.uuid
4
+ end
5
+ end
@@ -1,6 +1,10 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="En">
3
3
  <head>
4
+ <!-- <link rel="icon" type="image/x-icon" href="./favicon.ico">-->
5
+ <link rel="icon" type="image/x-icon" href="https://github.com/atomecorp/atome/blob/master/vendor/assets/src/favicon.ico">
6
+
7
+
4
8
  <meta name='viewport' content='initial-scale=1, width=device-width, viewport-fit=cover'>
5
9
  <meta charset='UTF-8'/>
6
10
  <meta name="format-detection" content="telephone=no">
@@ -20,20 +24,28 @@
20
24
  <!-- TODO: we line below is commented when using stand alone mode and loaded on demand when using server mode-->
21
25
  <script type="text/javascript" src="js/third_parties/fabric.min.js"></script>
22
26
  <!-- <script type="text/javascript" src="js/third_parties/three.min.js"></script>-->
23
- <!-- <script src='js/opal/opal_parser.js'></script>-->
27
+ <script src='js/opal/opal_parser.js'></script>
24
28
  <script src='js/aui.js'></script>
29
+
25
30
  <script src='js/atome/atome_helpers/atome_animate.js' defer></script>
31
+ <script src='js/atome/atome_helpers/atome_communication.js' defer></script>
26
32
  <script src='js/atome/atome_helpers/atome_drag.js' defer></script>
33
+ <script src='js/atome/atome_helpers/atome_drop.js' defer></script>
34
+ <script src='js/atome/atome_helpers/atome_over.js' defer></script>
35
+ <script src='js/atome/atome_helpers/atome_events.js' defer></script>
27
36
  <script src='js/atome/atome_helpers/atome_file.js' defer></script>
28
37
  <script src='js/atome/atome_helpers/atome_sort.js' defer></script>
29
38
  <script src='js/atome/atome_helpers/atome_time.js' defer></script>
30
39
  <script src='js/atome/atome_helpers/atome_video.js' defer></script>
31
40
  <script src='js/atome/atome.js' defer></script>
32
41
  <script src='js/atome/kernel.js' defer></script>
42
+ <script src='js/infos.js'></script>
33
43
  <script src='js/opal/atome_opal_extensions.js'></script>
34
44
  <title>atome</title>
35
- <link rel="icon" type="image/x-icon" href="./favicon.ico">
45
+
36
46
  </head>
37
- <body id='user_view' class='atome' oncontextmenu="return false;"></body>
47
+ <body id='user_view' class='atome' oncontextmenu="return false;">
48
+ </body>
38
49
  <script src='js/application.js' defer></script>
50
+
39
51
  </html>
@@ -1,4 +1,4 @@
1
- const atomeJS = Object.assign(atomeAnimate,atomeDrag,atomeFile,atomeSort, atomeTime, atomeVideo);
1
+ const atomeJS = Object.assign(atomeAnimate,atomeCommunication,atomeDrag,atomeDrop,atomeFile,atomeSort, atomeTime, atomeVideo);
2
2
  // This const is used to store and get all atome created canvas by id
3
3
  const Atome_canvas={}
4
4
  // // class AtomeDrag {
@@ -1,6 +1,6 @@
1
1
  const atomeAnimate = {
2
2
 
3
- animate: function(particle_found, duration,damping_ratio,ease, mass, repeat,stiffness, velocity,
3
+ animate: function(particle_found, duration,damping_ratio,ease, mass, repeat,stiffness, velocity,
4
4
  start_value, end_value, atome_id, atome_found,atome_hash,original_particle,animation_atome) {
5
5
  // console.log(start_value)
6
6
 
@@ -0,0 +1,40 @@
1
+ const atomeCommunication = {
2
+ controller_sender: function (msg) {
3
+ var json_msg = JSON.parse(msg);
4
+
5
+ if (window.webkit) {
6
+ try {
7
+ window.webkit.messageHandlers.toggleMessageHandler.postMessage(json_msg);
8
+ } catch (error) {
9
+ console.log('no server, unable to post message')
10
+ }
11
+
12
+ } else {
13
+ try {
14
+ window.chrome.webview.postMessage(json_msg);
15
+ } catch (error) {
16
+ console.log('no server, unable to post message')
17
+ }
18
+ }
19
+ },
20
+ controller_listener: function () {
21
+ if (window.webkit) {
22
+ try {
23
+ ///
24
+ } catch (error) {
25
+ console.log('no server, unable to receive message')
26
+ }
27
+ } else {
28
+
29
+ try {
30
+ window.chrome.webview.addEventListener('message', arg => {
31
+ Opal.Object.$response_listener(arg.data)
32
+ });
33
+ } catch (error) {
34
+ console.log('no server, unable to receive message')
35
+ }
36
+
37
+
38
+ }
39
+ },
40
+ }
@@ -1,6 +1,7 @@
1
1
  const atomeDrag = {
2
2
 
3
3
  drag: function (options, atome_id, atome) {
4
+
4
5
  let element = document.getElementById(atome_id)
5
6
  const position = {x: 0, y: 0}
6
7
  interact(element).draggable({
@@ -15,14 +16,41 @@ const atomeDrag = {
15
16
  atome.$drag_move_callback(event.pageX, event.pageY, event.rect.left, event.rect.top);
16
17
 
17
18
  if (options === true) {
18
- event.target.style.transform =
19
- event.target.style.transform = 'translate(' + position.x + 'px, ' + position.y + 'px)'
19
+ target = event.target
20
+ var x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx
21
+ var y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy
22
+
23
+ // translate the element
24
+ target.style.transform = 'translate(' + x + 'px, ' + y + 'px)'
25
+
26
+ // update the position attributes
27
+ target.setAttribute('data-x', x)
28
+ target.setAttribute('data-y', y)
29
+
30
+
20
31
  }
21
32
 
22
33
  },
23
34
  end(event) {
24
- atome.$drag_end_callback(event.pageX, event.pageY, event.rect.left, event.rect.top);
25
35
 
36
+ // We remove the translate and update the position of the atome
37
+
38
+ const transformValue = window.getComputedStyle(element).getPropertyValue('transform');
39
+ const matrix = transformValue.match(/^matrix\(([^\(]*)\)$/);
40
+ const transformData = matrix ? matrix[1].split(', ') : null;
41
+ const translateX = transformData ? parseFloat(transformData[4]) : 0;
42
+ const translateY = transformData ? parseFloat(transformData[5]) : 0;
43
+ const positionLeft = element.offsetLeft + translateX;
44
+ const positionTop = element.offsetTop + translateY;
45
+
46
+ element.style.left = positionLeft+ 'px';
47
+ element.style.top = positionTop + 'px';
48
+ // we remove the transform tag
49
+ element.style.transform = '';
50
+ // now we reset the interactJS
51
+ element.setAttribute('data-x', 0)
52
+ element.setAttribute('data-y', 0)
53
+ atome.$drag_end_callback(event.pageX, event.pageY, positionLeft, positionTop);
26
54
 
27
55
  },
28
56
  }
@@ -47,6 +75,15 @@ const atomeDrag = {
47
75
 
48
76
  remove: function (options, atome_id, _atome) {
49
77
  let element = document.getElementById(atome_id)
78
+ // now we reset the position
79
+ var position = element.getBoundingClientRect();
80
+ var transform = element.style.transform;
81
+ var newTransform = transform.replace(/translate\([^\)]*\)/g, "");
82
+ element.style.transform = newTransform;
83
+ element.style.left = position.left + "px";
84
+ element.style.top = position.top + "px";
85
+
86
+
50
87
  interact(element).draggable(options);
51
88
  },
52
89