atome 0.5.3.8.8 → 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.
- checksums.yaml +4 -4
- data/Rakefile +52 -17
- data/app_builder_helpers/Rakefile +20 -3
- data/exe/atome +33 -1
- data/lib/atome/atome.rb +43 -57
- data/lib/atome/extensions/atome.rb +82 -52
- data/lib/atome/extensions/mathematic.rb +8 -12
- data/lib/atome/extensions/matrix.rb +138 -210
- data/lib/atome/genesis/generators/atome.rb +8 -134
- data/lib/atome/genesis/generators/communication.rb +0 -1
- data/lib/atome/genesis/generators/effect.rb +0 -6
- data/lib/atome/genesis/generators/event.rb +64 -77
- data/lib/atome/genesis/generators/geometry.rb +0 -18
- data/lib/atome/genesis/generators/identity.rb +6 -33
- data/lib/atome/genesis/generators/material.rb +3 -54
- data/lib/atome/genesis/generators/utility.rb +63 -58
- data/lib/atome/genesis/genesis.rb +8 -0
- data/lib/atome/genesis/sparkle.rb +35 -16
- data/lib/atome/helpers/callbacks.rb +47 -1
- data/lib/atome/helpers/essentials.rb +1 -1
- data/lib/atome/helpers/sanitizer.rb +0 -10
- data/lib/atome/helpers/utilities.rb +74 -28
- data/lib/atome/kernel/batch.rb +13 -35
- data/lib/atome/kernel/universe.rb +2 -0
- data/lib/atome/presets/atome.rb +4 -12
- data/lib/atome/renderers/browser/atome.rb +1 -1
- data/lib/atome/renderers/browser/browser.rb +2 -0
- data/lib/atome/renderers/browser/event.rb +18 -0
- data/lib/atome/renderers/browser/helpers/drag_helper.rb +13 -0
- data/lib/atome/renderers/browser/helpers/drop_helper.rb +13 -0
- data/lib/atome/renderers/browser/helpers/event_helper.rb +16 -11
- data/lib/atome/renderers/browser/helpers/over_helper.rb +13 -0
- data/lib/atome/renderers/browser/helpers/text_helper.rb +5 -1
- data/lib/atome/renderers/browser/spatial.rb +3 -2
- data/lib/atome/renderers/browser/utility.rb +7 -7
- data/lib/atome/version.rb +2 -2
- data/lib/atome.rb +1 -0
- data/sig/atome.rbs +16 -0
- data/sig/batch.rbs +7 -0
- data/sig/browser_helper.rbs +14 -0
- data/sig/matrix.rbs +5 -0
- data/sig/object.rbs +3 -0
- data/vendor/assets/aui.rb +5 -0
- data/vendor/assets/src/index.html +15 -3
- data/vendor/assets/src/js/atome/atome.js +1 -1
- data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +1 -1
- data/vendor/assets/src/js/atome/atome_helpers/atome_communication.js +40 -0
- data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +40 -3
- data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +12 -0
- data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +166 -0
- data/vendor/assets/src/js/atome/atome_helpers/atome_file.js +6 -1
- data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +43 -0
- data/vendor/assets/src/medias/rubies/demos.rb +63 -0
- data/vendor/assets/src/medias/rubies/examples/add.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/animation.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/atome_new.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/attach.rb +10 -10
- data/vendor/assets/src/medias/rubies/examples/attached.rb +2 -3
- data/vendor/assets/src/medias/rubies/examples/batch.rb +17 -0
- data/vendor/assets/src/medias/rubies/examples/blur.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/box.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/code.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/color.rb +3 -3
- data/vendor/assets/src/medias/rubies/examples/delete.rb +17 -1
- data/vendor/assets/src/medias/rubies/examples/detached.rb +3 -3
- data/vendor/assets/src/medias/rubies/examples/drag.rb +52 -1
- data/vendor/assets/src/medias/rubies/examples/drop.rb +26 -0
- data/vendor/assets/src/medias/rubies/examples/fullscreen.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/markers.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/matrix.rb +102 -0
- data/vendor/assets/src/medias/rubies/examples/matrix_changes.rb +483 -0
- data/vendor/assets/src/medias/rubies/examples/matrix_simple.rb +32 -0
- data/vendor/assets/src/medias/rubies/examples/monitoring.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/mute.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/on.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/over.rb +6 -4
- data/vendor/assets/src/medias/rubies/examples/pause.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/physical.rb +19 -0
- data/vendor/assets/src/medias/rubies/examples/play.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/repeat.rb +3 -2
- data/vendor/assets/src/medias/rubies/examples/shadow.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/sort.rb +3 -4
- data/vendor/assets/src/medias/rubies/examples/tags.rb +10 -0
- data/vendor/assets/src/medias/rubies/examples/text.rb +4 -4
- data/vendor/assets/src/medias/rubies/examples/time.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/video.rb +2 -2
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_2_solve.rb +1 -1
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_audio.rb +1 -1
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_dataset.rb +4 -4
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_table2.rb +2 -2
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_vie.rb +2 -2
- data/vendor/assets/src/utilities/mode.rb +0 -0
- data/vendor/assets/src-tauri/tauri.conf.json +2 -2
- metadata +32 -14
- data/vendor/assets/src/medias/rubies/examples/table.rb +0 -479
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/!run.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_attach.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_matrix.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_os.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_test.rb +0 -0
data/sig/batch.rbs
ADDED
@@ -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
|
data/sig/matrix.rbs
ADDED
data/sig/object.rbs
ADDED
data/vendor/assets/aui.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
45
|
+
|
36
46
|
</head>
|
37
|
-
<body id='user_view' class='atome' oncontextmenu="return false;"
|
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,
|
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
|
19
|
-
|
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
|
|
@@ -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
|
+
}
|
@@ -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
|
+
//
|
@@ -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,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
my_video = Atome.new(
|
4
|
-
video: { renderers: [:browser], id: :video1, type: :video,
|
4
|
+
video: { renderers: [:browser], id: :video1, type: :video, attach: [:view],
|
5
5
|
path: './medias/videos/avengers.mp4', left: 33, top: 33, width: 777
|
6
6
|
}
|
7
7
|
)
|
@@ -5,7 +5,7 @@ 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
|
-
|
8
|
+
attach: [:the_circle],
|
9
9
|
left: 3, top: 9, blur: 19,
|
10
10
|
red: 0, green: 0, blue: 0, alpha: 1
|
11
11
|
})
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
b=box({id: :c315})
|
4
|
-
circle({id: :
|
4
|
+
circle({id: :c_12, top: 0,drag: true})
|
5
5
|
|
6
|
-
b.attach([:
|
6
|
+
b.attach([:c_12])
|
7
7
|
|
8
|
-
circle({ id: :
|
9
|
-
box({ id: :
|
10
|
-
bb=box({top: 99})
|
11
|
-
grab(:
|
12
|
-
circle_123_color= grab(:
|
13
|
-
grab(circle_123_color).attach([:
|
14
|
-
bb.attach([:
|
15
|
-
grab(:c315).attach([:
|
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,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
color({ red:
|
4
|
-
color( { red: 0.3, green: 0.3, blue: 0.3, id: :inactive_color } )
|
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 } )
|
5
4
|
|
6
5
|
b=box({left: 99})
|
7
6
|
wait 1 do
|
@@ -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
|
+
|
@@ -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,
|
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,
|
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],
|
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)
|
@@ -52,15 +52,15 @@ end
|
|
52
52
|
|
53
53
|
|
54
54
|
wait 10 do
|
55
|
-
d=Atome.new({ color: { renderers: [:browser], id: :col1, type: :color,
|
55
|
+
d=Atome.new({ color: { renderers: [:browser], id: :col1, type: :color, attach: [],
|
56
56
|
left: 33, top: 66, red: 1, green: 0.15, blue: 0.7, alpha: 1 } })
|
57
57
|
|
58
|
-
col_2 = Atome.new({ color: { renderers: [:browser], id: :col2, type: :color,
|
58
|
+
col_2 = Atome.new({ color: { renderers: [:browser], id: :col2, type: :color, attach: [],
|
59
59
|
left: 33, top: 66, red: 0, green: 0.15, blue: 0.7, alpha: 1 } })
|
60
60
|
|
61
61
|
puts d
|
62
62
|
e=Atome.new(
|
63
|
-
shape: { type: :shape, renderers: [:browser], id: :shaped,
|
63
|
+
shape: { type: :shape, renderers: [:browser], id: :shaped, attach: [:view], attached: [:col1],
|
64
64
|
left: 199, top: 99,
|
65
65
|
width: 66, height: 66
|
66
66
|
}
|