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.
@@ -12,7 +12,7 @@ var dragview = function (event) {
12
12
  var deltaY = savedY - event.clientY;
13
13
 
14
14
  if (!moving) {
15
- if (Math.abs(deltaX) < MOVELOCK_DELTA && Math.abs(deltaY) < MOVELOCK_DELTA) return;
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 {
@@ -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 (Math.abs(deltaX) < MOVELOCK_DELTA && Math.abs(deltaY) < MOVELOCK_DELTA) return;
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 (delta + 2 <= dragPositionLeft) {
28
+ if ((!element.hasAttribute || element.hasAttribute('draggable')) && element.draggable === false);
29
+ else if (delta + 2 <= dragPositionLeft) {
29
30
  recover(element);
30
- } else if (delta - 2 >= dragPositionLeft) {
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 (delta + 2 <= dragPositionRight) {
40
+ if ((!element.hasAttribute || element.hasAttribute('draggable')) && element.draggable === false);
41
+ else if (delta + 2 <= dragPositionRight) {
39
42
  moveMargin(element, -dragPosition.width);
40
- } else if (delta - 2 >= dragPositionRight) {
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 src = previousElements.length;
193
- if (previousElements.length && previousElements[0].moved) for (var cx = 1, dx = previousElements.length + 1; cx < dx; cx++) {
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
- if (followedElements.length && followedElements[0].moved) for (var cx = 1, dx = followedElements.length + 1; cx < dx; cx++) {
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 = followedElements.length + previousElements.length;
225
+ dst = targetBox.children.length - 1;
209
226
  delta = 0;
210
227
  appendSibling = appendChild.after;
211
228
  } else if (!followedElements[cx].moved) {
212
- dst = previousElements.length + cx;
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
- autoScroll.ing = setInterval(scroll, 16);
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>&nbsp;cell_1</div>
79
79
  <div>&nbsp;cell_2</div>
80
80
  <div>&nbsp;cell_3</div>
@@ -88,4 +88,8 @@
88
88
  <div>&nbsp;cell_b</div>
89
89
  <div>&nbsp;cell_c</div>
90
90
  <div>&nbsp;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 list = page.querySelector("list");
7
- autodragchildren(list, list);
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
  }
@@ -1,8 +1,13 @@
1
- list {
1
+ list[cell-list] {
2
+ display: table-row;
2
3
  >div {
3
- display: inline-block;
4
+ display: table-cell;
4
5
  }
5
6
  }
7
+ xlist>div{
8
+ display: inline-block;
9
+ padding: 0 6px;
10
+ }
6
11
 
7
12
  .row(@x) {
8
13
  @row: ~"[row@{x}]";
@@ -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 (abs(deltax) < MOVELOCK_DELTA && abs(deltay) < MOVELOCK_DELTA) return;
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
- return;
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 = [].slice.call(td.childNodes, 0).filter(isMaybeVisible);
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
- [].map.call(result.children, function (element) {
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",
@@ -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];
@@ -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 (abs(target_left - event.screenX - saved_delta.x) < MOVELOCK_DELTA && abs(target_top - event.screenY - saved_delta.y) < MOVELOCK_DELTA) return;
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;
@@ -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 = 0) {
55
+ var getFirstVisibleElement = function (deltaY) {
56
56
  var children = list.childNodes;
57
57
  var { scrollTop } = list;
58
- scrollTop += deltaY;
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
- child = getNodeTarget(child);
63
- if (child.offsetTop + child.offsetHeight > scrollTop) return child;
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 = 0) {
90
+ var getLastVisibleElement = function (deltaY) {
90
91
  var { scrollTop } = list;
91
- scrollTop += deltaY;
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
- child = getNodeTarget(child);
97
- if (child.offsetTop < scrollTop + list.clientHeight) {
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(1), y;
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(1);
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(1);
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(1);
438
+ var element = getFirstElement();
433
439
  return element ? element.index : 0;
434
440
  };
435
441
  list.getIndexedElement = getIndexedElement;
@@ -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
- var p = match_text.length;
62
- p *= 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
  };
@@ -20,7 +20,7 @@ function random_test() {
20
20
  var id = 0;
21
21
  var run = function () {
22
22
  if (id >= args.length) return;
23
- alert(toString(random.apply(null, args[id])));
23
+ console.log(toString(random.apply(null, args[id])));
24
24
  id++;
25
25
  setTimeout(run, 200);
26
26
  }
@@ -7,22 +7,24 @@
7
7
  <textarea _value="refilm_encode(steps[index])">
8
8
 
9
9
  </textarea>
10
- <table class="form">
11
- <thead>
12
- <tr>
13
- <td ng-repeat="(f,i) in refilms">
14
- <span ng-bind="f.name"></span>
15
- </td>
16
- </tr>
17
- </thead>
18
- <tbody>
19
- <tr ng-repeat="s in steps[index]">
20
- <td ng-repeat="r in refilms">
21
- <span bg-bind="String(s[r.key]||'')"></span>
22
- </td>
23
- </tr>
24
- </tbody>
25
- </table>
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
- >table {
31
+ >.form {
32
32
  width: 400px;
33
33
  }
34
34
 
35
35
  >textarea,
36
36
  >form,
37
- >table {
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
  }