atome 0.5.5.6.9 → 0.5.5.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a905162a755c4deb4bcbd8d7ec8504bb8ad4b3ac123e9846633a95f92e24fdd0
4
- data.tar.gz: 5d7214da310e2b2e7632d1faf583274932a60209afba739b77990bd10f34b41b
3
+ metadata.gz: e0ffae09a6b7268d835b684c007438ebad68d883f57fe0c0b73fa7342da7cb88
4
+ data.tar.gz: e029768893e7b6c610898637f9276f410cd15a66978bfa20c77f0e8c30c317a0
5
5
  SHA512:
6
- metadata.gz: a743c4f73769c7dfb5c6667899f97ad2bd474696dcebff791097375c7d5a35e50958fefc8de07fc85e2d82a322bb23163a499aef4130a16aa26edb05857ec430
7
- data.tar.gz: a81d9d618478984eae77511aaee26773852c574dbaea6cd6cead4920ea522fa92aed0709e1a2c43a474ac227983f7bc012e86d1e1204067b4463f4b1ddbe742a
6
+ metadata.gz: aacfa23147637a539a09dfe63115b1d53a1a386968d908a860694d4849c049f85b500d5d5abd480283b0a98a85694456f7c37f7b0d187d8eda797b658dbb25a2
7
+ data.tar.gz: 06ac2bc244a5cab24555c58f8850f8fdaba7fe3467f342bee71286da2ef136e7a7ab6b0660a3e599e1dfa2c081f494b11914578153c51e4d556e04c050985eef
data/atome.gemspec CHANGED
@@ -6,13 +6,13 @@ Gem::Specification.new do |spec|
6
6
  spec.name = 'atome'
7
7
  spec.version = Atome::VERSION
8
8
  spec.authors = ['Jean-Eric Godard']
9
- spec.email = ['jeezs@atopme.one']
9
+ spec.email = ['jeezs@atome.one']
10
10
 
11
11
  spec.summary = 'the creative framework'
12
12
  spec.description = 'the creative framework.'
13
13
  spec.homepage = 'https://atome.one'
14
14
  spec.license = 'MIT'
15
- spec.required_ruby_version = '>= 3.1'
15
+ spec.required_ruby_version = '>= 3.3'
16
16
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
17
17
 
18
18
  spec.metadata['homepage_uri'] = spec.homepage
@@ -32,11 +32,12 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ['lib']
34
34
 
35
- spec.add_runtime_dependency 'arduino_firmata', '~> 0.3'
35
+ # spec.add_runtime_dependency 'arduino_firmata', '~> 0.3'
36
36
  spec.add_runtime_dependency 'eventmachine', '~> 1.2.7'
37
37
  spec.add_runtime_dependency 'faye-websocket', '~> 0.1'
38
38
  spec.add_runtime_dependency 'geocoder', '~> 1.8'
39
39
  spec.add_runtime_dependency 'guard', '~> 2.1'
40
+ # # spec.add_runtime_dependency 'guard', '2.1'
40
41
  spec.add_runtime_dependency 'guard-rake', '~> 1.0'
41
42
  spec.add_runtime_dependency 'image_size', '~> 3.0'
42
43
  spec.add_runtime_dependency 'mail', '~> 2.1'
@@ -60,8 +61,6 @@ Gem::Specification.new do |spec|
60
61
  spec.add_runtime_dependency 'tzinfo-data', '~> 1.2023.4'
61
62
 
62
63
 
63
-
64
-
65
64
  # Uncomment to register a new dependency of your gem
66
65
  # spec.add_dependency "example-gem", "~> 1.0"
67
66
 
data/exe/atome CHANGED
@@ -9,10 +9,8 @@ require 'opal'
9
9
  require 'parser'
10
10
  require 'uglifier'
11
11
 
12
-
13
12
  # utils
14
13
 
15
-
16
14
  def modify_and_copy_file(source_path, destination_path, destination_dir)
