atome 0.5.5.6.4 → 0.5.5.6.5
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/lib/atome/atome.rb +2 -3
- data/lib/atome/genesis/generators/identity.rb +1 -1
- data/lib/atome/genesis/generators/spatial.rb +90 -0
- data/lib/atome/genesis/generators/utility.rb +4 -3
- data/lib/atome/genesis/sparkle.rb +3 -0
- data/lib/atome/helpers/utilities.rb +18 -0
- data/lib/atome/version.rb +1 -1
- data/lib/renderers/html/html.rb +1 -1
- data/lib/renderers/html/spatial.rb +12 -0
- data/vendor/assets/application/examples/duplicate.rb +2 -0
- data/vendor/assets/application/examples/layout.rb +15 -191
- data/vendor/assets/application/examples/selected.rb +0 -1
- data/vendor/assets/src/css/style.css +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5e9aa478d329311763c85b34cbd9a9a24e22cb9179e596e2e66d0701f091005
|
4
|
+
data.tar.gz: 58a73fce3f81a4f00a8d0948167be1686538bb3cf8fb4144b05876406c30e8f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6c686bfaf93676f69a7dd20af421bb6751f2ab21f971a5658c3ad6da3b4f8fd5a3ceab28cbf0ef71032a1c125729226c1cda3640fa7f5ac4545d9e657c52b39
|
7
|
+
data.tar.gz: 6752436669092cf5f741ff202fc3815c0897524ee4f85f7746cb6dd4cfdea9164cb4248bfa116a22b46d30e8989f2e3d19336b5a9ebaebf3ad23ed65a1e500bd
|
data/lib/atome/atome.rb
CHANGED
@@ -6,7 +6,6 @@ class Atome
|
|
6
6
|
|
7
7
|
def initialize(new_atome = {}, &atomes_proc)
|
8
8
|
# the keys :renderers, :type and :id should be placed in the first position in the hash
|
9
|
-
#@broadcast = {}
|
10
9
|
@history = {}
|
11
10
|
@callback = {}
|
12
11
|
@tag = {}
|
@@ -17,8 +16,8 @@ class Atome
|
|
17
16
|
@type = new_atome[:type] || :element
|
18
17
|
@attached = []
|
19
18
|
@category = []
|
20
|
-
@display = { mode: :default
|
21
|
-
# @
|
19
|
+
# @display = { mode: :default }
|
20
|
+
# @backup={} # mainly used to restore particle when using grid /table /list display mode
|
22
21
|
@html = HTML.new(@id, self)
|
23
22
|
@headless = Headless.new(@id, self)
|
24
23
|
# now we store the proc in a an atome's property called :bloc
|
@@ -53,7 +53,7 @@ new(particle: :selected) do |params|
|
|
53
53
|
if params == true
|
54
54
|
grab(Universe.current_user).selection << @id
|
55
55
|
elsif params == false
|
56
|
-
grab(Universe.current_user).selection.delete(@id)
|
56
|
+
grab(Universe.current_user).selection.collect.delete(@id)
|
57
57
|
else
|
58
58
|
# TODO: for future use
|
59
59
|
end
|
@@ -9,3 +9,93 @@ new({ particle: :direction, type: :string })
|
|
9
9
|
new({ particle: :center, type: :string})
|
10
10
|
new({particle: :depth, type: :integer})
|
11
11
|
new({ particle: :position })
|
12
|
+
new({ particle: :organise })
|
13
|
+
new({ particle: :spacing })
|
14
|
+
new({ particle: :display }) do |params|
|
15
|
+
unless params.instance_of? Hash
|
16
|
+
params = { mode: params }
|
17
|
+
end
|
18
|
+
params
|
19
|
+
end
|
20
|
+
new({ particle: :layout }) do |params|
|
21
|
+
|
22
|
+
mode_found = params.delete(:mode) || :list
|
23
|
+
elements_style = params.delete(:element) || {}
|
24
|
+
# now we get the list of the atome to layout
|
25
|
+
atomes_to_organise = []
|
26
|
+
if type == :group
|
27
|
+
atomes_to_organise = collect
|
28
|
+
end
|
29
|
+
# if params[:listing] is specified group collection is override
|
30
|
+
atomes_to_organise = params[:listing] if params[:listing]
|
31
|
+
if mode_found == :default
|
32
|
+
# the user want to revert the layout to the default
|
33
|
+
atomes_to_organise.each do |atome_id_to_organise|
|
34
|
+
atome_found = grab(atome_id_to_organise)
|
35
|
+
# now restoring
|
36
|
+
if atome_found.backup
|
37
|
+
atome_found.backup.each do |particle, value|
|
38
|
+
atome_found.send(:delete, particle)
|
39
|
+
atome_found.send(particle, value)
|
40
|
+
end
|
41
|
+
atome_found.remove_layout
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
else
|
46
|
+
|
47
|
+
if params[:id]
|
48
|
+
container_name = params[:id]
|
49
|
+
container = grab(:view).box({ id: container_name })
|
50
|
+
container_class = container_name
|
51
|
+
else
|
52
|
+
container = grab(:view).box
|
53
|
+
id_found = container.id
|
54
|
+
params[:id] = id_found
|
55
|
+
container_class = id_found
|
56
|
+
end
|
57
|
+
container.remove({ category: :atome })
|
58
|
+
container.category(:matrix)
|
59
|
+
if mode_found == :list
|
60
|
+
params[:organise] = '1fr'
|
61
|
+
end
|
62
|
+
params.each do |particle, value|
|
63
|
+
container.send(particle, value)
|
64
|
+
end
|
65
|
+
# now we add user wanted particles
|
66
|
+
atomes_to_organise.each do |atome_id_to_organise|
|
67
|
+
atome_found = grab(atome_id_to_organise)
|
68
|
+
# now restoring
|
69
|
+
if atome_found.backup
|
70
|
+
atome_found.backup.each do |particle, value|
|
71
|
+
atome_found.send(:delete, particle)
|
72
|
+
atome_found.send(particle, value)
|
73
|
+
end
|
74
|
+
# atome_found.remove_layout
|
75
|
+
end
|
76
|
+
# we remove previous display mode
|
77
|
+
atome_found.remove_layout
|
78
|
+
atome_found.display[:mode] = mode_found
|
79
|
+
atome_found.display[:layout] = id_found
|
80
|
+
atome_found.attach(container_class)
|
81
|
+
atome_found.remove({ category: :atome })
|
82
|
+
atome_found.category(container_class)
|
83
|
+
# the hash below is used to restore element state
|
84
|
+
|
85
|
+
# we only store the state if atome_found.display[:default]== {} it means this is the original state
|
86
|
+
elements_style.each do |particle, value|
|
87
|
+
# we have to store all elements particle to restore it later
|
88
|
+
atome_found.backup({}) unless atome_found.backup
|
89
|
+
unless atome_found.backup[particle]
|
90
|
+
particle_to_save = atome_found.send(particle) || 0
|
91
|
+
atome_found.backup[particle] = particle_to_save
|
92
|
+
end
|
93
|
+
|
94
|
+
atome_found.send(particle, value)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
params
|
99
|
+
end
|
100
|
+
|
101
|
+
|
@@ -197,7 +197,6 @@ new({ particle: :copy }) do |items_id|
|
|
197
197
|
grab(:copy).collect << items_id
|
198
198
|
end
|
199
199
|
|
200
|
-
|
201
200
|
new({ particle: :paste }) do |params|
|
202
201
|
|
203
202
|
all_copies = grab(:copy).collect
|
@@ -211,7 +210,7 @@ new({ particle: :paste }) do |params|
|
|
211
210
|
new_atomes = []
|
212
211
|
applies_found = []
|
213
212
|
copies_found.each do |copy_found|
|
214
|
-
new_atome = grab(copy_found).duplicate({attach: @id })
|
213
|
+
new_atome = grab(copy_found).duplicate({ attach: @id })
|
215
214
|
new_atomes << new_atome.id
|
216
215
|
# FIXME: below start to patch because apply is not apply , so we store it and apply it again
|
217
216
|
applies_found << new_atome.apply
|
@@ -226,4 +225,6 @@ end
|
|
226
225
|
|
227
226
|
new({ read: :paste }) do |p|
|
228
227
|
@copy
|
229
|
-
end
|
228
|
+
end
|
229
|
+
|
230
|
+
new({ particle: :backup })
|
@@ -87,6 +87,9 @@ Universe.current_machine = machine_id
|
|
87
87
|
A = Atome.new(
|
88
88
|
{ renderers: default_render, id: :atome, type: :element, tag: { system: true } }
|
89
89
|
)
|
90
|
+
# atome selector / collector
|
91
|
+
Atome.new({ renderers: [:html], id: :selector, collect: [], type: :group, tag: { system: true } })
|
92
|
+
|
90
93
|
# atome infos
|
91
94
|
def atome_infos
|
92
95
|
puts "atome version: #{Atome::VERSION}"
|
@@ -280,4 +280,22 @@ class Atome
|
|
280
280
|
debug "#{user_id} not found"
|
281
281
|
end
|
282
282
|
end
|
283
|
+
def remove_layout
|
284
|
+
display(:default)
|
285
|
+
# we get the current parent (the previous layout)
|
286
|
+
parent_found = grab(attach)
|
287
|
+
# we get the parent of the parent
|
288
|
+
grand_parent = parent_found.attach
|
289
|
+
# and attach the item to the grand parent
|
290
|
+
# we remove the parent category and restore atome category
|
291
|
+
remove({ category: attach })
|
292
|
+
category(:atome)
|
293
|
+
attach(grand_parent)
|
294
|
+
# we delete the parent (the layout) if it no more children attached
|
295
|
+
if parent_found.attached.length == 0
|
296
|
+
parent_found.delete(true)
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
|
283
301
|
end
|
data/lib/atome/version.rb
CHANGED
data/lib/renderers/html/html.rb
CHANGED
@@ -1096,7 +1096,7 @@ class HTML
|
|
1096
1096
|
end
|
1097
1097
|
|
1098
1098
|
def play_animation(properties)
|
1099
|
-
|
1099
|
+
puts 'change for standard method : action'
|
1100
1100
|
required_keys = [:from, :to, :duration]
|
1101
1101
|
if properties.is_a?(Hash) && (required_keys - properties.keys).empty?
|
1102
1102
|
animate(properties)
|
@@ -43,4 +43,16 @@ end
|
|
43
43
|
|
44
44
|
new({renderer: :html, method: :depth }) do |params|
|
45
45
|
html.style("z-index", params)
|
46
|
+
end
|
47
|
+
|
48
|
+
new({ method: :organise, renderer: :html }) do |params|
|
49
|
+
html.style(:gridTemplateColumns, params)
|
50
|
+
end
|
51
|
+
|
52
|
+
new({ method: :spacing, renderer: :html }) do |params|
|
53
|
+
html.style(:gap, "#{params}px")
|
54
|
+
end
|
55
|
+
|
56
|
+
new({ method: :display, renderer: :html }) do |params|
|
57
|
+
html.style(:display, params)
|
46
58
|
end
|
@@ -57,8 +57,10 @@ b = circle({ id: :the_cirlce })
|
|
57
57
|
b.text(:hello)
|
58
58
|
bb = b.duplicate({ width: 33, left: 234, top: 222 })
|
59
59
|
bb.color(:red)
|
60
|
+
wait 1 do
|
60
61
|
bb2 = b.duplicate({ width: 33, left: 12 })
|
61
62
|
bb3 = b.duplicate({ width: 33, left: 444 })
|
62
63
|
bb3.color(:green)
|
63
64
|
bb2.color(:orange)
|
65
|
+
end
|
64
66
|
|
@@ -1,179 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# class HTML
|
4
|
-
#
|
5
|
-
# def layout_style(option = {})
|
6
|
-
# element_style = {
|
7
|
-
# backgroundColor: 'rebeccapurple',
|
8
|
-
# width: '100%',remove_layout
|
9
|
-
# height: '29px',
|
10
|
-
# borderRadius: '59px',
|
11
|
-
# display: 'flex',
|
12
|
-
# justifyContent: 'center',
|
13
|
-
# alignItems: 'center',
|
14
|
-
# flexDirection: 'column',
|
15
|
-
# marginBottom: '20px',
|
16
|
-
# padding: '0px',
|
17
|
-
# # transform: 'rotate(22deg)',
|
18
|
-
#
|
19
|
-
# }
|
20
|
-
#
|
21
|
-
# container_style = {
|
22
|
-
# display: :grid,
|
23
|
-
# gridTemplateColumns: 'repeat(4, 1fr)',
|
24
|
-
# overflow: :scroll,
|
25
|
-
# flexDirection: 'column',
|
26
|
-
# gap: '20px',
|
27
|
-
# padding: '0px',
|
28
|
-
#
|
29
|
-
# }
|
30
|
-
# element_style = element_style.merge(option[:element]) if option[:element]
|
31
|
-
# container_style = container_style.merge(option[:container]) if option[:container]
|
32
|
-
# @layout_style = { element: element_style, container: container_style }
|
33
|
-
# end
|
34
|
-
#
|
35
|
-
# def remove_webview_layout(element, container)
|
36
|
-
# element[:classList].add('atome')
|
37
|
-
# element[:classList].remove('matrix_element')
|
38
|
-
# end
|
39
|
-
#
|
40
|
-
# def layout(params)
|
41
|
-
#
|
42
|
-
# id_found = params[:id]
|
43
|
-
# mode_found = params[:mode]
|
44
|
-
# width_found = params[:width]
|
45
|
-
# height_found = params[:height]
|
46
|
-
# layout_container = JS.global[:document].getElementById(id_found.to_s)
|
47
|
-
# layout_elements = JS.global[:document].querySelectorAll(".#{id_found}")
|
48
|
-
# if mode_found == :default
|
49
|
-
# # we revert all elements to default state / layout
|
50
|
-
# layout_elements.to_a.each do |element|
|
51
|
-
# element[:classList].remove('matrix_element')
|
52
|
-
# element[:classList].add('atome')
|
53
|
-
# end
|
54
|
-
# else
|
55
|
-
# # we apply new layout to elements
|
56
|
-
# layout_style({ element: { backgroundColor: :purple } })
|
57
|
-
# layout_container[:classList].remove('atome')
|
58
|
-
# layout_container[:classList].add('matrix')
|
59
|
-
# layout_elements.to_a.each do |element|
|
60
|
-
# # we check if current state is default if yes we store the layout to be able to restore it
|
61
|
-
# element[:style][:borderRadius] = '59px'
|
62
|
-
# element[:classList].remove('atome')
|
63
|
-
# # element[:classList].add('matrix_element')
|
64
|
-
# end
|
65
|
-
# end
|
66
|
-
#
|
67
|
-
# end
|
68
|
-
# end
|
69
|
-
|
70
|
-
class Atome
|
71
|
-
def remove_layout
|
72
|
-
display[:mode] = :default
|
73
|
-
# we get the current parent (the previous layout)
|
74
|
-
parent_found = grab(attach)
|
75
|
-
# we get the parent of the parent
|
76
|
-
grand_parent = parent_found.attach
|
77
|
-
# and attach the item to the grand parent
|
78
|
-
# we remove the parent category and restore atome category
|
79
|
-
remove({ category: attach})
|
80
|
-
category(:atome)
|
81
|
-
attach(grand_parent)
|
82
|
-
# we delete the parent (the layout) if it no more children attached
|
83
|
-
if parent_found.attached.length == 0
|
84
|
-
parent_found.delete(true)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
new({ particle: :layout }) do |params|
|
90
|
-
mode_found = params.delete(:mode) || :list
|
91
|
-
elements_style= params.delete(:element) || {}
|
92
|
-
# layout_width = params[:width] ||= 333
|
93
|
-
# layout_height = params[:height] ||= 333
|
94
|
-
# now we get the list of the atome to layout
|
95
|
-
atomes_to_layout = []
|
96
|
-
if type == :group
|
97
|
-
atomes_to_layout = collect
|
98
|
-
end
|
99
|
-
# if params[:list] is specified group collection is override
|
100
|
-
atomes_to_layout = params[:list] if params[:list]
|
101
|
-
|
102
|
-
if mode_found == :default
|
103
|
-
# the user want to revert the layout to the default
|
104
|
-
atomes_to_layout.each do |atome_id_to_layout|
|
105
|
-
atome_to_layout = grab(atome_id_to_layout)
|
106
|
-
unless params[:id]
|
107
|
-
params[:id] = atome_to_layout.display[:layout]
|
108
|
-
end
|
109
|
-
# now we get the default particles and restore it
|
110
|
-
atome_to_layout.display[:default].each do |particle, value|
|
111
|
-
atome_to_layout.send(:delete,particle)
|
112
|
-
atome_to_layout.send(particle,value)
|
113
|
-
end
|
114
|
-
|
115
|
-
atome_to_layout.remove_layout
|
116
|
-
end
|
117
|
-
else
|
118
|
-
if params[:id]
|
119
|
-
container_name = params[:id]
|
120
|
-
container = grab(:view).box({ id: container_name })
|
121
|
-
container_class = container_name
|
122
|
-
else
|
123
|
-
container = grab(:view).box
|
124
|
-
id_found = container.id
|
125
|
-
params[:id] = id_found
|
126
|
-
container_class = id_found
|
127
|
-
end
|
128
|
-
# container.width = layout_width
|
129
|
-
# container.height = layout_height
|
130
|
-
container.remove({ category: :atome})
|
131
|
-
container.category(:matrix)
|
132
|
-
alert ">> #{mode_found}"
|
133
|
-
params.each do |particle, value|
|
134
|
-
container.send(particle, value)
|
135
|
-
end
|
136
|
-
# now we add user wanted particles
|
137
|
-
alert params
|
138
|
-
|
139
|
-
atomes_to_layout.each do |atome_id_to_layout|
|
140
|
-
atome_to_layout = grab(atome_id_to_layout)
|
141
|
-
# we remove previous display mode
|
142
|
-
atome_to_layout.remove_layout
|
143
|
-
atome_to_layout.display[:mode] = mode_found
|
144
|
-
atome_to_layout.display[:layout] = id_found
|
145
|
-
atome_to_layout.attach(container_class)
|
146
|
-
atome_to_layout.remove({ category: :atome})
|
147
|
-
atome_to_layout.category(container_class)
|
148
|
-
#the hash below is used to restore element state
|
149
|
-
original_state={}
|
150
|
-
elements_style.each do |particle, value|
|
151
|
-
# we have to store all elements particle to restore it later
|
152
|
-
original_state[particle]=atome_to_layout.send(particle)
|
153
|
-
atome_to_layout.send(particle, value)
|
154
|
-
end
|
155
|
-
atome_to_layout.display[:default]=original_state
|
156
|
-
# puts "display is : #{atome_to_layout.display}"
|
157
|
-
# atome_to_layout.html.add_class(container_class)
|
158
|
-
# puts container_class
|
159
|
-
end
|
160
|
-
end
|
161
|
-
params
|
162
|
-
end
|
163
|
-
|
164
|
-
# new({ renderer: :html, method: :layout, type: :hash }) do |params, _user_proc|
|
165
|
-
# html.layout(params)
|
166
|
-
# end
|
167
|
-
|
168
|
-
new({ particle: :display })
|
169
|
-
|
170
|
-
# system
|
171
|
-
Atome.new({ renderers: [:html], id: :selector, collect: [], type: :group, tag: { system: true } })
|
172
|
-
|
173
|
-
############### tests
|
174
|
-
|
175
3
|
b = box({ color: :red, id: :the_box, left: 3 })
|
176
|
-
|
4
|
+
5.times do |index|
|
177
5
|
width_found = b.width
|
178
6
|
b.duplicate({ left: b.left + index * (width_found + 45), top: 0, category: :custom_category })
|
179
7
|
end
|
@@ -182,7 +10,7 @@ grab(:view).attached.each do |atome_found|
|
|
182
10
|
grab(atome_found).selected(true)
|
183
11
|
end
|
184
12
|
grab(:the_box_copy_1).text(:hello)
|
185
|
-
|
13
|
+
|
186
14
|
selected_items = grab(Universe.current_user).selection # we create a group
|
187
15
|
# we collect all atomes in the view
|
188
16
|
atomes_found = []
|
@@ -190,38 +18,34 @@ selected_items.each do |atome_found|
|
|
190
18
|
atomes_found << atome_found
|
191
19
|
end
|
192
20
|
|
193
|
-
random_found = atomes_found.sample(17)
|
194
|
-
|
21
|
+
# random_found = atomes_found.sample(17)
|
22
|
+
#
|
195
23
|
# random_found.each do |atome_id|
|
196
24
|
# atome_found = grab(atome_id)
|
197
25
|
# if atome_found.type == :shape
|
198
26
|
# atome_found.left(rand(700))
|
199
|
-
# atome_found.width(rand(
|
200
|
-
# atome_found.height(rand(
|
27
|
+
# atome_found.width(rand(200))
|
28
|
+
# atome_found.height(rand(200))
|
29
|
+
# # atome_found.rotate(rand(90))
|
201
30
|
# atome_found.smooth(rand(120))
|
202
31
|
# atome_found.color({ red: rand, green: rand, blue: rand })
|
203
32
|
# end
|
204
33
|
# end
|
34
|
+
|
35
|
+
selected_items.layout({ mode: :default, width: 500, height: 22 })
|
36
|
+
|
205
37
|
wait 1 do
|
206
|
-
selected_items.layout({ mode: :grid, width: 900, height: 500, color: :green,element: {
|
207
|
-
# alert grab('the_box_copy_4').display
|
38
|
+
selected_items.layout({ mode: :grid, width: 900, height: 500, color: :green, element: { rotate: 22, height: 100, width: 150 } })
|
208
39
|
wait 1 do
|
209
|
-
|
40
|
+
selected_items.layout({ mode: :grid, width: 1200, height: 500, overflow: :scroll })
|
210
41
|
wait 1 do
|
211
|
-
selected_items.layout({ mode: :default, width: 500, height:
|
212
|
-
# alert grab('the_box_copy_4').display
|
42
|
+
selected_items.layout({ mode: :default, width: 500, height: 22 })
|
213
43
|
wait 1 do
|
214
|
-
selected_items.layout({ id: :my_layout, mode: :list, width:
|
44
|
+
selected_items.layout({ id: :my_layout, mode: :list, width: 800, height: 800, overflow: :scroll, element: { height: 22, width: 800 } })
|
215
45
|
wait 1 do
|
216
|
-
selected_items.layout({ mode: :default
|
46
|
+
selected_items.layout({ mode: :default })
|
217
47
|
end
|
218
48
|
end
|
219
49
|
end
|
220
50
|
end
|
221
51
|
end
|
222
|
-
|
223
|
-
# JS.global[:console].clear()
|
224
|
-
|
225
|
-
|
226
|
-
# b=box
|
227
|
-
# alert ">> #{b.display}"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.5.6.
|
4
|
+
version: 0.5.5.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean-Eric Godard
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arduino_firmata
|