efront 3.17.1 → 3.18.1
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/apps/pivot/api/edit.js +1 -0
- package/apps/pivot/api/list.js +20 -0
- package/apps/pivot/api.yml +8 -4
- package/apps/pivot/dict/edit.js +1 -0
- package/apps/pivot/dict/list.js +12 -0
- package/apps/pivot/link/chat.js +32 -0
- package/apps/pivot/link/chat.less +5 -0
- package/apps/pivot/link/list.html +6 -3
- package/apps/pivot/link/list.js +23 -2
- package/apps/pivot/link/list.less +10 -2
- package/apps/pivot/menu.yml +4 -1
- package/apps/pivot/proxy/list.js +9 -8
- package/apps/pivot/task/list.js +1 -1
- package/apps/pivot/user/api.html +2 -0
- package/apps/pivot/user/api.js +14 -0
- package/apps/pivot/user/api.less +0 -0
- package/coms/basic/Speed.js +0 -1
- package/coms/basic/assert.js +5 -3
- package/coms/basic/lazy.js +19 -9
- package/coms/basic/lazy_test.js +62 -0
- package/coms/basic/parseURL.js +21 -2
- package/coms/basic/refilm_decode.js +4 -2
- package/coms/frame/chat.html +19 -0
- package/coms/frame/chat.js +60 -0
- package/coms/frame/chat.less +177 -0
- package/coms/frame/design.html +7 -0
- package/coms/frame/design.js +23 -0
- package/coms/frame/design.less +17 -0
- package/coms/frame/dict.js +21 -0
- package/coms/frame/edit.js +1 -1
- package/coms/frame/left.html +1 -1
- package/coms/frame/list.js +1 -1
- package/coms/frame/route.js +1 -0
- package/coms/kugou/song.html +1 -1
- package/coms/kugou/song.js +2 -1
- package/coms/pivot/pedit.js +3 -3
- package/coms/pivot/plist.js +2 -2
- package/coms/zimoli/HexEditor.js +1 -0
- package/coms/zimoli/HexEditor.less +2 -2
- package/coms/zimoli/cloneVisible.js +1 -0
- package/coms/zimoli/container.js +1 -0
- package/coms/zimoli/createItemTarget.js +7 -0
- package/coms/zimoli/data.js +26 -12
- package/coms/zimoli/design.html +5 -4
- package/coms/zimoli/design.less +8 -3
- package/coms/zimoli/drag.js +1 -1
- package/coms/zimoli/field.html +1 -1
- package/coms/zimoli/grid.js +69 -19
- package/coms/zimoli/list.js +5 -5
- package/coms/zimoli/menu.js +9 -15
- package/coms/zimoli/menuItem.js +1 -1
- package/coms/zimoli/menuList.js +2 -1
- package/coms/zimoli/model.js +4 -3
- package/coms/zimoli/render.js +64 -31
- package/coms/zimoli/tree.js +3 -3
- package/coms/zimoli/vbox.js +2 -2
- package/coms/zimoli/zimoli.js +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/zimoli/grid.js
CHANGED
|
@@ -202,6 +202,21 @@ var resizeView = function (event) {
|
|
|
202
202
|
}
|
|
203
203
|
grid.reshape();
|
|
204
204
|
};
|
|
205
|
+
var clearResizer = function (grid) {
|
|
206
|
+
var target = grid.editting.target;
|
|
207
|
+
if (target) target.style.zIndex = null;
|
|
208
|
+
var { clientX, clientY } = grid.editting;
|
|
209
|
+
if (clientX) {
|
|
210
|
+
clientX[1].forEach(e => removeClass(e, 'border-right'));
|
|
211
|
+
clientX[2].forEach(e => removeClass(e, 'border-left'));
|
|
212
|
+
}
|
|
213
|
+
if (clientY) {
|
|
214
|
+
clientY[1].forEach(e => removeClass(e, "border-bottom"));
|
|
215
|
+
clientY[2].forEach(e => removeClass(e, "border-top"));
|
|
216
|
+
}
|
|
217
|
+
grid.editting = null;
|
|
218
|
+
};
|
|
219
|
+
|
|
205
220
|
var resizer = function (event) {
|
|
206
221
|
var grid = this;
|
|
207
222
|
if (!grid.direction) return;
|
|
@@ -227,24 +242,7 @@ var resizer = function (event) {
|
|
|
227
242
|
//右边
|
|
228
243
|
generateResizeParameters.call(grid, "x", "left", "right", "width", area.right, event, 1, resize);
|
|
229
244
|
}
|
|
230
|
-
grid.editting = resize;
|
|
231
|
-
var cancelup = onmouseup(window, function () {
|
|
232
|
-
var target = grid.editting.target;
|
|
233
|
-
if (target) target.style.zIndex = null;
|
|
234
|
-
var { clientX, clientY } = resize;
|
|
235
|
-
resize = null;
|
|
236
|
-
if (clientX) {
|
|
237
|
-
clientX[1].forEach(e => removeClass(e, 'border-right'));
|
|
238
|
-
clientX[2].forEach(e => removeClass(e, 'border-left'));
|
|
239
|
-
}
|
|
240
|
-
if (clientY) {
|
|
241
|
-
clientY[1].forEach(e => removeClass(e, "border-bottom"));
|
|
242
|
-
clientY[2].forEach(e => removeClass(e, "border-top"));
|
|
243
|
-
}
|
|
244
|
-
grid.editting = null;
|
|
245
|
-
|
|
246
|
-
cancelup();
|
|
247
|
-
});
|
|
245
|
+
return grid.editting = resize;
|
|
248
246
|
};
|
|
249
247
|
var gridListener = function () {
|
|
250
248
|
var grid = this;
|
|
@@ -261,7 +259,14 @@ var gridListener = function () {
|
|
|
261
259
|
/**
|
|
262
260
|
* 指针按下
|
|
263
261
|
*/
|
|
264
|
-
var offmousedown = onmousedown(grid,
|
|
262
|
+
var offmousedown = onmousedown(grid, function (event) {
|
|
263
|
+
if (!resizer.call(this, event)) return;
|
|
264
|
+
var that = this;
|
|
265
|
+
var cancelup = onmouseup(window, function () {
|
|
266
|
+
clearResizer(that);
|
|
267
|
+
cancelup();
|
|
268
|
+
});
|
|
269
|
+
});
|
|
265
270
|
|
|
266
271
|
var offremove = onremove(grid, function () {
|
|
267
272
|
offremove();
|
|
@@ -359,6 +364,51 @@ var bindToOrderedSpliters = function (split_points, target, value, side) {
|
|
|
359
364
|
return split_points;
|
|
360
365
|
};
|
|
361
366
|
var grid_prototype = {
|
|
367
|
+
resizeCell(cell, side, delta) {
|
|
368
|
+
side = side.toLowerCase();
|
|
369
|
+
var { left, top, right, bottom } = getScreenPosition(cell);
|
|
370
|
+
var clientX, clientY, targetX, targetY;
|
|
371
|
+
var direction;
|
|
372
|
+
switch (side.toLowerCase()[0]) {
|
|
373
|
+
case "l":
|
|
374
|
+
case "w":
|
|
375
|
+
direction = 'w';
|
|
376
|
+
clientX = left;
|
|
377
|
+
targetX = left + delta;
|
|
378
|
+
targetY = clientY = top + bottom >> 1;
|
|
379
|
+
break;
|
|
380
|
+
case "t":
|
|
381
|
+
case "n":
|
|
382
|
+
direction = 'n';
|
|
383
|
+
clientY = top;
|
|
384
|
+
targetY = top + delta;
|
|
385
|
+
targetX = clientX = left + right >> 1;
|
|
386
|
+
break;
|
|
387
|
+
case "r":
|
|
388
|
+
case "e":
|
|
389
|
+
direction = 'e';
|
|
390
|
+
clientX = right;
|
|
391
|
+
targetX = right + delta;
|
|
392
|
+
targetY = clientY = left + right >> 1;
|
|
393
|
+
|
|
394
|
+
break;
|
|
395
|
+
case "b":
|
|
396
|
+
case "s":
|
|
397
|
+
direction = 's';
|
|
398
|
+
clientX = bottom;
|
|
399
|
+
targetY = bottom + delta;
|
|
400
|
+
targetX = clientX = left + right >> 1;
|
|
401
|
+
break;
|
|
402
|
+
default:
|
|
403
|
+
throw new Error("参数不支持", side);
|
|
404
|
+
}
|
|
405
|
+
this.direction = direction;
|
|
406
|
+
var e = resizer.call(this, { clientX, clientY, target: cell });
|
|
407
|
+
if (!e) return;
|
|
408
|
+
resizeView.call(this, { clientX: targetX, clientY: targetY, target: cell });
|
|
409
|
+
clearResizer(this);
|
|
410
|
+
this.direction = '';
|
|
411
|
+
},
|
|
362
412
|
setGrid(breakpoints, bounds) {
|
|
363
413
|
var grid = this;
|
|
364
414
|
if (!bounds) {
|
package/coms/zimoli/list.js
CHANGED
|
@@ -379,12 +379,12 @@ function ylist(container, generator, $Y) {
|
|
|
379
379
|
if (deltay >= delta) {
|
|
380
380
|
return false;
|
|
381
381
|
}
|
|
382
|
-
if (deltay <
|
|
383
|
-
else if (deltay > count || deltay > 3) {
|
|
384
|
-
y = last_y + Math.max(2 * (target_y > last_y ? .8 : -.8));
|
|
385
|
-
}
|
|
382
|
+
if (deltay < 2) y = target_y;
|
|
386
383
|
else {
|
|
387
|
-
|
|
384
|
+
var speed = Math.abs(spd.read()[0]);
|
|
385
|
+
if (speed < 1) speed = 1;
|
|
386
|
+
if (deltay < 3) speed = .5;
|
|
387
|
+
y = last_y + (target_y > last_y ? speed : -speed);
|
|
388
388
|
}
|
|
389
389
|
list.Top(y);
|
|
390
390
|
if (target_y === y) {
|
package/coms/zimoli/menu.js
CHANGED
|
@@ -48,19 +48,20 @@ var getArrayNodes = function (elem) {
|
|
|
48
48
|
var nodeName = node.children.length > 1 ? node.children[0].innerHTML : node.innerHTML;
|
|
49
49
|
deep++;
|
|
50
50
|
if (nodeName) {
|
|
51
|
-
nodes.push({
|
|
51
|
+
nodes.push(new Item({
|
|
52
52
|
name: nodeName,
|
|
53
53
|
tab: deep,
|
|
54
54
|
href: node.getAttribute("path") || node.getAttribute("href"),
|
|
55
55
|
class: node.className,
|
|
56
56
|
closed: true
|
|
57
|
-
});
|
|
57
|
+
}));
|
|
58
58
|
}
|
|
59
59
|
var index = nodes.length - 1;
|
|
60
60
|
if (node.children.length > 1) {
|
|
61
61
|
[].forEach.call(node.children[1].children, run);
|
|
62
62
|
}
|
|
63
|
-
nodes[index].
|
|
63
|
+
nodes[index].push.apply(nodes[index], nodes.splice(index + 1, nodes.length - index));
|
|
64
|
+
nodes[index].children = nodes[index];
|
|
64
65
|
deep--;
|
|
65
66
|
};
|
|
66
67
|
[].forEach.call(elem.children, run);
|
|
@@ -90,17 +91,10 @@ var getTreeNodes = function (elem) {
|
|
|
90
91
|
[].forEach.call(elem.children, run);
|
|
91
92
|
return nodes;
|
|
92
93
|
};
|
|
93
|
-
function createItemTarget(item) {
|
|
94
|
-
var $scope = {};
|
|
95
|
-
var { itemName } = this.$src;
|
|
96
|
-
if (itemName) $scope[itemName] = item;
|
|
97
|
-
else $scope.menu = item, $scope.$item = item;
|
|
98
|
-
return { $scope };
|
|
99
|
-
}
|
|
100
94
|
var emitEvent = function (item, event) {
|
|
101
95
|
event.preventDefault(true);
|
|
102
96
|
if (item.disabled) return;
|
|
103
|
-
active(this, item, item, createItemTarget.call(this, item));
|
|
97
|
+
active(this, item, item, this.$src ? createItemTarget.call(this, item) : this);
|
|
104
98
|
}
|
|
105
99
|
function bindGlobalkey(elem, keymap, emit) {
|
|
106
100
|
if (elem.keymap) {
|
|
@@ -156,10 +150,10 @@ function main(elem, mode) {
|
|
|
156
150
|
mode = "inline";
|
|
157
151
|
if (elem) {
|
|
158
152
|
var generator = getGenerator(elem, 'menu-item');
|
|
159
|
-
tree(elem, function (index, item) {
|
|
153
|
+
tree(elem, function (index, item, menu) {
|
|
160
154
|
var e = generator(index, item);
|
|
161
155
|
if (!e || e.children.length) return e;
|
|
162
|
-
var m = menuItem(e,
|
|
156
|
+
var m = menuItem(e, menu, elem.useIcon);
|
|
163
157
|
return m;
|
|
164
158
|
});
|
|
165
159
|
care(elem, function (data) {
|
|
@@ -201,8 +195,8 @@ function main(elem, mode) {
|
|
|
201
195
|
case "y":
|
|
202
196
|
case "vertical":
|
|
203
197
|
if (!direction) mode = "vertical", direction = 'y';
|
|
204
|
-
var emit = function (item) {
|
|
205
|
-
active(elem, item.value, item, createItemTarget.call(elem, item.value));
|
|
198
|
+
var emit = function (item, target) {
|
|
199
|
+
active(elem, item.value, item, elem.$src ? createItemTarget.call(elem, item.value) : target);
|
|
206
200
|
};
|
|
207
201
|
if ("$src" in elem) {
|
|
208
202
|
getGenerator(elem, 'menu-item');
|
package/coms/zimoli/menuItem.js
CHANGED
|
@@ -17,7 +17,7 @@ function main(elem, scope, hasIcon) {
|
|
|
17
17
|
else {
|
|
18
18
|
item.removeAttribute("disabled");
|
|
19
19
|
}
|
|
20
|
-
render(item.children, scope, hasIcon instanceof Array ? hasIcon : [{ useIcon: hasIcon, hasIcon, name, icon }],
|
|
20
|
+
render(item.children, scope, hasIcon instanceof Array ? hasIcon : [{ useIcon: hasIcon, hasIcon, name, icon }], 0);
|
|
21
21
|
if (scope.line) item.setAttribute("line", ''), on("click")(item, preventDefault);
|
|
22
22
|
if (scope.hotkey) bindAccesskey(item, scope.hotkey);
|
|
23
23
|
return item;
|
package/coms/zimoli/menuList.js
CHANGED
|
@@ -286,6 +286,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
286
286
|
};
|
|
287
287
|
var $scope = {
|
|
288
288
|
"menu-item"(e, s) {
|
|
289
|
+
if (s === e.$scope) s = itemName ? s[itemName] : s.menu;
|
|
289
290
|
var a = button(
|
|
290
291
|
menuItem(e, s.value, this.hasIcon)
|
|
291
292
|
);
|
|
@@ -293,7 +294,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
293
294
|
page.firstMenu = a;
|
|
294
295
|
page.total = items.length;
|
|
295
296
|
}
|
|
296
|
-
a.menu = s
|
|
297
|
+
a.menu = s;
|
|
297
298
|
return a;
|
|
298
299
|
},
|
|
299
300
|
menus: items,
|
package/coms/zimoli/model.js
CHANGED
|
@@ -212,9 +212,9 @@ function main(elem) {
|
|
|
212
212
|
if (create) {
|
|
213
213
|
var e = create(elem, data, field_ref);
|
|
214
214
|
if (isNode(e)) {
|
|
215
|
-
appendChild(elem, e);
|
|
215
|
+
if (e !== elem) appendChild(elem, e);
|
|
216
216
|
}
|
|
217
|
-
else {
|
|
217
|
+
else if (!isEmpty(e)) {
|
|
218
218
|
elem.innerHTML = e;
|
|
219
219
|
}
|
|
220
220
|
return;
|
|
@@ -222,6 +222,7 @@ function main(elem) {
|
|
|
222
222
|
elem.innerHTML = '<span ng-bind=get()></span>';
|
|
223
223
|
render(elem, {
|
|
224
224
|
get() {
|
|
225
|
+
if (!field.key) return;
|
|
225
226
|
var value = seek(data, field.key);
|
|
226
227
|
if (field.options) {
|
|
227
228
|
if (!field.optionsMap) {
|
|
@@ -243,7 +244,7 @@ function main(elem) {
|
|
|
243
244
|
}
|
|
244
245
|
} else {
|
|
245
246
|
var create = field_type === "function" ? field_editor : constructors[field_type];
|
|
246
|
-
var ipt = create ? create(elem, field_ref) : input();
|
|
247
|
+
var ipt = create ? create(elem, field_ref) : field.key ? input() : null;
|
|
247
248
|
|
|
248
249
|
if (ipt) {
|
|
249
250
|
if (ipt !== elem) appendChild(elem, ipt);
|
package/coms/zimoli/render.js
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
var hasOwnProperty = {}.hasOwnProperty;
|
|
2
2
|
var renderElements = Object.create(null);
|
|
3
3
|
var presets = Object.create(null);
|
|
4
|
+
var createTemplateNodes = function (text) {
|
|
5
|
+
var node = document.createElement(this.parentNode.tagName || "div");
|
|
6
|
+
node.innerHTML = text;
|
|
7
|
+
remove(this.with);
|
|
8
|
+
this.with = [].slice.call(node.childNodes, 0);
|
|
9
|
+
appendChild.after(this, this.with);
|
|
10
|
+
renderElement(this.with, this.$scope, this.$parentScopes, this.renderid === 9);
|
|
11
|
+
};
|
|
4
12
|
presets.template = function (t) {
|
|
5
13
|
var comment = document.createComment('template');
|
|
6
14
|
comment.$scope = t.$scope;
|
|
7
15
|
comment.$parentScopes = t.$parentScopes;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
if (!t.innerHTML) {
|
|
17
|
+
care(comment, createTemplateNodes)
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
once("append")(comment, function () {
|
|
21
|
+
createTemplateNodes.call(comment, t.innerHTML);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
15
24
|
return comment;
|
|
16
25
|
};
|
|
17
26
|
window.renderElements = renderElements;
|
|
@@ -20,8 +29,11 @@ var renderidClosed = 0;
|
|
|
20
29
|
var addRenderElement = function () {
|
|
21
30
|
var element = this;
|
|
22
31
|
if (!isNode(element)) return;
|
|
23
|
-
if (element.renderid
|
|
24
|
-
|
|
32
|
+
if (element.renderid !== 9) {
|
|
33
|
+
// 只渲染一次
|
|
34
|
+
if (element.renderid < 10 && element.renderid > 0) element.renderid = ++renderidOffset;
|
|
35
|
+
renderElements[element.renderid] = element;
|
|
36
|
+
}
|
|
25
37
|
rebuild(element);
|
|
26
38
|
};
|
|
27
39
|
var removeRenderElement = function () {
|
|
@@ -78,12 +90,19 @@ var createGetter = function (search, isprop = true) {
|
|
|
78
90
|
var initialComment = function (renders, type, expression) {
|
|
79
91
|
var comment = document.createComment(`${type} ${expression}`);
|
|
80
92
|
comment.renders = renders;
|
|
81
|
-
comment.renderid = ++renderidOffset;
|
|
82
|
-
onappend(comment, addRenderElement);
|
|
83
|
-
onremove(comment, removeRenderElement);
|
|
84
93
|
appendChild.after(this, comment);
|
|
85
94
|
if (!/if/i.test(type)) remove(this);
|
|
86
|
-
|
|
95
|
+
if (!this.$struct.once) {
|
|
96
|
+
comment.renderid = ++renderidOffset;
|
|
97
|
+
onmounted(comment, addRenderElement);
|
|
98
|
+
onremove(comment, removeRenderElement);
|
|
99
|
+
if (isMounted(comment) || eagermount) rebuild(comment);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
comment.renderid = 9;
|
|
103
|
+
rebuild(comment);
|
|
104
|
+
remove(comment);
|
|
105
|
+
}
|
|
87
106
|
return comment;
|
|
88
107
|
};
|
|
89
108
|
var parseRepeat = function (expression) {
|
|
@@ -442,7 +461,7 @@ var directives = {
|
|
|
442
461
|
} else if (/^(select|input|textarea)$/i.test(this.tagName) || "value" in this) {
|
|
443
462
|
this.renders.push(setter || function () {
|
|
444
463
|
var value = getter();
|
|
445
|
-
if (value
|
|
464
|
+
if (isEmpty(value)) value = "";
|
|
446
465
|
if (deepEqual(oldValue, value)) return;
|
|
447
466
|
oldValue = value;
|
|
448
467
|
if (this.value !== value) this.value = value;
|
|
@@ -599,17 +618,17 @@ function getFromScopes(key, scope, parentScopes) {
|
|
|
599
618
|
}
|
|
600
619
|
}
|
|
601
620
|
|
|
602
|
-
function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes,
|
|
621
|
+
function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes, once) {
|
|
603
622
|
if (!isNode(element) && element.length) {
|
|
604
623
|
return [].concat.apply([], element).map(function (element) {
|
|
605
|
-
return renderElement(element, scope, parentScopes);
|
|
624
|
+
return renderElement(element, scope, parentScopes, once);
|
|
606
625
|
});
|
|
607
626
|
}
|
|
608
627
|
if (!isElement(element)) {
|
|
609
628
|
return element;
|
|
610
629
|
}
|
|
611
630
|
if (!isNumber(element.renderid)) {
|
|
612
|
-
renderStructure(element, scope, parentScopes);
|
|
631
|
+
renderStructure(element, scope, parentScopes, once);
|
|
613
632
|
}
|
|
614
633
|
var elementid = element.getAttribute("renderid") || element.getAttribute("elementid") || element.getAttribute("id");
|
|
615
634
|
if (elementid) {
|
|
@@ -631,7 +650,8 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
631
650
|
if (parentNode.renderid > 1 || isMounted(parentNode)) element.renderid = 2;
|
|
632
651
|
}
|
|
633
652
|
element.renders = element.renders ? [].concat(element.renders) : [];
|
|
634
|
-
var { ons, copys, attrs, props, binds, context: withContext, ids } = element.$struct;
|
|
653
|
+
var { ons, copys, attrs, props, binds, context: withContext, ids, once } = element.$struct;
|
|
654
|
+
if (once) element.renderid = 9;
|
|
635
655
|
delete element.$struct;
|
|
636
656
|
if (binds.src) {
|
|
637
657
|
element.$src = parseRepeat(binds.src);
|
|
@@ -679,7 +699,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
679
699
|
}
|
|
680
700
|
}
|
|
681
701
|
}
|
|
682
|
-
if (element.children && element.children.length) renderElement(element.children, scope, parentScopes);
|
|
702
|
+
if (element.children && element.children.length) renderElement(element.children, scope, parentScopes, once);
|
|
683
703
|
if (!isFirstRender) return element;
|
|
684
704
|
for (var k in binds) {
|
|
685
705
|
if (directives.hasOwnProperty(k)) {
|
|
@@ -699,10 +719,15 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
699
719
|
}
|
|
700
720
|
ons.forEach(([on, key, value]) => on.call(element, key, [withContext, value]));
|
|
701
721
|
if (element.renders.length) {
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
722
|
+
if (element.renderid !== 9) {
|
|
723
|
+
onmounted(element, addRenderElement);
|
|
724
|
+
onremove(element, removeRenderElement);
|
|
725
|
+
if (isMounted(element) || element.renderid > 1) addRenderElement.call(element);
|
|
726
|
+
else if (eagermount) rebuild(element);
|
|
727
|
+
}
|
|
728
|
+
else {
|
|
729
|
+
rebuild(element);
|
|
730
|
+
}
|
|
706
731
|
}
|
|
707
732
|
if (elementid) scope[elementid] = element;
|
|
708
733
|
for (var id of ids) {
|
|
@@ -710,7 +735,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
710
735
|
}
|
|
711
736
|
return element;
|
|
712
737
|
}
|
|
713
|
-
function renderStructure(element, scope, parentScopes = []) {
|
|
738
|
+
function renderStructure(element, scope, parentScopes = [], once) {
|
|
714
739
|
// 处理结构流
|
|
715
740
|
if (parentScopes !== null && !isArray(parentScopes)) {
|
|
716
741
|
throw new Error('父级作用域链应以数组的类型传入');
|
|
@@ -791,25 +816,33 @@ function renderStructure(element, scope, parentScopes = []) {
|
|
|
791
816
|
if (!/\-/.test(name) || value === '') {
|
|
792
817
|
copys.push(attr);
|
|
793
818
|
}
|
|
794
|
-
|
|
819
|
+
var k = name.replace(/\-(\w)/g, (_, w) => w.toUpperCase());
|
|
820
|
+
if (!(k in element)) {
|
|
821
|
+
props[k] = value === "" ? true : value;
|
|
822
|
+
}
|
|
823
|
+
else {
|
|
824
|
+
props[k] = element[k];
|
|
825
|
+
}
|
|
795
826
|
}
|
|
796
827
|
}
|
|
797
|
-
if (
|
|
828
|
+
if (props["zimoli"] || props["fresh"] || props["once"]) once = true;
|
|
829
|
+
else if (props["refresh"] || props["digest"] || props["mount"]) once = false;
|
|
830
|
+
if (!element.$struct) element.$struct = { ons, copys, binds, attrs: attr1, props, context: withContext, ids, once };
|
|
798
831
|
if (element.renderid <= -1) createStructure.call(element, types.if, types.repeat, withContext);
|
|
799
832
|
}
|
|
800
833
|
var eagermount = false, renderlock = false;
|
|
801
834
|
function render(element, scope, parentScopes, lazy = true) {
|
|
802
835
|
var if_top_length = if_top.length;
|
|
803
836
|
var haslock = false;
|
|
837
|
+
if (isFinite(scope) && arguments.length === 2) lazy = scope, scope = undefined;
|
|
838
|
+
else if (isFinite(parentScopes) && arguments.length === 3) lazy = parentScopes, parentScopes = undefined;
|
|
839
|
+
var renderonce = lazy === 0;
|
|
804
840
|
if (!renderlock) {
|
|
805
841
|
haslock = true;
|
|
806
842
|
renderlock = true;
|
|
807
|
-
|
|
808
|
-
else if (isBoolean(parentScopes) && arguments.length === 3) lazy = +parentScopes, parentScopes = undefined;
|
|
809
|
-
else lazy = +lazy;
|
|
810
|
-
eagermount = !lazy;
|
|
843
|
+
eagermount = !+lazy;
|
|
811
844
|
}
|
|
812
|
-
var e = renderElement(element, scope, parentScopes);
|
|
845
|
+
var e = renderElement(element, scope, parentScopes, renderonce);
|
|
813
846
|
if (haslock) {
|
|
814
847
|
renderlock = false;
|
|
815
848
|
eagermount = false;
|
package/coms/zimoli/tree.js
CHANGED
|
@@ -132,7 +132,7 @@ function tree() {
|
|
|
132
132
|
}
|
|
133
133
|
var tabs = new Array(com.tab + 1).join("<t></t>");
|
|
134
134
|
if (isFunction(generator)) {
|
|
135
|
-
var elem = generator(index, com instanceof Item ? com.value : com);
|
|
135
|
+
var elem = generator(index, com instanceof Item ? com.value : com, com);
|
|
136
136
|
if (!elem) return;
|
|
137
137
|
span = document.createElement('span');
|
|
138
138
|
span.innerHTML = tabs;
|
|
@@ -222,9 +222,9 @@ function tree() {
|
|
|
222
222
|
};
|
|
223
223
|
com.target = _div;
|
|
224
224
|
_div.refresh();
|
|
225
|
-
onclick(_div, function () {
|
|
225
|
+
onclick(_div, function (event) {
|
|
226
226
|
var isClosed = com.isClosed();
|
|
227
|
-
if (!active(banner, com.value, com, _div)) {
|
|
227
|
+
if (!active(banner, com.value, com, banner.$src ? createItemTarget.call(banner, com.value) : _div)) {
|
|
228
228
|
return;
|
|
229
229
|
}
|
|
230
230
|
if (isClosed === com.isClosed() && com.length) {
|
package/coms/zimoli/vbox.js
CHANGED
|
@@ -84,7 +84,7 @@ function ybox(generator) {
|
|
|
84
84
|
var stop = _box.stopY;
|
|
85
85
|
var stop2 = lazy(function () {
|
|
86
86
|
scrollY.smooth(stop);
|
|
87
|
-
},
|
|
87
|
+
}, 40);
|
|
88
88
|
var decrease = function () {
|
|
89
89
|
var res = _decrease(increaser_t) + _decrease(increaser_b);
|
|
90
90
|
if (!res) {
|
|
@@ -128,7 +128,7 @@ function ybox(generator) {
|
|
|
128
128
|
} else {
|
|
129
129
|
var wheelTime = 0;
|
|
130
130
|
onmousewheel(_box, function (event) {
|
|
131
|
-
if (event.timeStamp - wheelTime >
|
|
131
|
+
if (event.timeStamp - wheelTime > 40 && Math.abs(event.deltaY) < 12) {
|
|
132
132
|
wheelTime = event.timeStamp;
|
|
133
133
|
return;
|
|
134
134
|
}
|
package/coms/zimoli/zimoli.js
CHANGED
|
@@ -594,7 +594,7 @@ function addGlobal(element, name = null, isDestroy) {
|
|
|
594
594
|
}
|
|
595
595
|
global[name] = element;
|
|
596
596
|
} else if (isNode(name)) {
|
|
597
|
-
if (isDestroy) appendChild.insert(name, element);
|
|
597
|
+
if (isDestroy || name.nodeType !== 1) appendChild.insert(name, element);
|
|
598
598
|
else appendChild(name, element);
|
|
599
599
|
} else if (isFunction(name)) {
|
|
600
600
|
name(element);
|