j-templates 7.0.102 → 7.0.104

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 (2) hide show
  1. package/Node/vNode.js +20 -14
  2. package/package.json +1 -1
package/Node/vNode.js CHANGED
@@ -204,12 +204,18 @@ function ToArray(result) {
204
204
  return result;
205
205
  return [result];
206
206
  }
207
- function FlattenNodes(children, result = []) {
208
- for (let x = 0; x < children.length; x++) {
207
+ function IsFragmentOrNull(vnode) {
208
+ return vnode === null || vnode.type === vNode_types_1.FRAGMENT_NODE;
209
+ }
210
+ function GetNode(vnode) {
211
+ return vnode.node;
212
+ }
213
+ function FlattenFragmentsRecursive(children, startIndex, result) {
214
+ for (let x = startIndex; x < children.length; x++) {
209
215
  const vnode = children[x];
210
216
  switch (vnode.type) {
211
217
  case vNode_types_1.FRAGMENT_NODE:
212
- FlattenNodes(vnode.children, result);
218
+ FlattenFragmentsRecursive(vnode.children, 0, result);
213
219
  default:
214
220
  if (vnode.node !== null)
215
221
  result.push(vnode.node);
@@ -217,14 +223,14 @@ function FlattenNodes(children, result = []) {
217
223
  }
218
224
  return result;
219
225
  }
220
- /* function GetNode(vnode: vNodeType): string | Node | (string | Node)[] {
221
- switch (vnode.type) {
222
- case FRAGMENT_NODE:
223
- return vnode.children.flatMap(GetNode);
224
- default:
225
- return vnode.node;
226
- }
227
- } */
226
+ function CleanupChildrenArray(children) {
227
+ const index = children.findIndex(IsFragmentOrNull);
228
+ if (index < 0)
229
+ return children;
230
+ const result = children.slice(0, index).map(GetNode);
231
+ FlattenFragmentsRecursive(children, index, result);
232
+ return result;
233
+ }
228
234
  function UpdateChildren(vnode, init = false, skipInit = false) {
229
235
  if (!vnode.children)
230
236
  return;
@@ -247,13 +253,13 @@ function UpdateChildren(vnode, init = false, skipInit = false) {
247
253
  return;
248
254
  if (init) {
249
255
  if (vnode.node !== null)
250
- nodeConfig_1.NodeConfig.reconcileChildren(vnode.node, FlattenNodes(vnode.children));
256
+ nodeConfig_1.NodeConfig.reconcileChildren(vnode.node, CleanupChildrenArray(vnode.children));
251
257
  }
252
258
  else if (!async) {
253
259
  let reconcileNode = vnode;
254
260
  while (reconcileNode.node === null)
255
261
  reconcileNode = reconcileNode.parentNode;
256
- nodeConfig_1.NodeConfig.reconcileChildren(reconcileNode.node, FlattenNodes(reconcileNode.children));
262
+ nodeConfig_1.NodeConfig.reconcileChildren(reconcileNode.node, CleanupChildrenArray(reconcileNode.children));
257
263
  }
258
264
  else {
259
265
  nodeConfig_1.NodeConfig.scheduleUpdate(function () {
@@ -262,7 +268,7 @@ function UpdateChildren(vnode, init = false, skipInit = false) {
262
268
  let reconcileNode = vnode;
263
269
  while (reconcileNode.node === null)
264
270
  reconcileNode = reconcileNode.parentNode;
265
- nodeConfig_1.NodeConfig.reconcileChildren(reconcileNode.node, FlattenNodes(reconcileNode.children));
271
+ nodeConfig_1.NodeConfig.reconcileChildren(reconcileNode.node, CleanupChildrenArray(reconcileNode.children));
266
272
  });
267
273
  }
268
274
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "j-templates",
3
- "version": "7.0.102",
3
+ "version": "7.0.104",
4
4
  "description": "j-templates",
5
5
  "license": "MIT",
6
6
  "repository": "https://github.com/TypesInCode/jTemplates",