j-templates 7.0.102 → 7.0.103

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