Skip to content

Commit 65d3d50

Browse files
committed
v.5.0.0 contd
* components are not simple nodes * minor changes and optimizations * update tests/benchmarks
1 parent 1aa7a95 commit 65d3d50

13 files changed

Lines changed: 61 additions & 109 deletions

File tree

build/modelview.bundle.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/modelview.js

Lines changed: 29 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* ModelView.js
44
* @version: 5.0.0
5-
* @built on 2022-03-28 13:18:57
5+
* @built on 2022-03-28 20:00:42
66
*
77
* A simple, light-weight, versatile and fast isomorphic MVVM JavaScript framework (Browser and Server)
88
* https://github.com/foo123/modelview.js
@@ -11,7 +11,7 @@
1111
*
1212
* ModelView.js
1313
* @version: 5.0.0
14-
* @built on 2022-03-28 13:18:57
14+
* @built on 2022-03-28 20:00:42
1515
*
1616
* A simple, light-weight, versatile and fast isomorphic MVVM JavaScript framework (Browser and Server)
1717
* https://github.com/foo123/modelview.js
@@ -1492,7 +1492,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
14921492
return function(view, r, v) {
14931493
u && u(view, r, v);
14941494
if (false === val) del_att(r, att, v.nodeType);
1495-
else set_att(r, att, val, v.nodeType);
1495+
else set_att(r, att, val, v.nodeType, true);
14961496
};
14971497
})(node.uAtts, a[i].name, v);
14981498
}
@@ -1514,7 +1514,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
15141514
return function(view, r, v, forced) {
15151515
u && u(view, r, v, forced);
15161516
if (false === val) del_att(r, att, v.nodeType);
1517-
else set_att(r, att, val, v.nodeType);
1517+
else set_att(r, att, val, v.nodeType, forced);
15181518
};
15191519
})(node.uFAtts, a[i].name, v.val());
15201520
}
@@ -1554,6 +1554,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
15541554
node.changed = node.changed || nn.changed;
15551555
node.simple = false;
15561556
node.uNodes = null;
1557+
node.uFNodes = null;
15571558
return childNodes;
15581559
}
15591560
else if (is_array(n))
@@ -1562,6 +1563,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
15621563
node.changed = true;
15631564
node.simple = false;
15641565
node.uNodes = null;
1566+
node.uFNodes = null;
15651567
if (!node.modified) node.modified = {atts: [], nodes: []};
15661568
childNodes = flatten(n).reduce(process, childNodes);
15671569
insMod(node.modified.nodes, i, index-1, true, 'array');
@@ -1581,8 +1583,9 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
15811583
if (n.changed)
15821584
{
15831585
n.uNodes = (function(val) {
1584-
return function(view, r, v, forced) {
1585-
r.nodeValue = val;
1586+
return function(view, r, v) {
1587+
//if (r.nodeValue !== val)
1588+
r.nodeValue = val;
15861589
};
15871590
})(v);
15881591
}
@@ -1617,48 +1620,16 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
16171620
if (!node.modified) node.modified = {atts: [], nodes: []};
16181621
new_mod = insMod(node.modified.nodes, index, index+n.childNodes.length-1, new_mod, '');
16191622
node.changed = node.changed || n.changed;
1620-
if (!n.simple)
1621-
{
1622-
node.simple = false;
1623-
node.uNodes = null;
1624-
}
1623+
node.simple = false;
1624+
node.uNodes = null;
1625+
node.uFNodes = null;
16251626
AP.push.apply(childNodes, n.childNodes.map(function(nn) {
16261627
nn.parentNode = node;
16271628
nn.index = index++;
16281629
//nn.changed = nn.changed || n.changed;
16291630
nn.component = nn.component || n.component;
16301631
nn.unit = nn.unit || n.unit;
1631-
if (nn.unit)
1632-
{
1633-
node.changed = true;
1634-
node.simple = false;
1635-
node.uNodes = null;
1636-
}
1637-
if (node.simple)
1638-
{
1639-
if (nn.uAtts || nn.uNodes)
1640-
{
1641-
node.uNodes = (function(u, ua, un, index) {
1642-
return function(view, r, v) {
1643-
u && u(view, r, v);
1644-
var rnode = r.childNodes[index], vnode = v.childNodes[index];
1645-
ua && ua(view, rnode, vnode);
1646-
un && un(view, rnode, vnode);
1647-
};
1648-
})(node.uNodes, nn.uAtts, nn.uNodes, nn.index);
1649-
}
1650-
if (nn.uFAtts || nn.uFNodes)
1651-
{
1652-
node.uFNodes = (function(u, ua, un, index) {
1653-
return function(view, r, v, forced) {
1654-
u && u(view, r, v, forced);
1655-
var rnode = r.childNodes[index], vnode = v.childNodes[index];
1656-
ua && ua(view, rnode, vnode, forced);
1657-
un && un(view, rnode, vnode, forced);
1658-
};
1659-
})(node.uFNodes, nn.uFAtts, nn.uFNodes, nn.index);
1660-
}
1661-
}
1632+
if (nn.unit) node.changed = true;
16621633
return nn;
16631634
}));
16641635
return childNodes;
@@ -1676,6 +1647,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
16761647
node.changed = node.changed || n.changed;
16771648
node.simple = false;
16781649
node.uNodes = null;
1650+
node.uFNodes = null;
16791651
return childNodes;
16801652
}
16811653
else if ('dyn' === n.nodeType)
@@ -1696,6 +1668,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
16961668
node.changed = true;
16971669
node.simple = false;
16981670
node.uNodes = null;
1671+
node.uFNodes = null;
16991672
return childNodes;
17001673
}
17011674
else if (!n.nodeType || !n.nodeType.length)
@@ -1718,6 +1691,7 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
17181691
node.changed = true;
17191692
node.simple = false;
17201693
node.uNodes = null;
1694+
node.uFNodes = null;
17211695
}
17221696
if (node.simple)
17231697
{
@@ -1762,12 +1736,14 @@ function htmlNode(view, nodeType, id, type, atts, children, value2, modified, cr
17621736
{
17631737
node.simple = false;
17641738
node.uNodes = null;
1739+
node.uFNodes = null;
17651740
}
17661741
if (n.unit)
17671742
{
17681743
node.changed = true;
17691744
node.simple = false;
17701745
node.uNodes = null;
1746+
node.uFNodes = null;
17711747
}
17721748
if (node.simple)
17731749
{
@@ -2111,7 +2087,7 @@ function del_att(r, n, T/*, TT*/)
21112087
}
21122088
return r;
21132089
}
2114-
function set_att(r, n, s, T, TT, forced)
2090+
function set_att(r, n, s, T/*, TT*/, forced)
21152091
{
21162092
var t;
21172093
if ('id' === n)
@@ -2133,7 +2109,7 @@ function set_att(r, n, s, T, TT, forced)
21332109
'indeterminate' === n || 'loop' === n || 'muted' === n || 'novalidate' === n ||
21342110
'open' === n || 'readOnly' === n || 'reversed' === n || 'scoped' === n || 'seamless' === n)
21352111
{
2136-
r[n] = true;
2112+
r[n] = !!s;
21372113
}
21382114
else if ('value' === n)
21392115
{
@@ -2225,7 +2201,7 @@ function morphAttsAll(view, r, v)
22252201
av = av.val();
22262202
}
22272203
if (false === av) del_att(r, n, T/*, TT*/);
2228-
else set_att(r, n, av, T, TT, true);
2204+
else set_att(r, n, av, T/*, TT*/, true);
22292205
}
22302206
return r;
22312207
}
@@ -2313,9 +2289,12 @@ function morphSingle(view, r, rnode, vnode, forced)
23132289
{
23142290
// skips further modifiedNodes matched tests, assumes matched
23152291
vnode.uAtts && vnode.uAtts(view, rnode, vnode);
2316-
forced && vnode.uFAtts && vnode.uFAtts(view, rnode, vnode, forced);
23172292
changed && vnode.uNodes && vnode.uNodes(view, rnode, vnode);
2318-
forced && vnode.uFNodes && vnode.uFNodes(view, rnode, vnode, forced);
2293+
if (forced)
2294+
{
2295+
vnode.uFAtts && vnode.uFAtts(view, rnode, vnode, forced);
2296+
vnode.uFNodes && vnode.uFNodes(view, rnode, vnode, forced);
2297+
}
23192298
}
23202299
else if ('<textarea>' === T)
23212300
{
@@ -2943,7 +2922,7 @@ function morph(view, r, v, forced)
29432922
else
29442923
{
29452924
count = (modifiedNodesPrev[mi].to - modifiedNodesPrev[mi].from + 1) - (m.to - m.from + 1);
2946-
morphSelectedNodes(view, r, v, m.from, m.to, m.to, m.from-offset, count, ('array' === m.type) || forced);
2925+
morphSelectedNodes(view, r, v, m.from, m.to, m.to, m.from-offset, count, 'array' === m.type ? true : forced);
29472926
}
29482927
offset += (vc !== vpc && 'collection' === vNodes[m.from-offset].nodeType ? m.to-m.from : 0);
29492928
}
@@ -6864,11 +6843,8 @@ collection.set(newData);
68646843
var self = this;
68656844
if (1 === arguments.length)
68666845
{
6867-
if (self._items !== index)
6868-
{
6869-
self._items = index;
6870-
self.reset()._upd('set', 0, self._items.length-1);
6871-
}
6846+
self._items = index;
6847+
self.reset()._upd('set', 0, self._items.length-1);
68726848
}
68736849
else if (2 === arguments.length)
68746850
{

build/modelview.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/mem.png

-169 Bytes
Loading

examples/mem2.png

503 Bytes
Loading

examples/mem2s.png

-12 Bytes
Loading

examples/mems.png

110 Bytes
Loading

examples/perf.png

615 Bytes
Loading

examples/perf2.png

-356 Bytes
Loading

examples/perf2s.png

-4 Bytes
Loading

0 commit comments

Comments
 (0)