isomorfeus-react 16.10.12 → 16.10.13

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: 212995320dc44b1d0044e78018b806842eac6f3a9e9de729276cfdece8678547
4
- data.tar.gz: c1b472d9c8e77c452d2f6ebdd479afe798e1a4a6b51e3e7d544066331369be4f
3
+ metadata.gz: 89d11f7a3996ea44b089e50e65bd9e473edeb12cb877599054790db2705caa8a
4
+ data.tar.gz: 90ce6397b467688228cce66dcc0f3b1cd59a0aa15c83dd8ce3f15a3997017750
5
5
  SHA512:
6
- metadata.gz: '00188bcb28282e7ad13198b3b0e3bf2d1faa28895df3a4488e51cb068adbcc27a033fa41c20243f6278b74cd31bdb885b31c793d022c5db841945031d14cd36d'
7
- data.tar.gz: 56313a58b6a58c0c76e01f0e9844555842ce22c28db06f778615ee6d7c38b0326bfa2c57d71171f2a4d0c43447b64971b93e20fc738bc0df15c47fe92fec7318
6
+ metadata.gz: e3bf6b9a9029f53ad7ccdbc674bc166e09b863d7ab088cfcd68c732e1592d2986b514faf6c33e0aa13fa9f12b820f87c11570f46a55fe10130cc87757c423bef
7
+ data.tar.gz: 84450d0bff23041bcadb040107e72f8086c9631f7849a1b889a9a8e903274acb008f185a1dacb1aef7fe5dafef39863293cbad9c89e5dae9545839b7be39cbe0
data/README.md CHANGED
@@ -71,8 +71,3 @@ https://github.com/facebook/react-devtools
71
71
  - clone repo
72
72
  - `bundle install`
73
73
  - `rake`
74
-
75
- Implementations for the [js-framework-benchmark](https://github.com/krausest/js-framework-benchmark):
76
-
77
- - [using LucidComponent](https://github.com/janbiedermann/js-framework-benchmark/tree/master/frameworks/keyed/isomorfeus-lucid)
78
- - [using React::Component](https://github.com/janbiedermann/js-framework-benchmark/tree/master/frameworks/keyed/isomorfeus-react)
@@ -5,7 +5,7 @@ module LucidApp
5
5
  base.extend(::LucidApp::NativeComponentConstructor)
6
6
  base.extend(::LucidPropDeclaration::Mixin)
7
7
  base.extend(::React::Component::EventHandler)
8
- base.extend(::LucidComponent::PreloadingSupport)
8
+ base.include(::LucidComponent::PreloadingSupport)
9
9
  base.extend(::LucidComponent::EnvironmentSupport)
10
10
  base.include(::LucidComponent::EnvironmentSupport)
11
11
  base.include(::React::Component::Elements)
@@ -64,7 +64,7 @@ module LucidApp
64
64
  Opal.React.active_components.push(this);
65
65
  Opal.React.active_redux_components.push(this.__ruby_instance);
66
66
  let block_result;
67
- if (base.preload_block && !this.state.preloaded && base.while_loading_block) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
67
+ if (base.preload_block && base.while_loading_block && !this.state.preloaded) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
68
68
  else { block_result = #{`this.__ruby_instance`.instance_exec(&`base.render_block`)}; }
69
69
  if (block_result && (block_result.constructor === String || block_result.constructor === Number)) { Opal.React.render_buffer[Opal.React.render_buffer.length - 1].push(block_result); }
70
70
  Opal.React.active_redux_components.pop();
@@ -5,7 +5,7 @@ module LucidComponent
5
5
  base.extend(::LucidComponent::NativeComponentConstructor)
6
6
  base.extend(::LucidPropDeclaration::Mixin)
7
7
  base.extend(::React::Component::EventHandler)
8
- base.extend(::LucidComponent::PreloadingSupport)
8
+ base.include(::LucidComponent::PreloadingSupport)
9
9
  base.extend(::LucidComponent::EnvironmentSupport)
10
10
  base.include(::LucidComponent::EnvironmentSupport)
11
11
  base.include(::React::Component::Elements)
@@ -51,7 +51,7 @@ module LucidComponent
51
51
  Opal.React.active_components.push(this);
52
52
  Opal.React.active_redux_components.push(this);
53
53
  let block_result;
54
- if (base.preload_block && !this.state.preloaded && base.while_loading_block) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
54
+ if (base.preload_block && base.while_loading_block && !this.state.preloaded) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
55
55
  else { block_result = #{`this.__ruby_instance`.instance_exec(&`base.render_block`)}; }
56
56
  if (block_result && (block_result.constructor === String || block_result.constructor === Number)) { Opal.React.render_buffer[Opal.React.render_buffer.length - 1].push(block_result); }
57
57
  Opal.React.active_redux_components.pop();
@@ -1,16 +1,24 @@
1
1
  module LucidComponent
2
2
  module PreloadingSupport
3
- def preload(&block)
4
- `self.preload_block = block`
5
- component_did_mount do
6
- instance_exec(&self.class().JS[:preload_block]).then do
7
- set_state({preloaded: true})
3
+ def self.included(base)
4
+ base.instance_exec do
5
+ def preload(&block)
6
+ `base.preload_block = block`
7
+ component_did_mount do
8
+ instance_exec(&self.class.JS[:preload_block]).then do
9
+ self.state.preloaded = true
10
+ end
11
+ end
12
+ end
13
+
14
+ def while_loading(&block)
15
+ `base.while_loading_block = block`
8
16
  end
9
17
  end
10
- end
11
18
 
12
- def while_loading(&block)
13
- `self.while_loading_block = block`
19
+ def preloaded?
20
+ !!state.preloaded
21
+ end
14
22
  end
15
23
  end
16
24
  end
@@ -6,7 +6,7 @@ module LucidMaterial
6
6
  base.extend(::LucidMaterial::App::NativeComponentConstructor)
7
7
  base.extend(::LucidPropDeclaration::Mixin)
8
8
  base.extend(::React::Component::EventHandler)
9
- base.extend(::LucidComponent::PreloadingSupport)
9
+ base.include(::LucidComponent::PreloadingSupport)
10
10
  base.extend(::LucidComponent::EnvironmentSupport)
11
11
  base.include(::LucidComponent::EnvironmentSupport)
12
12
  base.include(::React::Component::Elements)
@@ -65,7 +65,7 @@ module LucidMaterial
65
65
  Opal.React.active_components.push(this);
66
66
  Opal.React.active_redux_components.push(this.__ruby_instance);
67
67
  let block_result;
68
- if (base.preload_block && !this.state.preloaded && base.while_loading_block) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
68
+ if (base.preload_block && base.while_loading_block && !this.state.preloaded) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
69
69
  else { block_result = #{`this.__ruby_instance`.instance_exec(&`base.render_block`)}; }
70
70
  if (block_result && (block_result.constructor === String || block_result.constructor === Number)) { Opal.React.render_buffer[Opal.React.render_buffer.length - 1].push(block_result); }
71
71
  Opal.React.active_redux_components.pop();
@@ -6,7 +6,7 @@ module LucidMaterial
6
6
  base.extend(::LucidMaterial::Component::NativeComponentConstructor)
7
7
  base.extend(::LucidPropDeclaration::Mixin)
8
8
  base.extend(::React::Component::EventHandler)
9
- base.extend(::LucidComponent::PreloadingSupport)
9
+ base.include(::LucidComponent::PreloadingSupport)
10
10
  base.extend(::LucidComponent::EnvironmentSupport)
11
11
  base.include(::LucidComponent::EnvironmentSupport)
12
12
  base.include(::React::Component::Elements)
@@ -52,7 +52,7 @@ module LucidMaterial
52
52
  Opal.React.active_components.push(this);
53
53
  Opal.React.active_redux_components.push(this);
54
54
  let block_result;
55
- if (base.preload_block && !this.state.preloaded && base.while_loading_block) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
55
+ if (base.preload_block && base.while_loading_block && !this.state.preloaded) { block_result = #{`this.__ruby_instance`.instance_exec(&`base.while_loading_block`)}; }
56
56
  else { block_result = #{`this.__ruby_instance`.instance_exec(&`base.render_block`)}; }
57
57
  if (block_result && (block_result.constructor === String || block_result.constructor === Number)) { Opal.React.render_buffer[Opal.React.render_buffer.length - 1].push(block_result); }
58
58
  Opal.React.active_redux_components.pop();
@@ -67,9 +67,7 @@ module React
67
67
 
68
68
  self.internal_render = function(component, props, string_child, block) {
69
69
  let children;
70
- let react_element;
71
70
  let native_props = null;
72
-
73
71
  if (string_child) {
74
72
  children = string_child;
75
73
  } else if (block && block !== nil) {
@@ -85,8 +83,7 @@ module React
85
83
  else if (children.length === 0) { children = null; }
86
84
  }
87
85
  if (props && props !== nil) { native_props = Opal.React.to_native_react_props(props); }
88
- react_element = Opal.global.React.createElement(component, native_props, children);
89
- Opal.React.render_buffer[Opal.React.render_buffer.length - 1].push(react_element);
86
+ Opal.React.render_buffer[Opal.React.render_buffer.length - 1].push(Opal.global.React.createElement(component, native_props, children));
90
87
  };
91
88
 
92
89
  self.active_components = [];
@@ -3,7 +3,7 @@ module React
3
3
  module Resolution
4
4
  def self.included(base)
5
5
  base.instance_exec do
6
- alias _react_component_resolution_original_const_missing const_missing
6
+ alias _react_component_class_resolution_original_const_missing const_missing
7
7
 
8
8
  def const_missing(const_name)
9
9
  # language=JS
@@ -13,7 +13,47 @@ module React
13
13
  #{Object.const_set(const_name, `new_const`)};
14
14
  return new_const;
15
15
  } else {
16
- return #{_react_component_resolution_original_const_missing(const_name)};
16
+ return #{_react_component_class_resolution_original_const_missing(const_name)};
17
+ }
18
+ }
19
+ end
20
+
21
+ # this is required for autoloading support, as the component may not be loaded and so its method is not registered.
22
+ # must load it first, done by const_get, and next time the method will be there.
23
+ alias _react_component_class_resolution_original_method_missing method_missing
24
+
25
+ def method_missing(component_name, *args, &block)
26
+ # check for ruby component and render it
27
+ # otherwise pass on method missing
28
+ # language=JS
29
+ %x{
30
+ var modules = self.$to_s().split("::");
31
+ var modules_length = modules.length;
32
+ var module;
33
+ var constant;
34
+ var component;
35
+ for (var i = modules_length; i > 0; i--) {
36
+ try {
37
+ module = modules.slice(0, i).join('::')
38
+ constant = self.$const_get(module).$const_get(component_name, false);
39
+ if (typeof constant.react_component !== 'undefined') {
40
+ component = constant.react_component;
41
+ break;
42
+ }
43
+ } catch(err) { component = null; }
44
+ }
45
+ if (!component) {
46
+ try {
47
+ constant = Opal.Object.$const_get(component_name);
48
+ if (typeof constant.react_component !== 'undefined') {
49
+ component = constant.react_component;
50
+ }
51
+ } catch(err) { component = null; }
52
+ }
53
+ if (component) {
54
+ return Opal.React.internal_prepare_args_and_render(component, args, block);
55
+ } else {
56
+ return #{_react_component_resolution_original_method_missing(component_name, *args, block)};
17
57
  }
18
58
  }
19
59
  end
@@ -67,4 +107,4 @@ module React
67
107
  end
68
108
  end
69
109
  end
70
- end
110
+ end
@@ -1,3 +1,3 @@
1
1
  module React
2
- VERSION = '16.10.12'
2
+ VERSION = '16.10.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-react
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.10.12
4
+ version: 16.10.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-18 00:00:00.000000000 Z
11
+ date: 2019-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj