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.
Files changed (59) hide show
  1. package/apps/pivot/api/edit.js +1 -0
  2. package/apps/pivot/api/list.js +20 -0
  3. package/apps/pivot/api.yml +8 -4
  4. package/apps/pivot/dict/edit.js +1 -0
  5. package/apps/pivot/dict/list.js +12 -0
  6. package/apps/pivot/link/chat.js +32 -0
  7. package/apps/pivot/link/chat.less +5 -0
  8. package/apps/pivot/link/list.html +6 -3
  9. package/apps/pivot/link/list.js +23 -2
  10. package/apps/pivot/link/list.less +10 -2
  11. package/apps/pivot/menu.yml +4 -1
  12. package/apps/pivot/proxy/list.js +9 -8
  13. package/apps/pivot/task/list.js +1 -1
  14. package/apps/pivot/user/api.html +2 -0
  15. package/apps/pivot/user/api.js +14 -0
  16. package/apps/pivot/user/api.less +0 -0
  17. package/coms/basic/Speed.js +0 -1
  18. package/coms/basic/assert.js +5 -3
  19. package/coms/basic/lazy.js +19 -9
  20. package/coms/basic/lazy_test.js +62 -0
  21. package/coms/basic/parseURL.js +21 -2
  22. package/coms/basic/refilm_decode.js +4 -2
  23. package/coms/frame/chat.html +19 -0
  24. package/coms/frame/chat.js +60 -0
  25. package/coms/frame/chat.less +177 -0
  26. package/coms/frame/design.html +7 -0
  27. package/coms/frame/design.js +23 -0
  28. package/coms/frame/design.less +17 -0
  29. package/coms/frame/dict.js +21 -0
  30. package/coms/frame/edit.js +1 -1
  31. package/coms/frame/left.html +1 -1
  32. package/coms/frame/list.js +1 -1
  33. package/coms/frame/route.js +1 -0
  34. package/coms/kugou/song.html +1 -1
  35. package/coms/kugou/song.js +2 -1
  36. package/coms/pivot/pedit.js +3 -3
  37. package/coms/pivot/plist.js +2 -2
  38. package/coms/zimoli/HexEditor.js +1 -0
  39. package/coms/zimoli/HexEditor.less +2 -2
  40. package/coms/zimoli/cloneVisible.js +1 -0
  41. package/coms/zimoli/container.js +1 -0
  42. package/coms/zimoli/createItemTarget.js +7 -0
  43. package/coms/zimoli/data.js +26 -12
  44. package/coms/zimoli/design.html +5 -4
  45. package/coms/zimoli/design.less +8 -3
  46. package/coms/zimoli/drag.js +1 -1
  47. package/coms/zimoli/field.html +1 -1
  48. package/coms/zimoli/grid.js +69 -19
  49. package/coms/zimoli/list.js +5 -5
  50. package/coms/zimoli/menu.js +9 -15
  51. package/coms/zimoli/menuItem.js +1 -1
  52. package/coms/zimoli/menuList.js +2 -1
  53. package/coms/zimoli/model.js +4 -3
  54. package/coms/zimoli/render.js +64 -31
  55. package/coms/zimoli/tree.js +3 -3
  56. package/coms/zimoli/vbox.js +2 -2
  57. package/coms/zimoli/zimoli.js +1 -1
  58. package/package.json +1 -1
  59. package/public/efront.js +1 -1
@@ -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, resizer);
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) {
@@ -379,12 +379,12 @@ function ylist(container, generator, $Y) {
379
379
  if (deltay >= delta) {
380
380
  return false;
381
381
  }
382
- if (deltay < 1) y = target_y;
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
- y = (target_y + last_y) / 2;
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) {
@@ -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].children = nodes.splice(index + 1, nodes.length - 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, item, elem.useIcon);
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');
@@ -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 }], false);
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;
@@ -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.menu;
297
+ a.menu = s;
297
298
  return a;
298
299
  },
299
300
  menus: items,
@@ -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);
@@ -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
- once("append")(comment, function () {
9
- var node = document.createElement(comment.parentNode.tagName || "div");
10
- node.innerHTML = t.innerHTML;
11
- comment.with = [].slice.call(node.childNodes, 0);
12
- appendChild.after(comment, comment.with);
13
- renderElement(comment.with, comment.$scope, comment.$parentScopes);
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 < 10 && element.renderid > 0) element.renderid = ++renderidOffset;
24
- renderElements[element.renderid] = element;
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
- rebuild(comment);
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 === undefined) 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, eager) {
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
- onmounted(element, addRenderElement);
703
- onremove(element, removeRenderElement);
704
- if (isMounted(element) || element.renderid > 1) addRenderElement.call(element);
705
- else if (eagermount) rebuild(element);
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
- props[name.replace(/\-(\w)/g, (_, w) => w.toUpperCase())] = value === "" ? true : value;
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 (!element.$struct) element.$struct = { ons, copys, binds, attrs: attr1, props, context: withContext, ids };
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
- if (isBoolean(scope) && arguments.length === 2) lazy = +scope, scope = undefined;
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;
@@ -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) {
@@ -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
- }, 60);
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 > 60 && Math.abs(event.deltaY) < 12) {
131
+ if (event.timeStamp - wheelTime > 40 && Math.abs(event.deltaY) < 12) {
132
132
  wheelTime = event.timeStamp;
133
133
  return;
134
134
  }
@@ -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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.17.1",
3
+ "version": "3.18.1",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {