efront 3.14.0 → 3.14.8
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 +6 -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/inertia.js
CHANGED
|
@@ -1,70 +1 @@
|
|
|
1
|
-
|
|
2
|
-
function main(gun, is_delta = true) {
|
|
3
|
-
var smooth = function () {
|
|
4
|
-
var currentTime = +new Date;
|
|
5
|
-
var delta_time = currentTime - savedTime;
|
|
6
|
-
|
|
7
|
-
savedTime = currentTime;
|
|
8
|
-
if (delta_time > 6) {
|
|
9
|
-
var abs_speed = 0;
|
|
10
|
-
var args = speeds.map(function (_speed, i) {
|
|
11
|
-
var __speed = _speed() * delta_time;
|
|
12
|
-
var abs_spd = abs(__speed);
|
|
13
|
-
if (abs_spd <= 1) {
|
|
14
|
-
return _speed(0);
|
|
15
|
-
}
|
|
16
|
-
abs_speed = Math.max(abs_speed, abs_spd);
|
|
17
|
-
__speed = __speed - sign(__speed) * (abs_spd - sqrt(abs_spd) * sqrt(abs_spd - 1));
|
|
18
|
-
_speed(__speed);
|
|
19
|
-
return __speed;
|
|
20
|
-
});
|
|
21
|
-
run(args);
|
|
22
|
-
if (!(abs_speed >= 1)) {
|
|
23
|
-
if (
|
|
24
|
-
decrease instanceof Function
|
|
25
|
-
) decrease();
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
smooth_timer = requestAnimationFrame(smooth);
|
|
30
|
-
};
|
|
31
|
-
var run = function (args) {
|
|
32
|
-
if (false === gun.apply(that, args)) {
|
|
33
|
-
speeds.forEach(a => a(0));
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var saved_args, speeds, smooth_timer, savedTime = 0, that, decrease;
|
|
37
|
-
var trans = function () {
|
|
38
|
-
cancelAnimationFrame(smooth_timer);
|
|
39
|
-
var args = arguments;
|
|
40
|
-
if (!saved_args) {
|
|
41
|
-
saved_args = args;
|
|
42
|
-
speeds = [].map.call(saved_args, a => speed());
|
|
43
|
-
speeds.forEach(a => a(0));
|
|
44
|
-
savedTime = +new Date;
|
|
45
|
-
} else if (args.length !== saved_args.length) {
|
|
46
|
-
saved_args = null;
|
|
47
|
-
// throw new Error("前后传入的参数的个数应该相同!");
|
|
48
|
-
} else {
|
|
49
|
-
if (!is_delta) {
|
|
50
|
-
args = [].map.call(args, (a, i) => a - saved_args[i]);
|
|
51
|
-
}
|
|
52
|
-
that = this;
|
|
53
|
-
run(args);
|
|
54
|
-
args = speeds.map((a, i) => a(args[i]));
|
|
55
|
-
savedTime = +new Date;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
trans.smooth = function (d) {
|
|
59
|
-
decrease = d;
|
|
60
|
-
if (speeds) smooth_timer = requestAnimationFrame(smooth, 20);
|
|
61
|
-
else decrease();
|
|
62
|
-
};
|
|
63
|
-
trans.reset = function () {
|
|
64
|
-
cancelAnimationFrame(smooth_timer);
|
|
65
|
-
saved_args = null;
|
|
66
|
-
speeds = null;
|
|
67
|
-
decrease = null;
|
|
68
|
-
};
|
|
69
|
-
return trans;
|
|
70
|
-
}
|
|
1
|
+
Speed.inertia;
|
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;
|