efront 3.22.5 → 3.22.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/kugou/dragview.js +1 -1
- package/coms/layer/glance.js +1 -1
- package/coms/zimoli/autodragchildren.js +84 -14
- package/coms/zimoli/autodragchildren_test.html +6 -2
- package/coms/zimoli/autodragchildren_test.js +17 -2
- package/coms/zimoli/autodragchildren_test.less +7 -2
- package/coms/zimoli/bindtouch.js +2 -2
- package/coms/zimoli/cloneVisible.js +4 -5
- package/coms/zimoli/color.js +4 -4
- package/coms/zimoli/drag.js +4 -5
- package/coms/zimoli/list.js +26 -20
- package/coms/zimoli/mark.js +5 -3
- package/coms/zimoli/random_test.js +1 -1
- package/coms/zimoli/refilm_test.html +18 -16
- package/coms/zimoli/refilm_test.less +9 -2
- package/coms/zimoli/search.js +74 -16
- package/coms/zimoli/select.js +2 -1
- package/coms/zimoli/selectList.js +48 -5
- package/coms/zimoli/selectList.less +46 -0
- package/coms/zimoli/selectList_test.html +1 -1
- package/coms/zimoli/slider.js +1 -1
- package/coms/zimoli/table.html +2 -2
- package/coms/zimoli/test_scroll.js +17 -31
- package/coms/zimoli/vbox_test.js +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/kugou/dragview.js
CHANGED
|
@@ -12,7 +12,7 @@ var dragview = function (event) {
|
|
|
12
12
|
var deltaY = savedY - event.clientY;
|
|
13
13
|
|
|
14
14
|
if (!moving) {
|
|
15
|
-
if (
|
|
15
|
+
if (!onclick.preventClick) return;
|
|
16
16
|
if (deltaX > 0 && !freeOffset(page.style.left || 0) || Math.abs(deltaY) >= Math.abs(deltaX)) {
|
|
17
17
|
moving = -1;
|
|
18
18
|
} else {
|
package/coms/layer/glance.js
CHANGED
|
@@ -40,7 +40,7 @@ var dragview = function (dragview) {
|
|
|
40
40
|
var deltaY = savedY - event.clientY;
|
|
41
41
|
event.preventDefault();
|
|
42
42
|
if (!moving) {
|
|
43
|
-
if (
|
|
43
|
+
if (!onclick.preventClick) return;
|
|
44
44
|
if (Math.abs(deltaY) >= Math.abs(deltaX)) {
|
|
45
45
|
moving = -1;
|
|
46
46
|
} else {
|
|
@@ -25,9 +25,11 @@ var moveChildrenX = function (targetBox, previousElements, followedElements, mov
|
|
|
25
25
|
var elementPosition = getScreenPosition(element);
|
|
26
26
|
var elementCenter = elementPosition.left + elementPosition.width / 2;
|
|
27
27
|
var delta = elementCenter - (element.moved || 0);
|
|
28
|
-
if (
|
|
28
|
+
if ((!element.hasAttribute || element.hasAttribute('draggable')) && element.draggable === false);
|
|
29
|
+
else if (delta + 2 <= dragPositionLeft) {
|
|
29
30
|
recover(element);
|
|
30
|
-
}
|
|
31
|
+
}
|
|
32
|
+
else if (delta - 2 >= dragPositionLeft) {
|
|
31
33
|
moveMargin(element, dragPosition.width);
|
|
32
34
|
}
|
|
33
35
|
});
|
|
@@ -35,9 +37,11 @@ var moveChildrenX = function (targetBox, previousElements, followedElements, mov
|
|
|
35
37
|
var elementPosition = getScreenPosition(element);
|
|
36
38
|
var elementCenter = elementPosition.left + elementPosition.width / 2;
|
|
37
39
|
var delta = elementCenter - (element.moved || 0);
|
|
38
|
-
if (
|
|
40
|
+
if ((!element.hasAttribute || element.hasAttribute('draggable')) && element.draggable === false);
|
|
41
|
+
else if (delta + 2 <= dragPositionRight) {
|
|
39
42
|
moveMargin(element, -dragPosition.width);
|
|
40
|
-
}
|
|
43
|
+
}
|
|
44
|
+
else if (delta - 2 >= dragPositionRight) {
|
|
41
45
|
recover(element);
|
|
42
46
|
}
|
|
43
47
|
});
|
|
@@ -53,6 +57,10 @@ var moveChildrenX = function (targetBox, previousElements, followedElements, mov
|
|
|
53
57
|
var scrollX = function (targetBox, moveChildren) {
|
|
54
58
|
var dragTarget = drag.target;
|
|
55
59
|
if (!dragTarget || !targetBox) return;
|
|
60
|
+
targetBox = getTargetIn(function (a) {
|
|
61
|
+
var computed = getComputedStyle(a);
|
|
62
|
+
return (computed.overflowX || computed.overflow) !== 'visible' && a.scrollWidth > a.clientWidth;
|
|
63
|
+
}, targetBox);
|
|
56
64
|
var areaPosition = getScreenPosition(targetBox);
|
|
57
65
|
var dragPosition = getScreenPosition(dragTarget);
|
|
58
66
|
var scrollDelta = 0;
|
|
@@ -65,6 +73,7 @@ var scrollX = function (targetBox, moveChildren) {
|
|
|
65
73
|
vscroll.X.call(targetBox, scrollDelta / 16, false);
|
|
66
74
|
moveChildren();
|
|
67
75
|
}
|
|
76
|
+
return scrollDelta;
|
|
68
77
|
};
|
|
69
78
|
var scrollY = arriswise(scrollX, arguments);
|
|
70
79
|
var moveMarginY = arriswise(moveMarginX, arguments);
|
|
@@ -85,6 +94,7 @@ var bindTarget = function (index, element) {
|
|
|
85
94
|
|
|
86
95
|
var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
87
96
|
var boxfinder;
|
|
97
|
+
var isMovingSource = isMovingSource !== false;
|
|
88
98
|
if (isMovingSource === false) boxfinder = matcher, matcher = null;
|
|
89
99
|
var that = this;
|
|
90
100
|
|
|
@@ -131,7 +141,8 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
131
141
|
var [target] = targets;
|
|
132
142
|
return {
|
|
133
143
|
style: target.style, target, getBoundingClientRect,
|
|
134
|
-
with: targets
|
|
144
|
+
with: targets,
|
|
145
|
+
draggable: !target.hasAttribute('draggable') || target.draggable,
|
|
135
146
|
};
|
|
136
147
|
}
|
|
137
148
|
return targets;
|
|
@@ -189,8 +200,12 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
189
200
|
that.removeAttribute('dragchildren');
|
|
190
201
|
removeClass(targetBox, "dropping");
|
|
191
202
|
var dst, appendSibling, delta;
|
|
192
|
-
var
|
|
193
|
-
|
|
203
|
+
var k0 = -1;
|
|
204
|
+
for (var k0 in previousElements) break;
|
|
205
|
+
if (previousElements.length) var src = previousElements.length - k0;
|
|
206
|
+
else var src = 0;
|
|
207
|
+
if (k0 >= 0 && previousElements[k0].moved) for (var k in previousElements) {
|
|
208
|
+
var cx = +k + 1;
|
|
194
209
|
if (!previousElements[cx]) {
|
|
195
210
|
dst = 0;
|
|
196
211
|
delta = 0;
|
|
@@ -202,14 +217,16 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
202
217
|
break;
|
|
203
218
|
}
|
|
204
219
|
}
|
|
205
|
-
|
|
206
|
-
|
|
220
|
+
var k0 = -1;
|
|
221
|
+
for (var k0 in followedElements) break;
|
|
222
|
+
if (k0 >= 0 && followedElements[k0].moved) for (var k in followedElements) {
|
|
223
|
+
var cx = +k + 1;
|
|
207
224
|
if (!followedElements[cx]) {
|
|
208
|
-
dst =
|
|
225
|
+
dst = targetBox.children.length - 1;
|
|
209
226
|
delta = 0;
|
|
210
227
|
appendSibling = appendChild.after;
|
|
211
228
|
} else if (!followedElements[cx].moved) {
|
|
212
|
-
dst =
|
|
229
|
+
dst = targetBox.children.length - followedElements.length + cx - 1;
|
|
213
230
|
delta = 1;
|
|
214
231
|
appendSibling = appendChild.before;
|
|
215
232
|
break;
|
|
@@ -219,7 +236,7 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
219
236
|
var children = targetBox.children;
|
|
220
237
|
var srcElement = children[src];
|
|
221
238
|
var dstElement = children[dst + delta];
|
|
222
|
-
src = bindTarget(src, srcElement);
|
|
239
|
+
src = bindTarget(src, isMovingSource ? targetChild : srcElement);
|
|
223
240
|
dst = bindTarget(dst, dstElement);
|
|
224
241
|
var needFire = !isFunction(move) || move(src, dst, dst + delta, appendSibling, targetBox) !== false;
|
|
225
242
|
if (needFire && srcElement === children[src] && dstElement === children[dst + delta] && srcElement && dstElement) appendSibling(dstElement, srcElement);
|
|
@@ -239,8 +256,61 @@ var hooka = function (matcher, move, event, targetChild, isMovingSource) {
|
|
|
239
256
|
var offmousup = on("mouseup")(window, offall);
|
|
240
257
|
var autoScroll = function () {
|
|
241
258
|
if (autoScroll.ing) return;
|
|
242
|
-
if (scroll)
|
|
243
|
-
|
|
259
|
+
if (scroll) autoScroll.ing = setInterval(function () {
|
|
260
|
+
var delta = scroll(targetBox, dragmove);
|
|
261
|
+
if (isFunction(matcher)) return;
|
|
262
|
+
if (isMovingSource === false) { }
|
|
263
|
+
else if (delta < 0) {
|
|
264
|
+
var p = null;
|
|
265
|
+
for (var k in previousElements) {
|
|
266
|
+
if (!previousElements[k].parentNode) {
|
|
267
|
+
delete previousElements[k];
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
if (previousElements[+k + 1] && previousElements[k].previousElementSibling !== previousElements[+k + 1]) {
|
|
271
|
+
previousElements.splice(+k + 1, previousElements.length - k - 1);
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
var k = 0;
|
|
276
|
+
for (var k in followedElements) {
|
|
277
|
+
if (followedElements[k].parentNode) break;
|
|
278
|
+
delete followedElements[k];
|
|
279
|
+
}
|
|
280
|
+
var p = previousElements[previousElements.length - 1] || followedElements[k];
|
|
281
|
+
if (p && p.previousElementSibling) {
|
|
282
|
+
k -= 1;
|
|
283
|
+
if (k >= 0) followedElements[k] = p.previousElementSibling;
|
|
284
|
+
else if (p === followedElements[0]) setOpacity(p.previousElementSibling, draggingSourceOpacity);
|
|
285
|
+
else previousElements.push(p.previousElementSibling);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else if (delta > 0) {
|
|
289
|
+
for (var k in followedElements) {
|
|
290
|
+
if (!followedElements[k].parentNode) {
|
|
291
|
+
delete followedElements[k];
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
if (followedElements[+k + 1] && followedElements[k].nextElementSibling !== followedElements[+k + 1]) {
|
|
295
|
+
followedElements.splice(+k + 1, followedElements.length - k - 1);
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
var k = 0;
|
|
301
|
+
for (var k in previousElements) {
|
|
302
|
+
if (previousElements[k].parentNode) break;
|
|
303
|
+
delete previousElements[k];
|
|
304
|
+
}
|
|
305
|
+
var f = followedElements[followedElements.length - 1] || previousElements[k];
|
|
306
|
+
if (f && f.nextElementSibling) {
|
|
307
|
+
k -= 1;
|
|
308
|
+
if (k >= 0) previousElements[k] = f.nextElementSibling;
|
|
309
|
+
else if (f === previousElements[0]) setOpacity(f.nextElementSibling, draggingSourceOpacity);
|
|
310
|
+
else followedElements.push(f.nextElementSibling);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}, 16);
|
|
244
314
|
};
|
|
245
315
|
var cancelScroll = function () {
|
|
246
316
|
clearInterval(autoScroll.ing);
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
</tr>
|
|
75
75
|
</tbody>
|
|
76
76
|
</table>
|
|
77
|
-
<list>
|
|
77
|
+
<list cell-list>
|
|
78
78
|
<div> cell_1</div>
|
|
79
79
|
<div> cell_2</div>
|
|
80
80
|
<div> cell_3</div>
|
|
@@ -88,4 +88,8 @@
|
|
|
88
88
|
<div> cell_b</div>
|
|
89
89
|
<div> cell_c</div>
|
|
90
90
|
<div> cell_d</div>
|
|
91
|
-
</list>
|
|
91
|
+
</list>
|
|
92
|
+
|
|
93
|
+
<xlist -src="a in xsrc">
|
|
94
|
+
<div> list-item <span -bind="a"></span></div>
|
|
95
|
+
</xlist>
|
|
@@ -3,7 +3,22 @@ function main() {
|
|
|
3
3
|
page.innerHTML = autodragchildren_test;
|
|
4
4
|
var body = page.querySelector("tbody");
|
|
5
5
|
autodragchildren(body, body);
|
|
6
|
-
var
|
|
7
|
-
autodragchildren(
|
|
6
|
+
var cellList = page.querySelector("list");
|
|
7
|
+
autodragchildren(cellList, cellList);
|
|
8
|
+
var xList = page.querySelector("xlist");
|
|
9
|
+
render(xList, {
|
|
10
|
+
xlist: list,
|
|
11
|
+
xsrc: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
|
|
12
|
+
})
|
|
13
|
+
autodragchildren(xList, xList, function (src, dst) {
|
|
14
|
+
var xsrc = xList.$scope.xsrc;
|
|
15
|
+
var src = src.target.index || 0;
|
|
16
|
+
var dst = xList.children[dst].index || 0;
|
|
17
|
+
var [e] = xsrc.splice(src, 1);
|
|
18
|
+
xsrc.splice(dst, 0, e);
|
|
19
|
+
render.refresh();
|
|
20
|
+
return false;
|
|
21
|
+
});
|
|
22
|
+
|
|
8
23
|
return page;
|
|
9
24
|
}
|
package/coms/zimoli/bindtouch.js
CHANGED
|
@@ -22,7 +22,7 @@ function bindtouch(target, bindder, lockDirection = false) {
|
|
|
22
22
|
var deltay = clientY - saved_y;
|
|
23
23
|
if (lockDirection) {
|
|
24
24
|
if (!direction) {
|
|
25
|
-
if (
|
|
25
|
+
if (!onclick.preventClick) return;
|
|
26
26
|
if (target.onmovestart) {
|
|
27
27
|
target.onmovestart();
|
|
28
28
|
}
|
|
@@ -31,7 +31,7 @@ function bindtouch(target, bindder, lockDirection = false) {
|
|
|
31
31
|
} else if (abs(deltax) <= .618 * abs(deltay)) {
|
|
32
32
|
direction = "y";
|
|
33
33
|
} else {
|
|
34
|
-
|
|
34
|
+
direction = 'o';
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
if (direction !== lockDirection)
|
|
@@ -61,7 +61,7 @@ var cloneChildren = function (td, copy, clone) {
|
|
|
61
61
|
});
|
|
62
62
|
break;
|
|
63
63
|
default:
|
|
64
|
-
var children =
|
|
64
|
+
var children = Array.prototype.slice.call(td.childNodes, 0).filter(isMaybeVisible);
|
|
65
65
|
children.sort((a, b) => {
|
|
66
66
|
return getZIndex(a) - getZIndex(b);
|
|
67
67
|
}).forEach(clone);
|
|
@@ -130,21 +130,20 @@ var cloneVisible = function (td) {
|
|
|
130
130
|
var _left, _top, _right, _bottom;
|
|
131
131
|
var span = document.createElement("x");
|
|
132
132
|
var hasSvg = false;
|
|
133
|
-
|
|
134
133
|
var clone = function (td) {
|
|
135
134
|
if (!isMaybeVisible(td)) return;
|
|
136
135
|
if (td.nodeType === 3) {
|
|
137
136
|
var copy = span.cloneNode();
|
|
138
137
|
copy.appendChild(td.cloneNode());
|
|
139
138
|
var parentNode = td.parentNode;
|
|
139
|
+
parentNode.insertBefore(copy, td);
|
|
140
140
|
parentNode.removeChild(td);
|
|
141
|
-
parentNode.appendChild(copy);
|
|
142
141
|
var { left, top, width, height } = getScreenPosition(copy);
|
|
143
142
|
var style = getComputedStyle(copy);
|
|
144
143
|
copyStyle(style, copy.style, cloneProperties);
|
|
145
144
|
copy.style.lineHeight = height + "px";
|
|
145
|
+
parentNode.insertBefore(td, copy);
|
|
146
146
|
parentNode.removeChild(copy);
|
|
147
|
-
parentNode.appendChild(td);
|
|
148
147
|
result.appendChild(copy);
|
|
149
148
|
} else if (td.nodeType !== 1) return;
|
|
150
149
|
|
|
@@ -187,7 +186,7 @@ var cloneVisible = function (td) {
|
|
|
187
186
|
width: _right - _left + "px",
|
|
188
187
|
height: _bottom - _top + "px"
|
|
189
188
|
});
|
|
190
|
-
|
|
189
|
+
Array.prototype.map.call(result.children, function (element) {
|
|
191
190
|
var { left, top, width, height } = element.tempstyle;
|
|
192
191
|
extend(element.style, {
|
|
193
192
|
position: "absolute",
|
package/coms/zimoli/color.js
CHANGED
|
@@ -282,12 +282,12 @@ function single(c, u) {
|
|
|
282
282
|
return [r * u, g * u, b * u];
|
|
283
283
|
}
|
|
284
284
|
function angle(c1, c2) {
|
|
285
|
+
c1 = parse(c1);
|
|
286
|
+
c2 = parse(c2);
|
|
287
|
+
c1 = normal(c1);
|
|
288
|
+
c2 = normal(c2);
|
|
285
289
|
var theta = rgb2h(c2[0], c2[1], c2[2]) - rgb2h(c1[0], c1[1], c1[2]);
|
|
286
290
|
if (theta < 0) theta += 360;
|
|
287
|
-
// c1 = parse(c1);
|
|
288
|
-
// c2 = parse(c2);
|
|
289
|
-
// c1 = normal(c1);
|
|
290
|
-
// c2 = normal(c2);
|
|
291
291
|
// var [r1, g1, b1] = single(c1);
|
|
292
292
|
// var [r2, g2, b2] = single(c2);
|
|
293
293
|
// var c = [g1 * b2 - g2 * b1, b1 * r2 - b2 * r1, r1 * g2 - r2 * g1];
|
package/coms/zimoli/drag.js
CHANGED
|
@@ -34,14 +34,14 @@ var setZIndex = function () {
|
|
|
34
34
|
};
|
|
35
35
|
function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
36
36
|
if (/^(?:select|input|textarea)$/i.test(initialEvent.target.tagName) || getTargetIn(a => a.nodrag || a.hasAttribute('nodrag'), initialEvent.target)) return;
|
|
37
|
-
if (target.dragable === false) return;
|
|
38
|
-
initialEvent.preventDefault();
|
|
39
37
|
if (isArray(target)) {
|
|
40
38
|
var extraTargets = target.slice(1);
|
|
41
39
|
target = target[0];
|
|
42
40
|
} else {
|
|
43
41
|
var extraTargets = target.with ? [].concat(target.with) : [];
|
|
44
42
|
}
|
|
43
|
+
if ((!target.hasAttribute || target.hasAttribute('draggable')) && target.draggable === false) return;
|
|
44
|
+
initialEvent.preventDefault();
|
|
45
45
|
var target_offset = getOffset(target);
|
|
46
46
|
var saved_delta = { x: target_offset[0] - initialEvent.screenX, y: target_offset[1] - initialEvent.screenY };
|
|
47
47
|
var clone;
|
|
@@ -57,11 +57,9 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
57
57
|
var mousemove = function (event) {
|
|
58
58
|
if (event.moveLocked) return;
|
|
59
59
|
if (/resize/i.test(getComputedStyle(document.body).cursor)) return;
|
|
60
|
-
event.moveLocked = true;
|
|
61
60
|
if (!saved_delta.ing) {
|
|
62
|
-
var abs = Math.abs;
|
|
63
61
|
var [target_left, target_top] = getOffset(target);
|
|
64
|
-
if (
|
|
62
|
+
if (!onclick.preventClick) return;
|
|
65
63
|
saved_delta.ing = true;
|
|
66
64
|
drag.target = target;
|
|
67
65
|
dispatch("dragstart", target);
|
|
@@ -82,6 +80,7 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
82
80
|
saved_delta.x += clone_left - target_left;
|
|
83
81
|
saved_delta.y += clone_top - target_top;
|
|
84
82
|
}
|
|
83
|
+
event.moveLocked = true;
|
|
85
84
|
drag.target = clone;
|
|
86
85
|
var offsetLeft = saved_delta.x + event.screenX;
|
|
87
86
|
var offsetTop = saved_delta.y + event.screenY;
|
package/coms/zimoli/list.js
CHANGED
|
@@ -46,21 +46,22 @@ function ylist(container, generator, $Y) {
|
|
|
46
46
|
var children = list.childNodes;
|
|
47
47
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
48
48
|
var child = children[cx];
|
|
49
|
-
if (!(isFinite(child.index) || nodeType === 2 && child.offsetHeight)) continue;
|
|
50
|
-
child = getNodeTarget(child);
|
|
49
|
+
if (!(isFinite(child.index) && (nodeType === 0 || child.index !== null) || nodeType === 2 && child.offsetHeight)) continue;
|
|
50
|
+
if (nodeType === 1) child = getNodeTarget(child);
|
|
51
51
|
return child;
|
|
52
52
|
}
|
|
53
53
|
return null;
|
|
54
54
|
};
|
|
55
|
-
var getFirstVisibleElement = function (deltaY
|
|
55
|
+
var getFirstVisibleElement = function (deltaY) {
|
|
56
56
|
var children = list.childNodes;
|
|
57
57
|
var { scrollTop } = list;
|
|
58
|
-
|
|
58
|
+
deltaY = +deltaY;
|
|
59
|
+
if (deltaY) scrollTop += deltaY;
|
|
59
60
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
60
61
|
var child = children[cx];
|
|
61
|
-
if (!isFinite(child.index)) continue;
|
|
62
|
-
|
|
63
|
-
if (
|
|
62
|
+
if (!isFinite(child.index) || child.index === null) continue;
|
|
63
|
+
var c = getNodeTarget(child);
|
|
64
|
+
if (c.offsetTop + c.offsetHeight > scrollTop) return deltaY === 0 ? child : c;
|
|
64
65
|
}
|
|
65
66
|
return null;
|
|
66
67
|
};
|
|
@@ -86,16 +87,17 @@ function ylist(container, generator, $Y) {
|
|
|
86
87
|
return scrollBy(deltab < deltat ? deltat : deltab);
|
|
87
88
|
}
|
|
88
89
|
};
|
|
89
|
-
var getLastVisibleElement = function (deltaY
|
|
90
|
+
var getLastVisibleElement = function (deltaY) {
|
|
90
91
|
var { scrollTop } = list;
|
|
91
|
-
|
|
92
|
+
deltaY = +deltaY;
|
|
93
|
+
if (deltaY) scrollTop += deltaY;
|
|
92
94
|
var children = list.children;
|
|
93
95
|
for (var cx = children.length - 1; cx >= 0; cx--) {
|
|
94
96
|
var child = children[cx];
|
|
95
97
|
if (!isFinite(child.index)) continue;
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
return child;
|
|
98
|
+
var c = getNodeTarget(child);
|
|
99
|
+
if (c.offsetTop < scrollTop + list.clientHeight) {
|
|
100
|
+
return deltaY === 0 ? child : c;
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
return null;
|
|
@@ -106,7 +108,7 @@ function ylist(container, generator, $Y) {
|
|
|
106
108
|
var map = {};
|
|
107
109
|
for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
108
110
|
var child = children[cx];
|
|
109
|
-
if (isFinite(child.index)) {
|
|
111
|
+
if (isFinite(child.index) && child.index !== null) {
|
|
110
112
|
map[child.index] = child;
|
|
111
113
|
}
|
|
112
114
|
}
|
|
@@ -133,7 +135,8 @@ function ylist(container, generator, $Y) {
|
|
|
133
135
|
if (itemIndex < 0) index--;
|
|
134
136
|
var ratio = itemIndex - index || 0;
|
|
135
137
|
var childrenMap = getChildrenMap();
|
|
136
|
-
var offsetBottom = 0, ratioTop = 0, offset = index, last_item = getFirstElement() || null, last_index = last_item && last_item.index || offset;
|
|
138
|
+
var offsetBottom = 0, ratioTop = 0, offset = index, last_item = getFirstElement(0) || null, last_index = last_item && last_item.index || offset;
|
|
139
|
+
if (last_item) last_item = getNodeTarget(last_item);
|
|
137
140
|
var count = 0, delta = 1, bottom_item, offsett = offset, offsetb = offset, top_item;
|
|
138
141
|
var indexed_item;
|
|
139
142
|
while (offsetBottom - ratioTop <= list.clientHeight + cache_height || indexed_item && top_item && indexed_item.offsetTop - top_item.offsetTop < cache_height) {
|
|
@@ -187,9 +190,9 @@ function ylist(container, generator, $Y) {
|
|
|
187
190
|
var runbuild = lazy(function () {
|
|
188
191
|
patchBottom();
|
|
189
192
|
patchTop();
|
|
190
|
-
var firstElement = getFirstElement(
|
|
193
|
+
var firstElement = getFirstElement(), y;
|
|
191
194
|
if (firstElement) {
|
|
192
|
-
y = firstElement.index * firstElement.offsetHeight;
|
|
195
|
+
y = firstElement.index * getNodeTarget(firstElement).offsetHeight;
|
|
193
196
|
} else {
|
|
194
197
|
y = 0;
|
|
195
198
|
}
|
|
@@ -208,9 +211,10 @@ function ylist(container, generator, $Y) {
|
|
|
208
211
|
list.insertBefore(topinsert, list.firstChild);
|
|
209
212
|
//计算当前高度
|
|
210
213
|
var currentY = function () {
|
|
211
|
-
var firstElement = getFirstElement(
|
|
214
|
+
var firstElement = getFirstElement();
|
|
212
215
|
if (!firstElement) return;
|
|
213
216
|
var index = firstElement.index;
|
|
217
|
+
firstElement = getNodeTarget(firstElement);
|
|
214
218
|
if (index < 0) index = index - index | 0;
|
|
215
219
|
return index * firstElement.offsetHeight + list.scrollTop;
|
|
216
220
|
};
|
|
@@ -298,7 +302,7 @@ function ylist(container, generator, $Y) {
|
|
|
298
302
|
var cache_height = list.offsetHeight;
|
|
299
303
|
|
|
300
304
|
var childrenMap = getChildrenMap();
|
|
301
|
-
var first_element, flag_element = first_element = getFirstElement(
|
|
305
|
+
var first_element, flag_element = first_element = getFirstElement();
|
|
302
306
|
if (!flag_element || !isFinite(flag_element.offsetTop)) return;
|
|
303
307
|
var offset = flag_element.index || 0;
|
|
304
308
|
var offsetTop = flag_element.offsetTop;
|
|
@@ -421,15 +425,17 @@ function ylist(container, generator, $Y) {
|
|
|
421
425
|
list.scrollBy = scrollBy;
|
|
422
426
|
list.index = function (update) {
|
|
423
427
|
if (update === false) return saved_itemIndex;
|
|
424
|
-
var firstVisible = getFirstVisibleElement();
|
|
428
|
+
var firstVisible = getFirstVisibleElement(0);
|
|
425
429
|
if (!firstVisible) return saved_itemIndex;
|
|
426
430
|
var index = firstVisible.index;
|
|
431
|
+
firstVisible = getNodeTarget(firstVisible);
|
|
432
|
+
if (!firstVisible) return saved_itemIndex;
|
|
427
433
|
var firstElement = getFirstElement(1);
|
|
428
434
|
var scrolled = (list.scrollTop - firstVisible.offsetTop + firstElement.offsetTop + .5 | 0) / firstVisible.offsetHeight;
|
|
429
435
|
return index + scrolled;
|
|
430
436
|
};
|
|
431
437
|
list.topIndex = function () {
|
|
432
|
-
var element = getFirstElement(
|
|
438
|
+
var element = getFirstElement();
|
|
433
439
|
return element ? element.index : 0;
|
|
434
440
|
};
|
|
435
441
|
list.getIndexedElement = getIndexedElement;
|
package/coms/zimoli/mark.js
CHANGED
|
@@ -52,15 +52,17 @@ var power = function (source, search) {
|
|
|
52
52
|
var match_text_pre = source.slice(0, match_start2);
|
|
53
53
|
var match_text_aft = source.slice(match_start2 + match_text.length);
|
|
54
54
|
var pp = 0, ap = 0;
|
|
55
|
+
var p = match_text.length;
|
|
56
|
+
if (match_text_pre.length) p += .1 / match_text_pre.length - .2;
|
|
57
|
+
if (match_text_aft.length) p += .1 / match_text_aft.length - .1;
|
|
55
58
|
if (match_text_pre.length > 1) {
|
|
56
59
|
[pp, match_text_pre] = power(match_text_pre, search);
|
|
57
60
|
}
|
|
58
61
|
if (match_text_aft.length > 1) {
|
|
59
62
|
[ap, match_text_aft] = power(match_text_aft, search);
|
|
60
63
|
}
|
|
61
|
-
|
|
62
|
-
p
|
|
63
|
-
return [p + pp + ap, match_text_pre + MARK_PRE + match_text + MARK_AFT + match_text_aft];
|
|
64
|
+
p += (pp + ap) * .01;
|
|
65
|
+
return [p, match_text_pre + MARK_PRE + match_text + MARK_AFT + match_text_aft];
|
|
64
66
|
}
|
|
65
67
|
return [0, source];
|
|
66
68
|
};
|
|
@@ -7,22 +7,24 @@
|
|
|
7
7
|
<textarea _value="refilm_encode(steps[index])">
|
|
8
8
|
|
|
9
9
|
</textarea>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
10
|
+
<div class="form">
|
|
11
|
+
<table>
|
|
12
|
+
<thead>
|
|
13
|
+
<tr>
|
|
14
|
+
<td ng-repeat="(f,i) in refilms">
|
|
15
|
+
<span ng-bind="f.name"></span>
|
|
16
|
+
</td>
|
|
17
|
+
</tr>
|
|
18
|
+
</thead>
|
|
19
|
+
<tbody>
|
|
20
|
+
<tr ng-repeat="s in steps[index]">
|
|
21
|
+
<td ng-repeat="r in refilms">
|
|
22
|
+
<span bg-bind="String(s[r.key]||'')"></span>
|
|
23
|
+
</td>
|
|
24
|
+
</tr>
|
|
25
|
+
</tbody>
|
|
26
|
+
</table>
|
|
27
|
+
</div>
|
|
26
28
|
<form class="form">
|
|
27
29
|
<field ng-src="[f,data]" ng-repeat="(f,i) in steps[index]"></field>
|
|
28
30
|
</form>
|
|
@@ -28,17 +28,24 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
>textarea,
|
|
31
|
-
|
|
31
|
+
>.form {
|
|
32
32
|
width: 400px;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
>textarea,
|
|
36
36
|
>form,
|
|
37
|
-
|
|
37
|
+
>.form {
|
|
38
38
|
overflow: auto;
|
|
39
39
|
height: calc(~"100% - 220px");
|
|
40
40
|
vertical-align: top;
|
|
41
41
|
display: inline-block;
|
|
42
|
+
table{
|
|
43
|
+
width: auto;
|
|
44
|
+
}
|
|
45
|
+
td{
|
|
46
|
+
white-space: nowrap;
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
}
|
|
42
49
|
font-size: 16px;
|
|
43
50
|
font-family: 仿宋;
|
|
44
51
|
}
|