efront 3.25.2 → 3.25.3

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.
Files changed (40) hide show
  1. package/apps/index.jsp +97 -10
  2. package/apps/noice/index.html +43 -0
  3. package/apps/noice/main.html +3 -0
  4. package/apps/noice/main.js +96 -0
  5. package/apps/noice/main.less +30 -0
  6. package/coms/basic/FormData.js +11 -1
  7. package/coms/basic/Item.js +14 -5
  8. package/coms/basic/Tree.js +44 -5
  9. package/coms/basic/bdecode.js +34 -1
  10. package/coms/basic/cross_.js +95 -45
  11. package/coms/basic/decodeGBK.js +79 -0
  12. package/coms/basic/decodeGBK_test.js +16 -0
  13. package/coms/basic/isEmpty.js +1 -1
  14. package/coms/basic/parseKV.js +31 -3
  15. package/coms/basic/serialize.js +28 -4
  16. package/coms/frame/edit.js +3 -3
  17. package/coms/frame/list.html +4 -1
  18. package/coms/frame/list.js +18 -10
  19. package/coms/frame/list.less +3 -0
  20. package/coms/pivot/bdecode2.js +26 -0
  21. package/coms/pivot/plist.js +34 -2
  22. package/coms/reptile/cross.js +4 -2
  23. package/coms/view//344/272/272/346/260/221/345/270/201.js +53 -0
  24. package/coms/zimoli/audio.js +18 -4
  25. package/coms/zimoli/button.less +1 -1
  26. package/coms/zimoli/cast.js +11 -6
  27. package/coms/zimoli/chooseFile.js +11 -3
  28. package/coms/zimoli/contextmenu.js +37 -4
  29. package/coms/zimoli/cross.js +1 -1
  30. package/coms/zimoli/css.js +14 -5
  31. package/coms/zimoli/getGenerator.js +2 -2
  32. package/coms/zimoli/loading.html +1 -1
  33. package/coms/zimoli/menu.js +7 -7
  34. package/coms/zimoli/render.js +1 -1
  35. package/coms/zimoli/tree.js +8 -0
  36. package/coms/zimoli/tree.less +26 -0
  37. package/data/gbk.txt +1 -0
  38. package/package.json +1 -1
  39. package/public/efront.js +1 -1
  40. package/data/gbk-unicode-utf8-cn.txt +0 -6763
@@ -0,0 +1,26 @@
1
+ var encoding = '';
2
+ function kv(o) {
3
+ if (o instanceof Uint8Array) return /^gb/i.test(encoding) ? decodeGBK(o) : decodeUTF8(o);
4
+ if (isArray(o)) return o.map(kv);
5
+ if (isString(o)) return o;
6
+ if (isObject(o)) for (var k in o) {
7
+ if (/piece|ed2k|peer|hash$/.test(k)) continue;
8
+ if (/\.utf-8$/i.test(k)) {
9
+ var e = encoding;
10
+ encoding = '';
11
+ o[k] = kv(o[k]);
12
+ encoding = e;
13
+ }
14
+ else {
15
+ o[k] = kv(o[k])
16
+ }
17
+ }
18
+ return o
19
+ }
20
+ function bdecode2(rent) {
21
+ var d = bdecode(rent);
22
+ if (d.encoding) encoding = String.fromCharCode.apply(String, d.encoding);
23
+ else encoding = '';
24
+ d = kv(d);
25
+ return d;
26
+ }
@@ -1,5 +1,36 @@
1
1
 
