isomorfeus-preact 23.9.0.rc3 → 23.9.0.rc4
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 +4 -4
- data/ext/isomorfeus_preact_ext/preact.c +0 -5
- data/lib/isomorfeus/preact/version.rb +1 -1
- data/lib/preact.rb +46 -38
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b99c3271315df3f744c24558a5df45ad2f5386235ed91a6466c59ee8371ae948
|
4
|
+
data.tar.gz: 4e3c3ccf9dccfe9591bc3a3df4bd8c9a710f69c438939b9a241bf213fc008034
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bf76f033520d26864e46bccc148ffd634dd28f816aecf6165bddbf443eb68cbcae41a4e05baeda7e2fc5c49ff35545d72997a43ac5175543e849ebe749dbe7c
|
7
|
+
data.tar.gz: 328e0c9f13fecd1c54bf0fe50d97603269be718d83d2bad098dd33182e36ea3b00259ac2fe9d79726bcb5ec58a6428f1294e4f6049243f485458db0e374f8286
|
@@ -223,11 +223,6 @@ void internal_render_to_string(VALUE vnode, VALUE context, VALUE is_svg_mode,
|
|
223
223
|
return;
|
224
224
|
rb_str_buf_append(rres, rb_funcall(self, id_encode_entities, 1, vnode));
|
225
225
|
return;
|
226
|
-
case T_BIGNUM:
|
227
|
-
case T_FIXNUM:
|
228
|
-
case T_FLOAT:
|
229
|
-
rb_str_buf_append(rres, rb_funcall(vnode, id_to_s, 0));
|
230
|
-
return;
|
231
226
|
case T_ARRAY:
|
232
227
|
len = RARRAY_LEN(vnode);
|
233
228
|
for (i = 0; i < len; i++) {
|
data/lib/preact.rb
CHANGED
@@ -34,6 +34,40 @@ module Preact
|
|
34
34
|
|
35
35
|
if RUBY_ENGINE == 'opal'
|
36
36
|
%x{
|
37
|
+
let vnodeId = 0;
|
38
|
+
|
39
|
+
function vnode_eql(me, other) {
|
40
|
+
for(let prop in me) {
|
41
|
+
if (prop === 'props' && !(vnode[prop]["$=="](other[prop]))) {
|
42
|
+
return false;
|
43
|
+
} else if (vnode[prop] != other[prop]) {
|
44
|
+
return false;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
return true;
|
48
|
+
}
|
49
|
+
|
50
|
+
class VNode {
|
51
|
+
constructor(type, props, key, ref, original) {
|
52
|
+
this.type = type;
|
53
|
+
this.props = props;
|
54
|
+
this.key = key;
|
55
|
+
this.ref = ref;
|
56
|
+
this._children = null;
|
57
|
+
this._parent = null;
|
58
|
+
this._depth = 0;
|
59
|
+
this._dom = null;
|
60
|
+
this._nextDom = undefined;
|
61
|
+
this._component = null;
|
62
|
+
this._hydrating = null;
|
63
|
+
this._original = (original == null) ? ++vnodeId : original;
|
64
|
+
this.constructor = undefined;
|
65
|
+
}
|
66
|
+
"$=="(other) { return vnode_eql(this, other); }
|
67
|
+
"$eql?"(other) { return vnode_eql(this, other); }
|
68
|
+
"$is_a?"(t) { return t === Opal.VNode; }
|
69
|
+
}
|
70
|
+
|
37
71
|
function _catchError(error, vnode, oldVNode) {
|
38
72
|
let component, ctor, handled;
|
39
73
|
|
@@ -63,7 +97,7 @@ module Preact
|
|
63
97
|
throw error;
|
64
98
|
}
|
65
99
|
|
66
|
-
const EMPTY_OBJ =
|
100
|
+
const EMPTY_OBJ = new VNode();
|
67
101
|
const EMPTY_ARR = [];
|
68
102
|
const slice = EMPTY_ARR.slice;
|
69
103
|
|
@@ -279,17 +313,17 @@ module Preact
|
|
279
313
|
// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,
|
280
314
|
// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have
|
281
315
|
// it's own DOM & etc. pointers
|
282
|
-
else if (typeof childVNode === 'string'
|
283
|
-
childVNode = newParentVNode._children[i] =
|
316
|
+
else if (typeof childVNode === 'string') {
|
317
|
+
childVNode = newParentVNode._children[i] = new VNode(
|
284
318
|
null,
|
285
319
|
childVNode,
|
286
320
|
null,
|
287
321
|
null,
|
288
322
|
childVNode
|
289
323
|
);
|
290
|
-
} else if (childVNode.$$is_string
|
324
|
+
} else if (childVNode.$$is_string) {
|
291
325
|
let str = childVNode.valueOf();
|
292
|
-
childVNode = newParentVNode._children[i] =
|
326
|
+
childVNode = newParentVNode._children[i] = new VNode(
|
293
327
|
null,
|
294
328
|
str,
|
295
329
|
null,
|
@@ -297,7 +331,7 @@ module Preact
|
|
297
331
|
str
|
298
332
|
);
|
299
333
|
} else if (childVNode.$$is_array) {
|
300
|
-
childVNode = newParentVNode._children[i] =
|
334
|
+
childVNode = newParentVNode._children[i] = new VNode(
|
301
335
|
Opal.Fragment,
|
302
336
|
#{{ children: `childVNode` }},
|
303
337
|
null,
|
@@ -309,7 +343,7 @@ module Preact
|
|
309
343
|
// scenario:
|
310
344
|
// const reuse = <div />
|
311
345
|
// <div>{reuse}<span />{reuse}</div>
|
312
|
-
childVNode = newParentVNode._children[i] =
|
346
|
+
childVNode = newParentVNode._children[i] = new VNode(
|
313
347
|
childVNode.type,
|
314
348
|
childVNode.props,
|
315
349
|
childVNode.key,
|
@@ -387,7 +421,7 @@ module Preact
|
|
387
421
|
}
|
388
422
|
|
389
423
|
if (
|
390
|
-
typeof childVNode.type
|
424
|
+
typeof childVNode.type === 'function' &&
|
391
425
|
childVNode._children === oldVNode._children
|
392
426
|
) {
|
393
427
|
childVNode._nextDom = oldDom = reorderChildren(
|
@@ -433,7 +467,7 @@ module Preact
|
|
433
467
|
for (i = oldChildrenLength; i--; ) {
|
434
468
|
if (oldChildren[i] != null) {
|
435
469
|
if (
|
436
|
-
typeof newParentVNode.type
|
470
|
+
typeof newParentVNode.type === 'function' &&
|
437
471
|
oldChildren[i]._dom != null &&
|
438
472
|
oldChildren[i]._dom == newParentVNode._nextDom
|
439
473
|
) {
|
@@ -834,7 +868,7 @@ module Preact
|
|
834
868
|
validate_props(newType, newProps);
|
835
869
|
newProps.$freeze();
|
836
870
|
}
|
837
|
-
|
871
|
+
|
838
872
|
if (c["$respond_to?"]("get_derived_state_from_props")) {
|
839
873
|
if (c._nextState == c.state) {
|
840
874
|
c._nextState = c._nextState.$dup();
|
@@ -987,34 +1021,12 @@ module Preact
|
|
987
1021
|
});
|
988
1022
|
}
|
989
1023
|
|
990
|
-
let vnodeId = 0;
|
991
1024
|
|
992
|
-
function is_a_vnode(type) { return type === Opal.VNode; }
|
993
1025
|
|
994
1026
|
self.createVNode = function(type, props, key, ref, original) {
|
995
1027
|
// V8 seems to be better at detecting type shapes if the object is allocated from the same call site
|
996
1028
|
// Do not inline into createElement and coerceToVNode!
|
997
|
-
return
|
998
|
-
type,
|
999
|
-
props,
|
1000
|
-
key,
|
1001
|
-
ref,
|
1002
|
-
_children: null,
|
1003
|
-
_parent: null,
|
1004
|
-
_depth: 0,
|
1005
|
-
_dom: null,
|
1006
|
-
// _nextDom must be initialized to undefined b/c it will eventually
|
1007
|
-
// be set to dom.nextSibling which can return `null` and it is important
|
1008
|
-
// to be able to distinguish between an uninitialized _nextDom and
|
1009
|
-
// a _nextDom that has been set to `null`
|
1010
|
-
_nextDom: undefined,
|
1011
|
-
_component: null,
|
1012
|
-
_hydrating: null,
|
1013
|
-
constructor: undefined,
|
1014
|
-
_original: (original == null) ? ++vnodeId : original,
|
1015
|
-
"$is_a?": is_a_vnode,
|
1016
|
-
"$$is_vnode": true
|
1017
|
-
};
|
1029
|
+
return new VNode(type, props, key, ref, original);
|
1018
1030
|
}
|
1019
1031
|
|
1020
1032
|
self.render = function(vnode, parentDom, replaceNode) {
|
@@ -1083,7 +1095,7 @@ module Preact
|
|
1083
1095
|
|
1084
1096
|
if (parentDom) {
|
1085
1097
|
let commitQueue = [];
|
1086
|
-
const oldVNode = assign(
|
1098
|
+
const oldVNode = assign(new VNode(), vnode);
|
1087
1099
|
oldVNode._original = vnode._original + 1;
|
1088
1100
|
|
1089
1101
|
diff(
|
@@ -1177,7 +1189,6 @@ module Preact
|
|
1177
1189
|
end
|
1178
1190
|
|
1179
1191
|
if RUBY_ENGINE == 'opal'
|
1180
|
-
attr_accessor :_vnode_id
|
1181
1192
|
attr_accessor :render_buffer
|
1182
1193
|
attr_accessor :rerender_queue
|
1183
1194
|
|
@@ -1312,6 +1323,3 @@ module Preact
|
|
1312
1323
|
end
|
1313
1324
|
end
|
1314
1325
|
|
1315
|
-
if RUBY_ENGINE == 'opal'
|
1316
|
-
Preact._vnode_id = 0
|
1317
|
-
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isomorfeus-preact
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 23.9.0.
|
4
|
+
version: 23.9.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Biedermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -78,28 +78,28 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - '='
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 23.9.0.
|
81
|
+
version: 23.9.0.rc4
|
82
82
|
type: :runtime
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - '='
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 23.9.0.
|
88
|
+
version: 23.9.0.rc4
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: isomorfeus-redux
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - '='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 23.9.0.
|
95
|
+
version: 23.9.0.rc4
|
96
96
|
type: :runtime
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - '='
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 23.9.0.
|
102
|
+
version: 23.9.0.rc4
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: benchmark-ips
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|