efront 3.4.6 → 3.5.2

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.
@@ -3,60 +3,92 @@
3
3
  */
4
4
 
5
5
  var { min, max, sin, cos, round, sqrt, random, PI, abs = a => a < 0 ? -a : a } = Math;
6
-
6
+ var [v_r, v_g, v_b] = [.299, .587, .114];
7
7
 
8
8
  var rgb4v = function (r, g, b, v) {
9
- v = v - rgb2v(r, g, b);
10
- return trim3v(r + v, g + v, b + v);
9
+ var d = v - rgb2v(r, g, b);
10
+ return [r + d, g + d, b + d];
11
11
  };
12
12
 
13
- var trim3v = function (r, g, b) {
14
- do {
15
- var rest = 0;
16
- var count = 1;
17
- if (r >= 255) rest += (r - 255) * .299, r = 255, count -= .299;
18
- if (g >= 255) rest += (g - 255) * .587, g = 255, count -= .587;
19
- if (b >= 255) rest += (b - 255) * .114, b = 255, count -= .114;
20
- if (count > 0.01 && rest > 0) {
21
- rest = rest / count;
22
- if (r < 255) r += rest;
23
- if (g < 255) g += rest;
24
- if (b < 255) b += rest;
25
- }
26
- } while (rest > 0);
27
- do {
28
- var rest = 0;
29
- var count = 1;
30
- if (r <= 0) rest += r * .299, r = 0, count -= .299;
31
- if (g <= 0) rest += g * .587, g = 0, count -= .587;
32
- if (b <= 0) rest += b * .114, b = 0, count -= .114;
33
- if (count > 0.01 && rest > 0) {
34
- rest = rest / count;
35
- if (r > 0) r += rest;
36
- if (g > 0) g += rest;
37
- if (b > 0) b += rest;
38
- }
39
- } while (rest > 0);
13
+
14
+
15
+ var rgb4h = function (r, g, b, h) {
16
+ var [p, q, s] = [r, g, b].sort();
17
+ var m = s - p;
18
+ h = (h % 360 + 360) % 360;
19
+ if (h < 60) {
20
+ r = s;
21
+ g = p + m * h / 60;
22
+ b = p;
23
+ }
24
+ else if (h < 120) {
25
+ r = p + m * (120 - h) / 60;
26
+ g = s;
27
+ b = p;
28
+ }
29
+ else if (h < 180) {
30
+ r = p;
31
+ g = s;
32
+ b = p + m * (h - 120) / 60
33
+ }
34
+ else if (h < 240) {
35
+ r = p;
36
+ g = p + m * (240 - h) / 60;
37
+ b = s;
38
+ }
39
+ else if (h < 300) {
40
+ r = p + m * (h - 240) / 60;
41
+ g = p;
42
+ b = s;
43
+ }
44
+ else {
45
+ r = s;
46
+ g = p;
47
+ b = p + m * (360 - h) / 60;
48
+ }
40
49
  return [r, g, b];
41
- }
50
+ };
51
+
52
+
53
+ var rgb2h = function (r, g, b) {
54
+ var m = max(r, g, b);
55
+ var n = min(r, g, b);
56
+ var h;
57
+ if (m === n) h = 0;
58
+ else if (m === r) {
59
+ if (g >= b) {
60
+ h = 60 * (g - b) / (m - n);
61
+ } else {
62
+ h = 360 + 60 * (g - b) / (m - n);
63
+ }
64
+ }
65
+ else if (m === g) {
66
+ h = 120 + 60 * (b - r) / (m - n);
67
+ }
68
+ else if (m === b) {
69
+ h = 240 + 60 * (r - g) / (m - n);
70
+
71
+ }
72
+ return h;
73
+ };
42
74
 
43
75
  var rgb2s = function (r, g, b) {
44
- var m = Math.min(r, g, b);
76
+ var m = min(r, g, b);
45
77
  if (m) {
46
78
  r -= m;
47
79
  g -= m;
48
80
  b -= m;
49
81
  }
50
- return Math.max(r, g, b) / 255;
82
+ return max(r, g, b) / 255;
51
83
  };
