atome 0.5.7.4.3 → 0.5.7.4.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/atome/extensions/atome.rb +28 -5
- data/lib/atome/genesis/particles/property.rb +4 -4
- data/lib/atome/utilities/utilities.rb +102 -15
- data/lib/atome/version.rb +1 -1
- data/lib/molecules/intuition/tools.rb +80 -27
- data/lib/molecules/intuition/utilities.rb +7 -18
- data/lib/renderers/html/atome_html.rb +4 -0
- data/lib/renderers/html/html.rb +8 -0
- data/vendor/assets/application/examples/above_below_before_after.rb +10 -7
- data/vendor/assets/application/examples/applications.rb +5 -3
- data/vendor/assets/application/examples/blocks.rb +45 -0
- data/vendor/assets/application/examples/grip.rb +10 -0
- data/vendor/assets/application/examples/selected.rb +53 -53
- data/vendor/assets/application/examples/to_percent.rb +9 -0
- data/vendor/assets/application/examples/tools.rb +101 -25
- data/vendor/assets/src/js/atome/atome.js +18 -0
- data/vendor/assets/src/medias/images/icons/add.svg +8 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4307d31fea820f10f0830b00698f327cd08181a864b4440a25a57021fb0ffb7e
|
4
|
+
data.tar.gz: 6a66d5336fa6a58eae59571504d92230eb8482bdd44c4821bbf3e79e27a356d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0a16ea7a7865bc3b13bdc81ce6d57dccf557c25c016446a151eee1203d582e22a246dae317f2531c19cba16fa7c2e3455f64f49ab3966cd526f3ccd2675fff4
|
7
|
+
data.tar.gz: c5988d35c2b6af02f6db44e610c0f01ede3d99cd5558db342bbfa186a04cf4669bc0344ad50d187e0208272234c49d2683f0b9ff326082575beeb8177e11490b
|
@@ -69,6 +69,10 @@ end
|
|
69
69
|
class Object
|
70
70
|
include ObjectExtension
|
71
71
|
|
72
|
+
def truncate_string(string, max_length)
|
73
|
+
string.length > max_length ? string.slice(0, max_length) + '.' : string
|
74
|
+
end
|
75
|
+
|
72
76
|
|
73
77
|
def remove_key_pair_but(hash, keys_to_keep)
|
74
78
|
hash.dup.delete_if do |key, value|
|
@@ -137,7 +141,8 @@ class Object
|
|
137
141
|
|
138
142
|
# the method below generate Atome method creation at Object level
|
139
143
|
def atome_method_for_object(element)
|
140
|
-
|
144
|
+
|
145
|
+
Object.define_method element do |params=nil, &user_proc|
|
141
146
|
default_parent = Essentials.default_params[element][:attach] || :view
|
142
147
|
grab(default_parent).send(element, params, &user_proc)
|
143
148
|
end
|
@@ -565,8 +570,14 @@ JS
|
|
565
570
|
end
|
566
571
|
end
|
567
572
|
|
568
|
-
def above(item, margin = 6)
|
573
|
+
def above(item, margin = 6, ref=grab(:view))
|
574
|
+
# FIXME above is broken when using % in margin
|
575
|
+
unless margin.is_a?(Numeric)
|
576
|
+
item_height= ref.to_px(:height)
|
577
|
+
margin= (margin.to_f*item_height)/100
|
578
|
+
end
|
569
579
|
pos = item.to_px(:bottom) + item.height + margin
|
580
|
+
item.top(:auto)
|
570
581
|
if item.display == :none
|
571
582
|
33
|
572
583
|
else
|
@@ -574,7 +585,11 @@ JS
|
|
574
585
|
end
|
575
586
|
end
|
576
587
|
|
577
|
-
def below(item, margin = 6)
|
588
|
+
def below(item, margin = 6, ref=grab(:view))
|
589
|
+
unless margin.is_a?(Numeric)
|
590
|
+
item_height= ref.to_px(:height)
|
591
|
+
margin= (margin.to_f*item_height)/100
|
592
|
+
end
|
578
593
|
pos = item.to_px(:top) + item.to_px(:height) + margin
|
579
594
|
if item.display == :none
|
580
595
|
0
|
@@ -584,7 +599,11 @@ JS
|
|
584
599
|
|
585
600
|
end
|
586
601
|
|
587
|
-
def after(item, margin = 6)
|
602
|
+
def after(item, margin = 6, ref=grab(:view))
|
603
|
+
unless margin.is_a?(Numeric)
|
604
|
+
item_width= ref.to_px(:width)
|
605
|
+
margin= (margin.to_f*item_width)/100
|
606
|
+
end
|
588
607
|
left_f = if item.left.instance_of?(Integer)
|
589
608
|
item.left
|
590
609
|
else
|
@@ -604,7 +623,11 @@ JS
|
|
604
623
|
end
|
605
624
|
end
|
606
625
|
|
607
|
-
def before(item, margin = 6)
|
626
|
+
def before(item, margin = 6, ref=grab(:view))
|
627
|
+
unless margin.is_a?(Numeric)
|
628
|
+
item_width= ref.to_px(:width)
|
629
|
+
margin= (margin.to_f*item_width)/100
|
630
|
+
end
|
608
631
|
pos = item.to_px(:right) + item.width + margin
|
609
632
|
if item.display == :none
|
610
633
|
0
|
@@ -20,7 +20,7 @@ new({ after: :red }) do |params|
|
|
20
20
|
a = affect.dup # FIXME we have to dup else some items in the array array other duplicated
|
21
21
|
a.each do |atome_to_refresh|
|
22
22
|
grab(atome_to_refresh).apply(id)
|
23
|
-
end
|
23
|
+
end if a
|
24
24
|
params
|
25
25
|
end
|
26
26
|
|
@@ -34,7 +34,7 @@ new({ after: :green }) do |params|
|
|
34
34
|
a = affect.dup # FIXME we have to dup else some items in the array array other duplicated
|
35
35
|
a.each do |atome_to_refresh|
|
36
36
|
grab(atome_to_refresh).apply(id)
|
37
|
-
end
|
37
|
+
end if a
|
38
38
|
params
|
39
39
|
end
|
40
40
|
|
@@ -48,7 +48,7 @@ new({ after: :blue }) do |params|
|
|
48
48
|
a = affect.dup # FIXME we have to dup else some items in the array array other duplicated
|
49
49
|
a.each do |atome_to_refresh|
|
50
50
|
grab(atome_to_refresh).apply(id)
|
51
|
-
end
|
51
|
+
end if a
|
52
52
|
params
|
53
53
|
end
|
54
54
|
new({ particle: :alpha, category: :property, type: :string }) do
|
@@ -60,7 +60,7 @@ new({ after: :alpha }) do |params|
|
|
60
60
|
a = affect.dup # FIXME we have to dup else some items in the array array other duplicated
|
61
61
|
a.each do |atome_to_refresh|
|
62
62
|
grab(atome_to_refresh).apply(id)
|
63
|
-
end
|
63
|
+
end if a
|
64
64
|
params
|
65
65
|
end
|
66
66
|
new({ particle: :diffusion, category: :property, type: :string }) do
|
@@ -2,24 +2,16 @@
|
|
2
2
|
|
3
3
|
# toolbox method here
|
4
4
|
require 'json'
|
5
|
-
|
5
|
+
# def is_descendant(ancestor, descendant)
|
6
|
+
# JS.eval("return isDescendant('#{ancestor}', '#{descendant}')")
|
7
|
+
# end
|
6
8
|
class Atome
|
7
9
|
class << self
|
8
10
|
attr_accessor :initialized
|
9
11
|
|
12
|
+
|
10
13
|
def sanitize_data_for_json(data)
|
11
|
-
data
|
12
|
-
# case data
|
13
|
-
# when String
|
14
|
-
# data.gsub('"', '\\"')
|
15
|
-
# when Hash
|
16
|
-
# data.transform_values { |value| sanitize_data(value) }
|
17
|
-
# when Array
|
18
|
-
# data.map { |value| sanitize_data(value) }
|
19
|
-
# else
|
20
|
-
# data
|
21
|
-
# end
|
22
|
-
data
|
14
|
+
data.gsub('"', '\\"')
|
23
15
|
end
|
24
16
|
|
25
17
|
def send_localstorage_content
|
@@ -117,10 +109,105 @@ class Atome
|
|
117
109
|
|
118
110
|
@initialized = {}
|
119
111
|
|
112
|
+
def grip(role_wanted)
|
113
|
+
gripped_atome = []
|
114
|
+
|
115
|
+
fasten.each do |child_id|
|
116
|
+
child_found = grab(child_id)
|
117
|
+
if child_found.role && child_found.role.include?(role_wanted)
|
118
|
+
gripped_atome << child_id
|
119
|
+
end
|
120
|
+
end
|
121
|
+
gripped_atome
|
122
|
+
end
|
123
|
+
|
124
|
+
def recursive(_val)
|
125
|
+
# dummy method
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
def spacing_found(parent_width, child_width, nb_of_children)
|
131
|
+
total_child_width = child_width * nb_of_children
|
132
|
+
remaining_width = parent_width - total_child_width
|
133
|
+
spacing = remaining_width.to_f / (nb_of_children + 1)
|
134
|
+
spacing_percentage = (spacing / parent_width) * 100
|
135
|
+
spacing_percentage.round(2)
|
136
|
+
end
|
137
|
+
|
138
|
+
def block(params)
|
139
|
+
direction = params.delete(:direction) || :vertical
|
140
|
+
spacing = params.delete(:spacing) || 3
|
141
|
+
width_found = params.delete(:width) || '100%'
|
142
|
+
height_found = params.delete(:height) || '100%'
|
143
|
+
bloc_params = params.delete(:data) || {}
|
144
|
+
|
145
|
+
last_id_found = grip(:block).last
|
120
146
|
|
121
|
-
|
122
|
-
|
147
|
+
if last_id_found
|
148
|
+
last_found = grab(last_id_found)
|
149
|
+
case direction
|
150
|
+
when :vertical
|
151
|
+
box({ top: below(last_found, spacing), role: :block, width: width_found }.merge(params).merge(bloc_params))
|
152
|
+
when :horizontal
|
153
|
+
width_found = to_px(:width)
|
154
|
+
block_left = after(last_found, spacing)
|
155
|
+
left_in_percent = (block_left / width_found) * 100
|
156
|
+
box({ left: "#{left_in_percent}%", role: :block, height: height_found }.merge(params).merge(bloc_params))
|
157
|
+
else
|
158
|
+
#
|
159
|
+
end
|
160
|
+
else
|
161
|
+
case direction
|
162
|
+
when :vertical
|
163
|
+
box({ top: spacing, role: :block, width: width_found }.merge(params).merge(bloc_params))
|
164
|
+
when :horizontal
|
165
|
+
box({ left: spacing, role: :block, height: height_found }.merge(params).merge(bloc_params))
|
166
|
+
else
|
167
|
+
#
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
172
|
+
|
173
|
+
def blocks(params)
|
174
|
+
blocks = params.delete(:blocks)
|
175
|
+
distribute = params.delete(:distribute)
|
176
|
+
if distribute && params[:direction] == :horizontal
|
177
|
+
width_found = to_px(:width)
|
178
|
+
params[:spacing] = "#{spacing_found(width_found, params[:width], blocks.length)}%"
|
179
|
+
elsif distribute
|
180
|
+
height_found = to_px(:height)
|
181
|
+
params[:spacing] = spacing_found(height_found, params[:height], blocks.length)
|
182
|
+
end
|
183
|
+
blocks.each do |bloc_id, block_to_create|
|
184
|
+
sanitized_bloc_data = params.merge(block_to_create)
|
185
|
+
block({ data: sanitized_bloc_data }.merge({ id: bloc_id }).merge(params))
|
123
186
|
end
|
187
|
+
end
|
188
|
+
|
189
|
+
|
190
|
+
def sub_block(sub_params, spacing_found = 3)
|
191
|
+
num_blocks = sub_params.size
|
192
|
+
parent_width = to_px(:width)
|
193
|
+
total_ratios = sub_params.values.sum { |sub_content| sub_content[:width] }
|
194
|
+
total_spacing = (num_blocks + 1) * spacing_found
|
195
|
+
available_width = parent_width - total_spacing
|
196
|
+
left_offset = spacing_found
|
197
|
+
sub_params.each do |sub_id, sub_content|
|
198
|
+
ratio = sub_content[:width]
|
199
|
+
block_width = (available_width * ratio) / total_ratios
|
200
|
+
sub_created = box({ id: sub_id, height: '100%', left: left_offset, role: :sub })
|
201
|
+
sub_content["width"] = block_width
|
202
|
+
sub_created.set(sub_content)
|
203
|
+
sub_created.width(block_width)
|
204
|
+
left_offset += block_width + spacing_found
|
205
|
+
sub_created.width(sub_created.to_percent(:width))
|
206
|
+
sub_created.left(sub_created.to_percent(:left))
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
|
124
211
|
|
125
212
|
def help(particle, &doc)
|
126
213
|
if doc
|
data/lib/atome/version.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
def truncate_string(string, max_length)
|
4
|
-
string.length > max_length ? string.slice(0, max_length) + '.' : string
|
5
|
-
end
|
6
|
-
|
7
3
|
size = 33
|
8
4
|
smooth = 3
|
9
5
|
margin = 3
|
@@ -62,17 +58,19 @@ class Atome
|
|
62
58
|
y = event[:clientY]
|
63
59
|
elements = JS.global[:document].elementsFromPoint(x, y)
|
64
60
|
elements.to_a.each do |atome_touched|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
61
|
+
id_found = atome_touched[:id]
|
62
|
+
id_found = id_found.to_s.to_sym # keep .to_s to because ruby wasm try may to_sym on on symbol
|
63
|
+
atome_found = grab(id_found)
|
64
|
+
|
65
|
+
is_descendant_of_intuition = atome_found.descendant_of?(:intuition).to_s if atome_found
|
66
|
+
# # the condition below is use to exclude the treatment any object in the intuition layer
|
67
|
+
unless is_descendant_of_intuition == 'true'
|
68
|
+
|
70
69
|
Universe.active_tools.each do |tool|
|
71
70
|
apply_tool(tool, atome_found, event)
|
72
71
|
end
|
73
|
-
|
74
|
-
break
|
75
72
|
end
|
73
|
+
break
|
76
74
|
end
|
77
75
|
else
|
78
76
|
Universe.allow_tool_operations = true
|
@@ -89,11 +87,42 @@ class Atome
|
|
89
87
|
end
|
90
88
|
|
91
89
|
def start_click_analysis
|
92
|
-
# here we capture any touch when
|
90
|
+
# here we capture any touch when using tool
|
93
91
|
@click_analysis_active = false
|
94
|
-
|
95
|
-
|
92
|
+
|
93
|
+
click_timeout = nil
|
94
|
+
double_click_delay = 150
|
95
|
+
|
96
|
+
JS.global[:document].addEventListener('click') do |native_event|
|
97
|
+
if @click_analysis
|
98
|
+
if click_timeout
|
99
|
+
wait(:kill, click_timeout)
|
100
|
+
click_timeout = nil
|
101
|
+
selected_items = grab(Universe.current_user).selection.collect
|
102
|
+
if selected_items.length > 0
|
103
|
+
dup_selected_items = selected_items.dup
|
104
|
+
dup_selected_items.each do |atome_id_selected|
|
105
|
+
atome_selected = grab(atome_id_selected)
|
106
|
+
atome_selected.selected(false)
|
107
|
+
end
|
108
|
+
else
|
109
|
+
atomes_in_view= grab(:view).fasten
|
110
|
+
atomes_in_view.each do |atome_id_found|
|
111
|
+
grab(atome_id_found).selected(true)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
else
|
117
|
+
click_timeout = wait(double_click_delay / 1000.0) do
|
118
|
+
click_timeout = nil
|
119
|
+
Atome.instance_exec(native_event, &@click_analysis) if @click_analysis.is_a?(Proc)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
96
124
|
end
|
125
|
+
|
97
126
|
end
|
98
127
|
|
99
128
|
def alteration(current_tool, tool_actions, atome_touched, a_event)
|
@@ -152,7 +181,6 @@ class Atome
|
|
152
181
|
end
|
153
182
|
|
154
183
|
def apply_tool(tool, atome_touched, a_event)
|
155
|
-
|
156
184
|
current_tool = grab(tool)
|
157
185
|
tool_actions = current_tool.data
|
158
186
|
method_found = tool_actions[:method]
|
@@ -169,10 +197,28 @@ class Atome
|
|
169
197
|
else
|
170
198
|
atome_touched
|
171
199
|
end
|
172
|
-
|
200
|
+
if target && method_found == :alteration && target.tag[:system]
|
201
|
+
# in this case (on target touch )we are targeting a system object non alterable so we create an a new atome
|
202
|
+
# Ex: if we are on a system color we create a new color that can be altered
|
203
|
+
tools_scheme[:particles]&.each do |particle_f, value_f|
|
204
|
+
type_to_create = target.type
|
205
|
+
if type_to_create
|
206
|
+
target = atome_touched.send(type_to_create, { particle_f => value_f })
|
207
|
+
tools_scheme[:particles]&.each do |particle_f, value_f|
|
208
|
+
target.send(particle_f, value_f)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
else
|
173
213
|
|
214
|
+
# below code trigger when activating the current tool :
|
174
215
|
tools_scheme[:particles]&.each do |particle_f, value_f|
|
175
|
-
target.
|
216
|
+
is_descendant_of_intuition = target.descendant_of?(:intuition).to_s
|
217
|
+
atome_descendant_of_intuition = atome_touched.descendant_of?(:intuition).to_s
|
218
|
+
# the condition below is use to exclude the treatment any object in the intuition layer
|
219
|
+
unless is_descendant_of_intuition == 'true' || atome_descendant_of_intuition == 'true'
|
220
|
+
target.send(particle_f, value_f)
|
221
|
+
end
|
176
222
|
end
|
177
223
|
send(method_found, current_tool, tool_actions, target, a_event)
|
178
224
|
end
|
@@ -363,15 +409,14 @@ class Atome
|
|
363
409
|
tool.instance_variable_set('@prevent_action', true)
|
364
410
|
if tool.instance_variable_get('@tool_open') == true
|
365
411
|
tool.instance_variable_set('@tool_open', false)
|
366
|
-
tool_scheme[:particles]
|
367
|
-
|
368
|
-
|
412
|
+
tool_scheme[:particles]&.each_key do |particle|
|
413
|
+
grab("tool_particle_#{particle}").delete({ force: true })
|
414
|
+
end
|
369
415
|
tool.width(size)
|
370
416
|
else
|
371
417
|
tool.instance_variable_set('@tool_open', true)
|
372
418
|
|
373
419
|
tool_scheme[:particles]&.each_with_index do |(particle_name, _value_), ind|
|
374
|
-
|
375
420
|
particle = tool.box({ id: "tool_particle_#{particle_name}", tag: { system: true }, depth: 1, smooth: smooth,
|
376
421
|
apply: %i[inactive_tool_col tool_box_border tool_shade],
|
377
422
|
width: size, height: size, left: ind * (size + margin) + size })
|
@@ -402,7 +447,6 @@ class Atome
|
|
402
447
|
particle_label.top(:auto)
|
403
448
|
particle_label.bottom(0)
|
404
449
|
particle.touch(true) do
|
405
|
-
puts "1 ======> opening !!!#{particle_name}"
|
406
450
|
tool.instance_variable_set('@prevent_action', true)
|
407
451
|
slider_id = "particle_slider_#{particle_name}"
|
408
452
|
if particle.instance_variable_get('@active')
|
@@ -431,20 +475,21 @@ class Atome
|
|
431
475
|
if grab(slider_id).instance_variable_get('@initialised')
|
432
476
|
Atome.selection.each do |atome_id_to_treat|
|
433
477
|
|
478
|
+
|
434
479
|
tool_scheme[:particles][particle_name] = value.to_f / 100
|
435
480
|
atome_found = grab(atome_id_to_treat)
|
436
481
|
target = grab(atome_found.color.last)
|
482
|
+
target.send(particle_name, value.to_f / 100) if tool.active
|
437
483
|
|
438
|
-
target.send(particle_name, value.to_f / 100)
|
439
|
-
label_value.data(value.to_f / 100)
|
440
484
|
end
|
485
|
+
|
486
|
+
label_value.data(value.to_f / 100)
|
487
|
+
tool_scheme[:particles][particle_name]=value.to_f / 100
|
441
488
|
end
|
442
489
|
end
|
443
490
|
|
444
491
|
Atome.selection.each do |atome_id_to_treat|
|
445
492
|
atome_found = grab(atome_id_to_treat)
|
446
|
-
puts 'here slider treat either the target atome types or current atome'
|
447
|
-
puts "need to created a list instead of choosing the last atome found of it's kind"
|
448
493
|
target = if tool_scheme[:target]
|
449
494
|
grab(atome_found.send(tool_scheme[:target]).last)
|
450
495
|
else
|
@@ -465,6 +510,14 @@ class Atome
|
|
465
510
|
tool.touch(:down) do
|
466
511
|
tool.depth(999)
|
467
512
|
end
|
513
|
+
tool.touch(:double) do
|
514
|
+
tool_to_deactivate = Universe.active_tools.dup
|
515
|
+
tool_to_deactivate.each do |atome_id_found|
|
516
|
+
atome_found = grab(atome_id_found)
|
517
|
+
atome_found.deactivate_tool
|
518
|
+
end
|
519
|
+
tool.activate_tool
|
520
|
+
end
|
468
521
|
tool.touch(true) do
|
469
522
|
unless tool.instance_variable_get('@prevent_action')
|
470
523
|
# we add all specific tool actions to @tools_actions_to_exec hash
|
@@ -482,4 +535,4 @@ class Atome
|
|
482
535
|
end
|
483
536
|
end
|
484
537
|
|
485
|
-
end
|
538
|
+
end
|
@@ -505,7 +505,6 @@ new(molecule: :application) do |params, &bloc|
|
|
505
505
|
|
506
506
|
menu = buttons({
|
507
507
|
id: "#{id_f}_menu",
|
508
|
-
# left: 66,
|
509
508
|
depth: 9999,
|
510
509
|
attach: id_f,
|
511
510
|
inactive: { text: { color: :gray }, width: 66, height: 12, spacing: 3, disposition: :horizontal,
|
@@ -533,11 +532,11 @@ new(molecule: :application) do |params, &bloc|
|
|
533
532
|
end
|
534
533
|
main_app.define_singleton_method(:extract) do |bloc_to_extract|
|
535
534
|
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
535
|
+
bloc_to_extract.each do |page_id, block_id|
|
536
|
+
grab(block_id).delete({ recursive: true })
|
537
|
+
@blocks[page_id].delete(block_id)
|
538
|
+
grab(page_id).reorder_blocs
|
539
|
+
end
|
541
540
|
|
542
541
|
end
|
543
542
|
|
@@ -601,23 +600,14 @@ new(molecule: :show) do |page_id, &bloc|
|
|
601
600
|
# now looking for associated blocks
|
602
601
|
blocks_found = params[:blocks]
|
603
602
|
@prev_bloc_height = 0
|
604
|
-
blocks_found&.each do |bloc_id, bloc_content|
|
605
603
|
|
604
|
+
blocks_found&.each do |bloc_id, bloc_content|
|
606
605
|
new_bloc = new_page.box({ id: bloc_id, role: :block, width: '100%', height: 99, top: spacing + @prev_bloc_height, bottom: 0, left: 0, right: 0, spacing: spacing })
|
607
|
-
|
608
606
|
new_bloc.define_singleton_method(:subs) do |sub_params|
|
609
|
-
@prev_sub_width = 0
|
610
|
-
sub_params.each do |sub_id, sub_content|
|
611
|
-
sub_created = new_bloc.box({ id: sub_id, height: '100%', left: @prev_sub_width })
|
612
|
-
sub_created.set(sub_content)
|
613
|
-
@prev_sub_width = @prev_sub_width + sub_created.to_px(:width) + spacing
|
614
|
-
sub_created.width(sub_created.to_percent(:width))
|
615
|
-
sub_created.left(sub_created.to_percent(:left))
|
616
|
-
end
|
617
607
|
|
608
|
+
new_bloc.sub_block(sub_params, 3)
|
618
609
|
end
|
619
610
|
new_bloc.set(bloc_content)
|
620
|
-
|
621
611
|
@prev_bloc_height = @prev_bloc_height + new_bloc.height + spacing
|
622
612
|
end
|
623
613
|
|
@@ -716,5 +706,4 @@ new(molecule: :buttons) do |params, &bloc|
|
|
716
706
|
main.create_new_button(item_id, index, label, code)
|
717
707
|
end
|
718
708
|
main
|
719
|
-
|
720
709
|
end
|
data/lib/renderers/html/html.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
class HTML
|
6
6
|
|
7
|
+
|
8
|
+
|
7
9
|
def self.locate(selector, base_element = JS.global[:document][:body])
|
8
10
|
return base_element if selector.empty?
|
9
11
|
|
@@ -22,6 +24,10 @@ class HTML
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
27
|
+
def self.is_descendant(ancestor, descendant)
|
28
|
+
JS.eval("return isDescendant('#{ancestor}', '#{descendant}')")
|
29
|
+
end
|
30
|
+
|
25
31
|
def initialize(id_found, current_atome)
|
26
32
|
|
27
33
|
@element = JS.global[:document].getElementById(id_found.to_s)
|
@@ -35,6 +41,8 @@ class HTML
|
|
35
41
|
@element
|
36
42
|
end
|
37
43
|
|
44
|
+
|
45
|
+
|
38
46
|
def hypertext(params)
|
39
47
|
current_div = JS.global[:document].getElementById(@id.to_s)
|
40
48
|
current_div[:innerHTML] = params
|
@@ -7,16 +7,19 @@ b3=box({top: below(b2, margin)})
|
|
7
7
|
b4=box({top: below(b3, margin)})
|
8
8
|
box({top: below(b4, margin)})
|
9
9
|
i=0
|
10
|
-
while i< 10 do
|
11
|
-
b2=box({top: below(b, margin)})
|
12
|
-
i+=1
|
13
|
-
end
|
14
10
|
|
15
|
-
|
16
|
-
|
11
|
+
|
12
|
+
b = circle(left: 333, top: 333)
|
13
|
+
margin = "2%"
|
14
|
+
# margin = 120
|
17
15
|
i = 0
|
18
16
|
|
19
17
|
while i < 10 do
|
20
|
-
|
18
|
+
#below first params is the object after which we place the objet, the second the margin
|
19
|
+
# here in percent and the third is the reference object used for the percent
|
20
|
+
# b = circle({top: below(b, margin, grab(:view)), left: b.left})
|
21
|
+
# b = circle({top: :auto,bottom: above(b, margin, grab(:view)), left: b.left})
|
22
|
+
b = circle({top: b.top,left: after(b, margin, grab(:view))})
|
23
|
+
# b = circle({left: :auto,right: before(b, margin, grab(:view))})
|
21
24
|
i += 1
|
22
25
|
end
|
@@ -51,12 +51,13 @@ a.page({ id: :page3,
|
|
51
51
|
menu_f=a.menu
|
52
52
|
menus_found= menu_f.fasten # replace fasten for entries
|
53
53
|
puts a.pages
|
54
|
-
puts "
|
55
|
-
puts "
|
54
|
+
puts "pages => #{a.pages}"
|
55
|
+
puts "menus_found => #{menus_found}"
|
56
56
|
|
57
57
|
bloc_to_add= {height: 156, color: :green}
|
58
58
|
bloc_to_add2= {height: 99, color: :blue}
|
59
|
-
bloc_to_add3= {height: 333, color: :orange, subs:{contact: {width:
|
59
|
+
bloc_to_add3= {height: 333, color: :orange, subs:{contact: {width: 1, color: :black}, project: {width: 1}, calendar: {width: 0.5, color: :green}}}
|
60
|
+
|
60
61
|
a.insert({page3: {block1: bloc_to_add , block2: bloc_to_add2, block3: bloc_to_add3}})
|
61
62
|
|
62
63
|
|
@@ -72,3 +73,4 @@ a.show(:page3)
|
|
72
73
|
# end
|
73
74
|
|
74
75
|
|
76
|
+
alert(grab(:project).inspect)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
a = application({
|
6
|
+
id: :arp,
|
7
|
+
margin: 3,
|
8
|
+
})
|
9
|
+
|
10
|
+
page1_code = lambda do
|
11
|
+
b = box({ id: :ty, left: 90, top: 90, color: :black })
|
12
|
+
b.touch(true) do
|
13
|
+
b.color(:red)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
page1 = {
|
18
|
+
run: page1_code,
|
19
|
+
menu: false,
|
20
|
+
id: :page1,
|
21
|
+
color: { red: 0.5, green: 0.5, blue: 0.5 },
|
22
|
+
name: :accueil,
|
23
|
+
# footer: { color: :green, height: 22 },
|
24
|
+
header: { color: { red: 0.3, green: 0.3, blue: 0.3 }, height: 90, shadow: { blur: 12, left: 0, top: 0 } },
|
25
|
+
|
26
|
+
}
|
27
|
+
|
28
|
+
a.page(page1)
|
29
|
+
c = a.show(:page1)
|
30
|
+
c.color(:orange)
|
31
|
+
header = grab(:arp_content_header)
|
32
|
+
header.color(:orange)
|
33
|
+
# header.height(66)
|
34
|
+
# header.subs({ "contact" => { "width" => "33%" }, "project" => { "width" => "33%" }, "calendar" => { "width" => "33%" } })
|
35
|
+
|
36
|
+
bloc_to_add = { height: 33, color: :cyan }
|
37
|
+
bloc_to_add2 = { height: 99, color: :blue }
|
38
|
+
bloc_to_add3 = { height: 133, color: :red }
|
39
|
+
bloc_to_add4 = { height: 33, color: :gray }
|
40
|
+
###########@
|
41
|
+
grab(:page1).blocks({ direction: :vertical, color: :blue, height: 55, spacing: 6,
|
42
|
+
blocks: { block1: bloc_to_add, block2: bloc_to_add2, block3: bloc_to_add3 } })
|
43
|
+
|
44
|
+
grab(:block1).blocks({ direction: :horizontal, color: :orange, spacing: 66, width: 120, top: 0,
|
45
|
+
blocks: { block12: bloc_to_add4, block22: bloc_to_add2, block32: bloc_to_add3 }, distribute: true })
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
b=box
|
4
|
+
b.circle({role: :header, left: 55, id: :first_one})
|
5
|
+
b.text({role: [:action], data: "hello", top: 90})
|
6
|
+
b.box({role: :header, left: 155, id: :second_one})
|
7
|
+
|
8
|
+
|
9
|
+
puts"header grip : #{ b.grip(:header)}"
|
10
|
+
puts "last header grip #{b.grip(:header).last}"
|
@@ -1,56 +1,56 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
#
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#
|
15
|
-
#
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
image({ path: "./medias/images/logos/vie.svg", left: :auto, right: 3, top: 0 , size: 30})
|
3
|
+
t = text({ data: 'touch me to select all', id: :the_text })
|
4
|
+
b = box({ left: 12, id: :the_box })
|
5
|
+
c = circle({ left: 230, id: :the_circle, color: { blue: 1, id: :c1 } })
|
6
|
+
c.color({ green: 1, id: :c2 })
|
7
|
+
# to change default selection style
|
8
|
+
Universe.default_selection_style = { border: { thickness: 3, red: 1, green: 0, blue: 1, alpha: 1, pattern: :dotted } }
|
9
|
+
|
10
|
+
c.touch(true) do
|
11
|
+
if c.selected
|
12
|
+
c.selected(false)
|
13
|
+
else
|
14
|
+
# c.selected(true)
|
15
|
+
# example of custom selection style
|
16
|
+
c.selected({ shadow: { id: :titi,
|
17
|
+
left: 9, top: 3, blur: 9,
|
18
|
+
invert: false,
|
19
|
+
red: 0, green: 0, blue: 0, alpha: 1
|
20
|
+
}, border: { id: :toto, thickness: 5, red: 1, green: 1, blue: 1, alpha: 1,
|
21
|
+
pattern: :dotted, inside: true }
|
22
|
+
})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
image({ path: 'medias/images/red_planet.png', id: :the__red_planet, top: 233 })
|
27
|
+
|
28
|
+
t.touch(true) do
|
29
|
+
puts "1 current_user - #{grab(Universe.current_user).selection}"
|
30
|
+
puts "1 - b selected : #{b.selected}"
|
31
|
+
grab(:view).fasten.each do |atome_found|
|
32
|
+
grab(atome_found).selected(true)
|
33
|
+
end
|
34
|
+
puts "2 - current_user : #{grab(Universe.current_user).selection}"
|
35
|
+
puts "2 - b selected : #{b.selected}"
|
36
|
+
selected_items = grab(Universe.current_user).selection # we create a group
|
37
|
+
|
38
|
+
selected_items.each do |atome_id_selected|
|
39
|
+
atome_selected = grab(atome_id_selected)
|
40
|
+
atome_selected.width = rand(333)
|
41
|
+
atome_selected.height = rand(333)
|
42
|
+
|
43
|
+
end
|
44
|
+
b.selected(false)
|
45
|
+
puts "3 current_user- #{grab(Universe.current_user).selection}"
|
46
|
+
puts "3 - b selected : #{b.selected}"
|
47
|
+
|
48
|
+
grab(Universe.current_user).selection.color(:red)
|
49
|
+
grab(Universe.current_user).selection.each do |el|
|
50
|
+
puts el
|
51
|
+
end
|
52
|
+
puts grab(Universe.current_user).selection.collect
|
53
|
+
end
|
54
|
+
|
55
|
+
# image({ path: "./medias/images/logos/vie.svg", left: :auto, right: 3, top: 0 , size: 30})
|
56
56
|
|
@@ -1,22 +1,52 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
|
4
|
+
# new({ tool: :color2 }) do
|
5
|
+
# active_code = lambda {
|
6
|
+
# puts 'color activated1'
|
7
|
+
# }
|
8
|
+
# color_code2=lambda {
|
9
|
+
# puts "object id is : #{id}"
|
10
|
+
# # color(:green)
|
11
|
+
# }
|
12
|
+
# inactive_code = lambda { |data|
|
13
|
+
# data[:treated].each do |atome_f|
|
14
|
+
# # atome_f.drag(false)
|
15
|
+
# # atome_f.color(:green)
|
16
|
+
# end
|
17
|
+
# }
|
18
|
+
#
|
19
|
+
# { activation: active_code,
|
20
|
+
# alteration: { event: color_code2 },
|
21
|
+
# inactivation: inactive_code,
|
22
|
+
# target: :color,
|
23
|
+
# particles: { red: 0, green: 0.5, blue: 1, alpha: 1 }
|
24
|
+
# }
|
25
|
+
# end
|
26
|
+
|
27
|
+
new({ tool: :toolbox1 }) do
|
28
|
+
active_code = lambda {
|
29
|
+
toolbox({ tools: [:combined], toolbox: { orientation: :ew, left: 90, bottom: 9, spacing: 9 } })
|
30
|
+
}
|
31
|
+
{ activation: active_code }
|
32
|
+
end
|
33
|
+
|
4
34
|
|
5
35
|
new({ tool: :combined }) do |params|
|
6
36
|
|
7
37
|
active_code = lambda {
|
8
|
-
puts :alteration_tool_code_activated
|
38
|
+
# puts :alteration_tool_code_activated
|
9
39
|
}
|
10
40
|
|
11
41
|
inactive_code = lambda { |param|
|
12
|
-
puts :
|
42
|
+
# puts :alteration_tool_code_inactivated1
|
13
43
|
}
|
14
44
|
pre_code = lambda { |params|
|
15
|
-
puts "pre_creation_code,atome_touched: #{:params}"
|
45
|
+
# puts "pre_creation_code,atome_touched: #{:params}"
|
16
46
|
|
17
47
|
}
|
18
48
|
post_code = lambda { |params|
|
19
|
-
puts "post_creation_code,atome_touched: #{:params}"
|
49
|
+
# puts "post_creation_code,atome_touched: #{:params}"
|
20
50
|
|
21
51
|
}
|
22
52
|
|
@@ -36,27 +66,65 @@ new({ tool: :combined }) do |params|
|
|
36
66
|
post: post_code,
|
37
67
|
zone: zone_spe,
|
38
68
|
icon: :color,
|
39
|
-
int8: { french: :couleur, english: :
|
69
|
+
int8: { french: :couleur, english: :combined, german: :colorad } }
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
new({ tool: :rotate }) do |params|
|
74
|
+
|
75
|
+
active_code = lambda {
|
76
|
+
# puts :alteration_tool_code_activated
|
77
|
+
}
|
78
|
+
|
79
|
+
inactive_code = lambda { |param|
|
80
|
+
# puts :alteration_tool_code_inactivated2
|
81
|
+
}
|
82
|
+
pre_code = lambda { |params|
|
83
|
+
# puts "pre_creation_code,atome_touched: #{:params}"
|
84
|
+
|
85
|
+
}
|
86
|
+
post_code = lambda { |params|
|
87
|
+
# puts "post_creation_code,atome_touched: #{:params}"
|
88
|
+
|
89
|
+
}
|
90
|
+
|
91
|
+
zone_spe = lambda { |current_tool|
|
92
|
+
# puts "current tool is : #{:current_tool} now creating specific zone"
|
93
|
+
# b = box({ width: 33, height: 12 })
|
94
|
+
# b.text({ data: :all })
|
95
|
+
|
96
|
+
}
|
97
|
+
|
98
|
+
{
|
99
|
+
activation: active_code,
|
100
|
+
inactivation: inactive_code,
|
101
|
+
# alteration: { width: 22, blur: 3 },
|
102
|
+
alteration: { rotate: 22 },
|
103
|
+
pre: pre_code,
|
104
|
+
post: post_code,
|
105
|
+
zone: zone_spe,
|
106
|
+
icon: :color,
|
107
|
+
int8: { french: :couleur, english: :rotate, german: :colorad } }
|
40
108
|
|
41
109
|
end
|
42
110
|
|
43
111
|
new({ tool: :box }) do |params|
|
44
112
|
|
45
113
|
active_code = lambda {
|
46
|
-
puts :creation_tool_code_activated
|
114
|
+
# puts :creation_tool_code_activated
|
47
115
|
}
|
48
116
|
|
49
117
|
inactive_code = lambda { |atomes_treated|
|
50
|
-
puts :creation_tool_code_inactivated
|
118
|
+
# puts :creation_tool_code_inactivated
|
51
119
|
|
52
120
|
}
|
53
121
|
pre_creation_code = lambda { |params|
|
54
|
-
puts "pre_creation_code : atome_touched : #{:params} "
|
122
|
+
# puts "pre_creation_code : atome_touched : #{:params} "
|
55
123
|
|
56
124
|
}
|
57
125
|
|
58
126
|
post_creation_code = lambda { |params|
|
59
|
-
puts "post_creation_code,atome_touched: #{:params}"
|
127
|
+
# puts "post_creation_code,atome_touched: #{:params}"
|
60
128
|
}
|
61
129
|
|
62
130
|
{ creation: { box: { color: :blue, width: 66, height: 66 } },
|
@@ -146,7 +214,7 @@ new({ tool: :drag }) do
|
|
146
214
|
}
|
147
215
|
move_code = lambda {
|
148
216
|
drag(true) do
|
149
|
-
puts left
|
217
|
+
puts "left is : #{left}"
|
150
218
|
end
|
151
219
|
}
|
152
220
|
|
@@ -180,16 +248,9 @@ new({ tool: :select }) do
|
|
180
248
|
|
181
249
|
end
|
182
250
|
|
183
|
-
new({ tool: :toolbox1 }) do
|
184
|
-
active_code = lambda {
|
185
|
-
toolbox({ tools: [:combined], toolbox: { orientation: :ew, left: 90, bottom: 9, spacing: 9 } })
|
186
|
-
}
|
187
|
-
{ activation: active_code }
|
188
|
-
end
|
189
|
-
|
190
251
|
new({ tool: :color }) do
|
191
252
|
active_code = lambda {
|
192
|
-
puts 'color activated1'
|
253
|
+
# puts 'color activated1'
|
193
254
|
}
|
194
255
|
color_code = lambda {
|
195
256
|
# color(:green)
|
@@ -211,7 +272,7 @@ end
|
|
211
272
|
|
212
273
|
new({ tool: :crash_test }) do
|
213
274
|
active_code = lambda {
|
214
|
-
|
275
|
+
alert grab(Universe.current_user).selection.collect
|
215
276
|
}
|
216
277
|
color_code = lambda {
|
217
278
|
# color(:green)
|
@@ -222,22 +283,26 @@ new({ tool: :crash_test }) do
|
|
222
283
|
end
|
223
284
|
}
|
224
285
|
|
225
|
-
{
|
226
|
-
alteration: {
|
286
|
+
{activation: active_code,
|
287
|
+
# alteration: { alert: :good}
|
227
288
|
}
|
228
289
|
end
|
229
290
|
|
230
291
|
# Universe.tools_root= {tools: [:blur, :box, :test, :toolbox1],toolbox: { orientation: :ew, left:90 , bottom: 9, spacing: 9} }
|
231
|
-
Universe.tools_root = {id: :root_tools, tools: [:select,:crash_test, :box, :drag, :touch,:color, :move, :toolbox1], toolbox: { orientation: :ew, left: 9, bottom: 9, spacing: 9 } }
|
232
|
-
puts "above we added an id because each tool may be in many toolbox and have an uniq ID"
|
292
|
+
Universe.tools_root = {id: :root_tools, tools: [:select,:crash_test, :box, :drag, :touch,:color, :move, :toolbox1, :rotate], toolbox: { orientation: :ew, left: 9, bottom: 9, spacing: 9 } }
|
293
|
+
# puts "above we added an id because each tool may be in many toolbox and have an uniq ID"
|
233
294
|
Atome.init_intuition
|
234
295
|
|
235
|
-
b = box({ id: :
|
296
|
+
b = box({ id: :the_test_box, selected: false, color: :blue })
|
236
297
|
c=circle({ left: 90, id: :the_test_circle, selected: false })
|
237
298
|
c.drag(true) do
|
238
299
|
puts "moving"
|
239
300
|
end
|
301
|
+
|
302
|
+
|
240
303
|
b.touch(true) do
|
304
|
+
# alert b.descendant_of?(:view)
|
305
|
+
# alert "#{b.descendant_of?(:intuition)}, then dont treat!"
|
241
306
|
if b.width == 170
|
242
307
|
b.width(55)
|
243
308
|
else
|
@@ -245,4 +310,15 @@ b.touch(true) do
|
|
245
310
|
end
|
246
311
|
|
247
312
|
end
|
248
|
-
|
313
|
+
text({left: 333, data: :hello, id: :t1})
|
314
|
+
circle({left: 333,top: 333, id: :c2})
|
315
|
+
|
316
|
+
# wait 2 do
|
317
|
+
# b= grab('color_tool_icon')
|
318
|
+
# grab('color_tool_icon').color(:red)
|
319
|
+
#
|
320
|
+
# puts b.descendant_of?(:view)
|
321
|
+
# puts "#{b.descendant_of?(:intuition)}, then dont treat!"
|
322
|
+
#
|
323
|
+
# end
|
324
|
+
puts 'add tool preview , and maybe allow tool details to be moved'
|
@@ -504,3 +504,21 @@ function record_content(blob) {
|
|
504
504
|
}
|
505
505
|
|
506
506
|
|
507
|
+
function isDescendant(parentId, childId) {
|
508
|
+
var parent = document.getElementById(parentId);
|
509
|
+
var child = document.getElementById(childId);
|
510
|
+
|
511
|
+
let node = child;
|
512
|
+
while (node !== null) {
|
513
|
+
if (node === parent) {
|
514
|
+
return true;
|
515
|
+
}
|
516
|
+
node = node.parentNode;
|
517
|
+
}
|
518
|
+
return false;
|
519
|
+
|
520
|
+
}
|
521
|
+
|
522
|
+
// alert(isDescendant('intuition', 'the_test_box'));
|
523
|
+
// alert(isDescendant('view', 'the_test_box'));
|
524
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="53" height="53" xml:space="preserve" id="canvas1">
|
4
|
+
<!-- Generated by PaintCode - http://www.paintcodeapp.com -->
|
5
|
+
<path id="canvas1-canvasNewCanvascanvas1bezier" stroke="rgb(200, 200, 200)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" fill="none" d="M 13,26 L 40,26" />
|
6
|
+
<path id="canvas1-canvasNewCanvascanvas1bezier3" stroke="rgb(200, 200, 200)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" fill="none" d="M 26,40 L 26,13" />
|
7
|
+
<circle id="canvas1-oval" stroke="rgb(206, 206, 206)" stroke-width="6" stroke-miterlimit="10" fill="none" cx="26.5" cy="26.5" r="23.5" />
|
8
|
+
</svg>
|
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.7.4.
|
4
|
+
version: 0.5.7.4.7
|
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: 2024-
|
11
|
+
date: 2024-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -546,6 +546,7 @@ files:
|
|
546
546
|
- vendor/assets/application/examples/b64_to_image.rb
|
547
547
|
- vendor/assets/application/examples/basic_understanding.rb
|
548
548
|
- vendor/assets/application/examples/behavior.rb
|
549
|
+
- vendor/assets/application/examples/blocks.rb
|
549
550
|
- vendor/assets/application/examples/blur.rb
|
550
551
|
- vendor/assets/application/examples/border.rb
|
551
552
|
- vendor/assets/application/examples/browse.rb
|
@@ -588,6 +589,7 @@ files:
|
|
588
589
|
- vendor/assets/application/examples/getter.rb
|
589
590
|
- vendor/assets/application/examples/grab.rb
|
590
591
|
- vendor/assets/application/examples/gradient.rb
|
592
|
+
- vendor/assets/application/examples/grip.rb
|
591
593
|
- vendor/assets/application/examples/group.rb
|
592
594
|
- vendor/assets/application/examples/help.rb
|
593
595
|
- vendor/assets/application/examples/hierarchy.rb
|
@@ -656,6 +658,7 @@ files:
|
|
656
658
|
- vendor/assets/application/examples/text.rb
|
657
659
|
- vendor/assets/application/examples/text_align.rb
|
658
660
|
- vendor/assets/application/examples/tick.rb
|
661
|
+
- vendor/assets/application/examples/to_percent.rb
|
659
662
|
- vendor/assets/application/examples/to_px.rb
|
660
663
|
- vendor/assets/application/examples/tools.rb
|
661
664
|
- vendor/assets/application/examples/touch.rb
|
@@ -778,6 +781,7 @@ files:
|
|
778
781
|
- vendor/assets/src/medias/images/green_planet.png
|
779
782
|
- vendor/assets/src/medias/images/icons/Lowpass.svg
|
780
783
|
- vendor/assets/src/medias/images/icons/activate.svg
|
784
|
+
- vendor/assets/src/medias/images/icons/add.svg
|
781
785
|
- vendor/assets/src/medias/images/icons/audio.svg
|
782
786
|
- vendor/assets/src/medias/images/icons/band_pass.svg
|
783
787
|
- vendor/assets/src/medias/images/icons/clear.svg
|