isomorfeus-react 16.13.8 → 16.13.9

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: f67822be9b751d903e6d1415ff490453c257885f4e699ad762c084f531daccfe
4
- data.tar.gz: a6199d933fcfa3114aa1e65e34625c53f239aacccde3fe3255c6ff977d3a16c8
3
+ metadata.gz: 6e035ee0fa52630bee7cabe9a6e42043807ab3214aff268c94ab3d11a18c1bf5
4
+ data.tar.gz: 941bd2452ff4ca38292dd60e6a74cc89bb6b5e378152e2dfe3b9dcfcae10867c
5
5
  SHA512:
6
- metadata.gz: 73006371dbdf55f4ffa13d45592e1032c149da4a9a6402b067ae98fd11aba9673d4538a777ba6e4cadf3b0dbba39c93b7d7bfdd122705dc22c9e360d8f1d130d
7
- data.tar.gz: 9f58f046646eca578f92f0586afd8386da05fd134898679023284d66b5e5fab6c56d6b762e764eaf200006468954bd99b1b81ad975b48eb4954a1364fe8b4064
6
+ metadata.gz: 254fb5ad51c52ff2521494614bedbe215dd2980daed1300c00f98032d34460d798487c8dd5ccfebd26a823d63064e232be46030f1f22d793b6a42ccd6404aa4f
7
+ data.tar.gz: 1a4b829bba24df5e78ebbff63cf6e688b8083d5349b41f08bf05234bc4ae7c5f4fb8726e5f20d1b94463a33aa0e74f47125bc5e3e98e7c23736fb6ef5eade765
@@ -7,7 +7,7 @@ module LucidComponent
7
7
  component_name = base.to_s + 'Wrapper'
8
8
  # language=JS
9
9
  %x{
10
- base.react_component = function(props) {
10
+ base.react_component = Opal.global.React.memo(function(props) {
11
11
  let opag = Opal.global;
12
12
  let classes;
13
13
  let store;
@@ -27,7 +27,7 @@ module LucidComponent
27
27
  new_props.theme = theme;
28
28
  new_props.store = store;
29
29
  return opag.React.createElement(base.lucid_react_component, new_props);
30
- };
30
+ }, null);
31
31
  base.react_component.displayName = #{component_name};
32
32
  }
33
33
  end
@@ -63,30 +63,32 @@ module LucidComponent
63
63
  }
64
64
  shouldComponentUpdate(next_props, next_state) {
65
65
  let counter = 0;
66
+ const this_props = this.props;
66
67
  for (var property in next_props) {
67
68
  counter++;
68
69
  if (next_props.hasOwnProperty(property)) {
69
- if (!this.props.hasOwnProperty(property)) { return true; };
70
- if (property === "children") { if (next_props.children !== this.props.children) { return true; }}
71
- else if (typeof next_props[property] !== "undefined" && next_props[property] !== null && typeof next_props[property]['$!='] === "function" &&
72
- typeof this.props[property] !== "undefined" && this.props[property] !== null ) {
73
- if (#{ !! (`next_props[property]` != `this.props[property]`) }) { return true; }
74
- } else if (next_props[property] !== this.props[property]) { return true; }
70
+ if (!this_props.hasOwnProperty(property)) { return true; };
71
+ if (property === "children") { if (next_props.children !== this_props.children) { return true; }}
72
+ else if (typeof next_props[property] === "object" && next_props[property] !== null && typeof next_props[property]['$!='] === "function" &&
73
+ typeof this_props[property] !== "undefined" && this_props[property] !== null ) {
74
+ if (#{ !! (`next_props[property]` != `this_props[property]`) }) { return true; }
75
+ } else if (next_props[property] !== this_props[property]) { return true; }
75
76
  }
76
77
  }
77
- if (counter !== Object.keys(this.props).length) { return true; }
78
+ if (counter !== Object.keys(this_props).length) { return true; }
78
79
  counter = 0;
80
+ const this_state = this.state;
79
81
  for (var property in next_state) {
80
82
  counter++;
81
83
  if (next_state.hasOwnProperty(property)) {
82
- if (!this.state.hasOwnProperty(property)) { return true; };
83
- if (typeof next_state[property] !== "undefined" && next_state[property] !== null && typeof next_state[property]['$!='] === "function" &&
84
- typeof this.state[property] !== "undefined" && this.state[property] !== null) {
85
- if (#{ !! (`next_state[property]` != `this.state[property]`) }) { return true }
86
- } else if (next_state[property] !== this.state[property]) { return true }
84
+ if (!this_state.hasOwnProperty(property)) { return true; };
85
+ if (typeof next_state[property] === "object" && next_state[property] !== null && typeof next_state[property]['$!='] === "function" &&
86
+ typeof this_state[property] !== "undefined" && this_state[property] !== null) {
87
+ if (#{ !! (`next_state[property]` != `this_state[property]`) }) { return true }
88
+ } else if (next_state[property] !== this_state[property]) { return true }
87
89
  }
88
90
  }
89
- if (counter !== Object.keys(this.state).length) { return true; }
91
+ if (counter !== Object.keys(this_state).length) { return true; }
90
92
  return false;
91
93
  }
92
94
  validateProp(props, propName, componentName) {
@@ -8,7 +8,7 @@ module LucidMaterial
8
8
  component_name = base.to_s + 'Wrapper'
9
9
  # language=JS
10
10
  %x{
11
- base.react_component = function(props) {
11
+ base.react_component = Opal.global.React.memo(function(props) {
12
12
  let classes = null;
13
13
  let store;
14
14
  if (base.store_updates) { store = Opal.global.React.useContext(Opal.global.LucidApplicationContext); }
@@ -27,7 +27,7 @@ module LucidMaterial
27
27
  new_props.theme = theme;
28
28
  new_props.store = store;
29
29
  return Opal.global.React.createElement(base.lucid_react_component, new_props);
30
- }
30
+ }, null);
31
31
  base.react_component.displayName = #{component_name};
32
32
  }
33
33
  end
@@ -13,11 +13,13 @@ module React
13
13
  };
14
14
 
15
15
  self.lower_camelize = function(snake_cased_word) {
16
+ if (self.prop_dictionary[snake_cased_word]) { return self.prop_dictionary[snake_cased_word]; }
16
17
  let parts = snake_cased_word.split('_');
17
18
  let res = parts[0];
18
19
  for (let i = 1; i < parts.length; i++) {
19
20
  res += parts[i][0].toUpperCase() + parts[i].slice(1);
20
21
  }
22
+ self.prop_dictionary[snake_cased_word] = res;
21
23
  return res;
22
24
  };
23
25
 
@@ -82,6 +84,8 @@ module React
82
84
 
83
85
  if on_browser? || on_ssr?
84
86
  %x{
87
+ self.prop_dictionary = {};
88
+
85
89
  self.to_native_react_props = function(ruby_style_props) {
86
90
  let result = {};
87
91
  let keys = ruby_style_props.$$keys;
@@ -148,7 +152,7 @@ module React
148
152
  if (typeof value.$to_n === "function") { value = value.$to_n() }
149
153
  result["style"] = value;
150
154
  } else {
151
- result[key.indexOf('_') > 0 ? self.lower_camelize(key) : key] = value;
155
+ result[self.lower_camelize(key)] = value;
152
156
  }
153
157
  }
154
158
  return result;
@@ -162,20 +166,21 @@ module React
162
166
 
163
167
  self.internal_render = function(component, props, string_child, block) {
164
168
  const operabu = self.render_buffer;
165
- let children;
166
- let native_props = null;
169
+ let native_props;
170
+ if (props && props !== nil) { native_props = self.to_native_react_props(props); }
167
171
  if (string_child) {
168
- children = [string_child];
172
+ operabu[operabu.length - 1].push(Opal.global.React.createElement(component, native_props, string_child));
169
173
  } else if (block && block !== nil) {
170
174
  operabu.push([]);
171
175
  // console.log("internal_render pushed", Opal.React.render_buffer, Opal.React.render_buffer.toString());
172
176
  let block_result = block.$call();
173
177
  if (block_result && block_result !== nil) { Opal.React.render_block_result(block_result); }
174
178
  // console.log("internal_render popping", Opal.React.render_buffer, Opal.React.render_buffer.toString());
175
- children = operabu.pop();
179
+ let children = operabu.pop();
180
+ operabu[operabu.length - 1].push(Opal.global.React.createElement.apply(this, [component, native_props].concat(children)));
181
+ } else {
182
+ operabu[operabu.length - 1].push(Opal.global.React.createElement(component, native_props));
176
183
  }
177
- if (props && props !== nil) { native_props = self.to_native_react_props(props); }
178
- operabu[operabu.length - 1].push(Opal.global.React.createElement.apply(this, [component, native_props].concat(children)));
179
184
  };
180
185
  }
181
186
  end
@@ -54,30 +54,32 @@ module React
54
54
  return #{!!`this.__ruby_instance`.instance_exec(React::Component::Props.new(`{props: next_props}`), React::Component::State.new(`{state: next_state }`), &`base.should_component_update_block`)};
55
55
  }
56
56
  let counter = 0;
57
+ const this_props = this.props;
57
58
  for (var property in next_props) {
58
59
  counter++;
59
60
  if (next_props.hasOwnProperty(property)) {
60
- if (!this.props.hasOwnProperty(property)) { return true; };
61
- if (property === "children") { if (next_props.children !== this.props.children) { return true; }}
62
- else if (typeof next_props[property] !== "undefined" && next_props[property] !== null && typeof next_props[property]['$!='] === "function" &&
63
- typeof this.props[property] !== "undefined" && this.props[property] !== null ) {
64
- if (#{ !! (`next_props[property]` != `this.props[property]`) }) { return true; }
65
- } else if (next_props[property] !== this.props[property]) { return true; }
61
+ if (!this_props.hasOwnProperty(property)) { return true; };
62
+ if (property === "children") { if (next_props.children !== this_props.children) { return true; }}
63
+ else if (typeof next_props[property] === "object" && next_props[property] !== null && typeof next_props[property]['$!='] === "function" &&
64
+ typeof this_props[property] !== "undefined" && this_props[property] !== null ) {
65
+ if (#{ !! (`next_props[property]` != `this_props[property]`) }) { return true; }
66
+ } else if (next_props[property] !== this_props[property]) { return true; }
66
67
  }
67
68
  }
68
- if (counter !== Object.keys(this.props).length) { return true; }
69
+ if (counter !== Object.keys(this_props).length) { return true; }
69
70
  counter = 0;
71
+ const this_state = this.state;
70
72
  for (var property in next_state) {
71
73
  counter++;
72
74
  if (next_state.hasOwnProperty(property)) {
73
- if (!this.state.hasOwnProperty(property)) { return true; };
74
- if (typeof next_state[property] !== "undefined" && next_state[property] !== null && typeof next_state[property]['$!='] === "function" &&
75
- typeof this.state[property] !== "undefined" && this.state[property] !== null) {
76
- if (#{ !! (`next_state[property]` != `this.state[property]`) }) { return true }
77
- } else if (next_state[property] !== this.state[property]) { return true }
75
+ if (!this_state.hasOwnProperty(property)) { return true; };
76
+ if (typeof next_state[property] === "object" && next_state[property] !== null && typeof next_state[property]['$!='] === "function" &&
77
+ typeof this_state[property] !== "undefined" && this_state[property] !== null) {
78
+ if (#{ !! (`next_state[property]` != `this_state[property]`) }) { return true }
79
+ } else if (next_state[property] !== this_state[property]) { return true }
78
80
  }
79
81
  }
80
- if (counter !== Object.keys(this.state).length) { return true; }
82
+ if (counter !== Object.keys(this_state).length) { return true; }
81
83
  return false;
82
84
  }
83
85
  validateProp(props, propName, componentName) {
@@ -7,11 +7,12 @@ module React
7
7
 
8
8
  def method_missing(prop, *args, &block)
9
9
  %x{
10
- if (typeof #@native.props[prop] === 'undefined') {
10
+ const p = #@native.props;
11
+ if (typeof p[prop] === 'undefined') {
11
12
  prop = Opal.React.lower_camelize(prop);
12
- if (typeof #@native.props[prop] === 'undefined') { return #{nil}; }
13
+ if (typeof p[prop] === 'undefined') { return nil; }
13
14
  }
14
- return #@native.props[prop];
15
+ return p[prop];
15
16
  }
16
17
  end
17
18
 
@@ -13,8 +13,10 @@ module React
13
13
  @native.JS.setState(new_state, `null`)
14
14
  end
15
15
  else
16
- return nil if `typeof #@native.state[key] === "undefined"`
17
- @native.JS[:state].JS[key]
16
+ %x{
17
+ if (typeof #@native.state[key] === 'undefined') { return nil; }
18
+ return #@native.state[key];
19
+ }
18
20
  end
19
21
  end
20
22
 
@@ -1,3 +1,3 @@
1
1
  module React
2
- VERSION = '16.13.8'
2
+ VERSION = '16.13.9'
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.13.8
4
+ version: 16.13.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-15 00:00:00.000000000 Z
11
+ date: 2020-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby