efront 3.21.4 → 3.21.5
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.
- package/coms/frame/payment.js +1 -1
- package/coms/zimoli/render.js +49 -55
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/frame/payment.js
CHANGED
package/coms/zimoli/render.js
CHANGED
|
@@ -7,7 +7,7 @@ var createTemplateNodes = function (text) {
|
|
|
7
7
|
remove(this.with);
|
|
8
8
|
this.with = [].slice.call(node.childNodes, 0);
|
|
9
9
|
appendChild.after(this, this.with);
|
|
10
|
-
renderElement(this.with, this.$scope, this.$parentScopes, this.renderid === 9);
|
|
10
|
+
this.with = renderElement(this.with, this.$scope, this.$parentScopes, this.renderid === 9);
|
|
11
11
|
};
|
|
12
12
|
presets.template = function (t) {
|
|
13
13
|
var comment = document.createComment('template');
|
|
@@ -23,7 +23,7 @@ presets.template = function (t) {
|
|
|
23
23
|
}
|
|
24
24
|
return comment;
|
|
25
25
|
};
|
|
26
|
-
window.renderElements = renderElements;
|
|
26
|
+
if (!isProduction) window.renderElements = renderElements;
|
|
27
27
|
var renderidOffset = 10;
|
|
28
28
|
var renderidClosed = 0;
|
|
29
29
|
var addRenderElement = function () {
|
|
@@ -87,14 +87,22 @@ var createGetter = function (search, isprop = true) {
|
|
|
87
87
|
}
|
|
88
88
|
return new Function("event", `${withContext}with(this.$scope){${/([\=\(\+\-])/.test(searchContext) ? ret + searchContext : `${ret}${searchContext}.call(this.$scope,event)`}}`);
|
|
89
89
|
};
|
|
90
|
-
var
|
|
90
|
+
var createComment = function (renders, type, expression) {
|
|
91
91
|
var comment = document.createComment(`${type} ${expression}`);
|
|
92
92
|
comment.renders = renders;
|
|
93
93
|
comment.$scope = this.$scope;
|
|
94
|
+
comment.$struct = this.$struct;
|
|
94
95
|
comment.$parentScopes = this.$parentScopes;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
if (this.parentNode) {
|
|
97
|
+
appendChild.after(this, comment);
|
|
98
|
+
if (!/^if|^else/i.test(type)) remove(this);
|
|
99
|
+
}
|
|
100
|
+
comment.template = this;
|
|
101
|
+
return comment;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
var initialComment = function (comment) {
|
|
105
|
+
if (!comment.$struct.once) {
|
|
98
106
|
comment.renderid = ++renderidOffset;
|
|
99
107
|
onmounted(comment, addRenderElement);
|
|
100
108
|
onremove(comment, removeRenderElement);
|
|
@@ -105,8 +113,8 @@ var initialComment = function (renders, type, expression) {
|
|
|
105
113
|
rebuild(comment);
|
|
106
114
|
remove(comment);
|
|
107
115
|
}
|
|
108
|
-
return comment;
|
|
109
116
|
};
|
|
117
|
+
|
|
110
118
|
var parseRepeat = function (expression) {
|
|
111
119
|
var reg =
|
|
112
120
|
// /////////////////////////////////////////// i // r ///////////////////////// o ///// a ///////////////////// t /////
|
|
@@ -141,7 +149,6 @@ var parseRepeat = function (expression) {
|
|
|
141
149
|
var createRepeat = function (search, id = 0) {
|
|
142
150
|
// 懒渲染
|
|
143
151
|
// throw new Error("repeat is not supported! use list component instead");
|
|
144
|
-
|
|
145
152
|
var [context, expression] = search;
|
|
146
153
|
var res = parseRepeat(expression);
|
|
147
154
|
if (!res) throw new Error(`不能识别循环表达式: ${expression} `);
|
|
@@ -206,33 +213,15 @@ var createRepeat = function (search, id = 0) {
|
|
|
206
213
|
if (clonedElements1[k] !== clonedElements[k]) remove(clonedElements[k]);
|
|
207
214
|
}
|
|
208
215
|
clonedElements = clonedElements1;
|
|
216
|
+
this.with = cloned;
|
|
209
217
|
}];
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
once("append")(this, initialComment.bind(this, renders, "repeat", expression));
|
|
214
|
-
}
|
|
215
|
-
};
|
|
216
|
-
var comment = function (elements) {
|
|
217
|
-
for (var cx = elements.length - 2; cx > 1; cx -= 2) {
|
|
218
|
-
var e = elements[cx];
|
|
219
|
-
if (e.previousSibling === this) var c = this;
|
|
220
|
-
else {
|
|
221
|
-
var c = document.createComment('else' + (cx < elements.length - 2 ? "if .." : ''));
|
|
222
|
-
e.parentNode.insertBefore(c, e);
|
|
223
|
-
}
|
|
224
|
-
elements.splice(cx, 0, c);
|
|
225
|
-
remove(e);
|
|
226
|
-
}
|
|
218
|
+
var comment = createComment.call(this, renders, 'repeat', expression);
|
|
219
|
+
initialComment(comment);
|
|
220
|
+
return comment;
|
|
227
221
|
};
|
|
228
222
|
var initIf = function (ifs) {
|
|
229
223
|
for (var s of ifs) {
|
|
230
|
-
|
|
231
|
-
if (s.parent) {
|
|
232
|
-
initialComment.call(s[0], s.renders, "if", s.comment);
|
|
233
|
-
} else {
|
|
234
|
-
once("append")(s[0], initialComment.bind(s[0], s.renders, "if", s.comment));
|
|
235
|
-
}
|
|
224
|
+
initialComment(s[0]);
|
|
236
225
|
}
|
|
237
226
|
};
|
|
238
227
|
var createIf = function (search, id = 0) {
|
|
@@ -246,7 +235,7 @@ var createIf = function (search, id = 0) {
|
|
|
246
235
|
elements.comment = search[1];
|
|
247
236
|
elements.renders = [function () {
|
|
248
237
|
var shouldMount = -1;
|
|
249
|
-
for (var cx = 0, dx = elements.length; cx < dx; cx +=
|
|
238
|
+
for (var cx = 0, dx = elements.length; cx < dx; cx += 2) {
|
|
250
239
|
var getter = elements[cx + 1];
|
|
251
240
|
if (!getter || getter()) {
|
|
252
241
|
shouldMount = cx;
|
|
@@ -255,21 +244,23 @@ var createIf = function (search, id = 0) {
|
|
|
255
244
|
}
|
|
256
245
|
if (savedValue === shouldMount) return;
|
|
257
246
|
savedValue = shouldMount;
|
|
258
|
-
for (var cx = 0, dx = elements.length; cx < dx; cx +=
|
|
259
|
-
var
|
|
247
|
+
for (var cx = 0, dx = elements.length; cx < dx; cx += 2) {
|
|
248
|
+
var c = elements[cx];
|
|
260
249
|
if (cx === shouldMount) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
250
|
+
var e = c.template;
|
|
251
|
+
appendChild.after(c, e);
|
|
252
|
+
if (e.renderid < 0) {
|
|
253
|
+
e.renderid = id;
|
|
254
|
+
c.template = render(e, this.$scope, this.$parentScopes);
|
|
265
255
|
}
|
|
266
256
|
}
|
|
267
257
|
else {
|
|
268
|
-
remove(
|
|
258
|
+
remove(c.template);
|
|
269
259
|
}
|
|
270
260
|
}
|
|
271
261
|
|
|
272
262
|
}];
|
|
263
|
+
return elements[0] = createComment.call(element, elements.renders, 'if', elements.comment);
|
|
273
264
|
};
|
|
274
265
|
var parseIfWithRepeat = function (ifExpression, repeatExpression) {
|
|
275
266
|
var repeater = parseRepeat(repeatExpression);
|
|
@@ -350,17 +341,17 @@ var createStructure = function ({ name: ifkey, key, value: ifexp } = {}, { name:
|
|
|
350
341
|
}
|
|
351
342
|
if (before.length > 0) {
|
|
352
343
|
// 懒渲染
|
|
353
|
-
createIf.call(element, [context, before.join("&&")], null);
|
|
344
|
+
return createIf.call(element, [context, before.join("&&")], null);
|
|
354
345
|
} else {
|
|
355
346
|
element.removeAttribute(forkey);
|
|
356
|
-
createRepeat.call(element, [context, repeat], null);
|
|
347
|
+
return createRepeat.call(element, [context, repeat], null);
|
|
357
348
|
}
|
|
358
349
|
};
|
|
359
350
|
|
|
360
351
|
var if_top = [];
|
|
361
352
|
var structures = {
|
|
362
353
|
"if"(search) {
|
|
363
|
-
createIf.call(this, search);
|
|
354
|
+
return createIf.call(this, search);
|
|
364
355
|
},
|
|
365
356
|
"else"(search) {
|
|
366
357
|
for (var cx = if_top.length - 1; cx >= 0; cx--) {
|
|
@@ -374,10 +365,11 @@ var structures = {
|
|
|
374
365
|
if (search && search[1]) {
|
|
375
366
|
var getter = createGetter(search).bind(this);
|
|
376
367
|
}
|
|
377
|
-
|
|
368
|
+
var comment = createComment.call(this, undefined, search[1] ? 'elseif' : 'else', search[1]);
|
|
369
|
+
top.push(comment, getter);
|
|
378
370
|
},
|
|
379
371
|
repeat(search) {
|
|
380
|
-
createRepeat.call(this, search);
|
|
372
|
+
return createRepeat.call(this, search);
|
|
381
373
|
},
|
|
382
374
|
};
|
|
383
375
|
structures["else-if"] = structures.elseif = structures.else;
|
|
@@ -629,7 +621,7 @@ function getFromScopes(key, scope, parentScopes) {
|
|
|
629
621
|
|
|
630
622
|
function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes, once) {
|
|
631
623
|
if (!isNode(element) && element.length) {
|
|
632
|
-
return
|
|
624
|
+
return Array.prototype.slice.call(element, 0, element.length).map(function (element) {
|
|
633
625
|
return renderElement(element, scope, parentScopes, once);
|
|
634
626
|
});
|
|
635
627
|
}
|
|
@@ -637,19 +629,20 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
637
629
|
return element;
|
|
638
630
|
}
|
|
639
631
|
if (!isNumber(element.renderid)) {
|
|
640
|
-
renderStructure(element, scope, parentScopes, once);
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
if (elementid) {
|
|
644
|
-
if (scope[elementid]) {
|
|
645
|
-
if (scope[elementid] !== element) throw new Error("同一个id不能使用两次:" + elementid);
|
|
646
|
-
} else {
|
|
647
|
-
scope[elementid] = element;
|
|
632
|
+
let element1 = renderStructure(element, scope, parentScopes, once);
|
|
633
|
+
if (element1 !== element) {
|
|
634
|
+
element = element1;
|
|
648
635
|
}
|
|
636
|
+
if (!element) return;
|
|
649
637
|
}
|
|
650
|
-
if (element.renderid < 0) {
|
|
638
|
+
if (element.renderid < 0 || element.nodeType !== 1) {
|
|
651
639
|
return element;
|
|
652
640
|
}
|
|
641
|
+
var elementid = element.getAttribute("renderid") || element.getAttribute("elementid") || element.getAttribute("id");
|
|
642
|
+
if (elementid) {
|
|
643
|
+
if (scope[elementid] && scope[elementid] !== element) throw new Error("同一个id不能使用两次:" + elementid);
|
|
644
|
+
scope[elementid] = element;
|
|
645
|
+
}
|
|
653
646
|
var isFirstRender = !element.renderid;
|
|
654
647
|
|
|
655
648
|
if (isFirstRender) {
|
|
@@ -842,7 +835,8 @@ function renderStructure(element, scope, parentScopes = [], once) {
|
|
|
842
835
|
if (props["zimoli"] || props["fresh"] || props["once"]) once = true;
|
|
843
836
|
else if (props["refresh"] || props["digest"] || props["mount"]) once = false;
|
|
844
837
|
if (!element.$struct) element.$struct = { ons, copys, binds, attrs: attr1, props, context: withContext, ids, once };
|
|
845
|
-
if (element.renderid <= -1) createStructure.call(element, types.if, types.repeat, withContext);
|
|
838
|
+
if (element.renderid <= -1) return createStructure.call(element, types.if, types.repeat, withContext);
|
|
839
|
+
return element;
|
|
846
840
|
}
|
|
847
841
|
var eagermount = false, renderlock = false;
|
|
848
842
|
function render(element, scope, parentScopes, lazy = true) {
|