atome 0.1.00009 → 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 +2 -0
- data/README.md +74 -6
- data/Rakefile +15 -6
- data/app_builder_helpers/Rakefile +184 -24
- data/documentation/atome.md +14 -0
- data/documentation/database.JPG +0 -0
- data/documentation/framework/apis.md +14 -0
- data/documentation/framework/atome_explained.md +179 -0
- data/documentation/framework/box_content.md +53 -0
- data/documentation/framework/buld_the_gem.md +52 -0
- data/documentation/framework/datas_flows.md +28 -0
- data/documentation/framework/enhance_atome.md +79 -0
- data/documentation/framework/folder_architecture.md +47 -0
- data/documentation/framework/technical/rendering_flow.md +18 -0
- data/documentation/framework/technical/technical_description.md +23 -0
- data/documentation/framework/what_is_it.md +65 -0
- data/documentation/framework/what_it_can_do.md +25 -0
- data/documentation/images/1.png +0 -0
- data/documentation/images/2.png +0 -0
- data/documentation/images/3.png +0 -0
- data/documentation/images/atome.svg +12 -0
- data/documentation/images/list.png +0 -0
- data/documentation/images/logos/cordova.png +0 -0
- data/documentation/images/logos/freebsd.png +0 -0
- data/documentation/images/logos/opal.png +0 -0
- data/documentation/images/logos/puma.png +0 -0
- data/documentation/images/logos/roda.svg +1 -0
- data/documentation/images/logos/ruby.png +0 -0
- data/documentation/images/logos/tauri.png +0 -0
- data/documentation/installation/atome_server.md +184 -0
- data/documentation/tutorials/first_steps.md +148 -0
- data/documentation/tutorials/tutorials.md +15 -0
- data/documentation/tutorials/working_with_atome.md +60 -0
- data/exe/atome +178 -53
- data/lib/atome/atome_native_extensions.rb +5 -0
- data/lib/atome/extensions/helper.rb +112 -0
- data/lib/atome/kernel/atome.rb +99 -0
- data/lib/atome/kernel/generators/generator.rb +517 -0
- data/lib/atome/kernel/generators/genesis.rb +277 -0
- data/lib/atome/kernel/generators/sanitizer.rb +73 -0
- data/lib/atome/kernel/generators/shapes.rb +55 -0
- data/lib/atome/kernel/helpers/geolocation.rb +14 -0
- data/lib/atome/kernel/helpers/internal_methods.rb +173 -0
- data/lib/atome/kernel/helpers/ping.rb +17 -0
- data/lib/atome/kernel/helpers/sha.rb +6 -0
- data/lib/atome/kernel/helpers/utilities.rb +39 -0
- data/lib/atome/kernel/properties/essential.rb +77 -0
- data/lib/atome/kernel/sparkle.rb +38 -0
- data/lib/atome/kernel/universe.rb +37 -0
- data/lib/atome/renderers/headless/properties/generator.rb +1 -0
- data/lib/atome/renderers/opal/atome_opal_extensions.rb +7 -0
- data/lib/atome/renderers/opal/extensions/color.rb +23 -0
- data/lib/atome/renderers/opal/extensions/geolocation.rb +13 -0
- data/lib/atome/renderers/opal/extensions/ping.rb +18 -0
- data/lib/atome/renderers/opal/extensions/sha.rb +12 -0
- data/lib/atome/renderers/opal/opal_browser.rb +2 -1
- data/lib/atome/renderers/opal/opal_parser.rb +1 -0
- data/lib/atome/renderers/opal/properties/generator.rb +1 -0
- data/lib/atome/renderers/renderer.rb +13 -0
- data/lib/atome/renderers/server/properties/generator.rb +9 -0
- data/lib/atome/version.rb +2 -1
- data/lib/atome.rb +46 -2
- data/vendor/assets/Guardfile +4 -0
- data/vendor/assets/Rakefile +3 -0
- data/vendor/assets/application/index.rb +4 -0
- data/vendor/assets/build/css/style.css +25 -8
- data/vendor/assets/build/favicon.ico +0 -0
- data/vendor/assets/build/index.html +15 -4
- data/vendor/assets/build/js/atome/atome.js +82 -0
- data/vendor/assets/build/js/third_parties/fabric.min.js +1 -0
- data/vendor/assets/build/js/third_parties/interact.min.js +2 -3
- data/vendor/assets/build/js/third_parties/ping.min.js +2 -0
- data/vendor/assets/build/js/third_parties/sha256.min.js +9 -0
- data/vendor/assets/build/js/third_parties/three.min.js +6 -0
- data/vendor/assets/build/js/third_parties/w3color.js +646 -0
- data/vendor/assets/build/js/third_parties/zim.min.js +1 -0
- data/vendor/assets/build/medias/audios/audio_missing.wav +0 -0
- data/vendor/assets/build/medias/audios/clap.wav +0 -0
- data/vendor/assets/build/medias/audios/cowbell.wav +0 -0
- data/vendor/assets/build/medias/audios/guitar.wav +0 -0
- data/vendor/assets/build/medias/audios/hihat.wav +0 -0
- data/vendor/assets/build/medias/audios/kick.wav +0 -0
- data/vendor/assets/build/medias/audios/riff.m4a +0 -0
- data/vendor/assets/build/medias/audios/snare.wav +0 -0
- data/vendor/assets/build/medias/audios/tom.wav +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/DancingScript-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/OFL.txt +93 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/README.txt +66 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Mate_SC/MateSC-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Mate_SC/OFL.txt +94 -0
- data/vendor/assets/build/medias/fonts/Raleway/OFL.txt +93 -0
- data/vendor/assets/build/medias/fonts/Raleway/README.txt +81 -0
- data/vendor/assets/build/medias/fonts/Raleway/Raleway-Italic-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/Raleway-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Black.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-BlackItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-BoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraLight.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraLightItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Italic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Light.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-LightItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-MediumItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-SemiBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Thin.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ThinItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/LICENSE.txt +202 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/README.txt +71 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/RobotoSlab-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Black.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraLight.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Light.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Thin.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/OFL.txt +93 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/README.txt +75 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/Vollkorn-Italic-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/Vollkorn-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Black.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-BlackItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-BoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-ExtraBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-ExtraBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Italic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-MediumItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-SemiBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/images/Icon_Help.png +0 -0
- data/vendor/assets/build/medias/images/atome.svg +12 -0
- data/vendor/assets/build/medias/images/avion.jpg +0 -0
- data/vendor/assets/build/medias/images/ballanim.png +0 -0
- data/vendor/assets/build/medias/images/beach.jpg +0 -0
- data/vendor/assets/build/medias/images/blank.png +0 -0
- data/vendor/assets/build/medias/images/boat.png +0 -0
- data/vendor/assets/build/medias/images/cache.svg +10 -0
- data/vendor/assets/build/medias/images/dices.png +0 -0
- data/vendor/assets/build/medias/images/eVe_back.png +0 -0
- data/vendor/assets/build/medias/images/elephant.png +0 -0
- data/vendor/assets/build/medias/images/eyes.jpg +0 -0
- data/vendor/assets/build/medias/images/freebsd.png +0 -0
- data/vendor/assets/build/medias/images/grain_texture.png +0 -0
- data/vendor/assets/build/medias/images/green_planet.png +0 -0
- data/vendor/assets/build/medias/images/image_missing.svg +9 -0
- data/vendor/assets/build/medias/images/jeezs.png +0 -0
- data/vendor/assets/build/medias/images/keyboard.png +0 -0
- data/vendor/assets/build/medias/images/killer.jpg +0 -0
- data/vendor/assets/build/medias/images/living_room.png +0 -0
- data/vendor/assets/build/medias/images/logo.svg +14 -0
- data/vendor/assets/build/medias/images/logos/Facebook.svg +8 -0
- data/vendor/assets/build/medias/images/logos/GitHub Black.svg +7 -0
- data/vendor/assets/build/medias/images/logos/GitHub-Mark.eps +7696 -0
- data/vendor/assets/build/medias/images/logos/GitHub.svg +7 -0
- data/vendor/assets/build/medias/images/logos/TikTok.svg +11 -0
- data/vendor/assets/build/medias/images/logos/Twitter.svg +35 -0
- data/vendor/assets/build/medias/images/logos/YouTube.svg +1 -0
- data/vendor/assets/build/medias/images/logos/apple.svg +4 -0
- data/vendor/assets/build/medias/images/logos/atome.svg +12 -0
- data/vendor/assets/build/medias/images/logos/freebsd.png +0 -0
- data/vendor/assets/build/medias/images/logos/instagram.svg +6 -0
- data/vendor/assets/build/medias/images/logos/tiktok_back.svg +1 -0
- data/vendor/assets/build/medias/images/moto.png +0 -0
- data/vendor/assets/build/medias/images/noise.svg +17 -0
- data/vendor/assets/build/medias/images/piano.png +0 -0
- data/vendor/assets/build/medias/images/poisson.jpg +0 -0
- data/vendor/assets/build/medias/images/red_planet.png +0 -0
- data/vendor/assets/build/medias/images/sky.jpg +0 -0
- data/vendor/assets/build/medias/images/the_mask.svg +8 -0
- data/vendor/assets/build/medias/images/tile.png +0 -0
- data/vendor/assets/build/medias/images/tile_black.png +0 -0
- data/vendor/assets/build/medias/images/tile_white.png +0 -0
- data/vendor/assets/build/medias/javascripts/test.js +1 -0
- data/vendor/assets/build/medias/rubies/examples/!run.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +111 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +27 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +92 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +20 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +57 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +18 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +115 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +35 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +61 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +37 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +44 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +28 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +24 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +64 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +54 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +69 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +47 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +24 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +41 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +41 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +8 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +37 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +47 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +24 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +31 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +30 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +41 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +39 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +32 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +30 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +109 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +18 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +33 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +33 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +27 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +27 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +46 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +10 -0
- data/vendor/assets/build/{js/atome/kernel.js → medias/rubies/examples/animation.rb} +0 -0
- data/vendor/assets/build/medias/rubies/examples/atome.new.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/auto_height.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/box.rb +16 -0
- 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/color.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/drag.rb +43 -0
- data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/grab.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/image.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/link.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/on.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/parent.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/read.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/repeat.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/right.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/rotate.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/schedule.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/smooth.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/text.rb +18 -0
- data/vendor/assets/build/medias/rubies/examples/top.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/touch.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/video.rb +52 -0
- data/vendor/assets/build/medias/rubies/examples/wait.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/web.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/width.rb +2 -0
- data/vendor/assets/build/medias/rubies/test.rb +1 -0
- data/vendor/assets/build/medias/rubies/text_read.rb +1 -0
- data/vendor/assets/build/medias/rubies/users/code.rb +6 -0
- data/vendor/assets/build/medias/utils/infos/color.rb +29 -0
- data/vendor/assets/build/medias/utils/infos/width.rb +25 -0
- 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
- data/vendor/assets/build/medias/videos/video_missing.mp4 +0 -0
- data/vendor/assets/{index.rb → r&d/misc.rb} +54 -1
- data/vendor/assets/r&d/ping.rb +3 -0
- data/vendor/assets/r&d/storage.rb +9 -0
- data/vendor/assets/r&d/view_example.rb +21 -0
- data/vendor/assets/server/atome_server.rb +74 -27
- data/vendor/assets/server/config.ru +2 -14
- metadata +438 -14
- data/lib/atome/kernel/atome_genesis.rb +0 -2
- data/lib/atome/kernel/properties/geometry.rb +0 -2
- data/vendor/assets/build/js/opal/opal_browser.js +0 -0
- data/vendor/assets/build/js/opal/opal_parser.js +0 -0
@@ -0,0 +1,277 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# TODO: parent are not set correctly if not explicitly specified when attaching a child ex: b=box();c=b.box, c is not
|
3
|
+
# attached to b
|
4
|
+
# Genesis helper
|
5
|
+
module GenesisHelper
|
6
|
+
def broadcaster(property, value)
|
7
|
+
"broadcast : #{property} #{value}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def history(property, value)
|
11
|
+
"historize : #{property} #{value}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# genesis kernel
|
16
|
+
module GenesisKernel
|
17
|
+
# particle's methods
|
18
|
+
def set_new_particle(particle, value, &proc)
|
19
|
+
return false unless validation(particle)
|
20
|
+
# now we exec the first optional method
|
21
|
+
value = Genesis.run_optional_methods_helper("#{particle}_pre_render_proc".to_sym,
|
22
|
+
{ method: particle, value: value, atome: self, proc: proc })
|
23
|
+
# render option below
|
24
|
+
Genesis.run_optional_methods_helper("#{particle}_render_proc".to_sym,
|
25
|
+
{ method: particle, value: value, atome: self, proc: proc })
|
26
|
+
# now we exec post render optional proc
|
27
|
+
value = Genesis.run_optional_methods_helper("#{particle}_post_render_proc".to_sym,
|
28
|
+
{ method: particle, value: value, proc: proc })
|
29
|
+
broadcaster(particle, value)
|
30
|
+
history(particle, value)
|
31
|
+
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_new_particle(particle)
|
36
|
+
return false unless validation(particle)
|
37
|
+
|
38
|
+
particle_instance_variable = "@#{particle}"
|
39
|
+
value_get = instance_variable_get(particle_instance_variable)
|
40
|
+
Genesis.run_optional_methods_helper("#{particle}_getter_pre_proc".to_sym, { value: value_get, atome: self })
|
41
|
+
end
|
42
|
+
|
43
|
+
def new_particle(particle, params, proc, &method_proc)
|
44
|
+
if params
|
45
|
+
if method_proc.is_a?(Proc)
|
46
|
+
params = instance_exec(params, &method_proc)
|
47
|
+
end
|
48
|
+
set_new_particle(particle, params, &proc)
|
49
|
+
else
|
50
|
+
get_new_particle(particle)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# atome's methods
|
55
|
+
|
56
|
+
def get_new_atome(atome)
|
57
|
+
return false unless validation(atome)
|
58
|
+
|
59
|
+
atome_instance_variable = "@#{atome}"
|
60
|
+
value_get = instance_variable_get(atome_instance_variable)
|
61
|
+
Genesis.run_optional_methods_helper("#{atome}_getter_pre_proc".to_sym, { value: value_get })
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
def new_atome(atome, params, userproc, &method_proc)
|
66
|
+
if params
|
67
|
+
# the line below execute the proc associated to the method, ex Genesis.atome_creator(:color) do ...(proc)
|
68
|
+
params = instance_exec(params, &method_proc) if method_proc.is_a?(Proc)
|
69
|
+
params = add_essential_properties(atome, params)
|
70
|
+
params = sanitizer(params)
|
71
|
+
set_new_atome(atome, params, userproc)
|
72
|
+
else
|
73
|
+
get_new_atome(atome)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def set_new_atome(atome, params, userproc)
|
78
|
+
params[:bloc] = userproc
|
79
|
+
return false unless validation(atome)
|
80
|
+
|
81
|
+
instance_var = "@#{atome}"
|
82
|
+
new_atome = Atome.new({}, &userproc)
|
83
|
+
# now we exec the first optional method
|
84
|
+
params = Genesis.run_optional_methods_helper("#{atome}_pre_save_proc".to_sym, { value: params, atome: new_atome, proc: userproc })
|
85
|
+
new_atome = create_new_atomes(params[:value], instance_var, new_atome, &userproc)
|
86
|
+
# now we exec the second optional method
|
87
|
+
Genesis.run_optional_methods_helper("#{atome}_post_save_proc".to_sym, { value: params, atome: new_atome, proc: userproc })
|
88
|
+
@dna = "#{Atome.current_user}_#{Universe.app_identity}_#{Universe.atomes.length}"
|
89
|
+
new_atome
|
90
|
+
end
|
91
|
+
|
92
|
+
def create_new_atomes(params, instance_var, new_atome, &userproc)
|
93
|
+
# new_atome = Atome.new({}, &userproc)
|
94
|
+
Universe.atomes_add(new_atome, params[:id])
|
95
|
+
instance_variable_set(instance_var, new_atome)
|
96
|
+
# FIXME : move this to sanitizer and ensure that no reorder happen for "id" and "render" when
|
97
|
+
params.each do |param, value|
|
98
|
+
new_atome.send(param, value)
|
99
|
+
end
|
100
|
+
new_atome
|
101
|
+
end
|
102
|
+
|
103
|
+
def additional_atomes(atome, params)
|
104
|
+
atome_instance_variable = "@#{atome}"
|
105
|
+
if params
|
106
|
+
instance_variable_get(atome_instance_variable).additional(params)
|
107
|
+
else
|
108
|
+
instance_variable_get(atome_instance_variable).additional
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# main entry for genesis
|
114
|
+
module Genesis
|
115
|
+
include GenesisHelper
|
116
|
+
include GenesisKernel
|
117
|
+
|
118
|
+
# include ParticleGenesis
|
119
|
+
@optionals_methods = {}
|
120
|
+
|
121
|
+
def self.atome_creator_option(property_name, &proc)
|
122
|
+
@optionals_methods[property_name] = proc
|
123
|
+
end
|
124
|
+
|
125
|
+
def self.run_optional_methods_helper(method_name, params, atome = nil)
|
126
|
+
|
127
|
+
proc = nil
|
128
|
+
proc = @optionals_methods[method_name] if @optionals_methods
|
129
|
+
# it run all methods that looks like :
|
130
|
+
# bloc_render_proc
|
131
|
+
# render_getter_pre_proc
|
132
|
+
# bloc_post_render_proc
|
133
|
+
|
134
|
+
params[:atome].instance_exec(params, atome, &proc) if proc.is_a?(Proc)
|
135
|
+
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
def self.generate_html_renderer(method_name, &methods_proc)
|
140
|
+
current_renderer = :html
|
141
|
+
generated_method_name = "#{method_name}_#{current_renderer}".to_sym
|
142
|
+
Atome.define_method generated_method_name do |value, atome, &user_proc|
|
143
|
+
params[:atome].instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.generate_server_renderer(method_name, &methods_proc)
|
148
|
+
current_renderer = :headless
|
149
|
+
generated_method_name = "#{method_name}_#{current_renderer}".to_sym
|
150
|
+
Atome.define_method generated_method_name do |value, atome, &user_proc|
|
151
|
+
instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# rendering methods are generated below:
|
156
|
+
def self.generate_renderers_methods(method_name)
|
157
|
+
# now we auto generate all rendering methods
|
158
|
+
Utilities.renderer_list.each do |render_method|
|
159
|
+
define_singleton_method("generate_#{render_method}_renderer") do |method_name, &methods_proc|
|
160
|
+
current_renderer = render_method
|
161
|
+
generated_method_name = "#{method_name}_#{current_renderer}".to_sym
|
162
|
+
Atome.define_method generated_method_name do |value, atome, &user_proc|
|
163
|
+
instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
send("generate_#{render_method}_renderer", method_name)
|
168
|
+
end
|
169
|
+
|
170
|
+
Genesis.atome_creator_option("#{method_name}_post_render_proc".to_sym) do |params|
|
171
|
+
# we return the value
|
172
|
+
params[:value]
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def self.optional_atome_methods(method_name)
|
177
|
+
Genesis.atome_creator_option("#{method_name}_pre_save_proc".to_sym) do |params, proc|
|
178
|
+
# we return the value
|
179
|
+
params
|
180
|
+
end
|
181
|
+
|
182
|
+
Genesis.atome_creator_option("#{method_name}_sanitizer_proc".to_sym) do |params, atome, proc|
|
183
|
+
# we return the value
|
184
|
+
params
|
185
|
+
end
|
186
|
+
|
187
|
+
Genesis.atome_creator_option("#{method_name}_getter_pre_proc".to_sym) do |params, atome, proc|
|
188
|
+
# we return the value
|
189
|
+
params[:value]
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
|
194
|
+
def self.additional_atome_methods(method_name)
|
195
|
+
# here is the pluralized
|
196
|
+
Atome.define_method "#{method_name}s" do |params = nil|
|
197
|
+
additional_atomes(method_name, params)
|
198
|
+
end
|
199
|
+
# here is the fast methods
|
200
|
+
Atome.define_method "set_#{method_name}" do |params = nil, &proc|
|
201
|
+
set_new_atome(method_name, params, proc)
|
202
|
+
end
|
203
|
+
Atome.define_method "get_#{method_name}" do
|
204
|
+
get_new_atome(method_name)
|
205
|
+
end
|
206
|
+
generate_renderers_methods(method_name)
|
207
|
+
end
|
208
|
+
|
209
|
+
# we create the easy methods here : ¬
|
210
|
+
def self.atome_creator(method_name, &method_proc)
|
211
|
+
|
212
|
+
# we add the new method to the atome's collection of methods
|
213
|
+
Utilities.atome_list(method_name)
|
214
|
+
# we define many methods : easy, method=,pluralised and the fasts one, here is the easy
|
215
|
+
Atome.define_method method_name do |params = nil, &user_proc|
|
216
|
+
new_atome(method_name, params, user_proc, &method_proc)
|
217
|
+
end
|
218
|
+
# no we also add the method= for easy setting
|
219
|
+
Atome.define_method("#{method_name}=") do |params, &user_proc|
|
220
|
+
new_atome(method_name, params, user_proc)
|
221
|
+
end
|
222
|
+
optional_atome_methods(method_name)
|
223
|
+
additional_atome_methods(method_name)
|
224
|
+
end
|
225
|
+
|
226
|
+
def self.optional_particle_methods(method_name)
|
227
|
+
# The rendering occur here setting up the optional rendering by default
|
228
|
+
Genesis.atome_creator_option("#{method_name}_render_proc".to_sym) do |params|
|
229
|
+
params[:atome].render_engine(params[:method], params[:value], params[:atome], ¶ms[:proc])
|
230
|
+
# we return the value
|
231
|
+
params[:value]
|
232
|
+
end
|
233
|
+
Genesis.atome_creator_option("#{method_name}_pre_render_proc".to_sym) do |params|
|
234
|
+
particle_instance_variable = "@#{params[:method]}"
|
235
|
+
params[:atome].instance_variable_set(particle_instance_variable, params[:value])
|
236
|
+
# we return the value
|
237
|
+
params[:value]
|
238
|
+
end
|
239
|
+
Genesis.atome_creator_option("#{method_name}_post_render_proc".to_sym) do |params|
|
240
|
+
# we return the value
|
241
|
+
params[:value]
|
242
|
+
end
|
243
|
+
Genesis.atome_creator_option("#{method_name}_getter_pre_proc".to_sym) do |params|
|
244
|
+
# we return the value
|
245
|
+
params[:value]
|
246
|
+
end
|
247
|
+
|
248
|
+
end
|
249
|
+
|
250
|
+
def self.additional_particle_methods(method_name)
|
251
|
+
# here is the fast methods
|
252
|
+
Atome.define_method "set_#{method_name}" do |params, &proc|
|
253
|
+
set_new_particle(method_name, params, &proc)
|
254
|
+
end
|
255
|
+
|
256
|
+
Atome.define_method "get_#{method_name}" do
|
257
|
+
get_new_particle(method_name)
|
258
|
+
end
|
259
|
+
# now we generate all basic default rendering methods
|
260
|
+
generate_renderers_methods(method_name)
|
261
|
+
# now we generate all optional methods
|
262
|
+
optional_particle_methods(method_name)
|
263
|
+
end
|
264
|
+
|
265
|
+
def self.particle_creator(method_name, &method_proc)
|
266
|
+
# we add the new method to the particle's collection of methods
|
267
|
+
Utilities.particle_list(method_name)
|
268
|
+
Atome.define_method method_name do |params = nil, &user_proc|
|
269
|
+
new_particle(method_name, params, user_proc, &method_proc)
|
270
|
+
end
|
271
|
+
# no we also add the method= for easy setting
|
272
|
+
Atome.define_method("#{method_name}=") do |params, &user_proc|
|
273
|
+
new_particle(method_name, params, user_proc)
|
274
|
+
end
|
275
|
+
additional_particle_methods(method_name)
|
276
|
+
end
|
277
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# use to sanitize and secure user input
|
4
|
+
module Sanitizer
|
5
|
+
@default_params = {
|
6
|
+
render: [:html],
|
7
|
+
color: { x: 0, y: 0, z: 0, red: 0.6, green: 0.6, blue: 0.6, alpha: 1, diffusion: :linear },
|
8
|
+
box: { width: 100, height: 100, x: 100, y: 100,
|
9
|
+
color: { x: 0, y: 0, z: 0, red: 0.9, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
10
|
+
generator: :box, preset: :box },
|
11
|
+
shape: { width: 100, height: 100, x: 100, y: 100,
|
12
|
+
color: { x: 0, y: 0, z: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
13
|
+
generator: :manual },
|
14
|
+
drm: { type: :drm },
|
15
|
+
shadow: {}
|
16
|
+
}
|
17
|
+
|
18
|
+
def self.default_params
|
19
|
+
@default_params
|
20
|
+
end
|
21
|
+
|
22
|
+
def validation(atome_instance_var)
|
23
|
+
# TODO: write validation scheme
|
24
|
+
true if atome_instance_var
|
25
|
+
end
|
26
|
+
|
27
|
+
def sanitizer(params)
|
28
|
+
# TODO: write sanitizer scheme
|
29
|
+
# we reorder id and place it a the beginning of the hash before render
|
30
|
+
# id_found = params.delete(:id)
|
31
|
+
# params = { id: id_found }.merge(params)
|
32
|
+
|
33
|
+
# we reorder render and place it a the beginning of the hash
|
34
|
+
# render_found = params.delete(:render)
|
35
|
+
# { render: render_found }.merge(params)
|
36
|
+
params
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_essential_drm(params)
|
40
|
+
essential_drm = { authorisation: { read: [Atome.current_user], write: [Atome.current_user] },
|
41
|
+
atome: { read: [:all], write: [:me] } }
|
42
|
+
params[:drm] = if params[:drm]
|
43
|
+
essential_drm.merge(params[:drm])
|
44
|
+
else
|
45
|
+
essential_drm
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def check_parent(params)
|
50
|
+
parent = [id]|| [:user_view]
|
51
|
+
params[:parent] = parent unless params[:parent]
|
52
|
+
params
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_missing_id(atome_type, params)
|
56
|
+
type = params[:type] || atome_type
|
57
|
+
"#{type}_#{Universe.atomes.length}"
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_essential_properties(atome_type, params)
|
61
|
+
# params_to_sanitize={atome: self, params: params}
|
62
|
+
params=Genesis.run_optional_methods_helper("#{atome_type}_sanitizer_proc".to_sym, params, self)
|
63
|
+
# TODO remove the condition below once the line above works
|
64
|
+
params[:id] = add_missing_id(atome_type, params) unless params[:id]
|
65
|
+
# FIXME : inject this in async mode to avoid big lag!
|
66
|
+
params[:drm] = add_essential_drm(params) unless params[:drm]
|
67
|
+
# forcing default render can causes problems and crashes
|
68
|
+
# render= Sanitizer.default_params[:render]
|
69
|
+
params[:render] = render unless params[:render]
|
70
|
+
check_parent(params)
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# TODO: params shouldn't be merge but they must respect the order
|
3
|
+
# TODO: Add default value for each methods below
|
4
|
+
# TODO: Factorise codes below
|
5
|
+
class Atome
|
6
|
+
def box(params = {}, &bloc)
|
7
|
+
default_renderer = Sanitizer.default_params[:render]
|
8
|
+
generated_id = params[:id] || "box_#{Universe.atomes.length}"
|
9
|
+
generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
|
10
|
+
generated_parent = params[:parent] || id
|
11
|
+
|
12
|
+
temp_default = { render: [generated_render], id: generated_id, type: :shape, parent: [generated_parent], width: 99, height: 99, left: 9, top: 9,
|
13
|
+
color: { render: [generated_render], id: "color_#{generated_id}", type: :color,
|
14
|
+
red: 0.69, green: 0.69, blue: 0.69, alpha: 1 } }
|
15
|
+
params = temp_default.merge(params)
|
16
|
+
new_atome = Atome.new({ shape: params},&bloc )
|
17
|
+
new_atome.shape
|
18
|
+
end
|
19
|
+
|
20
|
+
def circle(params = {}, &bloc)
|
21
|
+
default_renderer = Sanitizer.default_params[:render]
|
22
|
+
generated_id = params[:id] || "circle_#{Universe.atomes.length}"
|
23
|
+
generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
|
24
|
+
generated_parent = params[:parent] || id
|
25
|
+
|
26
|
+
temp_default = { render: [generated_render], id: generated_id, type: :shape, parent: [generated_parent], width: 99, height: 99, left: 9, top: 9,
|
27
|
+
color: { render: [generated_render], id: "color_#{generated_id}", type: :color,
|
28
|
+
red: 0.69, green: 0.69, blue: 0.69, alpha: 1 }, smooth: "100%" }
|
29
|
+
params = temp_default.merge(params)
|
30
|
+
new_atome = Atome.new({ shape: params },&bloc)
|
31
|
+
new_atome.shape
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def box(params = {}, &proc)
|
37
|
+
Utilities.grab(:view).box(params,&proc)
|
38
|
+
end
|
39
|
+
|
40
|
+
def circle(params = {}, &proc)
|
41
|
+
Utilities.grab(:view).circle(params,&proc)
|
42
|
+
end
|
43
|
+
|
44
|
+
def text(params = {}, &bloc)
|
45
|
+
Utilities.grab(:view).text(params, &bloc)
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def video(params = {}, &bloc)
|
50
|
+
Utilities.grab(:view).video(params, &bloc)
|
51
|
+
end
|
52
|
+
|
53
|
+
def drag(params = {}, &bloc)
|
54
|
+
Utilities.grab(:view).drag(params, &bloc)
|
55
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'geocoder'
|
4
|
+
|
5
|
+
# add on for the atome method
|
6
|
+
class Atome
|
7
|
+
def geolocation
|
8
|
+
# native version
|
9
|
+
public_ip = `curl https://api.ipify.org`
|
10
|
+
results = Geocoder.search(public_ip)
|
11
|
+
results.first.coordinates
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,173 @@
|
|
1
|
+
module Internal
|
2
|
+
def self.read_ruby(file)
|
3
|
+
# TODO write a ruby script that'll list and sort all files so they can be read
|
4
|
+
`
|
5
|
+
fetch('medias/rubies/'+#{file})
|
6
|
+
.then(response => response.text())
|
7
|
+
.then(text => Opal.eval(text))
|
8
|
+
`
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.read_text(file)
|
12
|
+
`
|
13
|
+
fetch('medias/rubies/'+#{file})
|
14
|
+
.then(response => response.text())
|
15
|
+
.then(text => console.log(text))
|
16
|
+
`
|
17
|
+
end
|
18
|
+
|
19
|
+
def text_data(value)
|
20
|
+
@html_object.text = value
|
21
|
+
end
|
22
|
+
|
23
|
+
def animator_data(value)
|
24
|
+
puts "send params to animation engine#{value}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def _data(value)
|
28
|
+
#dummy method to handle atome with no type
|
29
|
+
end
|
30
|
+
|
31
|
+
def html_drag_helper(atome, options, parent = nil)
|
32
|
+
drag_id = atome.id
|
33
|
+
options[:max] = options[:max].to_n
|
34
|
+
`current_obj = Opal.Utilities.$grab(#{drag_id})`
|
35
|
+
|
36
|
+
`interact('.'+#{drag_id})
|
37
|
+
.draggable({
|
38
|
+
// enable inertial throwing
|
39
|
+
// startAxis: 'y',
|
40
|
+
// lockAxis: 'x',
|
41
|
+
lockAxis: #{options[:lock]},
|
42
|
+
inertia: true,
|
43
|
+
// keep the element within the area of it's parent
|
44
|
+
modifiers: [
|
45
|
+
interact.modifiers.restrictRect({
|
46
|
+
//restriction: 'parent',
|
47
|
+
//restriction: { left: 333 ,right: 90, top: 333, bottom: 30},
|
48
|
+
restriction: #{options[:max]},
|
49
|
+
|
50
|
+
//elementRect: { left: , right: 0, top: 1, bottom: 1 }
|
51
|
+
// endOnly: true,
|
52
|
+
}),
|
53
|
+
|
54
|
+
],
|
55
|
+
// enable autoScroll
|
56
|
+
autoScroll: true,
|
57
|
+
|
58
|
+
listeners: {
|
59
|
+
// call this function on every dragmove event
|
60
|
+
|
61
|
+
// move: dragMoveListener,
|
62
|
+
move: dragMoveListener,
|
63
|
+
// move(event){
|
64
|
+
// console.log('current atome is: '+self.current_obj)
|
65
|
+
// },
|
66
|
+
start(event) {
|
67
|
+
bloc=#{atome.bloc}
|
68
|
+
//TODO: optimise this passing the proc to the drag callback
|
69
|
+
// lets get the current atome Object
|
70
|
+
// self.current_obj = Opal.Utilities.$grab(atome_drag_id)
|
71
|
+
// now get the grab proc
|
72
|
+
//self.proc_meth = current_obj.bloc
|
73
|
+
},
|
74
|
+
// call this function on every dragend event
|
75
|
+
end(event) {
|
76
|
+
|
77
|
+
}
|
78
|
+
}
|
79
|
+
})
|
80
|
+
`
|
81
|
+
|
82
|
+
if options[:fixed]
|
83
|
+
`
|
84
|
+
function allow_drag(target,x,y){
|
85
|
+
|
86
|
+
}
|
87
|
+
`
|
88
|
+
else
|
89
|
+
`
|
90
|
+
function allow_drag(target,x,y){
|
91
|
+
target.style.transform = 'translate(' + x + 'px, ' + y + 'px)'
|
92
|
+
// update the position attributes
|
93
|
+
target.setAttribute('data-x', x)
|
94
|
+
target.setAttribute('data-y', y)
|
95
|
+
}
|
96
|
+
`
|
97
|
+
end
|
98
|
+
|
99
|
+
`
|
100
|
+
function dragMoveListener(event) {
|
101
|
+
const target = event.target
|
102
|
+
// the code below can be conditioned to receive the drag event without moving the object
|
103
|
+
// keep the dragged position in the data-x/data-y attributes
|
104
|
+
const x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx;
|
105
|
+
const y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy
|
106
|
+
// translate the element
|
107
|
+
allow_drag(target,x,y)
|
108
|
+
// CallBack here
|
109
|
+
var object_dragged_id=Opal.Utilities.$grab(target.id)
|
110
|
+
#{atome}.$dragCallback(event.pageX, event.pageY, event.rect.left, event.rect.top, #{atome},object_dragged_id, bloc);
|
111
|
+
}
|
112
|
+
`
|
113
|
+
end
|
114
|
+
|
115
|
+
def drag_remove_true(current_atome)
|
116
|
+
current_atome.target.each do |value|
|
117
|
+
atome_found = grab(value)
|
118
|
+
# we get the id of the drag and ad add it as a html class to all children so they become draggable
|
119
|
+
# atome_found.html_object.remove_class(id)
|
120
|
+
atome_found.html_object.remove_class(current_atome.id)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def shape_remove_drag(atome)
|
125
|
+
class_to_remove = atome.drag.id
|
126
|
+
atome.html_object.remove_class(class_to_remove)
|
127
|
+
end
|
128
|
+
|
129
|
+
def dragCallback(page_x, page_y, x, y, current_object, object_dragged_id, proc = nil)
|
130
|
+
dragged_atome = grab(object_dragged_id.id)
|
131
|
+
dragged_atome.instance_variable_set('@left', x)
|
132
|
+
dragged_atome.instance_variable_set('@top', y)
|
133
|
+
current_object.instance_exec({ x: page_x, y: page_y }, &proc) if proc.is_a?(Proc)
|
134
|
+
end
|
135
|
+
|
136
|
+
def constraint_helper(params, current_atome, option)
|
137
|
+
options = {}
|
138
|
+
current_atome.particles.each do |particle, value|
|
139
|
+
options[particle] = value if (particle != :id && particle != :render && particle != :child && particle != :html_type && particle != :type && particle != :html_object && particle != :target)
|
140
|
+
end
|
141
|
+
options = options.merge({ option => params[:value] })
|
142
|
+
current_atome.target.each do |value|
|
143
|
+
atome_found = grab(value)
|
144
|
+
# we get the id of the drag and ad add it as a html class to all children so they become draggable
|
145
|
+
atome_found.html_object.remove_class(current_atome.id)
|
146
|
+
atome_found.html_object.add_class(current_atome.id)
|
147
|
+
html_drag_helper(current_atome, options)
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
def html_decision(html_type, value, id)
|
153
|
+
case html_type
|
154
|
+
when :style
|
155
|
+
# remove previous class if the are of the same type of the type, example:
|
156
|
+
# if there's a color already assign we remove it to allow the new one to be visible
|
157
|
+
# comment / uncomment below if we need to remove class or not
|
158
|
+
html_parent = grab(value).instance_variable_get("@html_object")
|
159
|
+
html_parent.class_names.each do |class_name|
|
160
|
+
if $document[class_name] && $document[class_name].attributes[:atome]
|
161
|
+
class_to_remove = $document[class_name].attributes[:id]
|
162
|
+
html_parent.remove_class(class_to_remove)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
$document[value].add_class(id)
|
166
|
+
when :unset
|
167
|
+
else
|
168
|
+
@html_object.append_to($document[value])
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Atome
|
4
|
+
def ping(address, my_proc: false)
|
5
|
+
# if RUBY_ENGINE.downcase != 'opal'
|
6
|
+
def up?(host, my_proc)
|
7
|
+
check = Net::Ping::External.new(host)
|
8
|
+
if check.ping?
|
9
|
+
puts "ping respond!! "
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
chost = address
|
14
|
+
puts up?(chost, my_proc) # prints "true" if ping replies
|
15
|
+
# end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Utilities
|
4
|
+
module Utilities
|
5
|
+
@atome_list = []
|
6
|
+
@particle_list = []
|
7
|
+
@renderer_list = [:html, :headless, :server]
|
8
|
+
|
9
|
+
|
10
|
+
def self.renderer_list(atome = nil)
|
11
|
+
@renderer_list
|
12
|
+
end
|
13
|
+
def self.atome_list(atome = nil)
|
14
|
+
# this method is used to hold all available type of atomes
|
15
|
+
if atome
|
16
|
+
instance_variable_get('@atome_list').push(atome)
|
17
|
+
else
|
18
|
+
instance_variable_get('@atome_list')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
def self.particle_list(particle = nil)
|
24
|
+
# this method is used to hold all available type of particles
|
25
|
+
if particle
|
26
|
+
instance_variable_get('@particle_list').push(particle)
|
27
|
+
else
|
28
|
+
instance_variable_get('@particle_list')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.grab(params)
|
33
|
+
Universe.atomes[params]
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
end
|