Skip to content

Commit 78b924b

Browse files
committed
version 3.2.0-alpha.37
1 parent 361e83e commit 78b924b

File tree

7 files changed

+130
-38
lines changed

7 files changed

+130
-38
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cample",
3-
"version": "3.2.0-alpha.36",
3+
"version": "3.2.0-alpha.37",
44
"description": "Cample.js - fast modern javascript framework. Reactivity without virtual DOM!",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/core/components/each/each.ts

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,18 @@ export class Each extends DataComponent {
173173
currentNode: NodeType,
174174
indexData: any,
175175
eachIndex: number,
176-
importData: any
176+
importData: any,
177+
oldData: any
177178
) => {
178-
const { values, nodes, stack } = currentNode;
179-
for (let i = 0; i < values.length; i++) {
180-
const value = values[i];
179+
const { values, nodes, stack, valuesImport } = currentNode;
180+
if (oldData[eachIndex] !== indexData) {
181+
for (let i = 0; i < values.length; i++) {
182+
const value = values[i];
183+
value(nodes, stack, indexData, importData, eachIndex, value);
184+
}
185+
}
186+
for (let i = 0; i < (valuesImport as any).length; i++) {
187+
const value = (valuesImport as any)[i];
181188
value(nodes, stack, indexData, importData, eachIndex, value);
182189
}
183190
};
@@ -303,7 +310,8 @@ export class Each extends DataComponent {
303310
oldNodes[oldFirstIndex],
304311
data[newFirstIndex],
305312
newFirstIndex,
306-
importData
313+
importData,
314+
oldData
307315
);
308316
newData[newFirstIndex++] = oldNodes[oldFirstIndex++];
309317
continue;
@@ -323,7 +331,8 @@ export class Each extends DataComponent {
323331
oldNodes[currentOldLastIndex],
324332
data[currentNewLastIndex],
325333
currentNewLastIndex,
326-
importData
334+
importData,
335+
oldData
327336
);
328337
newData[currentNewLastIndex] = oldNodes[currentOldLastIndex];
329338
if (
@@ -344,13 +353,15 @@ export class Each extends DataComponent {
344353
oldNodes[currentOldLastIndex],
345354
data[newFirstIndex],
346355
newFirstIndex,
347-
importData
356+
importData,
357+
oldData
348358
);
349359
renderValuesNode(
350360
oldNodes[oldFirstIndex],
351361
data[currentNewLastIndex],
352362
currentNewLastIndex,
353-
importData
363+
importData,
364+
oldData
354365
);
355366
const el1 = (newData[newFirstIndex] =
356367
oldNodes[currentOldLastIndex]).el as Element;
@@ -460,7 +471,8 @@ export class Each extends DataComponent {
460471
oldNodes[oldFirstIndex],
461472
data[newFirstIndex],
462473
newFirstIndex,
463-
importData
474+
importData,
475+
oldData
464476
);
465477
newData[newFirstIndex] = oldNodes[oldFirstIndex++];
466478
if (
@@ -486,7 +498,8 @@ export class Each extends DataComponent {
486498
oldNodes[currentOldLastIndex],
487499
data[currentNewLastIndex],
488500
currentNewLastIndex,
489-
importData
501+
importData,
502+
oldData
490503
);
491504
newData[currentNewLastIndex] =
492505
oldNodes[currentOldLastIndex];
@@ -508,13 +521,15 @@ export class Each extends DataComponent {
508521
oldNodes[currentOldLastIndex],
509522
data[newFirstIndex],
510523
newFirstIndex,
511-
importData
524+
importData,
525+
oldData
512526
);
513527
renderValuesNode(
514528
oldNodes[oldFirstIndex],
515529
data[currentNewLastIndex],
516530
currentNewLastIndex,
517-
importData
531+
importData,
532+
oldData
518533
);
519534
const el1 = (newData[newFirstIndex] =
520535
oldNodes[currentOldLastIndex]).el as Element;
@@ -541,7 +556,8 @@ export class Each extends DataComponent {
541556
newData[newFirstIndex],
542557
data[newFirstIndex],
543558
newFirstIndex++,
544-
importData
559+
importData,
560+
oldData
545561
);
546562
oldNodes[currentIndex] = undefined as unknown as NodeType;
547563
continue;

src/core/functions/data/create-element.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ export const createElement = (
2828
nodes: templateNodes,
2929
el: templateElemenet,
3030
render: templateRender,
31-
values: newValues
31+
values: newValues,
32+
valuesImport,
33+
valuesLength: lengthValues
3234
} = templateEl;
3335
const el = (templateElemenet as Element).cloneNode(true);
3436
el[EACH_INDEX_NAME] = eachIndex;
3537
const length = templateNodes.length;
3638
const nodes: NodeNodesType = new Array(length + 1);
37-
const lengthValues = newValues.length;
3839
const stack: StackType = new Array(lengthValues);
3940
const newNodes = new Array(lengthValues);
4041
nodes[0] = el as ChildNode;
@@ -74,6 +75,7 @@ export const createElement = (
7475
}
7576
const currentNode: NodeType = {
7677
values: newValues,
78+
valuesImport,
7779
dataId,
7880
nodes: newNodes,
7981
stack,

src/core/functions/parse/parse-key.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ export const parseKey = (
9696
key: isValue ? (renderedKey as string) : key,
9797
originType
9898
};
99+
if (val) {
100+
const isValKey = val.some((e) => {
101+
return e.isValueImport;
102+
});
103+
keyObj.isValueImport = isValKey;
104+
}
99105
if (isValue) {
100106
keyObj.isValue = isValue;
101107
}

0 commit comments

Comments
 (0)