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.
- package/coms/basic/Item.js +15 -1
- package/coms/basic/Matrix.js +9 -1
- package/coms/basic/Speed.js +36 -10
- package/coms/basic/awaitable.js +41 -0
- package/coms/zimoli/attr.js +9 -3
- package/coms/zimoli/bindAccesskey.js +5 -3
- package/coms/zimoli/button.js +1 -1
- package/coms/zimoli/menu.js +1 -1
- package/coms/zimoli/menuList.js +16 -1
- package/coms/zimoli/on.js +7 -1
- package/coms/zimoli/onmouseleave.js +1 -1
- package/coms/zimoli/picture_.js +4 -2
- package/coms/zimoli/popup.js +1 -0
- package/coms/zimoli/slider.js +2 -1
- package/coms/zimoli/table.js +1 -0
- package/coms/zimoli/vbox.js +9 -4
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/basic/Item.js
CHANGED
|
@@ -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;
|
package/coms/basic/Matrix.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var notMatchLength = new Error("矩阵长度不一致");
|
|
2
2
|
class Matrix extends Array {
|
|
3
3
|
static create2d(theta = 0) {
|
|
4
|
-
return
|
|
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;
|
package/coms/basic/Speed.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
69
|
+
if (train.state === 移动) {
|
|
70
|
+
train.state = 减速;
|
|
62
71
|
smooth_timer = requestAnimationFrame(smooth);
|
|
63
72
|
}
|
|
64
|
-
else if (
|
|
73
|
+
else if (train.state === 回弹 || train.state === 停靠) {
|
|
74
|
+
train.state = 停靠;
|
|
65
75
|
smooth_timer = requestAnimationFrame(_decrease);
|
|
66
76
|
}
|
|
67
77
|
};
|
|
68
|
-
train.
|
|
78
|
+
train.state = 静止;
|
|
79
|
+
train.reset = train.start = function () {
|
|
69
80
|
_cancel();
|
|
70
|
-
spd.
|
|
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
|
+
}
|
package/coms/zimoli/attr.js
CHANGED
|
@@ -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
|
|
4
|
-
else target
|
|
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
|
|
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
|
-
|
|
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;
|
package/coms/zimoli/button.js
CHANGED
package/coms/zimoli/menu.js
CHANGED
|
@@ -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,
|
|
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) {
|
package/coms/zimoli/menuList.js
CHANGED
|
@@ -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",
|
|
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("
|
|
1
|
+
var onmouseleave=on("mouseleave");
|
package/coms/zimoli/picture_.js
CHANGED
|
@@ -354,7 +354,8 @@ function picture_(image = document.createElement("div")) {
|
|
|
354
354
|
|
|
355
355
|
image.rotateTo = function (deg) {
|
|
356
356
|
rotated = deg;
|
|
357
|
-
|
|
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
|
-
|
|
385
|
+
updatexy();
|
|
386
|
+
shape();
|
|
385
387
|
};
|
|
386
388
|
on('remove')(image, move.reset);
|
|
387
389
|
on("contextmenu")(image, function (e) {
|
package/coms/zimoli/popup.js
CHANGED
package/coms/zimoli/slider.js
CHANGED
|
@@ -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,
|
|
250
|
+
stop_wheel_timer = setTimeout(park, 160);
|
|
250
251
|
var deltax = -event.deltaX;
|
|
251
252
|
moveDeltaX(deltax, event);
|
|
252
253
|
});
|
package/coms/zimoli/table.js
CHANGED
package/coms/zimoli/vbox.js
CHANGED
|
@@ -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 =
|
|
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 =
|
|
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;
|