atome 0.5.5.6.9 → 0.5.5.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 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