efront 3.14.2 → 3.14.11
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/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/lattice.js +1 -0
- package/coms/zimoli/list.js +39 -29
- 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 +7 -2
- 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/tree.less +0 -2
- package/coms/zimoli/vbox.js +32 -74
- 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/list.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// 中文编码 utf8
|
|
2
|
-
function ylist(container, generator, $Y
|
|
2
|
+
function ylist(container, generator, $Y) {
|
|
3
3
|
const cache_height = 2000;
|
|
4
4
|
var restHeight = cache_height;
|
|
5
5
|
var list = container || div();
|
|
@@ -54,7 +54,7 @@ function ylist(container, generator, $Y, group) {
|
|
|
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
|
}
|
|
@@ -174,7 +174,7 @@ function ylist(container, generator, $Y, group) {
|
|
|
174
174
|
}
|
|
175
175
|
var indexed_item = getIndexedElement(index) || bottom_item;
|
|
176
176
|
if (indexed_item) {
|
|
177
|
-
list.scrollTop = -getFirstElement().offsetTop + 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, group) {
|
|
|
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;
|
|
@@ -264,7 +264,14 @@ function ylist(container, generator, $Y, group) {
|
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
if (collection.length) {
|
|
267
|
-
var
|
|
267
|
+
var item = collection[collection.length - 1];
|
|
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;
|
|
268
275
|
if (paddingCount > 0 && paddingMax > 0 && paddingCount < paddingMax) {
|
|
269
276
|
let item = collection[collection.length - 1];
|
|
270
277
|
while (paddingCount > 0) {
|
|
@@ -274,13 +281,6 @@ function ylist(container, generator, $Y, group) {
|
|
|
274
281
|
item = item.nextSibling;
|
|
275
282
|
}
|
|
276
283
|
}
|
|
277
|
-
var item = collection[collection.length - 1];
|
|
278
|
-
if (item) item = item.nextSibling;
|
|
279
|
-
while (item && item.index % group) {
|
|
280
|
-
item = collection.pop();
|
|
281
|
-
}
|
|
282
|
-
var item = collection[collection.length - 1];
|
|
283
|
-
if (item) scrollTop -= item.offsetTop + getOffsetHeight(item) - collection[0].offsetTop;
|
|
284
284
|
remove(collection);
|
|
285
285
|
}
|
|
286
286
|
//滚动到相应的位置
|
|
@@ -302,7 +302,7 @@ function ylist(container, generator, $Y, group) {
|
|
|
302
302
|
if (!(paddingCount > 0 && paddingMax > 0 && paddingCount < paddingMax) || !(scrollTop < targetHeight)) {
|
|
303
303
|
paddingCount = 0;
|
|
304
304
|
}
|
|
305
|
-
while (scrollTop < targetHeight || paddingCount > 0 || offset % group) {
|
|
305
|
+
while (scrollTop < targetHeight || paddingCount > 0 || offset % list.group) {
|
|
306
306
|
offset--;
|
|
307
307
|
if (!(scrollTop < targetHeight)) {
|
|
308
308
|
paddingCount--;
|
|
@@ -352,36 +352,45 @@ function ylist(container, generator, $Y, group) {
|
|
|
352
352
|
}
|
|
353
353
|
};
|
|
354
354
|
|
|
355
|
-
list.stopY = function () {
|
|
355
|
+
list.stopY = function (count, spd) {
|
|
356
356
|
var firstElement = getFirstVisibleElement();
|
|
357
|
-
|
|
358
|
-
|
|
357
|
+
var lastElement = getLastVisibleElement();
|
|
358
|
+
if (!firstElement || !lastElement || !list.clientHeight) return false;
|
|
359
|
+
var paddingTop = getFirstElement(1).offsetTop;
|
|
359
360
|
var paddingBottom = parseFloat(getComputedStyle(list).paddingBottom);
|
|
360
|
-
|
|
361
|
-
|
|
361
|
+
var scrolled_t = (list.scrollTop - firstElement.offsetTop + paddingTop) / firstElement.offsetHeight;
|
|
362
|
+
if (scrolled_t > 1) scrolled_t -= scrolled_t | 0;
|
|
362
363
|
var last_y = currentY();
|
|
363
|
-
if (
|
|
364
|
+
if (spd[0] > 0) {
|
|
364
365
|
var target_ty = last_y + (1 - scrolled_t) * firstElement.offsetHeight;
|
|
365
366
|
} else {
|
|
366
367
|
var target_ty = last_y - scrolled_t * firstElement.offsetHeight;
|
|
367
368
|
}
|
|
368
|
-
var lastElement = getLastVisibleElement();
|
|
369
369
|
var scrolled_b = (list.scrollTop + list.clientHeight - lastElement.offsetTop - paddingBottom) / lastElement.offsetHeight;
|
|
370
|
-
if (scrolled_b
|
|
370
|
+
if (scrolled_b < 0) scrolled_b -= scrolled_b - 1 | 0;
|
|
371
|
+
if (spd[0] > 0) {
|
|
371
372
|
var target_by = last_y + (1 - scrolled_b) * lastElement.offsetHeight;
|
|
372
373
|
} else {
|
|
373
374
|
var target_by = last_y - scrolled_b * lastElement.offsetHeight;
|
|
374
375
|
}
|
|
375
376
|
var target_y = Math.abs(target_ty - last_y) > Math.abs(target_by - last_y) ? target_by : target_ty;
|
|
376
377
|
var delta = Math.min(calcPixel(60), list.clientHeight >> 2);
|
|
377
|
-
|
|
378
|
-
|
|
378
|
+
var deltay = Math.abs(target_y - last_y), y;
|
|
379
|
+
if (deltay >= delta) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
if (deltay < 1) y = target_y;
|
|
383
|
+
else if (deltay > count || deltay > 3) {
|
|
384
|
+
y = last_y + (target_y > last_y ? .8 : -.8);
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
y = (target_y + last_y) / 2;
|
|
379
388
|
}
|
|
380
|
-
|
|
381
|
-
if (
|
|
382
|
-
|
|
389
|
+
list.Top(y);
|
|
390
|
+
if (target_y === y) {
|
|
391
|
+
return false;
|
|
383
392
|
}
|
|
384
|
-
return
|
|
393
|
+
return true;
|
|
385
394
|
};
|
|
386
395
|
//导出方法
|
|
387
396
|
list.go = scrollTo;
|
|
@@ -406,7 +415,7 @@ function ylist(container, generator, $Y, group) {
|
|
|
406
415
|
var firstVisible = getFirstVisibleElement();
|
|
407
416
|
if (!firstVisible) return saved_itemIndex;
|
|
408
417
|
var index = firstVisible.index;
|
|
409
|
-
var firstElement = getFirstElement();
|
|
418
|
+
var firstElement = getFirstElement(1);
|
|
410
419
|
var scrolled = (list.scrollTop - firstVisible.offsetTop + firstElement.offsetTop + .5 | 0) / firstVisible.offsetHeight;
|
|
411
420
|
return index + scrolled;
|
|
412
421
|
};
|
|
@@ -486,7 +495,8 @@ function list() {
|
|
|
486
495
|
var groupCount = /\d+/.exec($Y);
|
|
487
496
|
if (groupCount) groupCount = +groupCount[0];
|
|
488
497
|
$Y = /^[xh]|[xh]$/i.test($Y) ? "X" : "Y";
|
|
489
|
-
var list = ($Y === "X" ? xlist : ylist)(container, generator, $Y
|
|
498
|
+
var list = ($Y === "X" ? xlist : ylist)(container, generator, $Y);
|
|
499
|
+
if (!list.group) list.group = groupCount || 2;
|
|
490
500
|
if (bindSrc instanceof Array) {
|
|
491
501
|
list.src = bindSrc;
|
|
492
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
|
@@ -3,11 +3,13 @@ var renderElements = Object.create(null);
|
|
|
3
3
|
var presets = Object.create(null);
|
|
4
4
|
presets.template = function (t) {
|
|
5
5
|
var comment = document.createComment('template');
|
|
6
|
+
comment.$scope = t.$scope;
|
|
7
|
+
comment.$parentScopes = t.$parentScopes;
|
|
6
8
|
once("append")(comment, function () {
|
|
7
9
|
var node = document.createElement(comment.parentNode.tagName || "div");
|
|
8
10
|
node.innerHTML = t.innerHTML;
|
|
9
11
|
comment.with = [].slice.call(node.childNodes, 0);
|
|
10
|
-
appendChild.after(comment,comment.with);
|
|
12
|
+
appendChild.after(comment, comment.with);
|
|
11
13
|
renderElement(comment.with, comment.$scope, comment.$parentScopes);
|
|
12
14
|
});
|
|
13
15
|
return comment;
|
|
@@ -692,7 +694,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
692
694
|
}
|
|
693
695
|
for (var k in props) {
|
|
694
696
|
try {
|
|
695
|
-
element[k] = props[k];
|
|
697
|
+
if (element[k] !== props[k]) element[k] = props[k];
|
|
696
698
|
} catch (e) { }
|
|
697
699
|
}
|
|
698
700
|
ons.forEach(([on, key, value]) => on.call(element, key, [withContext, value]));
|
|
@@ -782,6 +784,9 @@ function renderStructure(element, scope, parentScopes = []) {
|
|
|
782
784
|
element.removeAttribute(name);
|
|
783
785
|
}
|
|
784
786
|
else {
|
|
787
|
+
if (!/\-/.test(name) || value === '') {
|
|
788
|
+
copys.push(attr);
|
|
789
|
+
}
|
|
785
790
|
props[name.replace(/\-(\w)/g, (_, w) => w.toUpperCase())] = value === "" ? true : value;
|
|
786
791
|
}
|
|
787
792
|
}
|
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));
|