efront 3.14.11 → 3.15.6

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.
@@ -4,7 +4,7 @@ function inertia(gun) {
4
4
  if (
5
5
  decrease instanceof Function
6
6
  ) {
7
- if (!spd.length || !spd[0]) return;
7
+ if (!spd.length || _decreased > 0 && spd.filter(a => a !== 0).length === 0) return;
8
8
  var id = smooth_timer;
9
9
  var res = decrease(_decreased++, spd);
10
10
  if (smooth_timer !== id) return;
@@ -70,6 +70,10 @@ class Speed extends Array {
70
70
  static inertia = inertia;
71
71
  reset() {
72
72
  this.cache.splice(0, this.cache.length, 0);
73
+ for (var cx = 0, dx = this.length; cx < dx; cx++) {
74
+ if (this[cx] > 0) this[cx] = 1e-13;
75
+ if (this[cx] < 0) this[cx] = -1e-13;
76
+ }
73
77
  }
74
78
  unset() {
75
79
  this.splice(0, this.length), this.cache.splice(0, this.cache.length), this.stamp = 0;
@@ -132,6 +132,11 @@ function cross_(jsonp, digest = noop, method, url, headers) {
132
132
  }
133
133
  case 200:
134
134
  case 201:
135
+ case 202:
136
+ case 203:
137
+ case 204:
138
+ case 205:
139
+ case 206:
135
140
  case 304:
136
141
  onload(xhr);
137
142
  break;
@@ -173,7 +173,7 @@ function checkRefered(scope) {
173
173
  if (right.length) {
174
174
  var key = createExpressKey(right);
175
175
  var iswrite = false;
176
- iswrite = !!o.kind || !!e && e.type === STAMP && /=$/.test(e.text);
176
+ iswrite = !!o.kind || !!e && e.type === STAMP && /(?<![\!\=])\=$/.test(e.text);
177
177
  if (key) map[key] = map[key] | 1 + iswrite;
178
178
  }
179
179
  }
@@ -11,9 +11,10 @@ var rgb4v = function (r, g, b, v) {
11
11
  };
12
12
 
13
13
 
14
+ var number_sort = (a, b) => a - b;
14
15
 
15
16
  var rgb4h = function (r, g, b, h) {
16
- var [p, q, s] = [r, g, b].sort();
17
+ var [p, q, s] = [r, g, b].sort(number_sort);
17
18
  var m = s - p;
18
19
  h = (h % 360 + 360) % 360;
19
20
  if (h < 60) {
@@ -1,5 +1,5 @@
1
1
  function extendTouchEvent(e) {
2
- var touch = e.touches[0];
2
+ var touch = e.changedTouches[0];
3
3
  for (var k in touch) {
4
4
  if (!(k in e)) e[k] = touch[k];
5
5
  }
@@ -143,14 +143,14 @@ function ylist(container, generator, $Y) {
143
143
  last_index = index;
144
144
  continue;
145
145
  }
146
- if (last_index > offset) {
147
- list.insertBefore(item, last_item);
148
- } else {
149
- list.insertBefore(item, getNextSibling(last_item));
150
- }
151
146
  } else {
152
147
  delete childrenMap[offset];
153
148
  }
149
+ if (last_index > offset) {
150
+ if (item.nextElementSibling !== last_item) list.insertBefore(item, last_item);
151
+ } else {
152
+ if (item.previousElementSibling !== item) list.insertBefore(item, getNextSibling(last_item));
153
+ }
154
154
  last_index = offset;
155
155
  last_item = item;
156
156
  if (offset === index || !indexed_item) indexed_item = item;
@@ -265,7 +265,7 @@ function main(page, items, active, direction = 'y') {
265
265
  };
266
266
  var open1 = function (event) {
267
267
  if (event.which === 3) event.preventDefault();
268
- if (istoolbar) open.call(this, event.button ? 20 : 600);
268
+ if (istoolbar) open.call(this, event.which === 3 ? 20 : 600);
269
269
  };
270
270
  if (!page.children.length || page.menutype === 1) {
271
271
  page.menutype = 1;
@@ -316,7 +316,8 @@ function main(page, items, active, direction = 'y') {
316
316
  a.menu = item;
317
317
  on("mouseleave")(a, cancel);
318
318
  on("mouseenter")(a, open);
319
- if (istoolbar) on("mousedown")(a, open1);
319
+ on("pointermove")(a, open);
320
+ if (istoolbar) on("pointerdown")(a, open1);
320
321
  on("click")(a, fire);
321
322
  return a;
322
323
  });
@@ -347,7 +348,8 @@ function main(page, items, active, direction = 'y') {
347
348
  elem.menu = this.src[index];
348
349
  on("mouseleave")(elem, cancel);
349
350
  on("mouseenter")(elem, open);
350
- if (istoolbar) on("mousedown")(elem, open1);
351
+ on("pointermove")(elem, cancel);
352
+ if (istoolbar) on("pointerdown")(elem, open1);
351
353
  on("click")(elem, fire);
352
354
  return elem;
353
355
  }, direction);
@@ -35,6 +35,7 @@ function moveupon(target, { start, move, end }, initialEvent) {
35
35
  };
36
36
  var cancel = function (event) {
37
37
  if (event.touches && event.touches.length) return;
38
+ if (event.touches) extendTouchEvent(event);
38
39
  removeAllListeners();
39
40
  if (isFunction(offmouseup)) offmouseup();
40
41
  if (isFunction(offtouchcancel)) offtouchcancel();
package/coms/zimoli/on.js CHANGED
@@ -330,10 +330,49 @@ if (is_addEventListener_enabled) {
330
330
  }, true);
331
331
  });
332
332
  }
333
+ var invoke = function (event, type, pointerType) {
334
+ var target = event.target;
335
+ var touch = event.changedTouches ? event.changedTouches[0] : event;
336
+ var clickEvent = document.createEvent("MouseEvents");
337
+ clickEvent.touchend = true;
338
+ clickEvent.pointerType = pointerType
339
+ clickEvent.initMouseEvent(type, true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
340
+ dispatch(target, clickEvent);
341
+ };
333
342
 
343
+ (function () {
344
+ var pointeractive = null;
345
+ if ("onpointerdown" in window) return;
346
+ var getPointerType = function (event) {
347
+ return event.type.replace(/(start|move|end|cancel|down|up|leave|out|over|enter)$/i, '');
348
+ };
349
+ var pointerdown = function (event) {
350
+ if (pointeractive) return;
351
+ pointeractive = getPointerType(event);
352
+ invoke(event, 'pointerdown', pointeractive);
353
+ };
354
+ var pointerup = function (event) {
355
+ var pointerType = getPointerType(event);
356
+ if (!pointeractive || pointerType !== pointeractive) return;
357
+ invoke(event, 'pointerup', pointerType);
358
+ };
359
+ var pointermove = function (event) {
360
+ var pointerType = getPointerType(event);
361
+ if (pointeractive && pointerType !== pointeractive) return;
362
+ invoke(event, 'pointermove', pointerType);
363
+ };
364
+ on('mousedown')(window, pointerdown, true);
365
+ on('mouseup')(window, pointerdown, true);
366
+ on('touchstart')(window, pointerdown, true);
367
+ on("touchmove")(window, pointermove, true);
368
+ on("mousemove")(window, pointermove, true);
369
+ on("touchend")(window, pointerup, true);
370
+ on("touchcancel")(window, pointerup, true);
371
+ }());
334
372
 
335
373
  (function () {
336
374
  // fastclick
375
+ if (window.fastclick) return;
337
376
  if (document.efronton) return on = document.efronton;
338
377
  document.efronton = on;
339
378
  var onclick = on("click");
@@ -371,12 +410,7 @@ if (is_addEventListener_enabled) {
371
410
  if (onclick.preventClick) return;
372
411
  needFireClick = true;
373
412
  touchendFired = true;
374
- var target = event.target;
375
- var touch = event.changedTouches[0];
376
- var clickEvent = document.createEvent("MouseEvents");
377
- clickEvent.touchend = true;
378
- clickEvent.initMouseEvent("click", true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
379
- dispatch(target, clickEvent);
413
+ invoke(event, 'click');
380
414
  }, true);
381
415
  window.addEventListener("click", function (event) {
382
416
  if (!isClickWithPointer) return;
@@ -40,6 +40,10 @@ var create = function (url, key) {
40
40
  css(imgpic, style);
41
41
  if (imgpic) dispatch(imgpic, 'scaled');
42
42
  };
43
+ image.close = function () {
44
+ if (!p.touchclose) return false;
45
+ remove(p);
46
+ };
43
47
  image.park = function (x, y, scaled, rotate) {
44
48
  var style = get_style(x, y, scaled, rotate);
45
49
  var a = transition(imgpic, style, true);
@@ -1,7 +1,3 @@
1
- var mountedPictures = [];
2
- on("resize")(window, function () {
3
- mountedPictures.forEach(a => a.update());
4
- });
5
1
  var getstation = function (n, s) {
6
2
  var scale = Math.pow(10, Math.round(Math.log(n) / Math.log(10)));
7
3
  var step;
@@ -15,19 +11,66 @@ var getstation = function (n, s) {
15
11
  return n;
16
12
  };
17
13
  var trimCoord = move.trimCoord;
18
- var isequal = (a, b) => a === b || Math.abs((a - b) / (a + b)) < 1e-12;
14
+ var isequal = (a, b) => a === b || Math.abs(a - b) < .1;
15
+ var aimed = (from, to) => (from + from + from + to) / 4;
19
16
  function picture_(image = document.createElement("div")) {
20
17
  var image_width, image_height;
21
- var scaled, x, y, min_scale, loaded_scale, locked_scale, click_scale, loaded_x, loaded_y;
18
+ var scaled = 1, x = 0, y = 0, min_scale, cover_scale, isxrelex, contain_scale, loaded_scale, click_scale, loaded_x, loaded_y;
22
19
  var loaded_width, loaded_height;
23
20
  var max_scale = 10 * devicePixelRatio;
24
- var shape = function () {
21
+ var istouching = false;
22
+ var _shape = function (x, y, scaled, rotated) {
23
+ image.rotate = rotated;
24
+ image.scaled = scaled;
25
+ image.x = x;
26
+ image.y = y;
25
27
  image.shape(x, y, scaled / devicePixelRatio, rotated);
26
- loaded_rotate = rotated; loaded_scale = scaled;
28
+ image.locked = (scaled <= contain_scale) && !overflow();
29
+ }
30
+ var shape = function () {
31
+ _shape(x, y, scaled, rotated);
32
+ shaped_rotate = rotated;
33
+ };
34
+ var overflow = function () {
35
+ var deltax = 0, deltay = 0;
36
+ if (scaled <= contain_scale) {
37
+ deltax = x + image_width * scaled / 2 - loaded_width / 2;
38
+ deltay = y + image_height * scaled / 2 - loaded_height / 2;
39
+ }
40
+ else if (scaled <= cover_scale) {
41
+ if (isxrelex) {
42
+ if (x > 0) deltax = x;
43
+ else if (x + image_width * scaled < loaded_width) deltax = loaded_width - x + image_width * scaled;
44
+ deltay = y + image_height * scaled / 2 - loaded_height / 2;
45
+ } else {
46
+ if (y > 0) deltay = y;
47
+ else if (y + image_height * scaled < loaded_height) deltay = y + image_height * scaled - loaded_height;
48
+ deltax = x + image_width * scaled / 2 - loaded_width / 2;
49
+ }
50
+ }
51
+ else {
52
+ if (x > 0) deltax = x;
53
+ else if (x + image_width * scaled < loaded_width) deltax = y + image_height * scaled - loaded_height;
54
+ if (y > 0) deltay = y;
55
+ else if (y + image_height * scaled < loaded_height) deltay = y + image_height * scaled - loaded_height;
56
+ }
57
+ if (Math.abs(deltax) > .1 || Math.abs(deltay) > .1) {
58
+ deltax /= loaded_width;
59
+ deltay /= loaded_height;
60
+
61
+ return Math.sqrt(deltax * deltax + deltay * deltay);
62
+ }
27
63
  };
28
64
  image.reshape = shape;
29
65
  var park = function () {
30
- if (image.park) image.park(x, y, scaled / devicePixelRatio, loaded_rotate);
66
+ if (isequal(image.x, x) && isequal(image.y, y) && isequal(image.scaled, scaled) && isequal(image.rotate, rotated)) {
67
+ _shape(x, y, scaled, rotated);
68
+ if (image.park) image.park(x, y, scaled / devicePixelRatio, shaped_rotate);
69
+ }
70
+ else {
71
+ _shape(aimed(image.x, x), aimed(image.y, y), aimed(image.scaled, scaled), aimed(image.rotate, rotated));
72
+ return true;
73
+ }
31
74
  };
32
75
  var loadParams = function () {
33
76
  if (!image.width) return;
@@ -35,12 +78,20 @@ function picture_(image = document.createElement("div")) {
35
78
  image_height = image.height / devicePixelRatio;
36
79
  loaded_width = image.clientWidth;
37
80
  loaded_height = image.clientHeight;
38
- loaded_rotate = 0;
39
- locked_scale = loaded_scale = Math.min(loaded_height / image_height, loaded_width / image_width);
81
+ shaped_rotate = 0;
82
+ var y_scale = loaded_height / image_height;
83
+ var x_scale = loaded_width / image_width;
84
+ isxrelex = x_scale > y_scale;
85
+ cover_scale = isxrelex ? x_scale : y_scale;
86
+ loaded_scale = contain_scale = isxrelex ? y_scale : x_scale;
40
87
  if (loaded_scale >= 1) {
41
88
  click_scale = 4;
42
89
  loaded_scale = 1;
43
- } else {
90
+ }
91
+ else if (loaded_scale > .5) {
92
+ click_scale = 2;
93
+ }
94
+ else {
44
95
  click_scale = 1;
45
96
  }
46
97
  loaded_x = (loaded_width - image_width * loaded_scale) / 2;
@@ -50,47 +101,25 @@ function picture_(image = document.createElement("div")) {
50
101
  x = loaded_x;
51
102
  y = loaded_y;
52
103
  updatexy();
53
- set_unlock();
54
- };
55
- var set_unlock = function () {
56
- if (!loaded_scale) return;
57
104
  fixpos();
58
105
  shape();
59
106
  };
60
107
 
61
108
  on("append")(image, loadParams);
62
-
63
- on("append")(image, function () {
64
- mountedPictures.push(image);
65
- });
66
- on("remove")(image, function () {
67
- removeFromList(mountedPictures, image);
68
- });
69
109
  image.init = loadParams;
70
110
  image.locked = false;
71
111
 
72
112
  on("dblclick")(image, function (event) {
73
113
  if (event.defaultPrevented) return;
74
114
  event.preventDefault();
75
- var image = this;
76
- loadParams();
77
- image.locked = isequal(scaled, loaded_scale) && isequal(loaded_x, x) && isequal(loaded_y, y);
78
115
  var layerx = event.offsetX || 0;
79
116
  var layery = event.offsetY || 0;
80
- if (layerx)
81
- if (image.locked) {
82
- var width = image_width * loaded_scale, height = image_height * loaded_scale;
83
- if (layerx > loaded_x + width || layerx < loaded_x || width < image.offsetWidth >> 2) {
84
- layerx = loaded_x + width / 2;
85
- }
86
- if (layery > loaded_y + height || layery < loaded_y || height < image.offsetHeight >> 2) {
87
- layery = loaded_y + height / 2;
88
- }
89
- scale(layerx, layery, click_scale / loaded_scale);
90
- } else {
91
- click_scale = scaled;
92
- set_unlock();
93
- }
117
+ if (isequal(scaled, loaded_scale)) {
118
+ scale(layerx, layery, click_scale / scaled);
119
+ }
120
+ else {
121
+ scale(layerx, layery, loaded_scale / scaled);
122
+ }
94
123
  });
95
124
  image.getScale = function () {
96
125
  if (!this.locked && !loaded_scale) {
@@ -110,7 +139,6 @@ function picture_(image = document.createElement("div")) {
110
139
  y += y1 - y0;
111
140
  };
112
141
  var scale = function (layerx, layery, ratio) {
113
- if (!image.locked) return;
114
142
  scaled *= ratio;
115
143
  x = (x - layerx) * ratio + layerx;
116
144
  y = (y - layery) * ratio + layery;
@@ -123,30 +151,23 @@ function picture_(image = document.createElement("div")) {
123
151
  if (scaled >= max_scale * 1.1 && scale > 1) return;
124
152
  if (scaled <= min_scale && scale < 1) return;
125
153
  scaled *= scale;
126
- var centerx = (x1 + x2) / 2;
127
- var centery = (y1 + y2) / 2;
128
- var centerm = (m1 + m2) / 2;
129
- var centern = (n1 + n2) / 2;
130
- x = (x - centerx) * scale + centerm;
131
- y = (y - centery) * scale + centern;
154
+ var ox = image.clientWidth / 2;
155
+ var oy = image.clientHeight / 2;
156
+ x = (x - x1) * scale + ox;
157
+ y = (y - y1) * scale + oy;
132
158
  var theta = Math.atan2(n2 - n1, m2 - m1) - Math.atan2(y2 - y1, x2 - x1);
133
159
  var r = rotated;
134
160
  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;
161
+ rotated = r;
162
+ updatexy();
163
+ x = x - ox + m1;
164
+ y = y - oy + n1;
147
165
  shape();
148
166
  };
149
167
  var recover = function (change) {
168
+ if (image.close && scaled < cover_scale && overflow() > .3) {
169
+ if (image.close() !== false) return;
170
+ }
150
171
  var aimed_scale = getstation(scaled);
151
172
  if (aimed_scale !== scaled) {
152
173
  change = true;
@@ -169,24 +190,21 @@ function picture_(image = document.createElement("div")) {
169
190
  var saved_x = x, saved_y = y;
170
191
  fixpos();
171
192
  if (change || saved_x !== x || saved_y !== y) {
172
- park();
193
+ move.smooth(park);
173
194
  return;
174
195
  }
175
- if (image.clientHeight && image.clientWidth) return true;
176
196
  };
177
197
  var move = inertia(function (deltax, deltay) {
178
198
  var saved_x = x, saved_y = y;
179
199
  x += deltax, y += deltay;
180
- fixpos();
200
+ if (scaled > contain_scale) fixpos();
181
201
  shape();
182
- if (saved_x === x && saved_y === y) return false;
202
+ if (saved_x === x && saved_y === y || overflow() > 1) return false;
183
203
  });
184
204
  var saved_event;
185
205
  onmousewheel(image, function (event) {
186
206
  var { offsetX: layerX, offsetY: layerY, deltaY } = event;
187
- if (this.locked) event.preventDefault();
188
207
  if (!deltaY) return;
189
- if (!this.locked) loadParams();
190
208
  this.locked = true;
191
209
  var ratio = Math.pow(0.99, 20 * Math.atan(deltaY / 20));
192
210
  var __scaled = scaled;
@@ -204,18 +222,15 @@ function picture_(image = document.createElement("div")) {
204
222
  start(event) {
205
223
  event.preventDefault();
206
224
  saved_event = event;
207
- event.moveLocked = scaled > locked_scale;
208
- if (!this.locked) {
209
- loadParams();
210
- }
225
+ istouching = !this.locked;
211
226
  move.reset();
212
227
  },
213
228
  move(event) {
214
229
  if (event.moveLocked) return;
215
- event.moveLocked = scaled > locked_scale;
216
- event.preventDefault();
230
+ if (!onclick.preventClick) return;
217
231
  if (event.touches && saved_event.touches) {
218
232
  if (event.touches.length !== saved_event.touches.length) {
233
+ event.moveLocked = true;
219
234
  saved_event = event;
220
235
  return;
221
236
  }
@@ -224,7 +239,7 @@ function picture_(image = document.createElement("div")) {
224
239
  case 1:
225
240
  break;
226
241
  case 2:
227
- this.locked = true;
242
+ default:
228
243
  event.moveLocked = true;
229
244
  var [xy1, xy2] = saved_event.touches;
230
245
  var [mn1, mn2] = event.touches;
@@ -237,6 +252,7 @@ function picture_(image = document.createElement("div")) {
237
252
  );
238
253
  saved_event = event;
239
254
  return;
255
+
240
256
  }
241
257
  }
242
258
  if (event.which === 3) {
@@ -244,39 +260,49 @@ function picture_(image = document.createElement("div")) {
244
260
  rotatexy(saved_event.clientX, saved_event.clientY, event.clientX, event.clientY);
245
261
  }
246
262
  else {
247
- if (!this.locked) return;
248
263
  var deltax = event.clientX - saved_event.clientX,
249
264
  deltay = event.clientY - saved_event.clientY;
250
- move(deltax, deltay);
265
+
266
+ if (!istouching && istouching !== null) {
267
+ istouching = Math.abs(deltay) > Math.abs(deltax) ? true : null;
268
+ }
269
+ if (istouching) {
270
+ event.moveLocked = true;
271
+ move(deltax, deltay);
272
+ }
251
273
  }
252
274
  saved_event = event;
253
275
  },
254
276
  end(event) {
277
+ if (event.touches && event.touches.length > 0) return;
278
+ istouching = false;
255
279
  if (saved_event) {
256
280
  if (event.timeStamp - saved_event.timeStamp > 120) {
257
281
  move.reset();
258
282
  }
259
283
  }
260
284
  saved_event = null;
261
- event.moveLocked = scaled >= locked_scale;
262
- if (this.locked && onclick.preventClick) move.smooth();
285
+ if (onclick.preventClick) move.smooth(recover);
263
286
  }
264
287
  });
265
- var loaded_rotate = 0, rotated = 0;
288
+ var shaped_rotate = 0, rotated = 0;
266
289
  var rotatexy = function (x1, y1, x2, y2) {
267
290
  var { left, top } = getScreenPosition(image);
268
291
  var centerx = left + image.clientLeft + image.clientWidth / 2, centery = top + image.clientTop + image.clientHeight / 2;
269
- var deltax = x2 - x1, deltay = y2 - y1;
270
- var rx = x1 - centerx, ry = y1 - centery;
271
- var sign = -ry * deltax + rx * deltay;
272
- var delta = 90 * Math.sqrt(deltax * deltax + deltay * deltay) / Math.sqrt(rx * rx + ry * ry);
273
- if (delta > 10) delta = 10;
274
- if (sign) image.rotateBy(sign > 0 ? delta : -delta);
292
+ // var deltax = x2 - x1, deltay = y2 - y1;
293
+ // var rx = x1 - centerx, ry = y1 - centery;
294
+ // var sign = -ry * deltax + rx * deltay;
295
+ // var delta = Math.sqrt(deltax * deltax + deltay * deltay) / Math.sqrt(rx * rx + ry * ry);
296
+ // if (delta > 10) delta = 10;
297
+ // delta *= sign > 0 ? 1 : -1;
298
+ if (isequal(x1, centerx) && isequal(y1, centery) || isequal(x2, centerx) && isequal(y2, centery)) return;
299
+ var delta = Math.atan2(y2 - centery, x2 - centerx) - Math.atan2(y1 - centery, x1 - centerx);
300
+ rotated += delta * 180 / Math.PI, updatexy(), shape();
275
301
  }
276
302
  var updatexy = function () {
277
- var deg = rotated - loaded_rotate;
303
+ var deg = rotated - shaped_rotate;
278
304
  if (isFinite(deg)) {
279
- loaded_rotate = rotated;
305
+ shaped_rotate = rotated;
280
306
  [x, y] = getrotatedltwh(deg, scaled);
281
307
  }
282
308
  };
@@ -289,7 +315,7 @@ function picture_(image = document.createElement("div")) {
289
315
  var [c1, c2] = rotate([m, n], -a, c);
290
316
  c1 -= w / 2;
291
317
  c2 -= h / 2;
292
- var a = loaded_rotate;
318
+ var a = shaped_rotate;
293
319
  var l = c[0] - w / 2;
294
320
  var r = l + w;
295
321
  var t = c[1] - h / 2;
@@ -321,8 +347,9 @@ function picture_(image = document.createElement("div")) {
321
347
  } else {
322
348
  shape();
323
349
  }
324
-
325
350
  };
351
+ bind('resize')(image, image.update);
352
+
326
353
  image.rotateTo = function (deg) {
327
354
  rotated = deg;
328
355
  this.update();
@@ -1,9 +1,8 @@
1
1
  function picture_test() {
2
2
  var p = picture([
3
- "/docs/images/cat.jpg",
4
- "zimoli/images/avatar.png",
5
- "zimoli/images/avatar.png",
6
- "zimoli/images/avatar.png",
3
+ "images/cat.jpg",
4
+ "images/mirror.png",
7
5
  ]);
6
+ p.touchclose = true;
8
7
  popup(p);
9
8
  }
@@ -725,7 +725,7 @@ function renderStructure(element, scope, parentScopes = []) {
725
725
  var attrs = [].concat.apply([], element.attributes);
726
726
  var withContext = parentScopes ? parentScopes.map((_, cx) => `with(this.$parentScopes[${cx}])`).join("") : '';
727
727
  var types = {};
728
- var emiter_reg = /^(?:(v|ng|on|once)\-|v\-on\:|@|once|on)/i;
728
+ var emiter_reg = /^(?:(v|ng|on|once)?\-|v\-on\:|@|once|on)/i;
729
729
  var ons = [];
730
730
  var copys = [];
731
731
  var binds = {};
@@ -768,21 +768,25 @@ function renderStructure(element, scope, parentScopes = []) {
768
768
  continue;
769
769
  }
770
770
  if (element.$struct) continue;
771
- var key = name.replace(/^(ng|v|.*?)\-|^[\:\_\.]|^v\-bind\:/i, "").toLowerCase();
771
+ // ng-html,ng-src,ng-text,ng-model,ng-style,ng-class,...
772
+ var key = name.replace(/^(ng|v|[^\_\:\.]*?)\-|^[\:\_\.]|^v\-bind\:/i, "").toLowerCase();
772
773
  if (directives.hasOwnProperty(key) || /^([\_\:\.]|v\-bind\:)/.test(name)) {
773
774
  binds[key] = value;
774
775
  element.removeAttribute(name);
775
776
  }
777
+ // ng-click on-click v-click @click @mousedown ...
776
778
  else if (emiter_reg.test(name)) {
777
779
  var match = emiter_reg.exec(name);
778
780
  var ngon = (match[1] || match[0]).toLowerCase() === 'once' ? 'once' : 'on';
779
781
  element.removeAttribute(name);
780
782
  ons.push([emiters[ngon], name.replace(emiter_reg, ''), value]);
781
783
  }
784
+ // placeholder_ href_ checked_ ...
782
785
  else if (/[_@\:\.]$/.test(name)) {
783
786
  attr1[name.replace(/[_@\:\.]$/, "")] = value;
784
787
  element.removeAttribute(name);
785
788
  }
789
+ // title alt name type placeholder href checked ...
786
790
  else {
787
791
  if (!/\-/.test(name) || value === '') {
788
792
  copys.push(attr);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.14.11",
3
+ "version": "3.15.6",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {