atome 0.5.3.8.1 → 0.5.4.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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