atome 0.4.5.4 → 0.4.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -3
- data/Rakefile +1 -0
- data/app_builder_helpers/Rakefile +2 -0
- data/lib/atome/atome_native_extensions.rb +3 -3
- data/lib/atome/extensions/helper.rb +20 -31
- data/lib/atome/kernel/atome.rb +9 -8
- data/lib/atome/kernel/generators/generator.rb +210 -80
- data/lib/atome/kernel/generators/genesis.rb +58 -46
- data/lib/atome/kernel/generators/sanitizer.rb +3 -7
- data/lib/atome/kernel/generators/shapes.rb +25 -10
- data/lib/atome/{extensions → kernel/helpers}/geolocation.rb +0 -0
- data/lib/atome/kernel/helpers/internal_methods.rb +173 -0
- data/lib/atome/kernel/helpers/ping.rb +17 -0
- data/lib/atome/{extensions → kernel/helpers}/sha.rb +0 -0
- data/lib/atome/{extensions → kernel/helpers}/utilities.rb +5 -5
- data/lib/atome/kernel/properties/essential.rb +35 -1
- data/lib/atome/kernel/sparkle.rb +2 -1
- data/lib/atome/kernel/universe.rb +12 -4
- data/lib/atome/renderers/opal/extensions/geolocation.rb +0 -1
- data/lib/atome/renderers/renderer.rb +1 -0
- data/lib/atome/renderers/server/properties/generator.rb +1 -1
- data/lib/atome/version.rb +2 -1
- data/lib/atome.rb +6 -15
- data/vendor/assets/build/css/style.css +4 -0
- data/vendor/assets/build/index.html +4 -2
- data/vendor/assets/build/js/atome/atome.js +25 -11
- data/vendor/assets/build/js/third_parties/interact.min.js +2 -3
- data/vendor/assets/build/js/{ping.min.js → third_parties/ping.min.js} +0 -0
- data/vendor/assets/build/js/{utilities → third_parties}/w3color.js +0 -0
- data/vendor/assets/build/js/third_parties/zim.min.js +1 -0
- data/vendor/assets/build/medias/audios/guitar.wav +0 -0
- data/vendor/assets/build/medias/images/beach.jpg +0 -0
- data/vendor/assets/build/medias/rubies/examples/!run.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/box.rb +16 -1
- data/vendor/assets/build/medias/rubies/examples/circle.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/clear.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/code.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/drag.rb +42 -4
- data/vendor/assets/build/medias/rubies/examples/link.rb +8 -10
- data/vendor/assets/build/medias/rubies/examples/on.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/parent.rb +2 -1
- data/vendor/assets/build/medias/rubies/examples/read.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/text.rb +17 -4
- data/vendor/assets/build/medias/rubies/examples/video.rb +51 -3
- data/vendor/assets/build/medias/rubies/examples/web.rb +3 -2
- data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
- data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
- data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
- data/vendor/assets/build/medias/videos/starwars.mov +0 -0
- data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
- metadata +24 -12
- data/lib/atome/extensions/ping.rb +0 -13
- data/vendor/assets/build/js/third_parties/createjs.min.js +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c05926a443ccc93706250a217fe46a42d571f0c97cb9549fd445036b8cb0ff93
|
4
|
+
data.tar.gz: f9c922aaab0da02ff843af4f721f7370b538d39a4afd238338e9a6ad7071c34d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6067a7cc1206d75a5245c3098976993745d17bf296ae6931ed3a3eda13d885389c89e7f47af061a506092866ec7a637e4e848089caefc74595693f90b18dd46d
|
7
|
+
data.tar.gz: 02a14025506b36a050d885fb5b09be305f011a3f2a067561994608a7e77fa236d18a62f3d92293b311459418fd384645b9f3447fc462881da2c77e3db3e27c09
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
# task default: :test
|
14
14
|
|
15
15
|
task :test do
|
16
|
+
FileUtils.copy_entry('vendor/assets/build/js/atome/', 'test/test_app/build/js/atome/')
|
16
17
|
`gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
|
17
18
|
`cd test/test_app;atome update;atome run guard`
|
18
19
|
end
|
@@ -195,6 +195,8 @@ end
|
|
195
195
|
task :system_updater, :user_project_path, :production do |_t, args|
|
196
196
|
user_project_path = args[:user_project_path]
|
197
197
|
production = args[:production]
|
198
|
+
gem_location = File.join(File.dirname(__FILE__))
|
199
|
+
build_libraries(user_project_path, gem_location)
|
198
200
|
build_common_libraries(user_project_path, production)
|
199
201
|
end
|
200
202
|
|
@@ -1,27 +1,12 @@
|
|
1
|
-
def grab(val)
|
2
|
-
Atome.grab(val)
|
3
|
-
end
|
4
1
|
|
5
2
|
|
6
|
-
def
|
7
|
-
|
8
|
-
fetch('medias/rubies/'+#{file})
|
9
|
-
.then(response => response.text())
|
10
|
-
.then(text => Opal.eval(text))
|
11
|
-
`
|
12
|
-
end
|
13
|
-
|
14
|
-
def read_text(file)
|
15
|
-
`
|
16
|
-
fetch('medias/rubies/'+#{file})
|
17
|
-
.then(response => response.text())
|
18
|
-
.then(text => console.log(text))
|
19
|
-
`
|
3
|
+
def grab(val)
|
4
|
+
Atome.grab(val)
|
20
5
|
end
|
21
6
|
|
22
7
|
|
23
8
|
def read(file, action=:text)
|
24
|
-
send("read_#{action}", file)
|
9
|
+
Internal.send("read_#{action}", file)
|
25
10
|
end
|
26
11
|
|
27
12
|
def wait(seconds)
|
@@ -49,19 +34,6 @@ if (++x ===#{repeat} ) {
|
|
49
34
|
end
|
50
35
|
|
51
36
|
|
52
|
-
|
53
|
-
`
|
54
|
-
const atome = {
|
55
|
-
jsSchedule: function (years, months, days, hours, minutes, seconds, proc) {
|
56
|
-
const now = new Date();
|
57
|
-
const formatedDate = new Date(years, months - 1, days, hours, minutes, seconds);
|
58
|
-
const diffTime = Math.abs(formatedDate - now);
|
59
|
-
setTimeout(function () {
|
60
|
-
Opal.Object.$schedule_callback(proc);
|
61
|
-
}, diffTime);
|
62
|
-
}}
|
63
|
-
`
|
64
|
-
|
65
37
|
def schedule(date, &proc)
|
66
38
|
date = date.to_s
|
67
39
|
delimiters = [",", " ", ":", "-"]
|
@@ -120,4 +92,21 @@ end
|
|
120
92
|
|
121
93
|
def schedule_callback(proc)
|
122
94
|
instance_exec(&proc) if proc.is_a?(Proc)
|
95
|
+
end
|
96
|
+
|
97
|
+
def play_video(params, &proc)
|
98
|
+
params[:atome].html_object.play
|
99
|
+
# TODO : change timeupdate for when possible requestVideoFrameCallback (opal-browser/opal/browser/event.rb line 36)
|
100
|
+
video_callback = params[:atome].bloc # this is the video callback not the play callback
|
101
|
+
play_callback = params[:proc] # this is the video callback not the play callback
|
102
|
+
params[:atome].html_object.on(:timeupdate) do |e|
|
103
|
+
# e.prevent # Prevent the default action (eg. form submission)
|
104
|
+
# You can also use `e.stop` to stop propagating the event to other handlers.
|
105
|
+
instance_exec(params[:atome].html_object.currentTime, &video_callback) if video_callback.is_a?(Proc)
|
106
|
+
instance_exec(params[:atome].html_object.currentTime, &play_callback) if play_callback.is_a?(Proc)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def pause_video(params, &proc)
|
111
|
+
params[:atome].html_object.pause
|
123
112
|
end
|
data/lib/atome/kernel/atome.rb
CHANGED
@@ -19,6 +19,7 @@ class Atome
|
|
19
19
|
include Sanitizer
|
20
20
|
include ServerRenderer
|
21
21
|
include Render
|
22
|
+
include Internal
|
22
23
|
# include OpalRenderer
|
23
24
|
# include HeadlessRenderer
|
24
25
|
def self.atome(params)
|
@@ -79,20 +80,20 @@ class Atome
|
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
82
|
-
def initialize(params = {}, &
|
83
|
-
|
84
|
-
@
|
83
|
+
def initialize(params = {}, &bloc)
|
84
|
+
@render = []
|
85
|
+
@child = []
|
86
|
+
@html_type = :unset
|
85
87
|
# # TODO: check if we need to add properties for the root object before sending the params
|
86
88
|
params.each do |atome, values|
|
87
|
-
|
88
|
-
values[:bloc] = { bloc: proc }
|
89
|
-
send(atome, values)
|
89
|
+
send(atome, values, &bloc)
|
90
90
|
end
|
91
|
-
Universe.atomes_add(self)
|
92
91
|
end
|
92
|
+
|
93
|
+
|
94
|
+
|
93
95
|
end
|
94
96
|
|
95
97
|
# initialize Universe
|
96
98
|
Universe.connected
|
97
99
|
# Atome.new( identity: {type: :eVe, aui: :a_97987987987})
|
98
|
-
puts "atome version : #{Atome::VERSION}"
|
@@ -3,8 +3,8 @@
|
|
3
3
|
# generators
|
4
4
|
|
5
5
|
Genesis.particle_creator(:html_type)
|
6
|
-
Genesis.particle_creator(:html_object)
|
7
6
|
|
7
|
+
Genesis.particle_creator(:html_object)
|
8
8
|
|
9
9
|
Genesis.atome_creator(:shape)
|
10
10
|
|
@@ -42,6 +42,20 @@ end
|
|
42
42
|
|
43
43
|
Genesis.atome_creator(:shadow)
|
44
44
|
|
45
|
+
Genesis.atome_creator(:video) do |params, &proc|
|
46
|
+
# todo: factorise code below
|
47
|
+
if params
|
48
|
+
default_renderer = Sanitizer.default_params[:render]
|
49
|
+
generated_id = params[:id] || "video_#{Universe.atomes.length}"
|
50
|
+
generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
|
51
|
+
generated_parent = params[:parent] || id
|
52
|
+
default_params = { render: [generated_render], id: generated_id, type: :video, parent: [generated_parent],
|
53
|
+
path: './medias/videos/video_missing.mp4', left: 139, top: 333, width: 199, height: 199 }
|
54
|
+
params = default_params.merge(params)
|
55
|
+
end
|
56
|
+
params
|
57
|
+
end
|
58
|
+
|
45
59
|
# Example below
|
46
60
|
|
47
61
|
# Genesis.atome_creator(:color) do |params|
|
@@ -70,8 +84,7 @@ Genesis.atome_creator(:shadow)
|
|
70
84
|
# # puts "optional color_getter_pre_proc\n"
|
71
85
|
# end
|
72
86
|
|
73
|
-
Genesis.particle_creator(:id)
|
74
|
-
end
|
87
|
+
Genesis.particle_creator(:id)
|
75
88
|
Genesis.particle_creator(:left)
|
76
89
|
Genesis.particle_creator(:right)
|
77
90
|
Genesis.particle_creator(:top)
|
@@ -86,8 +99,12 @@ Genesis.particle_creator(:type)
|
|
86
99
|
Genesis.particle_creator(:smooth)
|
87
100
|
Genesis.particle_creator(:blur)
|
88
101
|
Genesis.particle_creator(:touch)
|
102
|
+
Genesis.particle_creator(:play)
|
103
|
+
Genesis.particle_creator(:pause)
|
104
|
+
Genesis.particle_creator(:time)
|
105
|
+
|
89
106
|
# Genesis.atome_creator_option(:type_pre_render_proc) do |params|
|
90
|
-
# #
|
107
|
+
# # "it works and get #{params}"
|
91
108
|
# params[:value]
|
92
109
|
# end
|
93
110
|
|
@@ -98,21 +115,47 @@ Genesis.particle_creator(:touch)
|
|
98
115
|
|
99
116
|
Genesis.particle_creator(:render)
|
100
117
|
Genesis.particle_creator(:drm)
|
101
|
-
|
118
|
+
|
119
|
+
Genesis.particle_creator(:child)
|
120
|
+
|
121
|
+
Genesis.particle_creator(:parent) do |parents|
|
122
|
+
parents.each do |parent|
|
123
|
+
#TODO : create a root atome instead of using the condition below
|
124
|
+
if parent != :user_view
|
125
|
+
grab(parent).child << id
|
126
|
+
end
|
127
|
+
end
|
128
|
+
parents
|
129
|
+
end
|
102
130
|
|
103
131
|
Genesis.atome_creator_option(:parent_pre_render_proc) do |params|
|
132
|
+
current_atome = params[:atome]
|
104
133
|
unless params[:value].instance_of? Array
|
105
134
|
params[:value] = [params[:value]]
|
106
135
|
end
|
107
|
-
params[:value]
|
136
|
+
current_atome.instance_variable_set("@parent", params[:value])
|
108
137
|
end
|
138
|
+
|
109
139
|
Genesis.particle_creator(:date)
|
110
140
|
Genesis.particle_creator(:location)
|
111
141
|
|
142
|
+
Genesis.atome_creator_option(:id_pre_render_proc) do |params|
|
143
|
+
new_id = params[:value]
|
144
|
+
current_atome = params[:atome]
|
145
|
+
old_id = current_atome.id
|
146
|
+
current_atome.instance_variable_set('@id', new_id)
|
147
|
+
# we change id id the atomes hash
|
148
|
+
Universe.change_atome_id(old_id, new_id)
|
149
|
+
current_atome.html_object.id = new_id if current_atome.html_object
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
|
112
154
|
# generate renderers
|
113
155
|
|
114
156
|
Genesis.generate_html_renderer(:type) do |value, atome, proc|
|
115
157
|
send("#{value}_html", value, atome, proc)
|
158
|
+
value
|
116
159
|
end
|
117
160
|
|
118
161
|
Genesis.generate_html_renderer(:shape) do |value, atome, proc|
|
@@ -128,7 +171,9 @@ end
|
|
128
171
|
Genesis.generate_html_renderer(:color) do |value, atome, proc|
|
129
172
|
instance_exec(&proc) if proc.is_a?(Proc)
|
130
173
|
@html_type = :style
|
131
|
-
|
174
|
+
# we remove previous unused style tag
|
175
|
+
$document[id].remove if $document[id]
|
176
|
+
$document.head << DOM("<style atome='#{type}' id='#{id}'></style>")
|
132
177
|
end
|
133
178
|
|
134
179
|
Genesis.generate_html_renderer(:red) do |value, atome, proc|
|
@@ -173,29 +218,17 @@ Genesis.generate_html_renderer(:alpha) do |value, atome, proc|
|
|
173
218
|
$document[id].inner_html = "\n.#{id}{background-color: rgba(#{red_found * 255},#{green_found * 255},#{blue_found * 255},#{value})}\n"
|
174
219
|
end
|
175
220
|
|
176
|
-
Genesis.generate_html_renderer(:drm)
|
177
|
-
# instance_exec(&proc) if proc.is_a?(Proc)
|
178
|
-
end
|
221
|
+
Genesis.generate_html_renderer(:drm)
|
179
222
|
|
180
223
|
Genesis.generate_html_renderer(:parent) do |values, atome, proc|
|
181
224
|
instance_exec(&proc) if proc.is_a?(Proc)
|
182
225
|
values.each do |value|
|
183
|
-
|
184
|
-
# we remove previous class if the are of the same type of the type
|
185
|
-
# ex if there's a color already assign we remove it to allow the new one to be visible
|
186
|
-
html_parent = grab(value).instance_variable_get("@html_object")
|
187
|
-
html_parent.class_names.each do |class_name|
|
188
|
-
if $document[class_name] && $document[class_name].attributes[:atome]
|
189
|
-
class_to_remove = $document[class_name].attributes[:id]
|
190
|
-
html_parent.remove_class(class_to_remove)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
$document[value].add_class(id)
|
194
|
-
else
|
195
|
-
@html_object.append_to($document[value])
|
196
|
-
end
|
226
|
+
atome.html_decision(@html_type, value, id)
|
197
227
|
end
|
198
228
|
end
|
229
|
+
|
230
|
+
|
231
|
+
|
199
232
|
Genesis.generate_html_renderer(:id) do |value, atome, proc|
|
200
233
|
# send("#{value}_html", value, atome, proc)
|
201
234
|
end
|
@@ -224,11 +257,8 @@ Genesis.generate_html_renderer(:height) do |value, atome, proc|
|
|
224
257
|
@html_object.style[:height] = "#{value}px" unless @html_type == :style
|
225
258
|
end
|
226
259
|
|
227
|
-
Genesis.particle_creator(:rotate)
|
228
|
-
|
229
|
-
# alert :pl
|
230
|
-
instance_exec(method_name, params, atome, &proc) if proc.is_a?(Proc)
|
231
|
-
end
|
260
|
+
Genesis.particle_creator(:rotate)
|
261
|
+
|
232
262
|
Genesis.generate_html_renderer(:rotate) do |value, atome, proc|
|
233
263
|
@html_object.style[:transform] = "rotate(#{value}deg)" unless @html_type == :style
|
234
264
|
end
|
@@ -255,30 +285,17 @@ Genesis.generate_html_renderer(:touch) do |value, atome, proc|
|
|
255
285
|
end
|
256
286
|
end
|
257
287
|
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
end
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
Genesis.generate_headless_renderer(:drag) do |value, atome, user_proc|
|
268
|
-
puts "msg from headless drag method: value is #{value} , atome class is #{atome.class}"
|
269
|
-
instance_exec(&user_proc) if user_proc.is_a?(Proc)
|
270
|
-
end
|
271
|
-
|
272
|
-
Genesis.generate_html_renderer(:drag) do |value, atome, user_proc|
|
273
|
-
# FIXME: we should find a s solution to pass the proc to the dragCallback toavoid the test below
|
274
|
-
@html_drag = user_proc if user_proc
|
275
|
-
if value == :remove
|
276
|
-
@html_object.remove_class(:draggable)
|
277
|
-
else
|
278
|
-
@html_object.add_class(:draggable)
|
279
|
-
end
|
288
|
+
Genesis.generate_html_renderer(:video) do |value, atome, proc|
|
289
|
+
id_found = id
|
290
|
+
instance_exec(&proc) if proc.is_a?(Proc)
|
291
|
+
DOM do
|
292
|
+
video({ id: id_found, autoplay: false }).atome
|
293
|
+
end.append_to($document[:user_view])
|
294
|
+
@html_object = $document[id_found]
|
295
|
+
@html_type = :video
|
280
296
|
end
|
281
297
|
|
298
|
+
# overflow
|
282
299
|
Genesis.particle_creator(:overflow)
|
283
300
|
Genesis.generate_html_renderer(:overflow) do |value, atome, proc|
|
284
301
|
@html_object.style[:overflow] = value unless @html_type == :style
|
@@ -289,10 +306,7 @@ Genesis.particle_creator(:bloc)
|
|
289
306
|
# image
|
290
307
|
|
291
308
|
Genesis.atome_creator(:image)
|
292
|
-
|
293
|
-
Genesis.generate_html_renderer(:path) do |value, atome, proc|
|
294
|
-
@html_object[:src] = value
|
295
|
-
end
|
309
|
+
|
296
310
|
Genesis.generate_html_renderer(:image) do |value, atome, proc|
|
297
311
|
id_found = id
|
298
312
|
instance_exec(&proc) if proc.is_a?(Proc)
|
@@ -305,40 +319,41 @@ end
|
|
305
319
|
|
306
320
|
# text
|
307
321
|
|
308
|
-
Genesis.atome_creator(:text)
|
322
|
+
Genesis.atome_creator(:text) do |params|
|
323
|
+
# TODO: factorise code below
|
324
|
+
if params
|
325
|
+
default_renderer = Sanitizer.default_params[:render]
|
326
|
+
generated_id = params[:id] || "text_#{Universe.atomes.length}"
|
327
|
+
generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
|
328
|
+
generated_parent = params[:parent] || id
|
329
|
+
|
330
|
+
default_params = { render: [generated_render], id: generated_id, type: :text, parent: [generated_parent],
|
331
|
+
visual: { size: 33 }, data: "hello world", left: 39, top: 33,
|
332
|
+
color: { render: [generated_render], id: "color_#{generated_id}", type: :color,
|
333
|
+
red: 0.09, green: 1, blue: 0.12, alpha: 1 }
|
334
|
+
}
|
335
|
+
params = default_params.merge(params)
|
336
|
+
params
|
337
|
+
end
|
338
|
+
# params
|
339
|
+
end
|
309
340
|
Genesis.particle_creator(:string)
|
310
341
|
|
311
|
-
Genesis.generate_html_renderer(:string) do |value, atome, proc|
|
312
|
-
@html_object.text = value
|
313
|
-
end
|
314
342
|
Genesis.particle_creator(:visual)
|
315
343
|
Genesis.generate_html_renderer(:visual) do |value, atome, proc|
|
316
344
|
@html_object.style['font-size'] = "#{value[:size]}px"
|
317
345
|
end
|
346
|
+
|
318
347
|
Genesis.generate_html_renderer(:text) do |value, atome, proc|
|
319
348
|
id_found = id
|
320
349
|
instance_exec(&proc) if proc.is_a?(Proc)
|
321
350
|
DOM do
|
322
|
-
div(id: id_found).atome
|
351
|
+
div(id: id_found).atome.text
|
323
352
|
end.append_to($document[:user_view])
|
324
353
|
@html_object = $document[id_found]
|
325
354
|
@html_type = :text
|
326
355
|
end
|
327
356
|
|
328
|
-
|
329
|
-
# video
|
330
|
-
Genesis.atome_creator(:video)
|
331
|
-
Genesis.generate_html_renderer(:video) do |value, atome, proc|
|
332
|
-
id_found = id
|
333
|
-
instance_exec(&proc) if proc.is_a?(Proc)
|
334
|
-
DOM do
|
335
|
-
video({ id: id_found, autoplay: true }).atome
|
336
|
-
end.append_to($document[:user_view])
|
337
|
-
@html_object = $document[id_found]
|
338
|
-
@html_type = :video
|
339
|
-
end
|
340
|
-
|
341
|
-
|
342
357
|
# particles method below to allow to retrieve all particles for an atome
|
343
358
|
Genesis.particle_creator(:particles)
|
344
359
|
Genesis.atome_creator_option(:particles_getter_pre_proc) do |params|
|
@@ -346,25 +361,24 @@ Genesis.atome_creator_option(:particles_getter_pre_proc) do |params|
|
|
346
361
|
particles_hash = {}
|
347
362
|
atome_found.instance_variables.each do |particle_found|
|
348
363
|
particle_content = atome_found.instance_variable_get(particle_found)
|
349
|
-
particles_hash[particle_found] = particle_content
|
364
|
+
particles_hash[particle_found.sub('@', '')] = particle_content
|
350
365
|
end
|
351
366
|
particles_hash
|
352
367
|
end
|
353
368
|
|
354
|
-
|
355
369
|
# link
|
356
370
|
Genesis.particle_creator(:link)
|
357
371
|
Genesis.atome_creator_option(:link_pre_render_proc) do |params|
|
358
372
|
atome_found = params[:atome]
|
359
373
|
atome_to_link = grab(params[:value])
|
360
374
|
particles_found = atome_to_link.particles
|
361
|
-
atome_type = particles_found.delete(
|
375
|
+
atome_type = particles_found.delete(:type)
|
362
376
|
sanitized_particles = {}
|
363
377
|
particles_found.each do |particle_name, value|
|
364
378
|
particle_name = particle_name.gsub('@', '')
|
365
379
|
sanitized_particles[particle_name] = value
|
366
380
|
end
|
367
|
-
sanitized_particles[:parent]=[atome_found.id]
|
381
|
+
sanitized_particles[:parent] = [atome_found.id]
|
368
382
|
atome_found.send(atome_type, sanitized_particles)
|
369
383
|
params[:value]
|
370
384
|
end
|
@@ -373,6 +387,7 @@ Genesis.particle_creator(:path)
|
|
373
387
|
Genesis.generate_html_renderer(:path) do |value, atome, proc|
|
374
388
|
@html_object[:src] = value
|
375
389
|
end
|
390
|
+
|
376
391
|
Genesis.generate_html_renderer(:web) do |value, atome, proc|
|
377
392
|
id_found = id
|
378
393
|
instance_exec(&proc) if proc.is_a?(Proc)
|
@@ -380,8 +395,123 @@ Genesis.generate_html_renderer(:web) do |value, atome, proc|
|
|
380
395
|
iframe({ id: id_found }).atome
|
381
396
|
end.append_to($document[:user_view])
|
382
397
|
@html_object = $document[id_found]
|
383
|
-
@html_object.attributes[:allow]='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
|
384
|
-
@html_object.attributes[:allowfullscreen]=true
|
398
|
+
@html_object.attributes[:allow] = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
|
399
|
+
@html_object.attributes[:allowfullscreen] = true
|
385
400
|
@html_type = :web
|
386
401
|
end
|
387
402
|
|
403
|
+
Genesis.particle_creator(:data)
|
404
|
+
|
405
|
+
Genesis.generate_html_renderer(:data) do |value, atome, proc|
|
406
|
+
# TODO: create a method for each type
|
407
|
+
send("#{type}_data", value)
|
408
|
+
end
|
409
|
+
|
410
|
+
Genesis.particle_creator(:code)
|
411
|
+
Genesis.atome_creator_option(:code_pre_render_proc) do |params|
|
412
|
+
def get_binding
|
413
|
+
binding
|
414
|
+
end
|
415
|
+
|
416
|
+
str = params[:value][:code]
|
417
|
+
eval str, get_binding, __FILE__, __LINE__
|
418
|
+
params[:value]
|
419
|
+
end
|
420
|
+
Genesis.particle_creator(:on)
|
421
|
+
|
422
|
+
Genesis.generate_html_renderer(:on) do |value, atome, proc|
|
423
|
+
@html_object.on(value) do |e|
|
424
|
+
instance_exec(e, &proc) if proc.is_a?(Proc)
|
425
|
+
end
|
426
|
+
end
|
427
|
+
|
428
|
+
Genesis.atome_creator_option(:shape_post_save_proc) do |params|
|
429
|
+
current_atome = params[:atome]
|
430
|
+
#FIXME: look why we have to look in [:value][:value] this looks suspect
|
431
|
+
bloc_found = params[:value][:value][:bloc]
|
432
|
+
current_atome.instance_exec(params, &bloc_found) if bloc_found.is_a?(Proc)
|
433
|
+
params
|
434
|
+
end
|
435
|
+
|
436
|
+
Genesis.atome_creator_option(:text_post_save_proc) do |params|
|
437
|
+
current_atome = params[:atome]
|
438
|
+
#FIXME: look why we have to look in [:value][:value] this looks suspect
|
439
|
+
bloc_found = params[:value][:value][:bloc]
|
440
|
+
current_atome.instance_exec(params, &bloc_found) if bloc_found.is_a?(Proc)
|
441
|
+
params
|
442
|
+
end
|
443
|
+
|
444
|
+
Genesis.atome_creator_option(:play_pre_render_proc) do |params|
|
445
|
+
params[:atome].send("play_#{params[:atome].type}", params)
|
446
|
+
end
|
447
|
+
|
448
|
+
Genesis.atome_creator_option(:pause_pre_render_proc) do |params|
|
449
|
+
params[:atome].send("pause_#{params[:atome].type}", params)
|
450
|
+
proc_found = params[:proc]
|
451
|
+
params[:atome].instance_exec('::call back from pause render', &proc_found) if proc_found.is_a?(Proc)
|
452
|
+
end
|
453
|
+
|
454
|
+
Genesis.generate_html_renderer(:time) do |value, atome, proc|
|
455
|
+
# params[:atome].html_object.currentTime= 33
|
456
|
+
@html_object.currentTime = value
|
457
|
+
end
|
458
|
+
|
459
|
+
#drag
|
460
|
+
Genesis.generate_html_renderer(:drag) do |value, atome, proc|
|
461
|
+
alert ("this is very strange that I had a style tag please check")
|
462
|
+
instance_exec(&proc) if proc.is_a?(Proc)
|
463
|
+
@html_type = :style
|
464
|
+
$document.head << DOM("<style atome='#{type}' id='#{id}'></style>")
|
465
|
+
end
|
466
|
+
Genesis.particle_creator(:lock)
|
467
|
+
Genesis.particle_creator(:target)
|
468
|
+
Genesis.atome_creator(:drag) do |params|
|
469
|
+
# TODO: factorise code below
|
470
|
+
if params
|
471
|
+
default_renderer = Sanitizer.default_params[:render]
|
472
|
+
generated_id = params[:id] || "drag_#{Universe.atomes.length}"
|
473
|
+
generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
|
474
|
+
generated_parent = params[:parent] || id
|
475
|
+
default_params = { render: [generated_render], id: generated_id, type: :drag, parent: [generated_parent], target: [generated_parent]
|
476
|
+
}
|
477
|
+
params = default_params.merge(params)
|
478
|
+
params
|
479
|
+
end
|
480
|
+
params
|
481
|
+
end
|
482
|
+
Genesis.particle_creator(:remove)
|
483
|
+
Genesis.particle_creator(:fixed)
|
484
|
+
Genesis.particle_creator(:max)
|
485
|
+
Genesis.particle_creator(:inside)
|
486
|
+
Genesis.atome_creator_option(:remove_pre_render_proc) do |params|
|
487
|
+
type_found = params[:atome].type
|
488
|
+
current_atome = params[:atome]
|
489
|
+
particle_to_remove = params[:value]
|
490
|
+
current_atome.send("#{type_found}_remove_#{particle_to_remove}", current_atome)
|
491
|
+
end
|
492
|
+
Genesis.atome_creator_option(:max_pre_render_proc) do |params|
|
493
|
+
current_atome = params[:atome]
|
494
|
+
current_atome.constraint_helper(params, current_atome, :max)
|
495
|
+
end
|
496
|
+
Genesis.atome_creator_option(:inside_pre_render_proc) do |params|
|
497
|
+
current_atome = params[:atome]
|
498
|
+
params[:value] = grab(params[:value]).html_object
|
499
|
+
current_atome.constraint_helper(params, current_atome, :max)
|
500
|
+
end
|
501
|
+
Genesis.atome_creator_option(:lock_pre_render_proc) do |params|
|
502
|
+
current_atome = params[:atome]
|
503
|
+
current_atome.constraint_helper(params, current_atome, :lock)
|
504
|
+
end
|
505
|
+
Genesis.atome_creator_option(:fixed_pre_render_proc) do |params|
|
506
|
+
current_atome = params[:atome]
|
507
|
+
current_atome.constraint_helper(params, current_atome, :fixed)
|
508
|
+
end
|
509
|
+
Genesis.generate_html_renderer(:target) do |targets, atome, proc|
|
510
|
+
targets.each do |value|
|
511
|
+
atome_found = grab(value)
|
512
|
+
# we get the id of the drag and ad add it as a html class to all children so they become draggable
|
513
|
+
atome_found.html_object.add_class(id)
|
514
|
+
end
|
515
|
+
html_drag_helper(atome, {})
|
516
|
+
end
|
517
|
+
|