atome 0.5.3.8.1 → 0.5.4.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +52 -17
  3. data/app_builder_helpers/Rakefile +20 -3
  4. data/exe/atome +33 -1
  5. data/lib/atome/atome.rb +64 -75
  6. data/lib/atome/extensions/atome.rb +82 -52
  7. data/lib/atome/extensions/mathematic.rb +8 -12
  8. data/lib/atome/extensions/matrix.rb +141 -202
  9. data/lib/atome/genesis/generators/atome.rb +13 -96
  10. data/lib/atome/genesis/generators/communication.rb +0 -1
  11. data/lib/atome/genesis/generators/effect.rb +0 -6
  12. data/lib/atome/genesis/generators/event.rb +64 -77
  13. data/lib/atome/genesis/generators/geometry.rb +0 -18
  14. data/lib/atome/genesis/generators/identity.rb +56 -52
  15. data/lib/atome/genesis/generators/material.rb +3 -54
  16. data/lib/atome/genesis/generators/spatial.rb +8 -8
  17. data/lib/atome/genesis/generators/utility.rb +82 -68
  18. data/lib/atome/genesis/genesis.rb +15 -4
  19. data/lib/atome/genesis/sparkle.rb +38 -19
  20. data/lib/atome/helpers/callbacks.rb +47 -1
  21. data/lib/atome/helpers/essentials.rb +21 -18
  22. data/lib/atome/helpers/sanitizer.rb +0 -10
  23. data/lib/atome/helpers/utilities.rb +143 -45
  24. data/lib/atome/kernel/batch.rb +13 -36
  25. data/lib/atome/kernel/universe.rb +3 -1
  26. data/lib/atome/presets/atome.rb +14 -23
  27. data/lib/atome/renderers/browser/atome.rb +2 -1
  28. data/lib/atome/renderers/browser/browser.rb +2 -0
  29. data/lib/atome/renderers/browser/event.rb +18 -0
  30. data/lib/atome/renderers/browser/helpers/browser_helper.rb +17 -0
  31. data/lib/atome/renderers/browser/helpers/drag_helper.rb +13 -0
  32. data/lib/atome/renderers/browser/helpers/drop_helper.rb +13 -0
  33. data/lib/atome/renderers/browser/helpers/event_helper.rb +16 -11
  34. data/lib/atome/renderers/browser/helpers/over_helper.rb +13 -0
  35. data/lib/atome/renderers/browser/helpers/text_helper.rb +14 -2
  36. data/lib/atome/renderers/browser/identity.rb +23 -5
  37. data/lib/atome/renderers/browser/spatial.rb +3 -2
  38. data/lib/atome/renderers/browser/utility.rb +7 -6
  39. data/lib/atome/renderers/renderer.rb +1 -0
  40. data/lib/atome/version.rb +2 -2
  41. data/lib/atome.rb +1 -0
  42. data/sig/atome.rbs +36 -0
  43. data/sig/batch.rbs +7 -0
  44. data/sig/browser_helper.rbs +14 -0
  45. data/sig/essentials.rbs +11 -0
  46. data/sig/matrix.rbs +5 -0
  47. data/sig/object.rbs +3 -0
  48. data/vendor/assets/aui.rb +5 -0
  49. data/vendor/assets/src/index.html +15 -3
  50. data/vendor/assets/src/js/atome/atome.js +1 -1
  51. data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +1 -1
  52. data/vendor/assets/src/js/atome/atome_helpers/atome_communication.js +40 -0
  53. data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +40 -3
  54. data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +12 -0
  55. data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +166 -0
  56. data/vendor/assets/src/js/atome/atome_helpers/atome_file.js +6 -1
  57. data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +43 -0
  58. data/vendor/assets/src/medias/images/icons/email.svg +12 -12
  59. data/vendor/assets/src/medias/rubies/demos.rb +63 -0
  60. data/vendor/assets/src/medias/rubies/examples/add.rb +3 -4
  61. data/vendor/assets/src/medias/rubies/examples/animation.rb +2 -2
  62. data/vendor/assets/src/medias/rubies/examples/atome_new.rb +18 -6
  63. data/vendor/assets/src/medias/rubies/examples/attach.rb +15 -0
  64. data/vendor/assets/src/medias/rubies/examples/attached.rb +5 -6
  65. data/vendor/assets/src/medias/rubies/examples/batch.rb +17 -0
  66. data/vendor/assets/src/medias/rubies/examples/blur.rb +2 -2
  67. data/vendor/assets/src/medias/rubies/examples/box.rb +2 -2
  68. data/vendor/assets/src/medias/rubies/examples/code.rb +1 -1
  69. data/vendor/assets/src/medias/rubies/examples/color.rb +20 -4
  70. data/vendor/assets/src/medias/rubies/examples/delete.rb +18 -2
  71. data/vendor/assets/src/medias/rubies/examples/detached.rb +3 -3
  72. data/vendor/assets/src/medias/rubies/examples/drag.rb +53 -2
  73. data/vendor/assets/src/medias/rubies/examples/drop.rb +26 -0
  74. data/vendor/assets/src/medias/rubies/examples/fullscreen.rb +2 -2
  75. data/vendor/assets/src/medias/rubies/examples/image.rb +2 -2
  76. data/vendor/assets/src/medias/rubies/examples/link.rb +7 -5
  77. data/vendor/assets/src/medias/rubies/examples/markers.rb +2 -2
  78. data/vendor/assets/src/medias/rubies/examples/materials.rb +15 -0
  79. data/vendor/assets/src/medias/rubies/examples/matrix.rb +85 -41
  80. data/vendor/assets/src/medias/rubies/examples/matrix_changes.rb +483 -0
  81. data/vendor/assets/src/medias/rubies/examples/matrix_simple.rb +32 -0
  82. data/vendor/assets/src/medias/rubies/examples/monitoring.rb +44 -18
  83. data/vendor/assets/src/medias/rubies/examples/mute.rb +1 -1
  84. data/vendor/assets/src/medias/rubies/examples/on.rb +1 -1
  85. data/vendor/assets/src/medias/rubies/examples/over.rb +6 -4
  86. data/vendor/assets/src/medias/rubies/examples/pause.rb +1 -1
  87. data/vendor/assets/src/medias/rubies/examples/physical.rb +19 -0
  88. data/vendor/assets/src/medias/rubies/examples/play.rb +1 -1
  89. data/vendor/assets/src/medias/rubies/examples/read.rb +2 -2
  90. data/vendor/assets/src/medias/rubies/examples/repeat.rb +3 -2
  91. data/vendor/assets/src/medias/rubies/examples/shadow.rb +1 -1
  92. data/vendor/assets/src/medias/rubies/examples/sort.rb +3 -4
  93. data/vendor/assets/src/medias/rubies/examples/tags.rb +10 -0
  94. data/vendor/assets/src/medias/rubies/examples/text.rb +4 -4
  95. data/vendor/assets/src/medias/rubies/examples/time.rb +3 -3
  96. data/vendor/assets/src/medias/rubies/examples/video.rb +2 -2
  97. data/vendor/assets/src/medias/rubies/examples/web.rb +2 -2
  98. data/vendor/assets/src/medias/rubies/{examples → unstable}/_2_solve.rb +1 -1
  99. data/vendor/assets/src/medias/rubies/{examples → unstable}/_audio.rb +1 -1
  100. data/vendor/assets/src/medias/rubies/{examples → unstable}/_dataset.rb +4 -4
  101. data/vendor/assets/src/medias/rubies/unstable/_matrix.rb +58 -0
  102. data/vendor/assets/src/medias/rubies/{examples → unstable}/_table2.rb +2 -2
  103. data/vendor/assets/src/medias/rubies/{examples → unstable}/_vie.rb +2 -2
  104. data/vendor/assets/src/utilities/mode.rb +0 -0
  105. data/vendor/assets/src-tauri/tauri.conf.json +2 -2
  106. metadata +34 -14
  107. data/vendor/assets/src/medias/rubies/examples/parents.rb +0 -15
  108. data/vendor/assets/src/medias/rubies/examples/table.rb +0 -479
  109. /data/vendor/assets/src/medias/rubies/{examples → unstable}/!run.rb +0 -0
  110. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_attach.rb +0 -0
  111. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_os.rb +0 -0
  112. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_test.rb +0 -0
@@ -0,0 +1,12 @@
1
+ const atomeDrop = {
2
+ drop: function (options, atome_id, atome) {
3
+
4
+ // internal drop cf a div dropped on a div
5
+ let element = document.getElementById(atome_id)
6
+ mouse_interaction(element,atome)
7
+
8
+ file_drop(atome_id,atome);
9
+ }
10
+
11
+ }
12
+
@@ -0,0 +1,166 @@
1
+
2
+ function mouse_interaction(element, atome){
3
+ interact(element).dropzone({
4
+ listeners: {
5
+ dragenter(event) {
6
+
7
+ atome.$enter_action_callback(Opal.hash({id: event.relatedTarget.id}));
8
+ // console.log(event)
9
+ // event.relatedTarget.textContent = 'Dropped'
10
+ },
11
+ dragleave(event) {
12
+ atome.$leave_action_callback(Opal.hash({id: event.relatedTarget.id}));
13
+ // event.relatedTarget.textContent = 'Dropped'
14
+ },
15
+ dropactivate: function (event) {
16
+ // add active dropzone feedback
17
+ // event.target.classList.add('drop-active')
18
+ },
19
+ drop(event) {
20
+ // console.log(event)
21
+ atome.$drop_action_callback(Opal.hash({id: event.relatedTarget.id}));
22
+ // event.relatedTarget.textContent = 'Dropped'
23
+ },
24
+ dropdeactivate: function (event) {
25
+ // remove active dropzone feedback
26
+ // event.target.classList.remove('drop-active')
27
+ // event.target.classList.remove('drop-target')
28
+ }
29
+ // dropdeactivate: function (event) {
30
+ // // remove active dropzone feedback
31
+ // // event.target.classList.remove('drop-active')
32
+ // // event.target.classList.remove('drop-target')
33
+ // }
34
+ // start(event) {
35
+ // console.log("satring")
36
+ // atome.$drag_action_callback(event.pageX, event.pageY, event.rect.left, event.rect.top);
37
+ // },
38
+ // move(event) {
39
+ // console.log("0000")
40
+ // position.x += event.dx
41
+ // position.y += event.dy
42
+ // // we feed the callback method below
43
+ // atome.$drag_action_callback(event.pageX, event.pageY, event.rect.left, event.rect.top);
44
+ //
45
+ // if (options === true) {
46
+ // event.target.style.transform =
47
+ // event.target.style.transform = 'translate(' + position.x + 'px, ' + position.y + 'px)'
48
+ // }
49
+ //
50
+ // },
51
+ // end(event) {
52
+ // console.log("endinfring")
53
+ //
54
+ // atome.$drag_action_callback(event.pageX, event.pageY, event.rect.left, event.rect.top);
55
+ //
56
+ //
57
+ // },
58
+ }
59
+ })
60
+ }
61
+
62
+
63
+ function file_drop(atome_id, atome){
64
+ const dropzone = document.querySelector('#'+atome_id)
65
+ dropzone.addEventListener('dragover', evt => evt.preventDefault())
66
+ dropzone.addEventListener('drop', async evt => {
67
+ evt.preventDefault()
68
+ const files = await window.getFilesFromDataTransferItems(evt.dataTransfer.items)
69
+ for (const file of files) {
70
+ const reader = new FileReader();
71
+ reader.readAsDataURL(file);
72
+ reader.onloadend = function () {
73
+ const base64data = reader.result;
74
+ let type_found = file.type.split('/')[0]
75
+ atome.$drop_action_callback(Opal.hash({path: file.filepath,type: type_found,size: file.size,data: base64data}));
76
+ }
77
+ }
78
+ })
79
+
80
+
81
+ async function getFilesFromDataTransferItems (dataTransferItems, options = { raw: false }) {
82
+ const checkErr = (err) => {
83
+ if (getFilesFromDataTransferItems.didShowInfo) return
84
+ if (err.name !== 'EncodingError') return
85
+ getFilesFromDataTransferItems.didShowInfo = true
86
+ const infoMsg = `${err.name} occured within datatransfer-files-promise module\n`
87
+ + `Error message: "${err.message}"\n`
88
+ + 'Try serving html over http if currently you are running it from the filesystem.'
89
+ console.warn(infoMsg)
90
+ }
91
+
92
+ const readFile = (entry, path = '') => {
93
+ return new Promise((resolve, reject) => {
94
+ entry.file(file => {
95
+ if (!options.raw) file.filepath = path + file.name // save full path
96
+
97
+ resolve(file)
98
+ }, (err) => {
99
+ checkErr(err)
100
+ reject(err)
101
+ })
102
+ })
103
+ }
104
+
105
+ const dirReadEntries = (dirReader, path) => {
106
+ return new Promise((resolve, reject) => {
107
+ dirReader.readEntries(async entries => {
108
+ let files = []
109
+ for (let entry of entries) {
110
+ const itemFiles = await getFilesFromEntry(entry, path)
111
+ // console.log(itemFiles)
112
+ files = files.concat(itemFiles)
113
+ }
114
+ resolve(files)
115
+ }, (err) => {
116
+ checkErr(err)
117
+ reject(err)
118
+ })
119
+ })
120
+ }
121
+
122
+ const readDir = async (entry, path) => {
123
+ const dirReader = entry.createReader()
124
+ const newPath = path + entry.name + '/'
125
+ let files = []
126
+ let newFiles
127
+ do {
128
+ newFiles = await dirReadEntries(dirReader, newPath)
129
+ files = files.concat(newFiles)
130
+ } while (newFiles.length > 0)
131
+ return files
132
+ }
133
+
134
+ const getFilesFromEntry = async (entry, path = '') => {
135
+ if (entry.isFile) {
136
+ const file = await readFile(entry, path)
137
+ return [file]
138
+ }
139
+ if (entry.isDirectory) {
140
+ const files = await readDir(entry, path)
141
+ return files
142
+ }
143
+ // throw new Error('Entry not isFile and not isDirectory - unable to get files')
144
+ }
145
+
146
+ let files = []
147
+ let entries = []
148
+
149
+ // Pull out all entries before reading them
150
+ for (let i = 0, ii = dataTransferItems.length; i < ii; i++) {
151
+ entries.push(dataTransferItems[i].webkitGetAsEntry())
152
+ }
153
+
154
+ // Recursively read through all entries
155
+ for (let entry of entries) {
156
+ const newFiles = await getFilesFromEntry(entry)
157
+ files = files.concat(newFiles)
158
+ }
159
+
160
+ return files
161
+ }
162
+
163
+ if (this.window && this === this.window) this.getFilesFromDataTransferItems = getFilesFromDataTransferItems
164
+ else module.exports.getFilesFromDataTransferItems = getFilesFromDataTransferItems
165
+
166
+ }
@@ -1,7 +1,12 @@
1
1
  const atomeFile = {
2
- reader: function (file, atome, proc) {
2
+
3
+
4
+ reader: function(file, atome, proc) {
3
5
  fetch('medias/' + file)
4
6
  .then(response => response.text())
5
7
  .then(text => atome.$read_callback(text, proc))
6
8
  }
9
+
7
10
  }
11
+
12
+
@@ -0,0 +1,43 @@
1
+ // const atomeOver = {
2
+ //
3
+ // over_enter: function (atome_id, atome, proc_passed, state) {
4
+ // let element = document.getElementById(atome_id)
5
+ // // let dropzone = document.getElementById('dropzone');
6
+ // element.addEventListener('dragover', handleDragOver);
7
+ //
8
+ // function handleDragOver(evt) {
9
+ // evt.preventDefault();
10
+ // if (state == 'enter') {
11
+ // atome.$enter_action_callback(proc_passed);
12
+ // state = false
13
+ // }
14
+ //
15
+ // }
16
+ //
17
+ // // mouse_interaction(element, atome)
18
+ //
19
+ //
20
+ // }
21
+ // // ,
22
+ // // over_leave: function (atome_id, atome, proc_passed, state) {
23
+ // // let element = document.getElementById(atome_id)
24
+ // // // let dropzone = document.getElementById('dropzone');
25
+ // // element.addEventListener('dragover', handleDragOver);
26
+ // //
27
+ // // function handleDragOver(evt) {
28
+ // // evt.preventDefault();
29
+ // // if (state == 'leave') {
30
+ // // atome.$leave_action_callback(proc_passed);
31
+ // // state = false
32
+ // // }
33
+ // //
34
+ // // }
35
+ // //
36
+ // // // mouse_interaction(element, atome)
37
+ // //
38
+ // //
39
+ // // },
40
+ //
41
+ //
42
+ // }
43
+ //
@@ -1,13 +1,13 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
- <svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
5
- viewBox="0 0 493.497 493.497" xml:space="preserve">
6
- <path d="M444.556,85.218H48.942C21.954,85.218,0,107.171,0,134.16v225.177c0,26.988,21.954,48.942,48.942,48.942h395.613
7
- c26.988,0,48.941-21.954,48.941-48.942V134.16C493.497,107.171,471.544,85.218,444.556,85.218z M460.87,134.16v225.177
8
- c0,2.574-0.725,4.924-1.793,7.09L343.74,251.081l117.097-117.097C460.837,134.049,460.87,134.096,460.87,134.16z M32.628,359.336
9
- V134.16c0-0.064,0.033-0.11,0.033-0.175l117.097,117.097L34.413,366.426C33.353,364.26,32.628,361.911,32.628,359.336z
10
- M251.784,296.902c-2.692,2.691-7.378,2.691-10.07,0L62.667,117.846h368.172L251.784,296.902z M172.827,274.152l45.818,45.819
11
- c7.512,7.511,17.493,11.645,28.104,11.645c10.61,0,20.592-4.134,28.104-11.645l45.82-45.819l101.49,101.499H71.327L172.827,274.152z
12
- "/>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
5
+ viewBox="0 0 493.497 493.497" xml:space="preserve">
6
+ <path d="M444.556,85.218H48.942C21.954,85.218,0,107.171,0,134.16v225.177c0,26.988,21.954,48.942,48.942,48.942h395.613
7
+ c26.988,0,48.941-21.954,48.941-48.942V134.16C493.497,107.171,471.544,85.218,444.556,85.218z M460.87,134.16v225.177
8
+ c0,2.574-0.725,4.924-1.793,7.09L343.74,251.081l117.097-117.097C460.837,134.049,460.87,134.096,460.87,134.16z M32.628,359.336
9
+ V134.16c0-0.064,0.033-0.11,0.033-0.175l117.097,117.097L34.413,366.426C33.353,364.26,32.628,361.911,32.628,359.336z
10
+ M251.784,296.902c-2.692,2.691-7.378,2.691-10.07,0L62.667,117.846h368.172L251.784,296.902z M172.827,274.152l45.818,45.819
11
+ c7.512,7.511,17.493,11.645,28.104,11.645c10.61,0,20.592-4.134,28.104-11.645l45.82-45.819l101.49,101.499H71.327L172.827,274.152z
12
+ "/>
13
13
  </svg>
@@ -0,0 +1,63 @@
1
+ ######### demos
2
+ # we create a code container
3
+ element({id: :code_container, data: :empty})
4
+ puts "Attention this method only work with a server due to security restriction "
5
+ demo_container = grab('intuition').box({id: :demo_container,left: 0, overflow: :scroll, height: 567})
6
+ clearer = grab('intuition').circle({top: 3, left: 3, width: 39, height: 39, color: :orange, id: :debugger})
7
+ view_code = grab('intuition').circle({top: 3, left: 99, width: 39, height: 39, color: :red, id: :clearer})
8
+ # view=grab(:view)
9
+ view_code.touch(true) do
10
+ code=grab(:code_container).data
11
+ grab(:view).text({ data: code, width: :auto, height: 333, left: :auto, depth: 33, right: 0, overflow: :scroll })
12
+ end
13
+
14
+ clearer.touch(true) do
15
+ grab(:view).clear(true)
16
+ # atomes_found=[]
17
+ # Universe.atomes.each do |atome_id_found, _atome_content_found|
18
+ # atomes_found << atome_id_found
19
+ # end
20
+ end
21
+
22
+
23
+
24
+ context=grab(:view)
25
+ demo_container.read('rubies/demos_list.rb') do |demos_found|
26
+ # we eval the demo list
27
+ eval demos_found
28
+ demos_list.each_with_index do |demo, index|
29
+ current_demo=demo_container.text ({ data: demo, top: 16*index, left: 12, visual: {size: 12} })
30
+ current_demo.touch(true) do
31
+ #TODO : create a ruby method for console clear
32
+ `console.clear()`
33
+ puts atome_infos
34
+ puts "current demo: #{demo}"
35
+ context.clear(true)
36
+ # atomes_attached=context.attached
37
+ users_atomes=[]
38
+ Universe.atomes.each do |k, _v|
39
+ users_atomes << k
40
+ end
41
+
42
+ # puts "=> before > atomes attached : #{atomes_attached}"
43
+ # puts "==-> before > users_atomes : #{users_atomes}"
44
+
45
+ # we delete/clear the prev scene
46
+ # atomes_attached.each do |atome_id_found|
47
+ # unless atome_id_found == :view_color
48
+ # atome_found=grab(atome_id_found)
49
+ # atome_found.delete(true) if atome_found
50
+ # end
51
+ # end
52
+ # we eval the demo content
53
+ demo_container.read('rubies/examples/'+demo) do |demo_requested|
54
+ grab(:view).eval demo_requested
55
+ grab(:code_container).data(demo_requested)
56
+ end
57
+ # puts "=> after >atomes attached : #{atomes_attached}"
58
+ # puts "==-> after > users_atomes : #{users_atomes}"
59
+
60
+
61
+ end
62
+ end
63
+ end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  my_video = Atome.new(
4
- video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],
5
- path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
4
+ video: { renderers: [:browser], id: :video1, type: :video, attach: [:view],
5
+ path: './medias/videos/avengers.mp4', left: 33, top: 33, width: 777
6
6
  }
7
7
  )
