isomorfeus-react 16.13.11 → 16.13.12

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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -1
  3. data/lib/isomorfeus/react/config.rb +189 -189
  4. data/lib/isomorfeus/react/memcached_component_cache.rb +19 -19
  5. data/lib/isomorfeus/react/redis_component_cache.rb +19 -19
  6. data/lib/isomorfeus/react/thread_local_component_cache.rb +15 -15
  7. data/lib/isomorfeus/react_view_helper.rb +231 -231
  8. data/lib/isomorfeus/top_level.rb +103 -103
  9. data/lib/isomorfeus/top_level_ssr.rb +42 -42
  10. data/lib/isomorfeus-react-material-ui.rb +4 -4
  11. data/lib/isomorfeus-react-native.rb +5 -5
  12. data/lib/isomorfeus-react-paper.rb +4 -4
  13. data/lib/isomorfeus-react.rb +120 -120
  14. data/lib/isomorfeus_react/lucid_app/api.rb +26 -26
  15. data/lib/isomorfeus_react/lucid_app/base.rb +7 -7
  16. data/lib/isomorfeus_react/lucid_app/mixin.rb +23 -23
  17. data/lib/isomorfeus_react/lucid_app/native_component_constructor.rb +48 -48
  18. data/lib/isomorfeus_react/lucid_app/native_lucid_component_constructor.rb +94 -95
  19. data/lib/isomorfeus_react/lucid_component/api.rb +75 -75
  20. data/lib/isomorfeus_react/lucid_component/app_store_proxy.rb +37 -37
  21. data/lib/isomorfeus_react/lucid_component/base.rb +7 -7
  22. data/lib/isomorfeus_react/lucid_component/class_store_proxy.rb +44 -44
  23. data/lib/isomorfeus_react/lucid_component/initializer.rb +14 -14
  24. data/lib/isomorfeus_react/lucid_component/instance_store_proxy.rb +44 -44
  25. data/lib/isomorfeus_react/lucid_component/mixin.rb +22 -22
  26. data/lib/isomorfeus_react/lucid_component/native_component_constructor.rb +35 -35
  27. data/lib/isomorfeus_react/lucid_component/native_lucid_component_constructor.rb +82 -83
  28. data/lib/isomorfeus_react/lucid_component/styles_api.rb +34 -34
  29. data/lib/isomorfeus_react/lucid_func/base.rb +7 -7
  30. data/lib/isomorfeus_react/lucid_func/initializer.rb +11 -11
  31. data/lib/isomorfeus_react/lucid_func/mixin.rb +18 -18
  32. data/lib/isomorfeus_react/lucid_func/native_component_constructor.rb +81 -81
  33. data/lib/isomorfeus_react/react/function_component/api.rb +105 -105
  34. data/lib/isomorfeus_react/react/function_component/base.rb +8 -8
  35. data/lib/isomorfeus_react/react/function_component/initializer.rb +10 -10
  36. data/lib/isomorfeus_react/react/function_component/mixin.rb +17 -17
  37. data/lib/isomorfeus_react/react/function_component/native_component_constructor.rb +48 -48
  38. data/lib/isomorfeus_react/react/memo_component/base.rb +8 -8
  39. data/lib/isomorfeus_react/react/memo_component/mixin.rb +17 -17
  40. data/lib/isomorfeus_react/react/memo_component/native_component_constructor.rb +49 -49
  41. data/lib/isomorfeus_react_material/lucid_material/app/base.rb +8 -8
  42. data/lib/isomorfeus_react_material/lucid_material/app/mixin.rb +20 -20
  43. data/lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb +50 -50
  44. data/lib/isomorfeus_react_material/lucid_material/component/base.rb +9 -9
  45. data/lib/isomorfeus_react_material/lucid_material/component/mixin.rb +19 -19
  46. data/lib/isomorfeus_react_material/lucid_material/component/native_component_constructor.rb +36 -36
  47. data/lib/isomorfeus_react_material/lucid_material/func/base.rb +9 -9
  48. data/lib/isomorfeus_react_material/lucid_material/func/mixin.rb +15 -15
  49. data/lib/isomorfeus_react_material/lucid_material/func/native_component_constructor.rb +83 -83
  50. data/lib/isomorfeus_react_paper/lucid_paper/app/base.rb +9 -9
  51. data/lib/isomorfeus_react_paper/lucid_paper/app/mixin.rb +19 -19
  52. data/lib/isomorfeus_react_paper/lucid_paper/app/native_component_constructor.rb +32 -32
  53. data/lib/isomorfeus_react_paper/lucid_paper/component/base.rb +9 -9
  54. data/lib/isomorfeus_react_paper/lucid_paper/component/mixin.rb +18 -18
  55. data/lib/isomorfeus_react_paper/lucid_paper/component/native_component_constructor.rb +25 -25
  56. data/lib/isomorfeus_react_paper/lucid_paper/func/base.rb +9 -9
  57. data/lib/isomorfeus_react_paper/lucid_paper/func/mixin.rb +14 -14
  58. data/lib/isomorfeus_react_paper/lucid_paper/func/native_component_constructor.rb +71 -71
  59. data/lib/lucid_app/context.rb +7 -7
  60. data/lib/lucid_prop_declaration/mixin.rb +126 -126
  61. data/lib/react/children.rb +34 -34
  62. data/lib/react/component/api.rb +134 -134
  63. data/lib/react/component/base.rb +8 -8
  64. data/lib/react/component/callbacks.rb +115 -115
  65. data/lib/react/component/elements.rb +60 -60
  66. data/lib/react/component/features.rb +48 -48
  67. data/lib/react/component/history.rb +69 -65
  68. data/lib/react/component/initializer.rb +11 -11
  69. data/lib/react/component/location.rb +19 -15
  70. data/lib/react/component/match.rb +35 -31
  71. data/lib/react/component/mixin.rb +20 -20
  72. data/lib/react/component/native_component_constructor.rb +69 -70
  73. data/lib/react/component/props.rb +83 -83
  74. data/lib/react/component/resolution.rb +97 -97
  75. data/lib/react/component/state.rb +58 -54
  76. data/lib/react/component/styles.rb +66 -66
  77. data/lib/react/context_wrapper.rb +48 -44
  78. data/lib/react/native_constant_wrapper.rb +29 -29
  79. data/lib/react/ref.rb +16 -12
  80. data/lib/react/synthetic_event.rb +52 -52
  81. data/lib/react/version.rb +3 -3
  82. data/lib/react.rb +296 -296
  83. data/lib/react_dom.rb +41 -41
  84. data/lib/react_dom_server.rb +18 -18
  85. data/lib/react_native/component/elements.rb +203 -203
  86. data/lib/react_native/lucid_app/react_native_component_constructor.rb +51 -51
  87. data/lib/react_native/lucid_component/react_native_component_constructor.rb +37 -37
  88. data/lib/react_native/lucid_func/react_native_component_constructor.rb +82 -82
  89. data/lib/react_native/react.rb +120 -120
  90. metadata +23 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02a760c7e31fcd4fc03396b90831133ff8bfc02bf7602bd337ebe554b3778150
4
- data.tar.gz: a87209a7b20d8b88b5d9ea4f2a1306edcec75a090ecc38578ee697ad2e3139bf
3
+ metadata.gz: d8f9816e2fafdce848a3c954dee14a9afbb099af1a9d5969b60745890cb7d68f
4
+ data.tar.gz: 33711bec7c6eaaac3e03054059fc156cbe0965bb852ec613365ef0e9667d8201
5
5
  SHA512:
6
- metadata.gz: c4fa758232d69952fffa9f6c0e586cb96ae537232d788018cc13c6e64f636945566fae50d9cfc4befb83a69d7d3adfd74c8ced3b452b256ad8f64d5e24285538
7
- data.tar.gz: 836d76d4dd5522925cbae401283757d59969c512e71e7992602c98e4ed69918047addf7ebc6e661c5ac6153bcfae3747fc03b1533140f29244ea243bdfe61c55
6
+ metadata.gz: '0378cf74b5a5ad0847b17d390858573fbefffab89d5b24a773236e7d1ff5c06d68b04619851f2404e7b15bd697864b6546119cfd269a36bbb819682e4c7a00a1'
7
+ data.tar.gz: 39d4e06a48451fe2cc647a97ca9680356531811bbb607b9490d1bef1de4ab0cc2c9a7b0ebdc6d8cbca7a81ece7aaaf11fe005cf79aeb55cbdc34aa3af488c8f0
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # isomorfeus-react
2
2
 
3
+ Isomorfeus-react is obsolete, superseded by [isomorfeus-preact](https://github.com/isomorfeus/isomorfeus-preact)
4
+ leo.or
3
5
  Develop React components for Opal Ruby along with very easy to use and advanced React-Redux Components.
4
6
 
5
7
  ## Community and Support
@@ -9,7 +11,7 @@ At the [Isomorfeus Framework Project](http://isomorfeus.com)
9
11
  isomorfeus-react version follows the React version which features and API it implements.
10
12
 
11
13
  ### React
12
- Isomorfeus-react 16.13.x implements features and the API of React 16.13 and should be used with React 16.13
14
+ Isomorfeus-react 17.0.x implements features and the API of React 17.0.x and should be used with React 17.0.x
13
15
 
14
16
  ## Documentation
15
17
 
@@ -1,189 +1,189 @@
1
- module Isomorfeus
2
- if RUBY_ENGINE == 'opal'
3
- class << self
4
- attr_accessor :current_user_sid
5
- attr_accessor :initial_state_fetched
6
- attr_accessor :top_component
7
- attr_accessor :ssr_response_status
8
- attr_reader :initialized
9
- attr_reader :env
10
- attr_accessor :zeitwerk
11
-
12
- def init
13
- return if initialized
14
- @initialized = true
15
- Isomorfeus.init_store
16
- execute_init_classes
17
- end
18
-
19
- def force_init!
20
- unless Isomorfeus.initial_state_fetched
21
- Isomorfeus.initial_state_fetched = true
22
- Redux::Store.preloaded_state = Isomorfeus.store.get_state
23
- end
24
- Isomorfeus.force_init_store!
25
- execute_init_classes
26
- end
27
-
28
- def add_client_init_class_name(init_class_name)
29
- client_init_class_names << init_class_name
30
- end
31
-
32
- def add_client_init_after_store_class_name(init_class_name)
33
- client_init_after_store_class_names << init_class_name
34
- end
35
-
36
- def add_client_option(key, value = nil)
37
- self.class.attr_accessor(key)
38
- self.send("#{key}=", value)
39
- end
40
-
41
- # only used for SSR
42
- def cached_component_classes
43
- @cached_component_classes ||= {}
44
- end
45
-
46
- # only used for SSR
47
- def cached_component_class(class_name)
48
- return cached_component_classes[class_name] if cached_component_classes.key?(class_name)
49
- cached_component_classes[class_name] = "::#{class_name}".constantize
50
- end
51
-
52
- def execute_init_classes
53
- client_init_class_names.each do |constant|
54
- constant.constantize.send(:init)
55
- end
56
- end
57
-
58
- def execute_init_after_store_classes
59
- client_init_after_store_class_names.each do |constant|
60
- constant.constantize.send(:init)
61
- end
62
- end
63
-
64
- def env=(env_string)
65
- @env = env_string ? env_string : 'development'
66
- @development = (@env == 'development') ? true : false
67
- @production = (@env == 'production') ? true : false
68
- @test = (@env == 'test') ? true : false
69
- end
70
-
71
- def development?
72
- @development
73
- end
74
-
75
- def production?
76
- @production
77
- end
78
-
79
- def test?
80
- @test
81
- end
82
-
83
- def start_app!
84
- Isomorfeus.zeitwerk.setup
85
- Isomorfeus::TopLevel.mount!
86
- end
87
-
88
- def force_render
89
- begin
90
- if Isomorfeus.top_component
91
- ReactDOM.find_dom_node(Isomorfeus.top_component) if on_browser? || on_desktop? # if not mounted will raise
92
- if `typeof Opal.global.deepForceUpdate === 'undefined'`
93
- Isomorfeus.top_component.JS.forceUpdate()
94
- else
95
- `Opal.global.deepForceUpdate(#{Isomorfeus.top_component})`
96
- end
97
- end
98
- rescue Exception => e
99
- # TODO try mount first
100
- # if it fails
101
- `console.error("force_render failed'! Error: " + #{e.message} + "! Reloading page.")`
102
- `location.reload()` if on_browser?
103
- end
104
- nil
105
- end
106
- end
107
-
108
- self.add_client_option(:client_init_class_names, [])
109
- self.add_client_option(:client_init_after_store_class_names, [])
110
- else
111
- class << self
112
- attr_reader :component_cache_init_block
113
- attr_accessor :server_side_rendering
114
- attr_accessor :ssr_hot_asset_url
115
- attr_reader :env
116
- attr_accessor :zeitwerk
117
- attr_accessor :zeitwerk_lock
118
-
119
- def component_cache_init(&block)
120
- @component_cache_init_block = block
121
- end
122
-
123
- def configuration(&block)
124
- block.call(self)
125
- end
126
-
127
- def env=(env_string)
128
- @env = env_string ? env_string.to_s : 'development'
129
- @development = (@env == 'development') ? true : false
130
- @production = (@env == 'production') ? true : false
131
- @test = (@env == 'test') ? true : false
132
- end
133
-
134
- def development?
135
- @development
136
- end
137
-
138
- def production?
139
- @production
140
- end
141
-
142
- def test?
143
- @test
144
- end
145
-
146
- def ssr_contexts
147
- @ssr_contexts ||= {}
148
- end
149
-
150
- def version
151
- Isomorfeus::VERSION
152
- end
153
-
154
- def load_configuration(directory)
155
- Dir.glob(File.join(directory, '*.rb')).sort.each do |file|
156
- require File.expand_path(file)
157
- end
158
- end
159
- end
160
- end
161
-
162
- class << self
163
- def raise_error(error_class: nil, message: nil, stack: nil)
164
- error_class = RuntimeError unless error_class
165
- execution_environment = if on_browser? then 'on Browser'
166
- elsif on_ssr? then 'in Server Side Rendering'
167
- elsif on_server? then 'on Server'
168
- elsif on_mobile? then 'on Mobile'
169
- elsif on_database? then 'on Database'
170
- else
171
- 'on Client'
172
- end
173
- error = error_class.new("Isomorfeus in #{env} #{execution_environment}:\n#{message}")
174
- error.set_backtrace(stack) if stack
175
-
176
- if Isomorfeus.development?
177
- if RUBY_ENGINE == 'opal'
178
- ecn = error_class ? error_class.name : ''
179
- m = message ? message : ''
180
- s = stack ? stack : ''
181
- `console.error(ecn, m, s)`
182
- else
183
- STDERR.puts "#{ecn}: #{m}\n #{s}"
184
- end
185
- end
186
- raise error
187
- end
188
- end
189
- end
1
+ module Isomorfeus
2
+ if RUBY_ENGINE == 'opal'
3
+ class << self
4
+ attr_accessor :current_user_sid
5
+ attr_accessor :initial_state_fetched
6
+ attr_accessor :top_component
7
+ attr_accessor :ssr_response_status
8
+ attr_reader :initialized
9
+ attr_reader :env
10
+ attr_accessor :zeitwerk
11
+
12
+ def init
13
+ return if initialized
14
+ @initialized = true
15
+ Isomorfeus.init_store
16
+ execute_init_classes
17
+ end
18
+
19
+ def force_init!
20
+ unless Isomorfeus.initial_state_fetched
21
+ Isomorfeus.initial_state_fetched = true
22
+ Redux::Store.preloaded_state = Isomorfeus.store.get_state
23
+ end
24
+ Isomorfeus.force_init_store!
25
+ execute_init_classes
26
+ end
27
+
28
+ def add_client_init_class_name(init_class_name)
29
+ client_init_class_names << init_class_name
30
+ end
31
+
32
+ def add_client_init_after_store_class_name(init_class_name)
33
+ client_init_after_store_class_names << init_class_name
34
+ end
35
+
36
+ def add_client_option(key, value = nil)
37
+ self.class.attr_accessor(key)
38
+ self.send("#{key}=", value)
39
+ end
40
+
41
+ # only used for SSR
42
+ def cached_component_classes
43
+ @cached_component_classes ||= {}
44
+ end
45
+
46
+ # only used for SSR
47
+ def cached_component_class(class_name)
48
+ return cached_component_classes[class_name] if cached_component_classes.key?(class_name)
49
+ cached_component_classes[class_name] = "::#{class_name}".constantize
50
+ end
51
+
52
+ def execute_init_classes
53
+ client_init_class_names.each do |constant|
54
+ constant.constantize.send(:init)
55
+ end
56
+ end
57
+
58
+ def execute_init_after_store_classes
59
+ client_init_after_store_class_names.each do |constant|
60
+ constant.constantize.send(:init)
61
+ end
62
+ end
63
+
64
+ def env=(env_string)
65
+ @env = env_string ? env_string : 'development'
66
+ @development = (@env == 'development') ? true : false
67
+ @production = (@env == 'production') ? true : false
68
+ @test = (@env == 'test') ? true : false
69
+ end
70
+
71
+ def development?
72
+ @development
73
+ end
74
+
75
+ def production?
76
+ @production
77
+ end
78
+
79
+ def test?
80
+ @test
81
+ end
82
+
83
+ def start_app!
84
+ Isomorfeus.zeitwerk.setup
85
+ Isomorfeus::TopLevel.mount!
86
+ end
87
+
88
+ def force_render
89
+ begin
90
+ if Isomorfeus.top_component
91
+ ReactDOM.find_dom_node(Isomorfeus.top_component) if on_browser? || on_desktop? # if not mounted will raise
92
+ if `typeof Opal.global.deepForceUpdate === 'undefined'`
93
+ Isomorfeus.top_component.JS.forceUpdate()
94
+ else
95
+ `Opal.global.deepForceUpdate(#{Isomorfeus.top_component})`
96
+ end
97
+ end
98
+ rescue Exception => e
99
+ # TODO try mount first
100
+ # if it fails
101
+ `console.error("force_render failed'! Error: " + #{e.message} + "! Reloading page.")`
102
+ `location.reload()` if on_browser?
103
+ end
104
+ nil
105
+ end
106
+ end
107
+
108
+ self.add_client_option(:client_init_class_names, [])
109
+ self.add_client_option(:client_init_after_store_class_names, [])
110
+ else
111
+ class << self
112
+ attr_reader :component_cache_init_block
113
+ attr_accessor :server_side_rendering
114
+ attr_accessor :ssr_hot_asset_url
115
+ attr_reader :env
116
+ attr_accessor :zeitwerk
117
+ attr_accessor :zeitwerk_lock
118
+
119
+ def component_cache_init(&block)
120
+ @component_cache_init_block = block
121
+ end
122
+
123
+ def configuration(&block)
124
+ block.call(self)
125
+ end
126
+
127
+ def env=(env_string)
128
+ @env = env_string ? env_string.to_s : 'development'
129
+ @development = (@env == 'development') ? true : false
130
+ @production = (@env == 'production') ? true : false
131
+ @test = (@env == 'test') ? true : false
132
+ end
133
+
134
+ def development?
135
+ @development
136
+ end
137
+
138
+ def production?
139
+ @production
140
+ end
141
+
142
+ def test?
143
+ @test
144
+ end
145
+
146
+ def ssr_contexts
147
+ @ssr_contexts ||= {}
148
+ end
149
+
150
+ def version
151
+ Isomorfeus::VERSION
152
+ end
153
+
154
+ def load_configuration(directory)
155
+ Dir.glob(File.join(directory, '*.rb')).sort.each do |file|
156
+ require File.expand_path(file)
157
+ end
158
+ end
159
+ end
160
+ end
161
+
162
+ class << self
163
+ def raise_error(error_class: nil, message: nil, stack: nil)
164
+ error_class = RuntimeError unless error_class
165
+ execution_environment = if on_browser? then 'on Browser'
166
+ elsif on_ssr? then 'in Server Side Rendering'
167
+ elsif on_server? then 'on Server'
168
+ elsif on_mobile? then 'on Mobile'
169
+ elsif on_database? then 'on Database'
170
+ else
171
+ 'on Client'
172
+ end
173
+ error = error_class.new("Isomorfeus in #{env} #{execution_environment}:\n#{message}")
174
+ error.set_backtrace(stack) if stack
175
+
176
+ if Isomorfeus.development?
177
+ if RUBY_ENGINE == 'opal'
178
+ ecn = error_class ? error_class.name : ''
179
+ m = message ? message : ''
180
+ s = stack ? stack : ''
181
+ `console.error(ecn, m, s)`
182
+ else
183
+ STDERR.puts "#{ecn}: #{m}\n #{s}"
184
+ end
185
+ end
186
+ raise error
187
+ end
188
+ end
189
+ end
@@ -1,19 +1,19 @@
1
- module Isomorfeus
2
- module Professional
3
- class MemcachedComponentCache
4
- def initialize(*args)
5
- @dalli_client = Dalli::Client.new(*args)
6
- end
7
-
8
- def fetch(key)
9
- json = @dalli_client.get(key)
10
- Oj.load(json, mode: :strict)
11
- end
12
-
13
- def store(key, rendered_tree, response_status, styles)
14
- json = Oj.dump([rendered_tree, response_status, styles], mode: :strict)
15
- @dalli_client.set(key, json)
16
- end
17
- end
18
- end
19
- end
1
+ module Isomorfeus
2
+ module Professional
3
+ class MemcachedComponentCache
4
+ def initialize(*args)
5
+ @dalli_client = Dalli::Client.new(*args)
6
+ end
7
+
8
+ def fetch(key)
9
+ json = @dalli_client.get(key)
10
+ Oj.load(json, mode: :strict)
11
+ end
12
+
13
+ def store(key, rendered_tree, response_status, styles)
14
+ json = Oj.dump([rendered_tree, response_status, styles], mode: :strict)
15
+ @dalli_client.set(key, json)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,19 +1,19 @@
1
- module Isomorfeus
2
- module Professional
3
- class RedisComponentCache
4
- def initialize(*args)
5
- @redis_client = Redis.new(@args)
6
- end
7
-
8
- def fetch(key)
9
- json = @redis_client.get(key)
10
- Oj.load(json, mode: :strict)
11
- end
12
-
13
- def store(key, rendered_tree, response_status, styles)
14
- json = Oj.dump([rendered_tree, response_status, styles], mode: :strict)
15
- @redis_client.set(key, json)
16
- end
17
- end
18
- end
19
- end
1
+ module Isomorfeus
2
+ module Professional
3
+ class RedisComponentCache
4
+ def initialize(*args)
5
+ @redis_client = Redis.new(@args)
6
+ end
7
+
8
+ def fetch(key)
9
+ json = @redis_client.get(key)
10
+ Oj.load(json, mode: :strict)
11
+ end
12
+
13
+ def store(key, rendered_tree, response_status, styles)
14
+ json = Oj.dump([rendered_tree, response_status, styles], mode: :strict)
15
+ @redis_client.set(key, json)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,15 +1,15 @@
1
- module Isomorfeus
2
- class ThreadLocalComponentCache
3
- def initialize
4
- Thread.current[:local_cache] = {} unless Thread.current.key?(:local_cache)
5
- end
6
-
7
- def fetch(key)
8
- Thread.current[:local_cache][key]
9
- end
10
-
11
- def store(key, rendered_tree, response_status, styles)
12
- Thread.current[:local_cache][key] = [rendered_tree, response_status, styles]
13
- end
14
- end
15
- end
1
+ module Isomorfeus
2
+ class ThreadLocalComponentCache
3
+ def initialize
4
+ Thread.current[:local_cache] = {} unless Thread.current.key?(:local_cache)
5
+ end
6
+
7
+ def fetch(key)
8
+ Thread.current[:local_cache][key]
9
+ end
10
+
11
+ def store(key, rendered_tree, response_status, styles)
12
+ Thread.current[:local_cache][key] = [rendered_tree, response_status, styles]
13
+ end
14
+ end
15
+ end