17
15
 
18
16
  file_content = File.read(source_path)
@@ -335,12 +333,12 @@ def wasm_initialize (source, destination, project_name, wasi_source)
335
333
  system(command)
336
334
  end
337
335
 
338
- def guard_check
339
- loop do
340
- sleep 1
341
- end
342
- nil unless ARGV.include?('guard')
343
- end
336
+ # def guard_check
337
+ # # loop do
338
+ # # sleep 1
339
+ # # end
340
+ # nil unless ARGV.include?('guard')
341
+ # end
344
342
 
345
343
  def build_for_wasm(source, destination, project_name, wasi_file)
346
344
  wasm_initialize(source, destination, project_name, wasi_file)
@@ -429,38 +427,43 @@ src/favicon.ico src/index.html src/index_opal.html src/index_server.html src/ind
429
427
  end
430
428
 
431
429
  if ARGV.include?('guard')
432
- Thread.new do
433
- sleep 1.2
434
- Dir.chdir("./#{location}") do
435
- `guard`
436
- end
430
+ # puts "guarding"
431
+ # sleep 1.2
432
+ Dir.chdir("./#{location}") do
433
+ `bundle exec guard`
437
434
  end
435
+ # end
438
436
  end
439
437
 
440
438
  if ARGV.include?('run')
441
-
442
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
443
- # code to exec with Windows
444
- current_path = `cd`.chomp
445
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
446
- # code to exec with MacOS
447
- current_path = `pwd`.chomp
448
- else
449
- # code to exec with Unix/Linux
450
- current_path = `pwd`.chomp
451
- end
452
- segments = current_path.split("/")
439
+ current_path = if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
440
+ # code to exec with Windows
441
+ `cd`.chomp
442
+ elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
443
+ # code to exec with MacOS
444
+ `pwd`.chomp
445
+ else
446
+ # code to exec with Unix/Linux
447
+ `pwd`.chomp
448
+ end
449
+ segments = current_path.split('/')
453
450
  project_name = segments.last
454
- destination = segments[0...-1].join("/")
451
+ destination = segments[0...-1].join('/')
455
452
  case ARGV[1]
456
453
  when 'opal'
454
+ puts 'building Opal'
457
455
  build_opal_application(nil, destination, project_name)
456
+ # build host_mode
457
+ build_host_mode(destination, project_name, 'web-opal')
458
+ # build Opal extensions
458
459
  `open #{destination}/#{project_name}/src/index_opal.html`
459
460
  when 'wasm' # osx wasi
461
+ puts 'building Ruby wasm'
460
462
  wasi_file = 'wasi-vfs-osx_arm'
461
463
  wasm_common(source, destination, project_name, wasi_file, :pure_wasi)
462
464
  `open #{current_path}/src/index.html`
463
465
  when 'server'
466
+ puts 'building Server'
464
467
  build_opal_application(nil, destination, project_name)
465
468
  threads = []
466
469
  threads << Thread.new do
@@ -480,23 +483,31 @@ if ARGV.include?('run')
480
483
  end
481
484
  build_for_server(destination, project_name, 9292, :production)
482
485
  when 'osx'
486
+ puts 'building osx'
483
487
  wasi_file = 'wasi-vfs-osx_arm'
484
488
  wasm_common(source, destination, project_name, wasi_file, :tauri)
485
489
  build_for_osx(destination)
486
490
  when 'android'
491
+ puts 'building Android'
492
+
487
493
  # to be filled
488
494
  when 'ios'
495
+ puts 'building iOS'
496
+
489
497
  # to be filled
490
498
  when 'windows'
499
+ puts 'building Windows'
491
500
  # to be filled
492
501
  when 'linux'
502
+ puts 'building Linux'
493
503
  # to be filled
494
504
  when 'freebsd'
505
+ puts 'building Freebsd'
495
506
  # to be filled
496
507
  else
508
+ puts 'building Default(Ruby Wasm)'
497
509
  wasi_file = 'wasi-vfs-osx_arm'
498
510
  wasm_common(source, destination, project_name, wasi_file, 'pure_wasm')
499
-
500
511
  if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
501
512
  # code to exec with Windows
502
513
  `start "" "#{current_path}\\src\\index.html"`
@@ -512,9 +523,22 @@ if ARGV.include?('run')
512
523
 
513
524
  end
514
525
 
515
-
516
526
  # if ARGV.include?('build')
517
- # puts "kool"
527
+ # # project_name = segments.last
528
+ # puts "( source: #{source}, destination: #{destination}, project_name: #{project_name})"
529
+ # # build_opal_library(source, destination, project_name)
530
+ # # build parser
531
+ # # build_opal_parser(source, destination, project_name)
532
+ # # # build atome kernel
533
+ # # build_atome_kernel_for_opal(source, destination, project_name)
534
+ # # # build host_mode
535
+ # # build_host_mode(destination, project_name, 'web-opal')
536
+ # # # build Opal extensions
537
+ # # build_opal_extensions(source, destination, project_name)
538
+ # # # build application
539
+ # # build_opal_application(source, destination, project_name)
518
540
  # # path = found_path('build')
519
541
  # # build_app(path, production)
520
- # end
542
+ # end
543
+
544
+
@@ -44,6 +44,16 @@ Atome.new(
44
44
  red: 0.6, green: 0.6, blue: 0.6, alpha: 1 }
45
45
  )
46
46
 
47
+ Atome.new(
48
+ { renderers: default_render, id: :back_selection, type: :color, tag: ({ system: true, persistent: true }),
49
+ red: 0.6, green: 0.6, blue: 0.1, alpha: 0.7}
50
+ )
51
+
52
+ Atome.new(
53
+ { renderers: default_render, id: :text_selection, type: :color, tag: ({ system: true, persistent: true }),
54
+ red: 0.3, green: 0.3, blue: 0.3, alpha: 0.9}
55
+ )
56
+
47
57
  # system object creation
48
58
  # the black_matter is used to store un materialized atomes
