efront 3.14.0 → 3.14.9
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/Array2.js +9 -0
- package/coms/basic/Speed.js +120 -0
- package/coms/basic/assert.js +11 -2
- package/coms/basic/matrix.js +283 -0
- package/coms/basic/parseYML.js +5 -3
- package/coms/compile/common.js +6 -2
- package/coms/kugou/buildScroll.less +4 -0
- package/coms/zimoli/autodragchildren.js +2 -2
- package/coms/zimoli/confirm.js +0 -3
- package/coms/zimoli/data.js +3 -1
- package/coms/zimoli/drag.js +23 -6
- package/coms/zimoli/inertia.js +1 -70
- package/coms/zimoli/isMounted.js +4 -1
- package/coms/zimoli/lattice.js +1 -0
- package/coms/zimoli/list.js +43 -25
- package/coms/zimoli/matrix_test.js +10 -0
- package/coms/zimoli/menu.less +3 -1
- package/coms/zimoli/oncemount.js +7 -0
- package/coms/zimoli/onmounted.js +0 -1
- package/coms/zimoli/picture_.js +64 -58
- package/coms/zimoli/popup.js +1 -1
- package/coms/zimoli/render.js +13 -8
- package/coms/zimoli/search.js +4 -1
- package/coms/zimoli/slider.js +4 -2
- package/coms/zimoli/speed.js +10 -14
- package/coms/zimoli/speed_test.js +34 -0
- package/coms/zimoli/table.html +3 -1
- package/coms/zimoli/table.js +13 -10
- package/coms/zimoli/table.less +29 -12
- package/coms/zimoli/tree.less +0 -2
- package/coms/zimoli/vbox.js +34 -68
- package/coms/zimoli/vscroll.js +3 -2
- package/coms/zimoli/zIndex.js +5 -3
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/coms/zimoli/matrix.js +0 -146
package/coms/zimoli/isMounted.js
CHANGED
|
@@ -2,7 +2,10 @@ function isMounted(parent) {
|
|
|
2
2
|
if ("isMounted" in parent) return parent.isMounted;
|
|
3
3
|
var temp = parent;
|
|
4
4
|
while (temp && temp !== document.documentElement) {
|
|
5
|
+
if ("isMounted" in temp) {
|
|
6
|
+
return parent.isMounted = temp.isMounted;
|
|
7
|
+
}
|
|
5
8
|
temp = temp.parentNode;
|
|
6
9
|
}
|
|
7
|
-
return
|
|
10
|
+
return !!temp;
|
|
8
11
|
}
|
package/coms/zimoli/lattice.js
CHANGED
|
@@ -19,6 +19,7 @@ function lattice(element, minWidth, maxWidth = minWidth << 1, layers) {
|
|
|
19
19
|
if (boxCount < 1) boxCount = 1, addClass(_box, inadequate_class);
|
|
20
20
|
else removeClass(_box, inadequate_class);
|
|
21
21
|
_box.paddingMax = boxCount;
|
|
22
|
+
_box.group = boxCount;
|
|
22
23
|
};
|
|
23
24
|
if (layers) {
|
|
24
25
|
var _box = list(element, function (index) {
|
package/coms/zimoli/list.js
CHANGED
|
@@ -54,7 +54,7 @@ function ylist(container, generator, $Y) {
|
|
|
54
54
|
scrollTop += deltaY;
|
|
55
55
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
56
56
|
var child = children[cx];
|
|
57
|
-
if (isFinite(child.index) && child.offsetTop + child.offsetHeight
|
|
57
|
+
if (isFinite(child.index) && child.offsetTop + child.offsetHeight > scrollTop) {
|
|
58
58
|
return child;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -118,7 +118,7 @@ function ylist(container, generator, $Y) {
|
|
|
118
118
|
if (isNaN(itemIndex)) return;
|
|
119
119
|
itemIndex = +itemIndex;
|
|
120
120
|
__animated = false;
|
|
121
|
-
if (!list.offsetHeight && !list.offsetWidth && !list
|
|
121
|
+
if (!list.offsetHeight && !list.offsetWidth && !isMounted(list)) {
|
|
122
122
|
saved_itemIndex = itemIndex;
|
|
123
123
|
return;
|
|
124
124
|
}
|
|
@@ -174,7 +174,7 @@ function ylist(container, generator, $Y) {
|
|
|
174
174
|
}
|
|
175
175
|
var indexed_item = getIndexedElement(index) || bottom_item;
|
|
176
176
|
if (indexed_item) {
|
|
177
|
-
list.scrollTop = indexed_item.offsetTop + indexed_item.offsetHeight * ratio
|
|
177
|
+
list.scrollTop = -getFirstElement(1).offsetTop + indexed_item.offsetTop + indexed_item.offsetHeight * ratio;
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
180
|
var runbuild = lazy(function () {
|
|
@@ -229,7 +229,7 @@ function ylist(container, generator, $Y) {
|
|
|
229
229
|
var cache_height = list.offsetHeight;
|
|
230
230
|
|
|
231
231
|
var childrenMap = getChildrenMap();
|
|
232
|
-
var last_element = getLastElement();
|
|
232
|
+
var last_element = getLastElement(1);
|
|
233
233
|
if (!last_element || !last_element.offsetHeight) return;
|
|
234
234
|
let { scrollTop } = list;
|
|
235
235
|
scrollTop += deltaY;
|
|
@@ -265,8 +265,13 @@ function ylist(container, generator, $Y) {
|
|
|
265
265
|
}
|
|
266
266
|
if (collection.length) {
|
|
267
267
|
var item = collection[collection.length - 1];
|
|
268
|
-
|
|
269
|
-
|
|
268
|
+
var { paddingCount = 0, paddingMax } = list;
|
|
269
|
+
if (item) item = item.nextSibling;
|
|
270
|
+
if (!paddingMax) while (item && item.index % list.group) {
|
|
271
|
+
item = collection.pop();
|
|
272
|
+
}
|
|
273
|
+
var item = collection[collection.length - 1];
|
|
274
|
+
if (item) scrollTop -= item.offsetTop + getOffsetHeight(item) - collection[0].offsetTop;
|
|
270
275
|
if (paddingCount > 0 && paddingMax > 0 && paddingCount < paddingMax) {
|
|
271
276
|
let item = collection[collection.length - 1];
|
|
272
277
|
while (paddingCount > 0) {
|
|
@@ -297,7 +302,7 @@ function ylist(container, generator, $Y) {
|
|
|
297
302
|
if (!(paddingCount > 0 && paddingMax > 0 && paddingCount < paddingMax) || !(scrollTop < targetHeight)) {
|
|
298
303
|
paddingCount = 0;
|
|
299
304
|
}
|
|
300
|
-
while (scrollTop < targetHeight || paddingCount > 0) {
|
|
305
|
+
while (scrollTop < targetHeight || paddingCount > 0 || offset % list.group) {
|
|
301
306
|
offset--;
|
|
302
307
|
if (!(scrollTop < targetHeight)) {
|
|
303
308
|
paddingCount--;
|
|
@@ -347,36 +352,45 @@ function ylist(container, generator, $Y) {
|
|
|
347
352
|
}
|
|
348
353
|
};
|
|
349
354
|
|
|
350
|
-
list.stopY = function () {
|
|
355
|
+
list.stopY = function (count, spd) {
|
|
351
356
|
var firstElement = getFirstVisibleElement();
|
|
352
|
-
|
|
353
|
-
|
|
357
|
+
var lastElement = getLastVisibleElement();
|
|
358
|
+
if (!firstElement || !lastElement || !list.clientHeight) return false;
|
|
359
|
+
var paddingTop = getFirstElement(1).offsetTop;
|
|
354
360
|
var paddingBottom = parseFloat(getComputedStyle(list).paddingBottom);
|
|
355
|
-
|
|
356
|
-
|
|
361
|
+
var scrolled_t = (list.scrollTop - firstElement.offsetTop + paddingTop) / firstElement.offsetHeight;
|
|
362
|
+
if (scrolled_t > 1) scrolled_t -= scrolled_t | 0;
|
|
357
363
|
var last_y = currentY();
|
|
358
|
-
if (
|
|
364
|
+
if (spd[0] > 0) {
|
|
359
365
|
var target_ty = last_y + (1 - scrolled_t) * firstElement.offsetHeight;
|
|
360
366
|
} else {
|
|
361
367
|
var target_ty = last_y - scrolled_t * firstElement.offsetHeight;
|
|
362
368
|
}
|
|
363
|
-
var lastElement = getLastVisibleElement();
|
|
364
369
|
var scrolled_b = (list.scrollTop + list.clientHeight - lastElement.offsetTop - paddingBottom) / lastElement.offsetHeight;
|
|
365
|
-
if (scrolled_b
|
|
370
|
+
if (scrolled_b < 0) scrolled_b -= scrolled_b - 1 | 0;
|
|
371
|
+
if (spd[0] > 0) {
|
|
366
372
|
var target_by = last_y + (1 - scrolled_b) * lastElement.offsetHeight;
|
|
367
373
|
} else {
|
|
368
374
|
var target_by = last_y - scrolled_b * lastElement.offsetHeight;
|
|
369
375
|
}
|
|
370
376
|
var target_y = Math.abs(target_ty - last_y) > Math.abs(target_by - last_y) ? target_by : target_ty;
|
|
371
377
|
var delta = Math.min(calcPixel(60), list.clientHeight >> 2);
|
|
372
|
-
|
|
373
|
-
|
|
378
|
+
var deltay = Math.abs(target_y - last_y), y;
|
|
379
|
+
if (deltay >= delta) {
|
|
380
|
+
return false;
|
|
374
381
|
}
|
|
375
|
-
|
|
376
|
-
if (
|
|
377
|
-
|
|
382
|
+
if (deltay < 1) y = target_y;
|
|
383
|
+
else if (deltay > count || deltay > 3) {
|
|
384
|
+
y = last_y + (target_y > last_y ? .8 : -.8);
|
|
378
385
|
}
|
|
379
|
-
|
|
386
|
+
else {
|
|
387
|
+
y = (target_y + last_y) / 2;
|
|
388
|
+
}
|
|
389
|
+
list.Top(y);
|
|
390
|
+
if (target_y === y) {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
return true;
|
|
380
394
|
};
|
|
381
395
|
//导出方法
|
|
382
396
|
list.go = scrollTo;
|
|
@@ -398,10 +412,11 @@ function ylist(container, generator, $Y) {
|
|
|
398
412
|
list.scrollBy = scrollBy;
|
|
399
413
|
list.index = function (update) {
|
|
400
414
|
if (update === false) return saved_itemIndex;
|
|
401
|
-
var
|
|
402
|
-
if (!
|
|
403
|
-
var index =
|
|
404
|
-
var
|
|
415
|
+
var firstVisible = getFirstVisibleElement();
|
|
416
|
+
if (!firstVisible) return saved_itemIndex;
|
|
417
|
+
var index = firstVisible.index;
|
|
418
|
+
var firstElement = getFirstElement(1);
|
|
419
|
+
var scrolled = (list.scrollTop - firstVisible.offsetTop + firstElement.offsetTop + .5 | 0) / firstVisible.offsetHeight;
|
|
405
420
|
return index + scrolled;
|
|
406
421
|
};
|
|
407
422
|
list.topIndex = function () {
|
|
@@ -477,8 +492,11 @@ function list() {
|
|
|
477
492
|
$Y = container.getAttribute("direction") || container.tagName;
|
|
478
493
|
}
|
|
479
494
|
}
|
|
495
|
+
var groupCount = /\d+/.exec($Y);
|
|
496
|
+
if (groupCount) groupCount = +groupCount[0];
|
|
480
497
|
$Y = /^[xh]|[xh]$/i.test($Y) ? "X" : "Y";
|
|
481
498
|
var list = ($Y === "X" ? xlist : ylist)(container, generator, $Y);
|
|
499
|
+
if (!list.group) list.group = groupCount || 2;
|
|
482
500
|
if (bindSrc instanceof Array) {
|
|
483
501
|
list.src = bindSrc;
|
|
484
502
|
container.go(container.index() || 0);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var test_2d = function () {
|
|
2
|
+
var m = matrix.create2d();
|
|
3
|
+
assert(m.transform([0, 1]), [0, 1])
|
|
4
|
+
m.rotate(Math.PI);
|
|
5
|
+
assert(m.transform([0, 1]), [0, -1])
|
|
6
|
+
m.rotate(Math.PI / 2);
|
|
7
|
+
assert(m.transform([1, 0]), [0, -1]);
|
|
8
|
+
assert(m.transform([0, 1]), [1, 0]);
|
|
9
|
+
}
|
|
10
|
+
test_2d();
|
package/coms/zimoli/menu.less
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
& {
|
|
2
2
|
white-space: nowrap;
|
|
3
|
+
outline: none;
|
|
3
4
|
}
|
|
4
5
|
|
|
5
6
|
&>div.lack+div.more {
|
|
@@ -114,11 +115,12 @@ body:active & {
|
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
&[toolbar] {
|
|
117
|
-
>menu-item{
|
|
118
|
+
>menu-item {
|
|
118
119
|
padding-left: 6px;
|
|
119
120
|
padding-right: 6px;
|
|
120
121
|
text-align: center;
|
|
121
122
|
}
|
|
123
|
+
|
|
122
124
|
>menu-item.has-children {
|
|
123
125
|
&::after {
|
|
124
126
|
display: block;
|
package/coms/zimoli/onmounted.js
CHANGED
package/coms/zimoli/picture_.js
CHANGED
|
@@ -19,40 +19,33 @@ var isequal = (a, b) => a === b || Math.abs((a - b) / (a + b)) < 1e-12;
|
|
|
19
19
|
function picture_(image = document.createElement("div")) {
|
|
20
20
|
var image_width, image_height;
|
|
21
21
|
var scaled, x, y, min_scale, loaded_scale, locked_scale, click_scale, loaded_x, loaded_y;
|
|
22
|
-
var
|
|
22
|
+
var loaded_width, loaded_height;
|
|
23
23
|
var max_scale = 10 * devicePixelRatio;
|
|
24
24
|
var shape = function () {
|
|
25
|
-
image.shape(x, y, scaled / devicePixelRatio,
|
|
25
|
+
image.shape(x, y, scaled / devicePixelRatio, rotated);
|
|
26
|
+
loaded_rotate = rotated; loaded_scale = scaled;
|
|
26
27
|
};
|
|
27
28
|
image.reshape = shape;
|
|
28
29
|
var park = function () {
|
|
29
|
-
if (image.park) image.park(x, y, scaled / devicePixelRatio,
|
|
30
|
+
if (image.park) image.park(x, y, scaled / devicePixelRatio, loaded_rotate);
|
|
30
31
|
};
|
|
31
|
-
var
|
|
32
|
+
var loadParams = function () {
|
|
32
33
|
if (!image.width) return;
|
|
33
34
|
image_width = image.width / devicePixelRatio;
|
|
34
35
|
image_height = image.height / devicePixelRatio;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
locked_scale = loaded_scale = Math.min(
|
|
39
|
-
if (loaded_scale >=
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
loaded_scale = .8;
|
|
43
|
-
} else if (loaded_scale < max_scale) {
|
|
44
|
-
click_scale = loaded_scale;
|
|
45
|
-
loaded_scale = 1;
|
|
46
|
-
} else {
|
|
47
|
-
click_scale = max_scale;
|
|
48
|
-
loaded_scale = 1;
|
|
49
|
-
}
|
|
36
|
+
loaded_width = image.clientWidth;
|
|
37
|
+
loaded_height = image.clientHeight;
|
|
38
|
+
loaded_rotate = 0;
|
|
39
|
+
locked_scale = loaded_scale = Math.min(loaded_height / image_height, loaded_width / image_width);
|
|
40
|
+
if (loaded_scale >= 1) {
|
|
41
|
+
click_scale = 4;
|
|
42
|
+
loaded_scale = 1;
|
|
50
43
|
} else {
|
|
51
44
|
click_scale = 1;
|
|
52
45
|
}
|
|
53
|
-
loaded_x = (
|
|
54
|
-
loaded_y = (
|
|
55
|
-
min_scale = loaded_scale * .
|
|
46
|
+
loaded_x = (loaded_width - image_width * loaded_scale) / 2;
|
|
47
|
+
loaded_y = (loaded_height - image_height * loaded_scale) / 2;
|
|
48
|
+
min_scale = loaded_scale * .25;
|
|
56
49
|
scaled = loaded_scale;
|
|
57
50
|
x = loaded_x;
|
|
58
51
|
y = loaded_y;
|
|
@@ -65,7 +58,7 @@ function picture_(image = document.createElement("div")) {
|
|
|
65
58
|
shape();
|
|
66
59
|
};
|
|
67
60
|
|
|
68
|
-
on("append")(image,
|
|
61
|
+
on("append")(image, loadParams);
|
|
69
62
|
|
|
70
63
|
on("append")(image, function () {
|
|
71
64
|
mountedPictures.push(image);
|
|
@@ -73,19 +66,15 @@ function picture_(image = document.createElement("div")) {
|
|
|
73
66
|
on("remove")(image, function () {
|
|
74
67
|
removeFromList(mountedPictures, image);
|
|
75
68
|
});
|
|
76
|
-
image.init =
|
|
69
|
+
image.init = loadParams;
|
|
77
70
|
image.locked = false;
|
|
78
|
-
var last_click_time = 0;
|
|
79
71
|
|
|
80
|
-
on("
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
last_click_time = time;
|
|
84
|
-
if (delta_time > 300) return;
|
|
72
|
+
on("dblclick")(image, function (event) {
|
|
73
|
+
if (event.defaultPrevented) return;
|
|
74
|
+
event.preventDefault();
|
|
85
75
|
var image = this;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
image.locked = isequal(__scaled, loaded_scale) && isequal(loaded_x, x) && isequal(loaded_y, y);
|
|
76
|
+
loadParams();
|
|
77
|
+
image.locked = isequal(scaled, loaded_scale) && isequal(loaded_x, x) && isequal(loaded_y, y);
|
|
89
78
|
var layerx = event.offsetX || 0;
|
|
90
79
|
var layery = event.offsetY || 0;
|
|
91
80
|
if (layerx)
|
|
@@ -99,23 +88,24 @@ function picture_(image = document.createElement("div")) {
|
|
|
99
88
|
}
|
|
100
89
|
scale(layerx, layery, click_scale / loaded_scale);
|
|
101
90
|
} else {
|
|
91
|
+
click_scale = scaled;
|
|
102
92
|
set_unlock();
|
|
103
93
|
}
|
|
104
94
|
});
|
|
105
95
|
image.getScale = function () {
|
|
106
96
|
if (!this.locked && !loaded_scale) {
|
|
107
|
-
|
|
97
|
+
loadParams();
|
|
108
98
|
}
|
|
109
99
|
return +String(+scaled + 0.00005).slice(0, 6);
|
|
110
100
|
};
|
|
111
101
|
var fixpos = function () {
|
|
112
102
|
var width = image_width * scaled;
|
|
113
103
|
var height = image_height * scaled;
|
|
114
|
-
var r =
|
|
104
|
+
var r = rotated;
|
|
115
105
|
var [, , w, h] = getrotatedltwh(r);
|
|
116
106
|
var x0 = x + (width - w) / 2;
|
|
117
107
|
var y0 = y + (height - h) / 2;
|
|
118
|
-
var [x1, y1] = trimCoord([
|
|
108
|
+
var [x1, y1] = trimCoord([loaded_width, loaded_height], [x0, y0, w, h], -1);
|
|
119
109
|
x += x1 - x0;
|
|
120
110
|
y += y1 - y0;
|
|
121
111
|
};
|
|
@@ -139,6 +129,21 @@ function picture_(image = document.createElement("div")) {
|
|
|
139
129
|
var centern = (n1 + n2) / 2;
|
|
140
130
|
x = (x - centerx) * scale + centerm;
|
|
141
131
|
y = (y - centery) * scale + centern;
|
|
132
|
+
var theta = Math.atan2(n2 - n1, m2 - m1) - Math.atan2(y2 - y1, x2 - x1);
|
|
133
|
+
var r = rotated;
|
|
134
|
+
r += (theta * 180 / Math.PI);
|
|
135
|
+
image.rotateBy(theta * 180 / Math.PI);
|
|
136
|
+
// var cosa = Math.cos(theta);
|
|
137
|
+
// var sina = Math.sin(theta);
|
|
138
|
+
// var hw = image.clientWidth / 2;
|
|
139
|
+
// var hh = image.clientHeight / 2;
|
|
140
|
+
// console.log(x, y);
|
|
141
|
+
// x -= hw;
|
|
142
|
+
// y -= hh;
|
|
143
|
+
// var x0 = x * cosa - y * sina;
|
|
144
|
+
// var y0 = x * sina + y * cosa;
|
|
145
|
+
// x = x0 + hw;
|
|
146
|
+
// y = y0 + hh;
|
|
142
147
|
shape();
|
|
143
148
|
};
|
|
144
149
|
var recover = function (change) {
|
|
@@ -165,7 +170,9 @@ function picture_(image = document.createElement("div")) {
|
|
|
165
170
|
fixpos();
|
|
166
171
|
if (change || saved_x !== x || saved_y !== y) {
|
|
167
172
|
park();
|
|
173
|
+
return;
|
|
168
174
|
}
|
|
175
|
+
if (image.clientHeight && image.clientWidth) return true;
|
|
169
176
|
};
|
|
170
177
|
var move = inertia(function (deltax, deltay) {
|
|
171
178
|
var saved_x = x, saved_y = y;
|
|
@@ -174,12 +181,12 @@ function picture_(image = document.createElement("div")) {
|
|
|
174
181
|
shape();
|
|
175
182
|
if (saved_x === x && saved_y === y) return false;
|
|
176
183
|
});
|
|
177
|
-
var saved_event
|
|
184
|
+
var saved_event;
|
|
178
185
|
onmousewheel(image, function (event) {
|
|
179
186
|
var { offsetX: layerX, offsetY: layerY, deltaY } = event;
|
|
180
187
|
if (this.locked) event.preventDefault();
|
|
181
188
|
if (!deltaY) return;
|
|
182
|
-
if (!this.locked)
|
|
189
|
+
if (!this.locked) loadParams();
|
|
183
190
|
this.locked = true;
|
|
184
191
|
var ratio = Math.pow(0.99, 20 * Math.atan(deltaY / 20));
|
|
185
192
|
var __scaled = scaled;
|
|
@@ -199,7 +206,7 @@ function picture_(image = document.createElement("div")) {
|
|
|
199
206
|
saved_event = event;
|
|
200
207
|
event.moveLocked = scaled > locked_scale;
|
|
201
208
|
if (!this.locked) {
|
|
202
|
-
|
|
209
|
+
loadParams();
|
|
203
210
|
}
|
|
204
211
|
move.reset();
|
|
205
212
|
},
|
|
@@ -215,7 +222,6 @@ function picture_(image = document.createElement("div")) {
|
|
|
215
222
|
|
|
216
223
|
switch (event.touches.length) {
|
|
217
224
|
case 1:
|
|
218
|
-
if (!this.locked) return;
|
|
219
225
|
break;
|
|
220
226
|
case 2:
|
|
221
227
|
this.locked = true;
|
|
@@ -253,13 +259,13 @@ function picture_(image = document.createElement("div")) {
|
|
|
253
259
|
}
|
|
254
260
|
saved_event = null;
|
|
255
261
|
event.moveLocked = scaled >= locked_scale;
|
|
256
|
-
|
|
257
|
-
if (this.locked && onclick.preventClick) move.smooth(recover);
|
|
262
|
+
if (this.locked && onclick.preventClick) move.smooth();
|
|
258
263
|
}
|
|
259
264
|
});
|
|
260
|
-
var
|
|
265
|
+
var loaded_rotate = 0, rotated = 0;
|
|
261
266
|
var rotatexy = function (x1, y1, x2, y2) {
|
|
262
|
-
var
|
|
267
|
+
var { left, top } = getScreenPosition(image);
|
|
268
|
+
var centerx = left + image.clientLeft + image.clientWidth / 2, centery = top + image.clientTop + image.clientHeight / 2;
|
|
263
269
|
var deltax = x2 - x1, deltay = y2 - y1;
|
|
264
270
|
var rx = x1 - centerx, ry = y1 - centery;
|
|
265
271
|
var sign = -ry * deltax + rx * deltay;
|
|
@@ -268,22 +274,22 @@ function picture_(image = document.createElement("div")) {
|
|
|
268
274
|
if (sign) image.rotateBy(sign > 0 ? delta : -delta);
|
|
269
275
|
}
|
|
270
276
|
var updatexy = function () {
|
|
271
|
-
var deg =
|
|
277
|
+
var deg = rotated - loaded_rotate;
|
|
272
278
|
if (isFinite(deg)) {
|
|
273
|
-
|
|
279
|
+
loaded_rotate = rotated;
|
|
274
280
|
[x, y] = getrotatedltwh(deg, scaled);
|
|
275
281
|
}
|
|
276
282
|
};
|
|
277
283
|
var getrotatedltwh = function (a, s = scaled) {
|
|
278
284
|
var w = image_width * s;
|
|
279
285
|
var h = image_height * s;
|
|
280
|
-
var c = [
|
|
286
|
+
var c = [loaded_width / 2, loaded_height / 2];
|
|
281
287
|
var m = x + w / 2;
|
|
282
288
|
var n = y + h / 2;
|
|
283
289
|
var [c1, c2] = rotate([m, n], -a, c);
|
|
284
290
|
c1 -= w / 2;
|
|
285
291
|
c2 -= h / 2;
|
|
286
|
-
var a =
|
|
292
|
+
var a = loaded_rotate;
|
|
287
293
|
var l = c[0] - w / 2;
|
|
288
294
|
var r = l + w;
|
|
289
295
|
var t = c[1] - h / 2;
|
|
@@ -301,29 +307,28 @@ function picture_(image = document.createElement("div")) {
|
|
|
301
307
|
image.update = function (animate) {
|
|
302
308
|
if (image.locked) {
|
|
303
309
|
updatexy();
|
|
304
|
-
x += (image.clientWidth -
|
|
305
|
-
y += (image.clientHeight -
|
|
306
|
-
|
|
307
|
-
|
|
310
|
+
x += (image.clientWidth - loaded_width) / 2;
|
|
311
|
+
y += (image.clientHeight - loaded_height) / 2;
|
|
312
|
+
loaded_height = image.clientHeight;
|
|
313
|
+
loaded_width = image.clientWidth;
|
|
308
314
|
if (animate !== false) fixpos();
|
|
309
315
|
shape();
|
|
310
316
|
return;
|
|
311
317
|
}
|
|
312
|
-
|
|
318
|
+
loadParams();
|
|
313
319
|
if (animate !== false) {
|
|
314
|
-
recover
|
|
320
|
+
move.smooth(recover);
|
|
315
321
|
} else {
|
|
316
|
-
if (animate !== false) fixpos();
|
|
317
322
|
shape();
|
|
318
323
|
}
|
|
319
324
|
|
|
320
325
|
};
|
|
321
326
|
image.rotateTo = function (deg) {
|
|
322
|
-
|
|
327
|
+
rotated = deg;
|
|
323
328
|
this.update();
|
|
324
329
|
};
|
|
325
330
|
image.rotateBy = function (deg) {
|
|
326
|
-
var r =
|
|
331
|
+
var r = rotated;
|
|
327
332
|
if (deg === 90 || deg === -90) {
|
|
328
333
|
r += deg;
|
|
329
334
|
if (deg > 0) {
|
|
@@ -346,9 +351,10 @@ function picture_(image = document.createElement("div")) {
|
|
|
346
351
|
} else {
|
|
347
352
|
r += deg;
|
|
348
353
|
}
|
|
349
|
-
|
|
354
|
+
rotated = r;
|
|
350
355
|
this.update(deg === 90 || deg === -90);
|
|
351
356
|
};
|
|
357
|
+
on('remove')(image, move.reset);
|
|
352
358
|
on("contextmenu")(image, function (e) {
|
|
353
359
|
if (onclick.preventClick) e.preventDefault();
|
|
354
360
|
});
|
package/coms/zimoli/popup.js
CHANGED
|
@@ -233,7 +233,7 @@ var _as_yextra = function (global, innerWidth, innerHeight, element, target, poi
|
|
|
233
233
|
display: element.style.display
|
|
234
234
|
};
|
|
235
235
|
}
|
|
236
|
-
var zindex = zIndex();
|
|
236
|
+
var zindex = zIndex(0) + 1;
|
|
237
237
|
css(element, `position:absolute;z-index:${zindex}`);
|
|
238
238
|
css(_rhomb, { zIndex: zindex });
|
|
239
239
|
var release1 = onremove(target, function () {
|
package/coms/zimoli/render.js
CHANGED
|
@@ -2,12 +2,14 @@ var hasOwnProperty = {}.hasOwnProperty;
|
|
|
2
2
|
var renderElements = Object.create(null);
|
|
3
3
|
var presets = Object.create(null);
|
|
4
4
|
presets.template = function (t) {
|
|
5
|
-
var node = document.createElement("div");
|
|
6
5
|
var comment = document.createComment('template');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
once("append")(comment, function () {
|
|
7
|
+
var node = document.createElement(comment.parentNode.tagName || "div");
|
|
8
|
+
node.innerHTML = t.innerHTML;
|
|
9
|
+
comment.with = [].slice.call(node.childNodes, 0);
|
|
10
|
+
appendChild.after(comment, comment.with);
|
|
11
|
+
renderElement(comment.with, comment.$scope, comment.$parentScopes);
|
|
12
|
+
});
|
|
11
13
|
return comment;
|
|
12
14
|
};
|
|
13
15
|
window.renderElements = renderElements;
|
|
@@ -624,7 +626,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
624
626
|
element.renderid = 1;
|
|
625
627
|
var parentNode = element.parentNode;
|
|
626
628
|
if (parentNode) {
|
|
627
|
-
if (parentNode.renderid > 1 || parentNode
|
|
629
|
+
if (parentNode.renderid > 1 || isMounted(parentNode)) element.renderid = 2;
|
|
628
630
|
}
|
|
629
631
|
element.renders = element.renders ? [].concat(element.renders) : [];
|
|
630
632
|
var { ons, copys, attrs, props, binds, context: withContext, ids } = element.$struct;
|
|
@@ -690,7 +692,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
690
692
|
}
|
|
691
693
|
for (var k in props) {
|
|
692
694
|
try {
|
|
693
|
-
element[k] = props[k];
|
|
695
|
+
if (element[k] !== props[k]) element[k] = props[k];
|
|
694
696
|
} catch (e) { }
|
|
695
697
|
}
|
|
696
698
|
ons.forEach(([on, key, value]) => on.call(element, key, [withContext, value]));
|
|
@@ -698,7 +700,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
698
700
|
rebuild(element);
|
|
699
701
|
onappend(element, addRenderElement);
|
|
700
702
|
onremove(element, removeRenderElement);
|
|
701
|
-
if (element
|
|
703
|
+
if (isMounted(element) || element.renderid > 1) addRenderElement.call(element);
|
|
702
704
|
}
|
|
703
705
|
if (elementid) scope[elementid] = element;
|
|
704
706
|
for (var id of ids) {
|
|
@@ -780,6 +782,9 @@ function renderStructure(element, scope, parentScopes = []) {
|
|
|
780
782
|
element.removeAttribute(name);
|
|
781
783
|
}
|
|
782
784
|
else {
|
|
785
|
+
if (!/\-/.test(name) || value === '') {
|
|
786
|
+
copys.push(attr);
|
|
787
|
+
}
|
|
783
788
|
props[name.replace(/\-(\w)/g, (_, w) => w.toUpperCase())] = value === "" ? true : value;
|
|
784
789
|
}
|
|
785
790
|
}
|
package/coms/zimoli/search.js
CHANGED
|
@@ -5,7 +5,10 @@ function search(seartext, options, path = "name") {
|
|
|
5
5
|
var name = seek(o, path);
|
|
6
6
|
if (name === seartext) hasFullmatch = true;
|
|
7
7
|
var [power, m] = mark.power(name, seartext);
|
|
8
|
-
|
|
8
|
+
o = Object.create(o);
|
|
9
|
+
o.power = power;
|
|
10
|
+
if (path) o[path] = m;
|
|
11
|
+
return o;
|
|
9
12
|
}).filter(a => a.power > 0);
|
|
10
13
|
a.sort(function (a, b) {
|
|
11
14
|
return b.power - a.power;
|
package/coms/zimoli/slider.js
CHANGED
|
@@ -123,17 +123,18 @@ function slider(autoplay, circle = true) {
|
|
|
123
123
|
var park = function () {
|
|
124
124
|
direction = 0;
|
|
125
125
|
var singleTarget = getSingleTarget();
|
|
126
|
+
var spd = _speed();
|
|
126
127
|
if (singleTarget) {
|
|
127
128
|
negative_index = round(negative_index);
|
|
128
129
|
}
|
|
129
130
|
else if (delta_negative_index > 0) {
|
|
130
|
-
if (negative_index - floor(negative_index) > 0.2 / (1 +
|
|
131
|
+
if (negative_index - floor(negative_index) > 0.2 / (1 + abs(spd)))
|
|
131
132
|
negative_index = ceil(negative_index);
|
|
132
133
|
else
|
|
133
134
|
negative_index = floor(negative_index);
|
|
134
135
|
}
|
|
135
136
|
else if (delta_negative_index < 0) {
|
|
136
|
-
if (ceil(negative_index) - negative_index > 0.2 / (1 +
|
|
137
|
+
if (ceil(negative_index) - negative_index > 0.2 / (1 + abs(spd)))
|
|
137
138
|
negative_index = floor(negative_index);
|
|
138
139
|
else
|
|
139
140
|
negative_index = ceil(negative_index);
|
|
@@ -239,6 +240,7 @@ function slider(autoplay, circle = true) {
|
|
|
239
240
|
});
|
|
240
241
|
moveupon(outter, {
|
|
241
242
|
start(event) {
|
|
243
|
+
event.preventDefault();
|
|
242
244
|
cancelAnimationFrame(timer_animate);
|
|
243
245
|
clearTimeout(timer_playyer);
|
|
244
246
|
moving = true;
|
package/coms/zimoli/speed.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
if (
|
|
7
|
-
if (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
else if (deltay === 0) speed = 0;
|
|
11
|
-
}
|
|
12
|
-
} else if (deltat > 120) {
|
|
13
|
-
speed = 0;
|
|
1
|
+
|
|
2
|
+
function speed() {
|
|
3
|
+
var speed = new Speed();
|
|
4
|
+
return function (a) {
|
|
5
|
+
var now = performance.now ? performance.now() : Date.now();
|
|
6
|
+
if (isFinite(a)) {
|
|
7
|
+
if (a === 0) speed.reset();
|
|
8
|
+
else speed.write([a], now);
|
|
9
|
+
return a;
|
|
14
10
|
}
|
|
15
|
-
return speed;
|
|
11
|
+
return speed.read(now)[0];
|
|
16
12
|
};
|
|
17
13
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var s = speed();
|
|
2
|
+
var id = 0;
|
|
3
|
+
var passed = Date.now();
|
|
4
|
+
var test = async function (wait, write = '') {
|
|
5
|
+
var _id = ++id;
|
|
6
|
+
await new Promise(ok => setTimeout(ok, wait));
|
|
7
|
+
if (write) var read = s(write);
|
|
8
|
+
else var read = s();
|
|
9
|
+
var now = Date.now();
|
|
10
|
+
if (passed) var waited = now - passed;
|
|
11
|
+
else waited = 0;
|
|
12
|
+
passed = now;
|
|
13
|
+
console.log({ _id, wait, waited, read, write });
|
|
14
|
+
return read > 0.1;
|
|
15
|
+
};
|
|
16
|
+
await test(10, 20)
|
|
17
|
+
await test(20, 30);
|
|
18
|
+
await test(20, 30);
|
|
19
|
+
await test(20, 30);
|
|
20
|
+
await test(20);
|
|
21
|
+
await test(20);
|
|
22
|
+
await test(20);
|
|
23
|
+
await test(20);
|
|
24
|
+
await test(20);
|
|
25
|
+
await test(20);
|
|
26
|
+
await test(20);
|
|
27
|
+
await test(20);
|
|
28
|
+
await test(20);
|
|
29
|
+
await test(20);
|
|
30
|
+
await test(20);
|
|
31
|
+
await test(20);
|
|
32
|
+
await test(20);
|
|
33
|
+
await test(20);
|
|
34
|
+
while (await test(20));
|