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
@@ -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