atome 0.5.7.4.3 → 0.5.7.4.7
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/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
|