49
59
  Atome.new(
data/lib/atome/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  # return atome version
4
4
  class Atome
5
- VERSION = '0.5.5.6.9'
5
+ VERSION = '0.5.5.7.0'
6
6
  end
@@ -248,9 +248,55 @@ class HTML
248
248
  JS.global[:document][:body].appendChild(@element)
249
249
  add_class('atome')
250
250
  id(id)
251
+ ####
252
+
253
+ # editable_pres = JS.global[:document].querySelectorAll('pre[contenteditable="true"]')
254
+ # editable_pres_array = Array.new(editable_pres[:length].to_i) { |i| editable_pres.call(:item, i) }
255
+ # editable_pres_array.each do |pre|
256
+ # pre.addEventListener('input') do
257
+ # if pre[:innerText].strip == ''
258
+ # pre[:innerHTML] = '&#8203;' # Insère un caractère d'espace insécable
259
+ # end
260
+ # end
261
+ # end
262
+
263
+ # editable_pres = JS.global[:document].querySelectorAll('pre[contenteditable="true"]')
264
+ #
265
+ # editable_pres_array = Array.new(editable_pres[:length].to_i) { |i| editable_pres.call(:item, i) }
266
+ # editable_pres_array.each do |pre|
267
+ # pre.addEventListener('click') do
268
+ # # Focus sur l'élément pour activer le curseur
269
+ # pre.focus()
270
+ # alert :ok
271
+ # # Optionnel : Ajoutez du style pour rendre le curseur plus visible
272
+ # pre[:style][:caretColor] = 'blue' # Changez la couleur du curseur en bleu
273
+ # end
274
+ # end
275
+ ###
251
276
  self
252
277
  end
253
278
 
279
+ def select_text(range)
280
+ # TODO : use atome color object instead of basic css color
281
+ back_color = grab(:back_selection)
282
+ text_color = grab(:text_selection)
283
+
284
+ back_color_rgba = "rgba(#{back_color.red * 255},#{back_color.green * 255},#{back_color.blue * 255}, #{back_color.alpha})"
285
+ text_color_rgba = "rgba(#{text_color.red * 255},#{text_color.green * 255},#{text_color.blue * 255}, #{text_color.alpha})"
286
+
287
+ range = JS.global[:document].createRange()
288
+ range.selectNodeContents(@element)
289
+ selection = JS.global[:window].getSelection()
290
+ selection.removeAllRanges()
291
+ selection.addRange(range)
292
+ @element.focus()
293
+ style = JS.global[:document].createElement('style')
294
+ style[:innerHTML] = "::selection { background-color: #{back_color_rgba}; color: #{text_color_rgba}; }"
295
+ JS.global[:document][:head].appendChild(style)
296
+ return unless @element[:innerText].to_s.length == 1
297
+ @element[:innerHTML] = '&#8203;'
298
+ end
299
+
254
300
  def image(id)
255
301
  # we remove any element if the id already exist
256
302
  check_double(id)
@@ -895,28 +941,30 @@ class HTML
895
941
 
896
942
  def over_enter(_option)
897
943
  @over_enter = @original_atome.instance_variable_get('@over_code')[:enter]
898
- if @over_enter
899
- @over_enter_callback = lambda do |event|
900
- # we use .call instead of instance_eval because instance_eval bring the current object as context
901
- # and it's lead to a problem of context and force the use of grab(:view) when suing atome method such as shape ,
902
- # group etc..
903
- @over_enter.call(event) if @over_enter.is_a?(Proc)
904
- end
905
- @element.addEventListener('mouseenter', @over_enter_callback)
944
+ return unless @over_enter
945
+
946
+ @over_enter_callback = lambda do |event|
947
+ # we use .call instead of instance_eval because instance_eval bring the current object as context
948
+ # and it's lead to a problem of context and force the use of grab(:view) when suing atome method such as shape ,
949
+ # group etc..
950
+ @over_enter.call(event) if @over_enter.is_a?(Proc)
906
951
  end
952
+ @element.addEventListener('mouseenter', @over_enter_callback)
953
+
907
954
  end
908
955
 
909
956
  def over_leave(_option)
910
957
  @over_leave = @original_atome.instance_variable_get('@over_code')[:leave]
911
- if @over_leave
912
- @over_leave_callback = lambda do |event|
913
- # we use .call instead of instance_eval because instance_eval bring the current object as context
914
- # and it's lead to a problem of context and force the use of grab(:view) when suing atome method such as shape ,
915
- # group etc..
916
- @over_leave.call(event) if @over_leave.is_a?(Proc)
917
- end
918
- @element.addEventListener('mouseleave', @over_leave_callback)
958
+ return unless @over_leave
959
+
960
+ @over_leave_callback = lambda do |event|
961
+ # we use .call instead of instance_eval because instance_eval bring the current object as context
962
+ # and it's lead to a problem of context and force the use of grab(:view) when suing atome method such as shape ,
963
+ # group etc..
964
+ @over_leave.call(event) if @over_leave.is_a?(Proc)
919
965
  end
966
+ @element.addEventListener('mouseleave', @over_leave_callback)
967
+
920
968
  end
921
969
 
922
970
  def over_remove(option)
@@ -1030,7 +1078,6 @@ class HTML
1030
1078
 
1031
1079
  end
1032
1080
 
1033
-
1034
1081
  def internet
1035
1082
  JS.eval('return navigator.onLine')
1036
1083
  end
@@ -1098,11 +1145,12 @@ class HTML
1098
1145
  def play_animation(properties)
1099
1146
  puts 'change for standard method : action'
1100
1147
  required_keys = [:from, :to, :duration]
1101
- if properties.is_a?(Hash) && (required_keys - properties.keys).empty?
1102
- animate(properties)
1103
- else
1148
+ unless properties.is_a?(Hash) && (required_keys - properties.keys).empty?
1104
1149
  raise ArgumentError, "Properties must be a hash with :from, :to, and :duration keys"
1105
1150
  end
1151
+
1152
+ animate(properties)
1153
+
1106
1154
  end
1107
1155
 
1108
1156
  def stop_animation
@@ -82,3 +82,9 @@ new({ renderer: :html, method: :import, type: :blob }) do |_params, bloc|
82
82
  end
83
83
 
84
84
  end
85
+
86
+
87
+ new({ renderer: :html, method: :selected, specific: :text }) do |value, &bloc|
88
+ html.select_text(value)
89
+ end
90
+
@@ -0,0 +1,5 @@
1
+ class Atome
2
+ def self.host
3
+ "pure_wasm"
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
1
  # used by guard , see ./Guardfile
2
2
  task :build do
3
- `atome build`
3
+ `atome run opal`
4
4
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Atome.new( { renderers: [:html], attach: [:view],id: :my_test_box, type: :shape, apply: [:shape_color],
4
- left: 120, top: 0, width: 100, smooth: 15, height: 100, overflow: :visible, attached: [], center: true
5
- })
3
+ Atome.new(
4
+ { renderers: [:html], id: :test_box, type: :shape, attach: :view, apply: [:shape_color],
5
+ tag: { system: true }, left: 120, top: 120, bottom: 0, width: 333, height:333, overflow: :auto,
6
+ }
7
+
8
+ )
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ new({particle: :select})
3
4
  t = text :hello
4
5
  t.left(99)
5
6
 
@@ -8,7 +9,9 @@ t.edit(true)
8
9
  b=box
9
10
  b.touch(true) do
10
11
  puts t.data
12
+ t.component({ selected: true })
11
13
  end
14
+
12
15
  # # frozen_string_literal: true
13
16
  #
14
17
  # c = circle({ id: :the_circle, left: 122, color: :orange, drag: { move: true, inertia: true, lock: :start } })
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ new({particle: :select})
4
+ t = text :hello
5
+ t.left(99)
6
+
7
+ t.edit(true)
8
+
9
+ b=box
10
+ b.touch(true) do
11
+ puts t.data
12
+ back_color = grab(:back_selection)
13
+ text_color = grab(:text_selection)
14
+ back_color.red(1)
15
+ back_color.alpha(1)
16
+ text_color.green(1)
17
+ t.component({ selected: true })
18
+ end
@@ -1,14 +1,106 @@
1
- # frozen_string_literal: true
1
+ # frozen_string_literal: true
2
+
3
+ # def atome_common(atome_preset, params)
4
+ # basic_params = { renderers: [] }
5
+ # # TODO : remove Essentials.default_params[atome_preset] || {} as it is
6
+ # # applied twice because preset is now a particle
7
+ # preset_params = Essentials.default_params[atome_preset] || {}
8
+ #
9
+ # basic_params[:type] = preset_params[:type] || :element
10
+ # basic_params[:id] = params[:id] || identity_generator(atome_preset)
11
+ # basic_params[:renderers] = @renderers || preset_params[:renderers]
12
+ # essential_params = basic_params.merge(preset_params)
13
+ # reordered_params = essential_params.reject { |key, _| params.has_key?(key) }
14
+ # params = reordered_params.merge(params)
15
+ #
16
+ # # condition to handle color/shadow/paint atomes that shouldn't be attach to view
17
+ # # TODO : add category for atome( material/physical vs modifier : color, shadow, .. vs shape, image ..)
18
+ # # then add condition same things fo code in genesis new_atome
19
+ # if %i[color shadow paint].include?(atome_preset)
20
+ # unless params[:affect]
21
+ # params[:affect] = if @id == :view
22
+ # [:black_matter]
23
+ # else
24
+ # [@id]
25
+ # end
26
+ # end
27
+ # else
28
+ # params[:attach] = params[:attach] || @id || :view
29
+ # end
30
+ # params
31
+ # end
32
+ #
33
+ # def preset_common(params, &bloc)
34
+ # # if an atome with current id exist we update the ID in the params
35
+ # params[:id] = "#{params[:id]}_#{Universe.atomes.length}" if grab(params[:id])
36
+ # Atome.new(params, &bloc)
37
+ # end
38
+ class EVe
39
+ def initialize
40
+ @atomes = {}
2
41
 
42
+ end
3
43
 
44
+ def atome(atome_to_find)
45
+ @atomes[atome_to_find]
46
+ end
4
47
 
5
- new({particle: :controller}) do |msg|
6
- Atome.controller_sender(msg)
48
+ def input_box(params = {}, &bloc)
49
+ # atome_preset = :box
50
+ # params = atome_common(atome_preset, params)
51
+ # preset_common(params, &bloc)
52
+ height_wanted= 15
53
+ width_wanted= 222
54
+ input_back = Atome.new(
55
+ { renderers: [:html], id: :input_back, type: :shape, attach: :view, apply: [:shape_color],
56
+ left: 120, top: 120, width: width_wanted, height: height_wanted+height_wanted*20/100, smooth: 6})
57
+
58
+ @atomes[:input_back] = input_back
59
+
60
+ Atome.new(
61
+ { renderers: [:html], id: :input_text_color, type: :color, tag: ({ system: true, persistent: true }),
62
+ red: 0.1, green: 0.1, blue: 0.1, alpha: 1 }
63
+ )
64
+
65
+ text_input = Atome.new(
66
+ { renderers: [:html], id: :input_text, type: :text, apply: [:input_text_color],component:{size: height_wanted},
67
+ data: :input, left: height_wanted*20/100, top: 0, edit: true, attach: :input_back , height: height_wanted, position: :absolute})
68
+
69
+ text_input.touch(true) do
70
+ puts text_input.data
71
+ text_input.component({ selected: {color: 'rgba(0,0,0,0.3)', text: :orange} })
72
+ end
73
+ @atomes[:input_text] = text_input
74
+
75
+ input_back
76
+ end
77
+
78
+ end
79
+
80
+ def input_box(params = {}, &proc)
81
+ text_color=:white
82
+ text_size= 12
83
+ back_color= :gray
84
+ width= 2000
85
+ in_b = EVe.new()
86
+ in_b.input_box
87
+
88
+
89
+ # grab(:view).input_box(params, &proc)
7
90
  end
8
91
 
9
92
 
93
+ #######
10
94
 
11
- button = box({smooth: 6,left: 12,top: 120, color:{red: 0.3, green: 0.3, blue: 0.3}})
95
+
96
+
97
+
98
+
99
+ new({particle: :controller}) do |msg|
100
+ Atome.controller_sender(msg)
101
+ end
102
+
103
+ button = box({smooth: 6,left: 12,top: 120, color:{red: 0.3, green: 0.3, blue: 0.3},id: :my_box})
12
104
  button.shadow({
13
105
  id: :s1,
14
106
  left: 3, top: 3, blur: 9,
@@ -50,25 +142,52 @@ end
50
142
  support=box({top: 250, left: 12, width: 300, height: 40, smooth: 9, color:{red: 0.3, green: 0.3, blue: 0.3}, id: :support })
51
143
 
52
144
  support.shadow({
53
- id: :s3,
54
- left: 3, top: 3, blur: 9,
55
- invert: true,
56
- red: 0, green: 0, blue: 0, alpha: 0.7
57
- })
58
- input_element = JS.global[:document].createElement("input")
59
- input_element[:type] = "file"
60
-
61
- input_element.addEventListener("change") do |native_event|
62
- event = Native(native_event)
63
- file = event[:target][:files][0]
64
- if file
65
- puts "file requested: #{file[:name]}"
66
- support.controller({ action: :loadProject, params: { path: file[:name]} })
67
- end
145
+ id: :s3,
146
+ left: 3, top: 3, blur: 9,
147
+ invert: true,
148
+ red: 0, green: 0, blue: 0, alpha: 0.7
149
+ })
150
+ support.import(true) do |content|
151
+ puts "add code here, content: #{content}"
152
+ end
153
+
154
+
155
+ # input_element = JS.global[:document].createElement("input")
156
+ # input_element[:type] = "file"
157
+ #
158
+ # input_element.addEventListener("change") do |native_event|
159
+ # event = Native(native_event)
160
+ # file = event[:target][:files][0]
161
+ # if file
162
+ # puts "file requested: #{file[:name]}"
163
+ # support.controller({ action: :loadProject, params: { path: file[:name]} })
164
+ # end
165
+ # end
166
+ #
167
+ # view_div = JS.global[:document].querySelector("#support")
168
+ #
169
+ # view_div.appendChild(input_element)
170
+
171
+ def fill_toolzone(tools_ids)
172
+
68
173
  end
69
174
 
70
- view_div = JS.global[:document].querySelector("#support")
175
+ fill_toolzone(%i[files edition select group link copy undo settings])
176
+ # clear play paste mix
177
+
178
+
179
+ in_box=input_box
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
71
191
 
72
- view_div.appendChild(input_element)
73
192
 
74
193
 
@@ -16,6 +16,12 @@ html, body {
16
16
  z-index: 0;
17
17
  color: lightgray;
18
18
  }
19
+ pre {
20
+ min-width: 100px;
21
+ margin: 0;
22
+ padding: 0;
23
+ }
24
+
19
25
 
20
26
  .matrix{
21
27
  background-color: blue;
@@ -151,4 +157,6 @@ html, body {
151
157
  /*::-moz-selection {*/
152
158
  /* color: transparent;*/
153
159
  /* background: none;*/
154
- /*}*/
160
+ /*}*/
161
+
162
+
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5.6.9
4
+ version: 0.5.5.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Eric Godard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-27 00:00:00.000000000 Z
11
+ date: 2023-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: arduino_firmata
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.3'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.3'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: eventmachine
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -348,7 +334,7 @@ dependencies:
348
334
  version: 1.2023.4
349
335
  description: the creative framework.
350
336
  email:
351
- - jeezs@atopme.one
337
+ - jeezs@atome.one
352
338
  executables:
353
339
  - atome
354
340
  extensions: []
@@ -488,6 +474,7 @@ files:
488
474
  - sig/matrix.rbs
489
475
  - sig/object.rbs
490
476
  - sig/universe.rbs
477
+ - src/utilities/host_mode.rb
491
478
  - vendor/assets/Guardfile
492
479
  - vendor/assets/Rakefile
493
480
  - vendor/assets/application/examples/a_concat.rb
@@ -552,6 +539,7 @@ files:
552
539
  - vendor/assets/application/examples/resize.rb
553
540
  - vendor/assets/application/examples/scroll.rb
554
541
  - vendor/assets/application/examples/security.rb
542
+ - vendor/assets/application/examples/select_text.rb
555
543
  - vendor/assets/application/examples/selected.rb
556
544
  - vendor/assets/application/examples/shadow.rb
557
545
  - vendor/assets/application/examples/shapes.rb
@@ -736,14 +724,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
736
724
  requirements:
737
725
  - - ">="
738
726
  - !ruby/object:Gem::Version
739
- version: '3.1'
727
+ version: '3.3'
740
728
  required_rubygems_version: !ruby/object:Gem::Requirement
741
729
  requirements:
742
730
  - - ">="
743
731
  - !ruby/object:Gem::Version
744
732
  version: '0'
745
733
  requirements: []
746
- rubygems_version: 3.4.22
734
+ rubygems_version: 3.5.3
747
735
  signing_key:
748
736
  specification_version: 4
749
737
  summary: the creative framework