8
8
 
@@ -17,9 +17,8 @@ end
17
17
 
18
18
  jumper=lambda do
19
19
  my_video.play(12)
20
- my_video.play(12)
21
20
  end
22
21
 
23
22
  my_video.markers({ markers: { begin: 6, code: jumper } })
24
23
 
25
- my_video.add({ markers: { my_stop: { begin: 16, code: stoper } } })
24
+ my_video.add({ markers: { my_stop: { begin: 16, code: stoper } }, left: 33 })
@@ -5,12 +5,12 @@ bb.color(:orange)
5
5
  box({ id: :my_box, drag: true })
6
6
  c = circle({ id: :the_circle, left: 222, drag: { move: true, inertia: true, lock: :start } })
7
7
  c.shadow({ renderers: [:browser], id: :shadow2, type: :shadow,
8
- parents: [:the_circle], children: [],
8
+ attach: [:the_circle],
9
9
  left: 3, top: 9, blur: 19,
10
10
  red: 0, green: 0, blue: 0, alpha: 1
11
11
  })
12
12
 
13
- Atome.new(animation: { renderers: [:browser], id: :the_animation1, type: :animation, children: [] })
13
+ Atome.new(animation: { renderers: [:browser], id: :the_animation1, type: :animation })
14
14
  aa = animation({
15
15
  targets: %i[my_box the_circle],
16
16
  begin: {
@@ -1,15 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Atome.new(
4
- shape: { type: :shape, renderers: [:browser], id: :the_shape, parents: [:view], children: [], clones: [],
4
+ shape: { type: :shape, renderers: [:browser], id: :the_shape, attach: [:view], clones: [],
5
5
  left: 99, right: 99, width: 399, height: 99,
6
- color: { renderers: [:browser], id: :c315, type: :color, parents: [:the_shape], children: [],
7
- red: 0.3, green: 1, blue: 0.6, alpha: 1 } }
6
+ # color: { renderers: [:browser], id: :c315, type: :color, attach: [:the_shape],
7
+ # red: 0.3, green: 1, blue: 0.6, alpha: 1 }
8
+ }
8
9
  )
9
10
 
10
11
  Atome.new(
11
- shape: { renderers: [:browser], id: :the_shape2, type: :shape, parents: [:view], children: [], clones: [],
12
+ shape: { type: :color, renderers: [:browser], id: :c315, attach: [:the_shape],
13
+ red: 0.3, green: 1, blue: 0.6, alpha: 1 }
14
+
15
+ )
16
+
17
+ Atome.new(
18
+ shape: { renderers: [:browser], id: :the_shape2, type: :shape, attach: [:view], clones: [],
12
19
  left: 99, right: 99, width: 99, height: 99,
13
- color: { renderers: [:browser], id: :c31, type: :color, parents: [:the_shape2], children: [],
14
- red: 1, green: 0.15, blue: 0.15, alpha: 0.6 } }
20
+
21
+ }
15
22
  )
23
+
24
+ Atome.new(
25
+ shape: { renderers: [:browser], id: :c31, type: :color, attach: [:the_shape2],
26
+ red: 1, green: 0.15, blue: 0.15, alpha: 0.6 }
27
+ )
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ b=box({id: :c315})
4
+ circle({id: :c_12, top: 0,drag: true})
5
+
6
+ b.attach([:c_12])
7
+
8
+ circle({ id: :c_123, color: :cyan, left: 233, drag: true })
9
+ box({ id: :b_1, left: 333, drag: true })
10
+ bb=box({top: 99, drag: true})
11
+ grab(:b_1).attach([:c_123])
12
+ circle_123_color= grab(:c_123).color[0]
13
+ grab(circle_123_color).attach([:b_1])
14
+ bb.attach([:b_1])
15
+ grab(:c315).attach([:c_12])
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
+ grab(:user_view).color({ red: 1, green: 0.6, blue: 0.6, id: :active_color })
3
+ grab(:user_view).color( { red: 0.3, green: 0.3, blue: 0.3, id: :inactive_color } )
2
4
 
3
- color({ red: 0.8, green: 0.8, blue: 0.8, id: :active_color })
4
- color( { red: 0.3, green: 0.3, blue: 0.3, id: :inactive_color } )
5
-
6
- b=box
5
+ b=box({left: 99})
7
6
  wait 1 do
8
- b.attached([:inactive_color])
7
+ b.attached([:active_color])
9
8
 
10
9
  puts b.attached
11
10
  end
12
11
  puts b.attached
13
- c=circle
12
+ c=circle({left: 333})
14
13
  c.attached(:inactive_color)
15
14
 
16
15
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ # batch
3
+ b=box({ id: :b1 })
4
+ b.box({ id: :b2, left: 220 })
5
+ b.box({ id: :b3, left: 340 })
6
+ b.batch([:b2, :b3])
7
+ # puts "----- batch ------"
8
+ # puts "=> the batch found is #{a}"
9
+ # p a.batch.value
10
+ b.batch.color(:red).rotate(33)
11
+ b.batch.each do |el|
12
+ el.height(77).blur(9)
13
+ end
14
+ wait 1 do
15
+ puts b.batch.top(0)
16
+ end
17
+
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- b = box({ id: :the_box, left: 99, top: 99 })
4
- b.blur(2)
3
+ b = box({ id: :the_box, left: 199, top: 99 })
4
+ b.blur(7)
@@ -8,9 +8,9 @@ a = box({ id: :my_box, left: 333 }) do |p|
8
8
  end
9
9
 
10
10
  b = Atome.new(
11
- { shape: { renderers: [:browser], id: :view_test, type: :shape, parents: [:view],children: [],
11
+ { shape: { renderers: [:browser], id: :view_test, type: :shape, attach: [:view],
12
12
  left: 0, width: 90, top: 0, height: 90, overflow: :auto,
13
- color: { renderers: [:browser], id: :view_test_color, type: :color, parents: [:view_test],
13
+ color: { renderers: [:browser], id: :view_test_color, type: :color, attach: [:view_test],
14
14
  red: 1, green: 0.15, blue: 0.15, alpha: 1 } } }
15
15
  ) do |p|
16
16
  puts "the param pass to the atome is: #{p}"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- a=Atome.new(code: { type: :code, renderers: [:headless], parents: [], children: [] }) do |params_found|
3
+ a=Atome.new(code: { type: :code, renderers: [:headless], attach: [] }) do |params_found|
4
4
  puts "the param is #{params_found}"
5
5
  end
6
6
  a.run(:super)
@@ -11,47 +11,63 @@ wait 1 do
11
11
  { renderers: [:browser], id: :c319, type: :color,
12
12
  red: 1, green: 1, blue: 0.15, alpha: 0.6 }
13
13
  )
14
+ puts c
14
15
  end
15
16
 
16
17
  wait 2 do
17
18
  # now we overload the color
18
19
  c.color({ red: 1 })
20
+ puts c
21
+
19
22
  end
20
23
 
21
24
  wait 4 do
22
25
  # now the easy way
23
26
  c.color(:yellow)
27
+ puts c
28
+
24
29
  wait 1 do
25
30
  c.color({ green: 1, blue: 0.69, alpha: 1 })
31
+ puts c
32
+
26
33
  end
27
34
  end
28
35
 
29
36
  wait 5 do
30
37
  d=c.color(:red)
38
+ puts c
39
+
31
40
  wait 1 do
32
41
  d.blue(0)
42
+ puts c
43
+
33
44
  end
34
45
 
35
46
  wait 2 do
36
47
  d.red(1)
48
+ puts c
49
+
37
50
  end
38
51
  end
39
52
 
40
53
 
41
54
  wait 10 do
42
- Atome.new({ color: { renderers: [:browser], id: :col1, type: :color, parents: [], children: [],
55
+ d=Atome.new({ color: { renderers: [:browser], id: :col1, type: :color, attach: [],
43
56
  left: 33, top: 66, red: 1, green: 0.15, blue: 0.7, alpha: 1 } })
44
57
 
45
- col_2 = Atome.new({ color: { renderers: [:browser], id: :col2, type: :color, parents: [], children: [],
58
+ col_2 = Atome.new({ color: { renderers: [:browser], id: :col2, type: :color, attach: [],
46
59
  left: 33, top: 66, red: 0, green: 0.15, blue: 0.7, alpha: 1 } })
47
60
 
48
- Atome.new(
49
- shape: { type: :shape, renderers: [:browser], id: :shaped, parents: [:view], children: [], attached: [:col1],
61
+ puts d
62
+ e=Atome.new(
63
+ shape: { type: :shape, renderers: [:browser], id: :shaped, attach: [:view], attached: [:col1],
50
64
  left: 199, top: 99,
51
65
  width: 66, height: 66
52
66
  }
53
67
  )
68
+ puts e
54
69
  wait 2 do
55
70
  col_2.attach([:shaped])
71
+ puts e
56
72
  end
57
73
  end
@@ -9,9 +9,9 @@ wait 4 do
9
9
  end
10
10
 
11
11
  wait 3 do
12
- b.children.each do |attached_atome_id|
12
+ b.shape.each do |attached_atome_id|
13
13
  b.delete({id: attached_atome_id})
14
- b.shadow({ renderers: [:browser], id: :shadow2, type: :shadow, parents: [], children: [],
14
+ b.shadow({ renderers: [:browser], id: :shadow2, type: :shadow, attach: [],
15
15
  left: 3, top: 9, blur: 3, direction: '',
16
16
  red: 0, green: 0, blue: 0, alpha: 1
17
17
  })
@@ -23,4 +23,20 @@ wait 2 do
23
23
  b.delete(:left)
24
24
  end
25
25
 
26
+ # recursive example
27
+ bb=box
28
+ bb.text('click me!')
29
+ col=color(:red)
30
+ bb.touch(true) do
31
+ bb.box({attached: col.id})
32
+ c=bb.circle
33
+ c.text(:hello)
34
+
35
+ wait 2 do
36
+ bb.physical.each do |attached_atome_id|
37
+ bb.delete({id: attached_atome_id, recursive: true})
38
+ end
39
+ end
40
+ puts Universe.atomes.length
41
+ end
26
42
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- color({ red: 0.8, green: 0.8, blue: 0.8, id: :active_color })
4
- color( { red: 0.3, green: 0.3, blue: 0.3, id: :inactive_color } )
3
+ grab(:user_view).color({ red: 0.8, green: 0.8, blue: 0.8, id: :active_color })
4
+ grab(:user_view).color( { red: 0.3, green: 0.3, blue: 0.3, id: :inactive_color } )
5
5
 
6
6
  b=box
7
7
  b.attached(:inactive_color)
@@ -9,5 +9,5 @@ puts b.attached
9
9
  b.touch(true) do
10
10
  b.detached(:inactive_color)
11
11
  b.attached(:active_color)
12
- puts b.attached
12
+ puts "detached objects are : #{b.attached}"
13
13
  end