atome 0.4.5.4 → 0.4.7.0
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/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
|
+
|