2
- function main(title, type, fields, edit_ref, options, idkey = fields[0].key) {
2
+ function main() {
3
+ var title, type, fields, edit_ref, options, idkey, buttons;
4
+ var parse = function (a) {
5
+ switch (typeof a) {
6
+ case "string":
7
+ if (!title) title = a;
8
+ else if (!type) type = a;
9
+ else if (!edit_ref) edit_ref = a;
10
+ else idkey = a;
11
+ break;
12
+ case "object":
13
+ if (a instanceof Array) {
14
+ if (!fields) fields = a;
15
+ else if (!options) options = a;
16
+ }
17
+ else if (a !== null) {
18
+ ({
19
+ fields = fields,
20
+ options=options,
21
+ buttons=buttons,
22
+ idkey=idkey,
23
+ edit_ref=edit_ref,
24
+ title=title,
25
+ type=type
26
+ } = a);
27
+ }
28
+ break;
29
+ }
30
+ }
31
+ for (var a of arguments) parse(a);
32
+ if (!fields) parse(this);
33
+ if (!idkey) idkey = fields[0].key;
3
34
  return frame$list(title, {
4
35
  load() {
5
36
  return data.from("list", { type }, a => JSAM.parse(encode62.timedecode(a || '')));
@@ -8,9 +39,10 @@ function main(title, type, fields, edit_ref, options, idkey = fields[0].key) {
8
39
  return data.from("edit", { type, key: encode62.timeencode(o[idkey]), value: encode62.timeencode("") }).loading_promise;
9
40
  },
10
41
  fields,
42
+ buttons,
11
43
  options,
12
44
  }, edit_ref ? edit_ref : function (o) {
13
- var p = pedit(title, type, { data: o, fields });
45
+ var p = pedit(title, type, o);
14
46
  p.initialStyle = popup.style;
15
47
  popup(p, true);
16
48
  move.setPosition(p, [.5, .5]);
@@ -65,11 +65,13 @@ return cross_.bind(function (callback, onerror) {
65
65
  xhr.readyState = 4;
66
66
  callback();
67
67
  });
68
- res.on("error", function (e) {
68
+ var onerror1 = function (e) {
69
69
  xhr.readyState = 4;
70
70
  error = e;
71
71
  onerror(e);
72
- });
72
+ };
73
+ res.on("error", onerror1);
74
+ res.on('timeout', onerror1);
73
75
  this.readyState = 2;
74
76
  });
75
77
  this.readyState = 1;
@@ -0,0 +1,53 @@
1
+ // 这里使用的数级换算关系如下:
2
+ // 1亿 = 1万万
3
+ // 1兆 = 1亿亿
4
+ // 1京 = 1兆兆
5
+ // 1垓 = 1京京
6
+ // 1杼 = 1垓垓
7
+ // 1穰 = 1杼杼
8
+ // 1沟 = 1穰穰
9
+ // 1涧 = 1沟沟
10
+ // 1正 = 1涧涧
11
+ // 1载 = 1正正
12
+ // 可表示的数字最大为 8192 位
13
+ // 元拾佰仟
14
+ // 万拾佰仟
15
+ // 亿拾佰仟万拾佰仟
16
+ // 兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
17
+ // 京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
18
+ // 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
19
+ // 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
20
+ // 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
21
+ // 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
22
+ // 涧拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
23
+ // 正拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 涧拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
24
+ // 载拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 涧拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 正拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 涧拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 沟拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 穰拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟 杼拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟垓拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟京拾佰仟万拾佰仟亿拾佰仟万拾佰仟兆拾佰仟万拾佰仟亿拾佰仟万拾佰仟
25
+ var 数位 = "拾佰仟";
26
+ for (var 级 of "万亿兆京垓杼穰沟涧正载") {
27
+ 数位 = [数位, 级, 数位].join('');
28
+ }
29
+ 数位 = "元" + 数位;
30
+ var 数字 = "零壹贰叁肆伍陆柒捌玖";
31
+ var 人民币 = function (n) {
32
+ var [a, b] = n.split('.');
33
+ var res = '';
34
+ if (+b[1] !== 0) res = 数字[b[1]] + "分";
35
+ if (+b[0] !== 0) res = 数字[b[0]] + "角" + res;
36
+ else if (res) res = "零" + res;
37
+ var s = a.split('').reverse().map((a, i, q) => {
38
+ if (+a === 1 && i % 4 === 1 && (i + 1 === q.length || q.length > i + 2 && q[i + 1] === 0 && q[i + 2] === 0)) return 数位[i];
39
+ if (a > 0) return 数字[a] + 数位[i];
40
+ if (i % 4 === 0) return 数位[i];
41
+ return '零';
42
+ }).reverse().filter((m, i) => {
43
+ return !(m === '零' && (a[i + 1] === '零' || (a.length - i) % 4 === 0))
44
+ }).join('');
45
+ if (s.length < 2) {
46
+ if (!res) res = "零元整";
47
+ }
48
+ else {
49
+ if (!res) res = "整";
50
+ res = s + res;
51
+ }
52
+ return res;
53
+ };
@@ -21,7 +21,7 @@ var reportError = function (error) {
21
21
  }
22
22
  };
23
23
 
24
- function init() {
24
+ function init(type) {
25
25
  if (!this.audioPromise) {
26
26
  this.audioPromise = navigator.mediaDevices.getUserMedia({
27
27
  audio: { deviceId: this.deviceId }
@@ -32,6 +32,20 @@ function init() {
32
32
  analyser.fftSize = 2048;
33
33
  context.resume();
34
34
  var source = context.createMediaStreamSource(stream);
35
+ if (/^f/i.test(type)) {
36
+ this.dancingArray = new Float32Array(analyser.fftSize);
37
+ this.getTimeDomainData = analyser.getFloatTimeDomainData;
38
+ this.getFrequencyData = analyser.getFloatFrequencyData;
39
+ } else {
40
+ this.dancingArray = new Uint8Array(analyser.fftSize);
41
+ this.getTimeDomainData = analyser.getByteTimeDomainData;
42
+ this.getFrequencyData = analyser.getByteFrequencyData;
43
+ }
44
+ this.maxDecibels = analyser.maxDecibels;
45
+ this.minDecibels = analyser.minDecibels;
46
+ this.source = source;
47
+ this.context = context;
48
+ this.analyser = analyser;
35
49
  return [source, context, analyser];
36
50
  });
37
51
  }
@@ -70,9 +84,9 @@ async function start() {
70
84
  }
71
85
  if (commandCount !== this.commandCount) return;
72
86
  this.context = context;
73
- var dancingArray = new Uint8Array(analyser.fftSize);
87
+ var dancingArray = this.dancingArray;
74
88
  var animate = () => {
75
- analyser.getByteTimeDomainData(dancingArray);
89
+ this.getTimeDomainData.call(analyser, dancingArray);
76
90
  cast(this, dancingArray);
77
91
  analyser.frame = requestAnimationFrame(animate);
78
92
  this.onprocess instanceof Function && this.onprocess(dancingArray);
@@ -81,7 +95,7 @@ async function start() {
81
95
  this.running = true;
82
96
 
83
97
  source.connect(analyser);
84
- source.connect(this.gain).connect(context.destination);
98
+ // source.connect(this.gain).connect(context.destination);
85
99
  if (this.audio) this.audio.play();
86
100
  }
87
101
 
@@ -19,7 +19,7 @@
19
19
  user-select: none;
20
20
  }
21
21
 
22
- >.label {
22
+ >* {
23
23
  position: relative;
24
24
  }
25
25
 
@@ -24,11 +24,16 @@ function cast(target, type, data) {
24
24
  var datakey = `cast(${type})`;
25
25
  type = `care(${type})`;
26
26
  if (target[type] instanceof Array) {
27
- target[type].forEach(function (listener) {
28
- if (listener instanceof Function) {
29
- listener.call(target, data, target[datakey]);
30
- }
31
- });
32
- target[datakey] = data;
27
+ var listeners = target[type];
28
+ if (!listeners.datas) listeners.datas = [];
29
+ var datas = listeners.datas;
30
+ datas.push(data);
31
+ if (datas.length === 1) {
32
+ while (datas.length) target[type].forEach(function (listener) {
33
+ if (listener instanceof Function) {
34
+ listener.call(target, datas[0], target[datakey]);
35
+ }
36
+ }), target[datakey] = datas.shift();
37
+ }
33
38
  }
34
39
  }
@@ -28,9 +28,17 @@ function chooseFile(accept, multiple, extra) {
28
28
  alert(e + "打开文件失败!");
29
29
  }
30
30
  } else {
31
- setTimeout(() => {
32
- ok(this.files);
33
- }, 100);
31
+ var count = 0;
32
+ var getFiles = function () {
33
+ count++;
34
+ if (input.files && input.files.length) {
35
+ ok(input.files);
36
+ return;
37
+ }
38
+ if (count > 20) return;
39
+ setTimeout(getFiles, 100);
40
+ };
41
+ getFiles();
34
42
  }
35
43
  });
36
44
  });
@@ -18,8 +18,7 @@ var createMenu = function (event, items) {
18
18
  return elem;
19
19
  }
20
20
  function contextmenu(target, menuItems) {
21
- on("contextmenu")(target, function (event) {
22
- event.preventDefault();
21
+ var showContext = function (event) {
23
22
  var menu;
24
23
  if (menuItems instanceof Function) {
25
24
  menu = menuItems.call(this, event);
@@ -32,9 +31,43 @@ function contextmenu(target, menuItems) {
32
31
  position: "absolute",
33
32
  });
34
33
  popup(menu, event);
35
- menu.focus();
36
34
  onmousedown(menu, e => e.preventDefault());
37
- onblur(menu, lazy(e => remove(menu)));
35
+ return menu;
36
+ };
37
+ var menuHandle = 0;
38
+ var tm;
39
+ bindtouch(target, {
40
+ start(event) {
41
+ if (event.defaultPrevented) return;
42
+ event.preventDefault();
43
+ clearTimeout(menuHandle);
44
+ if (tm) remove(tm), tm = null;
45
+ menuHandle = setTimeout(function () {
46
+ tm = showContext(event);
47
+ }, 600);
48
+ },
49
+ move() {
50
+ if (onclick.preventClick) return clearTimeout(menuHandle);
51
+ },
52
+ end(event) {
53
+ clearTimeout(menuHandle);
54
+ if (tm) {
55
+ event.preventDefault();
56
+ setTimeout(function () {
57
+ if (!tm) return;
58
+ tm.focus();
59
+ onblur(tm, lazy(e => remove(tm)));
60
+ }, 60);
61
+ }
62
+ }
63
+ })
64
+ on("contextmenu")(target, function (event) {
65
+ if (event.defaultPrevented) return;
66
+ event.preventDefault();
67
+ if (tm) remove(tm), tm = null;
68
+ tm = showContext(event);
69
+ tm.focus();
70
+ onblur(tm, lazy(e => remove(tm)));
38
71
  });
39
72
  return sampleElement;
40
73
  }
@@ -29,7 +29,7 @@ var cross = cross_.bind(function (callback, onerror) {
29
29
  abort.call(this);
30
30
  };
31
31
  xhr.onerror = onerror;
32
-
32
+ xhr.ontimeout = onerror;
33
33
  xhr.onreadystatechange = function () {
34
34
  if (xhr.readyState === 4) {
35
35
  switch (xhr.status) {
@@ -18,6 +18,11 @@ var transfromSimpleValue = function (value) {
18
18
  return value;
19
19
  };
20
20
  var transformValue = function (value, k) {
21
+ if (value instanceof Array) {
22
+ var res = [];
23
+ for (var v of value) res.push(transformValue(v, k));
24
+ return res;
25
+ }
21
26
  if (ratioPropReg.test(k) || !value) return value;
22
27
  if (/^[\w\s\.]+$/.test(value)) return isFinite(value) ? transfromSimpleValue(value) : String(value).split(/\s+/).map(transfromSimpleValue).join(' ');
23
28
  return value;
@@ -28,6 +33,12 @@ var partifyValue = function (v) {
28
33
  var isSameValue = function (v1, v2) {
29
34
  return partifyValue(v1) === partifyValue(v2);
30
35
  };
36
+ var setValue = function (o, k, v) {
37
+ if (v instanceof Array) for (var v0 of v) setValue(o, k, v0);
38
+ else {
39
+ if (!isSameValue(o[k], v)) o[k] = v;
40
+ }
41
+ }
31
42
  /**
32
43
  * 将中划线转成驼峰式
33
44
  * @param {string} key
@@ -80,9 +91,7 @@ var cssTargetNode = function (targetNode, oStyle, oValue) {
80
91
  styleobject[transformNodeKey(oStyle)] = transformValue(oValue, oStyle);
81
92
  return;
82
93
  } else {
83
- try {
84
- oStyle = parseKV(oStyle, ';', ':');
85
- } catch (e) { }
94
+ oStyle = parseKV(oStyle, ';', ':');
86
95
  }
87
96
  }
88
97
  if (isObject(oStyle)) {
@@ -93,7 +102,7 @@ var cssTargetNode = function (targetNode, oStyle, oValue) {
93
102
  if (key in styleobject) {
94
103
  try {
95
104
  var value = transformValue(oStyle[k], key);
96
- if (!isSameValue(value, styleobject[value])) styleobject[key] = transformValue(oStyle[k], key);
105
+ setValue(styleobject, key, value);
97
106
  } catch (e) {
98
107
  console.warn(key, oStyle[k], "无效");
99
108
  }
@@ -103,7 +112,7 @@ var cssTargetNode = function (targetNode, oStyle, oValue) {
103
112
  for (var k in oStyle) {
104
113
  var key = transformNodeKey(k);
105
114
  var value = transformValue(oStyle[k], key);
106
- if (key in styleobject && !isSameValue(value, styleobject[key])) styleobject[key] = value;
115
+ if (key in styleobject) setValue(styleobject, key, value);
107
116
  }
108
117
  }
109
118
  }
@@ -30,7 +30,7 @@ var getGenerator = function (container, tagName = 'item') {
30
30
  com = container.src[index];
31
31
  }
32
32
  if (com === undefined) return;
33
- if (!element) {
33
+ if (!isNode(element)) {
34
34
  var template1 = template.cloneNode(true);
35
35
  if (!template1.childNodes.length) {
36
36
  element = template1;
@@ -71,7 +71,7 @@ var getGenerator = function (container, tagName = 'item') {
71
71
  }
72
72
  }
73
73
  var newItem = render(element, newScope, scopes, false);
74
- if (element.with) newItem.with = render(newItem.with = element.with, newScope, scopes, false);
74
+ if (element.with) newItem.with = render(element.with, newScope, scopes, false);
75
75
  }
76
76
  return newItem;
77
77
  };
@@ -1,3 +1,3 @@
1
- loading..
1
+ 加载中..
2
2
  <div class="loader">
3
3
  </div>
@@ -148,18 +148,18 @@ function main(elem, mode) {
148
148
  mode = "inline";
149
149
  if (elem) {
150
150
  var generator = getGenerator(elem, 'menu-item');
151
- tree(elem, function (index, item, menu) {
152
- var e = generator(index, item);
153
- if (!e || e.children.length) return e;
154
- var m = menuItem(null, menu, elem.useIcon[0]);
155
- return m;
156
- });
157
151
  care(elem, function (src) {
158
152
  if (src) src = getTreeFromData(src);
159
153
  var hasIcon = src.hasIcon;
160
154
  JSON.stringify(src);
161
155
  elem.useIcon = hasIcon;
162
- elem.setData(src);
156
+ elem.src = src;
157
+ });
158
+ tree(elem, function (index, item, menu) {
159
+ var e = generator(index, item);
160
+ if (!e || e.children.length) return e;
161
+ var m = menuItem(null, menu, elem.useIcon[0]);
162
+ return m;
163
163
  });
164
164
  } else {
165
165
  var nodes = getTreeNodes(elem);
@@ -85,7 +85,7 @@ var createGetter = function (search, isprop = true) {
85
85
  if (isprop) {
86
86
  return new Function('event', `${withContext}with(this.$scope){${ret}${searchContext}}`);
87
87
  }
88
- return new Function("event", `${withContext}with(this.$scope){${/([\=\(\+\-])/.test(searchContext) ? ret + searchContext : `${ret}${searchContext}.call(this.$scope,event)`}}`);
88
+ return new Function("event", `${withContext}with(this.$scope){${/([\=\(\+\-])/.test(searchContext) ? ret + searchContext : `${ret}${searchContext}(event)`}}`);
89
89
  };
90
90
  var createComment = function (renders, type, expression) {
91
91
  var comment = document.createComment(`${type} ${expression}`);
@@ -39,6 +39,9 @@ function tree() {
39
39
  generator = arg;
40
40
  }
41
41
  });
42
+ if (!generator && "$src" in element && element.childNodes.length) {
43
+ generator = getGenerator(element, 'node');
44
+ }
42
45
  var dom = [], root = null;
43
46
  var changed_index, changed_offset;
44
47
  var saved_top, saved_offset, timer = 0, timeout = function () {
@@ -67,6 +70,7 @@ function tree() {
67
70
  } else {
68
71
  span = document.createElement("node");
69
72
  html(span, `${tabs}<c>${com.name}</c>${com.test ? "<i>_test</i>" : ""}<a class=count>${com.count}</a>`);
73
+ span.count = span.lastElementChild;
70
74
  }
71
75
  var _div = button(span);
72
76
  _div.setAttribute("node", '');
@@ -116,6 +120,7 @@ function tree() {
116
120
  saved_offset = _div;
117
121
  }
118
122
  com.closed = com.isClosed();
123
+ if (_div.count && +_div.count.innerHTML !== com.count) html(_div.count, com.count);
119
124
  };
120
125
  addClass(_div, "tab" + com.tab);
121
126
  var setState = function (closed = com.isClosed()) {
@@ -223,6 +228,9 @@ function tree() {
223
228
  root = new Tree(src);
224
229
  refresh();
225
230
  };
231
+ care(banner, function () {
232
+ this.setData(this.src);
233
+ });
226
234
  banner.addData = function (data, parent = root) {
227
235
  appendTo(parent, data);
228
236
  refresh();
@@ -47,4 +47,30 @@
47
47
  t {
48
48
  display: inline-block;
49
49
  width: 16px;
50
+ }
51
+
52
+ &[arrow] {
53
+
54
+ .closed,
55
+ .open {
56
+ c:before {
57
+ content: "";
58
+ display: inline-block;
59
+ border: .3em solid transparent;
60
+ }
61
+ }
62
+
63
+ .closed c:before {
64
+ border-left: .4em solid;
65
+ border-right: .2em solid transparent;
66
+ }
67
+
68
+ .open c:before {
69
+ margin-left: -.2em;
70
+ margin-right: .2em;
71
+ margin-top: .2em;
72
+
73
+ border-top: .4em solid;
74
+ border-bottom: .2em solid transparent;
75
+ }
50
76
  }