52
84
  var rgb4s = function (r, g, b, s) {
53
- var m = Math.min(r, g, b);
85
+ var m = min(r, g, b);
54
86
  if (m) {
55
87
  r -= m;
56
88
  g -= m;
57
89
  b -= m;
58
90
  }
59
- s = s * 255 / Math.max(r, g, b);
91
+ s = s * 255 / (max(r, g, b) || 1);
60
92
  if (s) {
61
93
  r *= s;
62
94
  g *= s;
@@ -69,37 +101,45 @@ var rgb4s = function (r, g, b, s) {
69
101
  function rotate_rgb(RGBA, theta) {
70
102
  var [r, g, b, a] = RGBA;
71
103
  if (isNaN(theta)) return [r, g, b, a];
104
+ var h = rgb2h(r, g, b);
72
105
  var s = rgb2s(r, g, b);
73
106
  var v = rgb2v(r, g, b);
74
- var u = sqrt(3) / 3;
75
- var pu = 1 / 3;
76
- var cosa = cos(theta);
77
- var sina = sin(theta);
78
- var vera = 1 - cosa;
79
- var red = (cosa + pu * vera) * r + (pu * vera - u * sina) * g + (pu * vera + u * sina) * b;
80
- var green = (pu * vera + u * sina) * r + (cosa + pu * vera) * g + (pu * vera - u * sina) * b;
81
- var blue = (pu * vera - u * sina) * r + (pu * vera + u * sina) * g + (cosa + pu * vera) * b;
82
- var m = mode([red, green, blue]);
83
- var _min = min(red, green, blue);
84
- var d = [m - red, m - green, m - blue]
85
- if (_min < 0) {
86
- var index = red < 0 ? 0 : green < 0 ? 1 : 2;
87
- var [dr, dg, db] = single(d, -_min / d[index]);
88
- } else {
89
- var _max = max(red, green, blue);
90
- if (_max > 255) {
91
- var index = red > 255 ? 0 : green > 255 ? 1 : 2;
92
- var [dr, dg, db] = single(d, (255 - _max) / d[index]);
93
- } else {
94
- var dr, dg, db = dr = dg = 0;
95
- }
96
- }
97
- red += dr;
98
- green += dg;
99
- blue += db;
100
- [red, green, blue] = rgb4s(red, green, blue, s);
101
- [red, green, blue] = rgb4v(red, green, blue, v);
102
- return [red, green, blue, a];
107
+ h += theta * 180 / Math.PI;
108
+ [r, g, b] = rgb4h(r, g, b, h);
109
+ [r, g, b] = rgb4s(r, g, b, s);
110
+ [r, g, b] = rgb4v(r, g, b, v);
111
+ return [r, g, b];
112
+ // var s = rgb2s(r, g, b);
113
+ // var v = rgb2v(r, g, b);
114
+ // var u = sqrt(3) / 3;
115
+ // var pu = 1 / 3;
116
+ // var cosa = cos(theta);
117
+ // var sina = sin(theta);
118
+ // var vera = 1 - cosa;
119
+ // var red = (cosa + pu * vera) * r + (pu * vera - u * sina) * g + (pu * vera + u * sina) * b;
120
+ // var green = (pu * vera + u * sina) * r + (cosa + pu * vera) * g + (pu * vera - u * sina) * b;
121
+ // var blue = (pu * vera - u * sina) * r + (pu * vera + u * sina) * g + (cosa + pu * vera) * b;
122
+ // var m = mode([red, green, blue]);
123
+ // var _min = min(red, green, blue);
124
+ // var d = [m - red, m - green, m - blue]
125
+ // if (_min < 0) {
126
+ // var index = red < 0 ? 0 : green < 0 ? 1 : 2;
127
+ // var [dr, dg, db] = single(d, -_min / d[index]);
128
+ // } else {
129
+ // var _max = max(red, green, blue);
130
+ // if (_max > 255) {
131
+ // var index = red > 255 ? 0 : green > 255 ? 1 : 2;
132
+ // var [dr, dg, db] = single(d, (255 - _max) / d[index]);
133
+ // } else {
134
+ // var dr, dg, db = dr = dg = 0;
135
+ // }
136
+ // }
137
+ // red += dr;
138
+ // green += dg;
139
+ // blue += db;
140
+ // [red, green, blue] = rgb4s(red, green, blue, s);
141
+ // [red, green, blue] = rgb4v(red, green, blue, v);
142
+ // return [red, green, blue, a];
103
143
  }
104
144
  // 对比度
105
145
  function contrast_rgb(RGBA, ratio) {
@@ -225,22 +265,24 @@ function single(c, u) {
225
265
  return [r * u, g * u, b * u];
226
266
  }
227
267
  function angle(c1, c2) {
228
- c1 = parse(c1);
229
- c2 = parse(c2);
230
- c1 = normal(c1);
231
- c2 = normal(c2);
232
- var [r1, g1, b1] = single(c1);
233
- var [r2, g2, b2] = single(c2);
234
- var c = [g1 * b2 - g2 * b1, b1 * r2 - b2 * r1, r1 * g2 - r2 * g1];
235
- var d = r1 * r2 + g1 * g2 + b1 * b2;
236
- var e = c[0] > 0 ? mode(c) : -mode(c);
237
- var theta = Math.asin(e > 1 ? 1 : e < -1 ? -1 : e);
238
- var phi = Math.acos(d > 1 ? 1 : d < -1 ? -1 : d);
239
- if (theta < 0) {
240
- theta = Math.PI * 2 - phi;
241
- } else {
242
- theta = phi;
243
- }
268
+ var theta = rgb2h(c2[0], c2[1], c2[2]) - rgb2h(c1[0], c1[1], c1[2]);
269
+ if (theta < 0) theta += 360;
270
+ // c1 = parse(c1);
271
+ // c2 = parse(c2);
272
+ // c1 = normal(c1);
273
+ // c2 = normal(c2);
274
+ // var [r1, g1, b1] = single(c1);
275
+ // var [r2, g2, b2] = single(c2);
276
+ // var c = [g1 * b2 - g2 * b1, b1 * r2 - b2 * r1, r1 * g2 - r2 * g1];
277
+ // var d = r1 * r2 + g1 * g2 + b1 * b2;
278
+ // var e = c[0] > 0 ? mode(c) : -mode(c);
279
+ // var theta = Math.asin(e > 1 ? 1 : e < -1 ? -1 : e);
280
+ // var phi = Math.acos(d > 1 ? 1 : d < -1 ? -1 : d);
281
+ // if (theta < 0) {
282
+ // theta = Math.PI * 2 - phi;
283
+ // } else {
284
+ // theta = phi;
285
+ // }
244
286
  return theta;
245
287
  }
246
288
  function equal(c1, c2) {
@@ -273,9 +315,9 @@ var colorDesigner = {
273
315
  contrast: 1
274
316
  };
275
317
  var rgb2v = function (r, g, b) {
276
- r *= .299;
277
- g *= .587;
278
- b *= .114;
318
+ r *= v_r;
319
+ g *= v_g;
320
+ b *= v_b;
279
321
  return r + g + b;
280
322
  };
281
323
  var v2rgb = function (v, r, g, b) {
@@ -320,6 +362,9 @@ extend(color, {
320
362
  contrast(color, ratio) {
321
363
  return doWith(contrast_rgb, color, ratio);
322
364
  },
365
+ rgb2h,
366
+ rgb4h,
367
+ rgb4s,
323
368
  rgb2v,
324
369
  rgb4v,
325
370
  rgb2s,
@@ -4,9 +4,7 @@ var xy2c = function (a, x, y) {
4
4
  return a * x * (1 - y) + (.5 + x / 2) * y * 255;
5
5
  };
6
6
  var z2rgb = function (z) {
7
- var c = color.rotate(sample, z * (Math.PI + Math.PI));
8
- var [r, g, b] = color.parse(c);
9
- return color.rgb4s(r, g, b, 1);
7
+ return color.rgb4h(255, 0, 0, z * 360);
10
8
  };
11
9
  var z2c = function (z) {
12
10
  return color.stringify(z2rgb(z));
@@ -87,7 +85,7 @@ var c2xy = function (c1, c2) {
87
85
  var getCanvas = function (e) {
88
86
  return e.getElementsByTagName('canvas')[0];
89
87
  };
90
- var sample = "#ff4949";
88
+ var sample = "#ff0000";
91
89
  var buildpad = function (pad, c = sample) {
92
90
  var canvas = getCanvas(pad);
93
91
  canvas.width = 256;
@@ -310,7 +310,11 @@ var parseData = function (sourceText) {
310
310
  sourceText = sourceText.replace(/^[^\(]+\(([\s\S]*)\)[^\)]*$/, "$1");
311
311
  }
312
312
  try {
313
- sourceText = parseYML(sourceText);
313
+ if (/^[\[\{][\d\:,]+[\}\]],|^(Infinity|''|NaN|\d+|)$|^\/[\s\S]*?\/\w*$/.test(sourceText)) {
314
+ sourceText = JSAM.parse(sourceText);
315
+ } else {
316
+ sourceText = parseYML(sourceText);
317
+ }
314
318
  } catch (e) {
315
319
  throw "数据无法解析";
316
320
  }
@@ -539,7 +543,8 @@ var privates = {
539
543
  ok(e.response || e.responseText);
540
544
  }).error(xhr => {
541
545
  try {
542
- oh(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
546
+ var e = getErrorMessage(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
547
+ oh({ status: xhr.status, error: e })
543
548
  } catch (error) {
544
549
  oh(error);
545
550
  }
@@ -608,8 +613,7 @@ function responseCrash(e, data) {
608
613
  } else {
609
614
  data.error = e;
610
615
  }
611
- error_report(data.error_message, 'error');
612
-
616
+ error_report(data.error_message, e.status < 500 ? 'warn' : 'error');
613
617
  }
614
618
 
615
619
  var data = {
@@ -46,6 +46,8 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
46
46
  var [target_left, target_top] = getOffset(target);
47
47
  if (abs(target_left - event.screenX - saved_delta.x) < MOVELOCK_DELTA && abs(target_top - event.screenY - saved_delta.y) < MOVELOCK_DELTA) return;
48
48
  saved_delta.ing = true;
49
+ drag.target = target;
50
+ dispatch("dragstart", target);
49
51
  if (isElement(target) && !/absolute|fixed/.test(getComputedStyle(target).position)) {
50
52
  clone = toCloneTarget(target, isMovingSource);
51
53
  appendChild(document.body, clone);
@@ -62,7 +64,6 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
62
64
  clone.style.zIndex = zIndex();
63
65
  extraClones.map(e => e.style.zIndex = clone.style.zIndex);
64
66
  }
65
- dispatch("dragstart", target);
66
67
  }
67
68
  drag.target = clone;
68
69
  var offsetLeft = saved_delta.x + event.screenX;
@@ -121,18 +121,8 @@ function main() {
121
121
  minWidth = arg;
122
122
  }
123
123
  });
124
- var src = element.getAttribute("src") || element.getAttribute("ng-src") || element.getAttribute("v-src");
125
- if (src) {
126
- var parsedSrc = render.parseRepeat(src);
127
- if (!parsedSrc) {
128
- element.setAttribute("ng-src", src);
129
- element.removeAttribute("src");
130
- var generator = getGenerator(element);
131
- } else {
132
- element.setAttribute("ng-src", parsedSrc.srcName);
133
- element.removeAttribute("src");
134
- var generator = getGenerator(element, parsedSrc);
135
- }
124
+ if ("$src" in element) {
125
+ var generator = getGenerator(element);
136
126
  care(element, function () {
137
127
  var index = element.index();
138
128
  element.clean();
@@ -1,7 +1,12 @@
1
1
 
2
2
  var _slider = createElement(div);
3
- var getGenerator = function (container, parsedSrc) {
3
+ var empty = function (index, item) {
4
+ if (!item) return;
5
+ return document.createElement('empty');
6
+ };
7
+ var getGenerator = function (container) {
4
8
  if (!container) return;
9
+ if (!container.childNodes.length) return container.$generator || empty;
5
10
  var template = document.createElement("div");
6
11
  var templates = [].concat.apply([], container.childNodes).filter(a => {
7
12
  if (a.hasAttribute('insert')) {
@@ -20,26 +25,27 @@ var getGenerator = function (container, parsedSrc) {
20
25
  appendChild(template, templates);
21
26
  container.insertBefore = _slider.insertBefore;
22
27
  container.appendChild = _slider.appendChild;
23
- return function (index, com) {
28
+ var scopes = container.$parentScopes.concat(container.$scope);
29
+ return container.$generator = function (index, com) {
24
30
  if (!com) {
25
31
  if (!container.src || index >= container.src.length) return;
26
32
  com = container.src[index];
27
33
  }
28
34
  if (!com) return;
29
- var template1 = template.cloneNode();
30
- template1.innerHTML = template.innerHTML;
35
+ var template1 = template.cloneNode(true);
31
36
  if (!template1.childNodes.length) return template1;
32
37
  var item = template1.childNodes[0];
33
38
  item.with = [].concat.apply([], template1.childNodes).slice(1);
39
+ var parsedSrc = container.$src;
34
40
  if (parsedSrc) {
35
41
  var { keyName, itemName, indexName } = parsedSrc;
36
- var newScope = extend(Object.create(container.$scope), {
42
+ var newScope = {
37
43
  [keyName || '$key']: index,
38
44
  [itemName || '$item']: com,
39
45
  [indexName || '$index']: index
40
- });
41
- var newItem = render(item, newScope);
42
- newItem.with = render(item.with, newScope);
46
+ };
47
+ var newItem = render(item, newScope, scopes);
48
+ if (item.with.length) newItem.with = render(item.with, newScope, scopes);
43
49
  } else {
44
50
  var newScope = container.src[index];
45
51
  if (!isObject(newScope)) newScope = {
@@ -59,8 +65,8 @@ var getGenerator = function (container, parsedSrc) {
59
65
  return this.$item;
60
66
  }
61
67
  }
62
- var newItem = render(item, newScope, [container.$scope]);
63
- newItem.with = render(newItem.with = item.with, newScope, [container.$scope]);
68
+ var newItem = render(item, newScope, scopes);
69
+ newItem.with = render(newItem.with = item.with, newScope, scopes);
64
70
  }
65
71
  return newItem;
66
72
  };
@@ -14,6 +14,10 @@
14
14
 
15
15
  >.button {
16
16
  border: none;
17
+ width: 100%;
18
+ cursor: pointer;
19
+ padding: 0;
20
+ margin: 0;
17
21
 
18
22
  >.track {
19
23
 
@@ -433,18 +433,8 @@ function list() {
433
433
  bindSrc = container;
434
434
  container = div();
435
435
  } else if (container && !generator) {
436
- var src = container.getAttribute("src") || container.getAttribute("ng-src") || container.getAttribute("v-src");
437
- if (src) {
438
- var parsedSrc = render.parseRepeat(src);
439
- if (!parsedSrc) {
440
- container.setAttribute("ng-src", src);
441
- container.removeAttribute("src");
442
- var generator = getGenerator(container);
443
- } else {
444
- container.setAttribute("ng-src", parsedSrc.srcName);
445
- container.removeAttribute("src");
446
- var generator = getGenerator(container, parsedSrc);
447
- }
436
+ if ("$src" in container) {
437
+ generator = getGenerator(container);
448
438
  care(container, function () {
449
439
  var index = container.index();
450
440
  container.clean();
@@ -110,18 +110,6 @@ function main(elem, mode) {
110
110
  }
111
111
  }
112
112
  mode = mode ? mode.toLowerCase() : "horizonal";
113
- var src = elem.getAttribute("src") || elem.getAttribute("ng-src") || elem.getAttribute("v-src");
114
- if (src) {
115
- var parsedSrc = render.parseRepeat(src);
116
- if (!parsedSrc) {
117
- elem.removeAttribute("src");
118
- var generator = getGenerator(elem);
119
- } else {
120
- elem.removeAttribute("src");
121
- var generator = getGenerator(elem, parsedSrc);
122
- }
123
- elem.setAttribute("ng-src", parsedSrc ? parsedSrc.srcName : src);
124
- }
125
113
 
126
114
  switch (mode) {
127
115
  case "i":
@@ -130,6 +118,7 @@ function main(elem, mode) {
130
118
  case "t":
131
119
  case "tree":
132
120
  if (elem) {
121
+ var generator = getGenerator(elem);
133
122
  tree(elem, function (index, item) {
134
123
  var e = generator(index, item);
135
124
  if (!e || e.children.length) return e;
@@ -165,9 +154,10 @@ function main(elem, mode) {
165
154
  var emit = function (item) {
166
155
  active(elem, item, item.value);
167
156
  };
168
- if (src) {
157
+ if ("$src" in elem) {
158
+ getGenerator(elem);
169
159
  care(elem, function (src) {
170
- menuList(elem, getTreeFromData(src), emit, generator, direction);
160
+ menuList(elem, getTreeFromData(src), emit, direction);
171
161
  });
172
162
  } else {
173
163
  var nodes = getArrayNodes(elem);
@@ -8,7 +8,7 @@ var release = function () {
8
8
  var clear = function () {
9
9
  clearTimeout(releaseTimer);
10
10
  };
11
- function main(page, items, active, generator, direction = 'y') {
11
+ function main(page, items, active, direction = 'y') {
12
12
  if (!isNode(page)) {
13
13
  var page = div();
14
14
  }
@@ -21,7 +21,7 @@ function main(page, items, active, generator, direction = 'y') {
21
21
  if (!item.children || !item.children.length) return;
22
22
  var clone = template.cloneNode();
23
23
  clone.innerHTML = template.innerHTML;
24
- var menu = main(clone, item.children, active, generator);
24
+ var menu = main(clone, item.children, active);
25
25
  mounted_menus.push(menu);
26
26
 
27
27
  page.active = menu;
@@ -46,7 +46,7 @@ function main(page, items, active, generator, direction = 'y') {
46
46
  template.innerHTML = page.innerHTML;
47
47
  page.tempalte = template;
48
48
  }
49
- if (!generator || !page.children.length || page.menutype === 1) {
49
+ if (!page.children.length || page.menutype === 1) {
50
50
  page.innerHTML = menuList;
51
51
  page.menutype = 1;
52
52
  var hasIcon = function () {
@@ -82,6 +82,7 @@ function main(page, items, active, generator, direction = 'y') {
82
82
  this.$scope.hasIcon = hasIcon();
83
83
  });
84
84
  } else {
85
+ var generator = getGenerator(page);
85
86
  list(page, function (index) {
86
87
  var elem = generator(index);
87
88
  if (!elem) return;
package/coms/zimoli/on.js CHANGED
@@ -144,6 +144,22 @@ function checkKeyNeed(eventtypes, e) {
144
144
  }
145
145
  return true;
146
146
  }
147
+ function wrapHandler(h) {
148
+ if (h instanceof Function) {
149
+ return function () {
150
+ var res = h.apply(this, arguments);
151
+ if (res && isFunction(res.then)) {
152
+ this.setAttribute('pending', '');
153
+ var removePending = () => {
154
+ this.removeAttribute('pending');
155
+ };
156
+ res.then(removePending, removePending);
157
+ }
158
+ return res;
159
+ }
160
+ }
161
+ return h;
162
+ }
147
163
  if (is_addEventListener_enabled) {
148
164
  var on = function (k) {
149
165
  var on_event_path = "on" + k;
@@ -151,6 +167,7 @@ if (is_addEventListener_enabled) {
151
167
  var eventtypes = parseEventTypes(k);
152
168
  k = k.replace(eventtypereg, '');
153
169
  function addhandler(element, handler, firstmost) {
170
+ handler = wrapHandler(handler);
154
171
  if (eventtypes.capture) firstmost = true;
155
172
  if (k === changes_key) {
156
173
  if (!element.needchanges) element.needchanges = 0;
@@ -190,6 +207,7 @@ if (is_addEventListener_enabled) {
190
207
 
191
208
  if (handlersMap[on_event_path]) return handlersMap[on_event_path];
192
209
  function addhandler(element, handler, firstmost = false) {
210
+ handler = wrapHandler(handler);
193
211
  if (eventtypes.capture) {
194
212
  console.warn("当前运行环境不支持事件capture");
195
213
  firstmost = true;