efront 3.25.11 → 3.25.12

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.
@@ -1,3 +1,15 @@
1
+ /**
2
+ * @param {Item} item
3
+ */
4
+ function pathTo(find, item, path) {
5
+ path.push(item);
6
+ if (item === find || find === item.value) {
7
+ return path;
8
+ }
9
+ for (var m of item) {
10
+ if (pathTo(find, m, path)) return path;
11
+ }
12
+ }
1
13
  var id = 0;
2
14
  class Item extends Array {
3
15
  extended = false;
@@ -60,7 +72,9 @@ class Item extends Array {
60
72
  if (isObject(this.value)) return getName(this.value);
61
73
  return String(this.value);
62
74
  }
63
-
75
+ pathTo(menu) {
76
+ return pathTo(menu, this, []);
77
+ }
64
78
  isClosed() {
65
79
  if (isObject(this.value)) return !!this.value.closed;
66
80
  return this.closed;
@@ -1,7 +1,7 @@
1
1
  var notMatchLength = new Error("矩阵长度不一致");
2
2
  class Matrix extends Array {
3
3
  static create2d(theta = 0) {
4
- return MatrixTransposed.matrix2d(theta);
4
+ return MathMatrix.matrix2d(theta);
5
5
  }
6
6
  static create3d(factor = [0, 0, 0]) {
7
7
  return MathMatrix.matrix3d(factor);
@@ -83,6 +83,10 @@ class Matrix extends Array {
83
83
  }
84
84
  }
85
85
  class MathMatrix extends Matrix {
86
+ toDOMString() {
87
+ if (this.size()[1] === 2) return `matrix(${[this[0], this[1], this[3], this[4], this[6], this[7]]})`;
88
+ return `matrix(${this})`;
89
+ }
86
90
 
87
91
  static transform(B, dots) {
88
92
  var dimention = Math.sqrt(B.length - 1) | 0;
@@ -217,6 +221,10 @@ class MathMatrix extends Matrix {
217
221
 
218
222
  }
219
223
  class MatrixTransposed extends Matrix {
224
+ toDOMString() {
225
+ if (this.size()[1] === 2) return `matrix(${[this[0], this[3], this[1], this[4], this[2], this[5]]})`;
226
+ return `matrix(${this.transpose()})`;
227
+ }
220
228
  static transform(B, dots) {
221
229
  var dimention = Math.sqrt(B.length - 1) | 0;
222
230
  if (dots.length % dimention !== 0) throw notMatchLength;
@@ -1,6 +1,14 @@
1
+ var [
2
+ /* 静止 */静止,
3
+ /* 停止 */停止,
4
+ /* 移动 */移动,
5
+ /* 减速 */减速,
6
+ /* 回弹 */回弹,
7
+ /* 停靠 */停靠,
8
+ ] = new Array(6).fill(0).map((_, i) => i);
9
+
1
10
  function inertia(gun) {
2
11
  var spd = new Speed;
3
- var animateIndex = 0;
4
12
  var lastTime = 0;
5
13
  var _decrease = function () {
6
14
  lastTime = Speed.now() - 1;
@@ -13,12 +21,12 @@ function inertia(gun) {
13
21
  if (!spd.length) return;
14
22
  var id = smooth_timer;
15
23
  var now = Speed.now();
16
- var res = decrease(now - lastTime, spd);
24
+ var res = decrease.call(that, now - lastTime, spd);
17
25
  lastTime = now;
18
26
  if (smooth_timer !== id) return;
19
27
  if (res === false || isEmpty(res)) {
20
28
  spd.unset();
21
- animateIndex = 0;
29
+ train.state = 停止;
22
30
  return;
23
31
  }
24
32
  smooth_timer = requestAnimationFrame(_decrease0);
@@ -35,12 +43,12 @@ function inertia(gun) {
35
43
  if (id !== smooth_timer) return;
36
44
  if (false === res) {
37
45
  spd.reset();
38
- animateIndex = 2;
46
+ train.state = 回弹;
39
47
  smooth_timer = requestAnimationFrame(_decrease);
40
48
  return;
41
49
  }
42
50
  if (decrease && args.filter(a => Math.abs(a) > 1).length === 0) {
43
- animateIndex = 2;
51
+ train.state = 回弹;
44
52
  smooth_timer = requestAnimationFrame(_decrease);
45
53
  return;
46
54
  }
@@ -48,30 +56,48 @@ function inertia(gun) {
48
56
  };
49
57
  var spd, smooth_timer, that, decrease;
50
58
  var train = function () {
51
- animateIndex = 1;
52
59
  _cancel();
53
60
  var args = [].slice.call(arguments, 0, arguments.length);
54
61
  spd.write(args);
62
+ if (train.state !== 移动) train.state = 移动;
55
63
  gun.apply(this, args);
56
64
  that = this;
57
65
  };
58
66
  train.smooth = function (d) {
59
67
  _cancel();
60
68
  decrease = d;
61
- if (animateIndex === 1) {
69
+ if (train.state === 移动) {
70
+ train.state = 减速;
62
71
  smooth_timer = requestAnimationFrame(smooth);
63
72
  }
64
- else if (animateIndex === 2) {
73
+ else if (train.state === 回弹 || train.state === 停靠) {
74
+ train.state = 停靠;
65
75
  smooth_timer = requestAnimationFrame(_decrease);
66
76
  }
67
77
  };
68
- train.reset = function () {
78
+ train.state = 静止;
79
+ train.reset = train.start = function () {
69
80
  _cancel();
70
- spd.reset();
81
+ spd.unset();
82
+ train.state = 静止;
71
83
  };
72
84
  return train;
73
85
 
74
86
  }
87
+
88
+ inertia.静止 = 静止;
89
+ inertia.停止 = 停止;
90
+ inertia.移动 = 移动;
91
+ inertia.减速 = 减速;
92
+ inertia.回弹 = 回弹;
93
+ inertia.停靠 = 停靠;
94
+ inertia.STAND = 静止;
95
+ inertia.STOPPING = 停止;
96
+ inertia.MOVING = 移动;
97
+ inertia.SLOWING_DWON = 减速;
98
+ inertia.REBOUNDING = 回弹;
99
+ inertia.DOCKING = 停靠;
100
+
75
101
  class Speed extends Array {
76
102
  cache = [];
77
103
  stamp = 0;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 为可能正在加载的元素添加then方法
3
+ * 占用onload onerror complete then 共4个属性
4
+ * @param {Element|Object|any} image;
5
+ */
6
+ function awaitable(image) {
7
+ if (image.complete) return image;
8
+ var oks = [];
9
+ var ohs = [];
10
+ var resolved = false,
11
+ errored = false,
12
+ error = null;
13
+ var fire = function () {
14
+ if (resolved || errored) {
15
+ var _oks = oks.splice(0, oks.length);
16
+ var _ohs = ohs.splice(0, ohs.length);
17
+ if (errored) for (var o of _ohs) o(error);
18
+ delete image.then;
19
+ if (resolved) for (var o of _oks) o(image);
20
+ image.then = then;
21
+ }
22
+ };
23
+ var then = image.then = function (ok, oh) {
24
+ if (ok) oks.push(ok);
25
+ if (oh) ohs.push(oh);
26
+ fire();
27
+ };
28
+ image.onload = function () {
29
+ if (resolved || errored) return;
30
+ resolved = true;
31
+ if (!image.complete) image.complete = true;
32
+ fire();
33
+ };
34
+ image.onerror = function (e) {
35
+ if (resolved || errored) return;
36
+ errored = true;
37
+ error = e;
38
+ fire();
39
+ };
40
+ return image;
41
+ }
@@ -1,10 +1,16 @@
1
+ function set(target, k, v) {
2
+ if (target.getAttribute(k) !== v) target.setAttribute(k, v);
3
+ }
4
+ function unset(target, k) {
5
+ if (target.hasAttribute(k)) target.removeAttribute(k);
6
+ }
1
7
  function attr(target, key, value) {
2
8
  if (arguments.length === 3) {
3
- if (value === null) target.removeAttribute(key, value);
4
- else target.setAttribute(key, value);
9
+ if (value === null) unset(target, key);
10
+ else set(target, key, value);
5
11
  } else if (isObject(key)) {
6
12
  for (var k in key) {
7
- target.setAttribute(k, key[k]);
13
+ set(target, k, key[k]);
8
14
  }
9
15
  } else if (isString(key)) {
10
16
  return target.getAttribute(key);
@@ -31,11 +31,13 @@ var keydownhandler = function (event) {
31
31
  on("keydown")(window, keydownhandler);
32
32
  var bindAccesskey = function (btn, k) {
33
33
  if (!keyMap[k]) keyMap[k] = [];
34
- removeFromList(keyMap[k], btn);
35
- keyMap[k].push(btn);
36
- once("remove")(btn, function () {
34
+ on("remove")(btn, function () {
37
35
  removeFromList(keyMap[k], btn);
38
36
  });
37
+ onmounted(btn, function () {
38
+ removeFromList(keyMap[k], btn);
39
+ keyMap[k].push(btn);
40
+ })
39
41
  };
40
42
  var getKeyFromText = function (btn) {
41
43
  var { innerText } = btn;
@@ -52,7 +52,7 @@ var mousedown = function () {
52
52
  });
53
53
  active.call(this);
54
54
  };
55
- var mouseleave = function () {
55
+ var mouseleave = function (event) {
56
56
  removeClass(this, "hover");
57
57
  };
58
58
  var mousemove = function (event) {
@@ -97,7 +97,7 @@ var emitEvent = function (item, event) {
97
97
  if (event.defaultPrevented) return;
98
98
  event.preventDefault(true);
99
99
  if (item.disabled) return;
100
- active(this, item, item, this.$src ? createItemTarget.call(this, item) : this);
100
+ active(this, item, "global", this.$src ? createItemTarget.call(this, item) : this);
101
101
  }
102
102
  function bindGlobalkey(elem, keymap, emit) {
103
103
  if (elem.keyoff) {
@@ -286,7 +286,7 @@ function main() {
286
286
  };
287
287
  var clickMenu = function (event) {
288
288
  switchMenu.cancel();
289
- if (!switchMenu.done) activeMenu.call(this);
289
+ if (!switchMenu.done) page.setFocus(this), activeMenu.call(this);
290
290
  };
291
291
 
292
292
 
@@ -360,6 +360,21 @@ function main() {
360
360
  page.active = function (a) {
361
361
  activeMenu.call(a);
362
362
  };
363
+ if (istoolbar) on("active")(page, function (event) {
364
+ if (event.item !== 'global') return;
365
+ if (page.selected) page.selected.setActive(false);
366
+ var selected = null;
367
+ for (var e of this.children) {
368
+ if (!e.menu) continue;
369
+ selected = e.menu.pathTo(event.value);
370
+ if (selected) break;
371
+ }
372
+ if (!selected) return;
373
+ var menu = selected.pop();
374
+ page.selected = menu;
375
+ if (selected[0]) selected[0].extends(menu.value);
376
+ menu.setActive(true);
377
+ });
363
378
  on("focused")(page, function () {
364
379
  var focused = page.focused;
365
380
  if (page.ispop && page === root_menu) popMenu(focused.menu, focused, false);
package/coms/zimoli/on.js CHANGED
@@ -482,7 +482,13 @@ var invoke = function (event, type, pointerType) {
482
482
  });
483
483
  if (window.addEventListener) {
484
484
  window.addEventListener("touchmove", clickcancel, true);
485
- window.addEventListener("touchstart", clickstart, true);
485
+ window.addEventListener("touchstart", function (event) {
486
+ if (event.touches.length > 1) {
487
+ clickcancel();
488
+ return;
489
+ }
490
+ clickstart.call(this, event);
491
+ }, true);
486
492
  window.addEventListener("touchend", function (event) {
487
493
  if (event.touches.length > 1) return;
488
494
  if (onclick.preventClick) return;
@@ -1 +1 @@
1
- var onmouseleave=on("mouseout");
1
+ var onmouseleave=on("mouseleave");
@@ -354,7 +354,8 @@ function picture_(image = document.createElement("div")) {
354
354
 
355
355
  image.rotateTo = function (deg) {
356
356
  rotated = deg;
357
- this.update();
357
+ updatexy();
358
+ shape();
358
359
  };
359
360
  image.rotateBy = function (deg) {
360
361
  var r = rotated;
@@ -381,7 +382,8 @@ function picture_(image = document.createElement("div")) {
381
382
  r += deg;
382
383
  }
383
384
  rotated = r;
384
- this.update(deg === 90 || deg === -90);
385
+ updatexy();
386
+ shape();
385
387
  };
386
388
  on('remove')(image, move.reset);
387
389
  on("contextmenu")(image, function (e) {
@@ -8,6 +8,7 @@ on("keydown.esc.only")(document, function (e) {
8
8
  if (r) {
9
9
  r.blur();
10
10
  remove(r);
11
+ e.preventDefault();
11
12
  }
12
13
  }
13
14
  });
@@ -245,8 +245,9 @@ function slider(autoplay, circle = true) {
245
245
  if (!event.deltaX) return;
246
246
  if (event._target && event._target !== this) return;
247
247
  event._target = outter;
248
+ cancelAnimationFrame(timer_animate);
248
249
  clearTimeout(stop_wheel_timer);
249
- stop_wheel_timer = setTimeout(park, 60);
250
+ stop_wheel_timer = setTimeout(park, 160);
250
251
  var deltax = -event.deltaX;
251
252
  moveDeltaX(deltax, event);
252
253
  });
@@ -203,6 +203,7 @@ function enrichField(f) {
203
203
  }
204
204
  else switch (f.type) {
205
205
  case "text":
206
+ case "html":
206
207
  width = 200;
207
208
  break;
208
209
  case "input":
@@ -19,13 +19,11 @@ function ybox(generator) {
19
19
  return _box.scrollHeight;
20
20
  };
21
21
  // currentTop
22
- var _scrolledTop = _box.scrollTop;
23
22
  if (!isFunction(_box_Top)) _box_Top = function (top) {
24
23
  if (isNumber(top)) {
25
24
  if (_box.scrollTop !== top) {
26
25
  _box.scrollTop = top;
27
26
  }
28
- _scrolledTop = top;
29
27
  }
30
28
  return _box.scrollTop;
31
29
  };
@@ -40,7 +38,7 @@ function ybox(generator) {
40
38
  var r = true;
41
39
  if (top < 0) {
42
40
  if (useIncrease && _Top <= 0) {
43
- r = increase(top);
41
+ r = increase_half(top, increaser_t.height);
44
42
  }
45
43
  _box.$Top(0);
46
44
  } else if (top + height >= scrollHeight) {
@@ -48,7 +46,7 @@ function ybox(generator) {
48
46
  top = increase_height + scrollHeight - height;
49
47
  }
50
48
  if (useIncrease && top + height >= scrollHeight) {
51
- r = increase(top + height - scrollHeight);
49
+ r = increase_half(top + height - scrollHeight, increaser_b.height);
52
50
  }
53
51
  _box.$Top(top);
54
52
  } else {
@@ -102,6 +100,13 @@ function ybox(generator) {
102
100
  }
103
101
  return true;
104
102
  };
103
+ var increase_half = function (deltaY, targetHeight) {
104
+ if (scrollY.state !== inertia.MOVING) {
105
+ deltaY *= (increase_height - targetHeight) / increase_height;
106
+ if (Math.abs(deltaY) < 1) return false;
107
+ }
108
+ return increase(deltaY);
109
+ }
105
110
  var increase = function (deltaY, minusOnly) {
106
111
  var t_height = increaser_t.height;
107
112
  var b_height = increaser_b.height;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.25.11",
3
+ "version": "3.25.12",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {