efront 4.36.1 → 4.36.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.
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ var document = this.document;
2
3
  var bindObjK = function (obj, k, resolve, _object) {
3
4
  Object.defineProperty(_object, k, {
4
5
  get() {
@@ -38,4 +39,4 @@ var enrich = function enrich(obj) {
38
39
  for (var k in obj) bindObjK(obj, k, resolve, _object);
39
40
  return _object;
40
41
  };
41
- module.exports = enrich;
42
+ return enrich;
@@ -7,7 +7,10 @@ var languageMap = {};
7
7
  var languageIndex = 0;
8
8
  function i18n() {
9
9
  var [arg] = arguments;
10
- if (typeof arg === 'string' || !isArrayLike(arg)) arg = arguments;
10
+ if (arg.raw) return arg[0] + arg.slice(1).map((a, i) => {
11
+ return arguments[i + 1] + a;
12
+ }).join('');
13
+ if (typeof arg === 'string' || typeof arg === 'function') arg = arguments;
11
14
  return isFinite(this) ? arg[this] : arg[languageIndex];
12
15
  };
13
16
 
@@ -66,4 +69,5 @@ var { localStorage } = this;
66
69
  var i = +localStorage?.getItem('language-index');
67
70
  if (i >= 0) i18n.setIndex(i);
68
71
  else i18n.setIndex(languageIndex);
69
- var supports;
72
+ var supports;
73
+ module.exports = i18n;
@@ -106,7 +106,7 @@ var mtable = function (args, prefix, postfix) {
106
106
  if (prefix) prefix = `<mo>${prefix}</mo>`;
107
107
  if (postfix) postfix = `<mo>${postfix}</mo>`;
108
108
  if (args.length === 1) return [prefix, args[0], postfix].join('');
109
- return `${prefix}<mtable><mtr>${args.join("</mtr><mtr>")}</mtr></mtable>${postfix}`;
109
+ return `${prefix}<mtable>${args.join("")}</mtable>${postfix}`;
110
110
  }
111
111
  var funcmap = {
112
112
  "+"(...args) {
@@ -158,8 +158,8 @@ var funcmap = {
158
158
  remove(m);
159
159
  return `<mover>${A}<mo stretchy=true symmetric=true fence=true accent=true>${sp}</mo></mover>`
160
160
  },
161
- abs(...args) {
162
- return mtable(args, "|", "|");
161
+ abs(a) {
162
+ return `<mo>|</mo>${a}<mo>|</mo>`;
163
163
  },
164
164
  log(x, n) {
165
165
  return `<msub><mo>log</mo>${n}</msub>${x}`
@@ -186,14 +186,6 @@ var funcmap = {
186
186
  Sigma: Series,
187
187
  Series,
188
188
  series,
189
- "{"(...args) {
190
- return mtable(args, '{', '');
191
- // return `<mo>{</mo><mtable columnalign="left"><mtr><mtd>${args.join("</mtd></mtr><mtr><mtd>")}</mtd></mtr></mtable>`
192
- },
193
- "["(...args) {
194
- return mtable(args, '[', ']');
195
- // return `<mo>[</mo><mtable><mtr>${args.join("</mtr><mtr>")}</mtr></mtable><mo>]</mo>`;
196
- },
197
189
  '!='(...args) {
198
190
  return mo3("≉", args);
199
191
  },
@@ -219,7 +211,7 @@ var funcmap = {
219
211
  return args.map(a => a + `<mo>!</mo>`).join('');
220
212
  }
221
213
  };
222
- funcmap["^|"] = funcmap.abs;
214
+ funcmap["&|"] = funcmap.abs;
223
215
  var unary = (u, a) => `<ms>${u}</ms>${a}`;
224
216
  var unarymap = {
225
217
  "+"(a) {
@@ -332,7 +324,7 @@ var 希腊 = {
332
324
  var lineBroken = false;
333
325
  var br = function () {
334
326
  lineBroken = true;
335
- return '</mtd></mtr><mtr><mtd>';
327
+ return '</mtd></mtr><mtr><mtd style="text-align:left">';
336
328
  };
337
329
  var Number_isFinite = Number.isFinite;
338
330
  var isPostFinite = function (n) {
@@ -347,6 +339,96 @@ var isFinite = function (n, post) {
347
339
  if (n[".."]) return !post || isPostFinite(n);
348
340
  return false;
349
341
  }
342
+ var toCell = function (eq, k) {
343
+ var left, right;
344
+ var res = [];
345
+ if (eq instanceof Array) {
346
+ left = toString(eq[0], 0, 0);
347
+ right = toString(eq.slice(1), 0, 0);
348
+ }
349
+ else left = ``, right = toString(eq);
350
+ if (left instanceof Array) left = left.join("&ensp;&ensp;");
351
+ else if (right instanceof Array) right = right.join(`<mi>${k}</mi>`);
352
+ res.push(
353
+ `<mtd style="text-align:right;text-align:-webkit-right;padding-right:0;">`,
354
+ left,
355
+ `</mtd><mtd><mi>${k}</mi></mtd><mtd style="text-align:left;padding-left:0;">`,
356
+ right,
357
+ '</mtd>',
358
+ );
359
+ return res.join("");
360
+ };
361
+ var num = function (prefix, rep, dots, e, s, p, deep) {
362
+ prefix = String(prefix).replace(/^\-/, '–');
363
+ if (typeof rep === 'number') rep = String(rep);
364
+ if (rep && !/\./.test(prefix)) prefix += '.';
365
+ if (typeof e === 'number') e = String(e);
366
+ if (!rep) rep = '';
367
+ else if (rep.length === 1) {
368
+ rep = mdot(rep);
369
+ }
370
+ else if (rep.length >= 2) {
371
+ rep = mdot(rep.charAt(0)) + mn(rep.slice(1, rep.length - 1)) + mdot(rep.charAt(rep.length - 1));
372
+ }
373
+ else rep = mn(rep);
374
+ if (dots) dots = mn(dots);
375
+ else dots = '';
376
+ if (e) e = `<mo>×</mo><msup><mn>10</mn><mn>${String(e).replace(/^\-/, '–')}</mn></msup>`;
377
+ else e = '';
378
+ if (s) s = `<mi>${s}</mi>`;
379
+ else s = '';
380
+ prefix = mn(prefix);
381
+ return mrow([prefix, rep, dots, e, s].join(''), e ? p >= pmap["*"] : false, deep);
382
+
383
+ }
384
+ var makemap = {
385
+ ".."(origin, p, deep) {
386
+ var [prefix, rep, dots, e, s] = origin;
387
+ return num(prefix, rep, dots, e, s, p, deep);
388
+ },
389
+ "."(origin, p, deep) {
390
+ var [prefix, e, s] = origin;
391
+ if (/[^\d]$/.test(e)) s = e, e = '';
392
+ return num(prefix, '', '', e, s, p, deep);
393
+ },
394
+ "@"(origin, p, deep) {
395
+ return mrow(tabs.circle(origin), -1, deep);
396
+ },
397
+ "$"(origin, p, deep) {
398
+ return mrow(tabs.roman(origin), -1, deep);
399
+ },
400
+ tab(origin, p, deep) {
401
+ var k = origin.shift();
402
+ if (!origin.length || !(k in tabs)) {
403
+ var args = origin.map(a => toString(a, 0, deep));
404
+ return mrow(`<ms>(</ms>${k}${args.length ? "<ms>,</ms>" + args.join('<ms>,</ms>') : ''}<ms>)</ms>`, -1, deep);
405
+ }
406
+ return mrow(tabs[k](...origin), -1, deep);
407
+ },
408
+ "{"(origin, p, deep) {
409
+ return mrow(mtable(origin.map(toRows), "{", ''), false, 0);
410
+ },
411
+ "^:"(origin, p, deep) {
412
+ return `<ms style="font-weight:bolder">${origin}</ms>`;
413
+ },
414
+ "["(origin, p, deep) {
415
+ return toMatrix(origin, '[', ']');
416
+ },
417
+ "^|"(origin, p, deep) {
418
+ console.log(origin);
419
+ if (origin instanceof Array) return toMatrix(origin, '|', '|');
420
+ return mrow(funcmap.abs(toString(origin[0])), false, 0);
421
+ },
422
+ };
423
+ var toMatrix = function (origin, prev, post) {
424
+ var res = origin.map(o => {
425
+ if (o instanceof Array) return `<mtr><mtd>${o.map(a => {
426
+ return toString(a);
427
+ }).join('</mtd><mtd>')}</mtd></mtr>`
428
+ return `<mtr><mtd>${toString(o)}</mtd></mtr>`;
429
+ });
430
+ return mrow(mtable(res, prev, post), false, 0);
431
+ }
350
432
  function toString(obj, p, deep) {
351
433
  if (obj instanceof Array) {
352
434
  deep++;
@@ -367,32 +449,8 @@ function toString(obj, p, deep) {
367
449
  for (var k in obj) break;
368
450
  if (!k) return '';
369
451
  var origin = obj[k];
370
- if (k === '.' || k === '..') {
371
- if (k === '.') {
372
- var [prefix, e, s] = origin;
373
- if (/[^\d]$/.test(e)) s = e, e = '';
374
- }
375
- else var [prefix, rep, dots, e, s] = origin;
376
- prefix = String(prefix).replace(/^\-/, '–');
377
- if (typeof rep === 'number') rep = String(rep);
378
- if (rep && !/\./.test(prefix)) prefix += '.';
379
- if (typeof e === 'number') e = String(e);
380
- if (!rep) rep = '';
381
- else if (rep.length === 1) {
382
- rep = mdot(rep);
383
- }
384
- else if (rep.length >= 2) {
385
- rep = mdot(rep.charAt(0)) + mn(rep.slice(1, rep.length - 1)) + mdot(rep.charAt(rep.length - 1));
386
- }
387
- else rep = mn(rep);
388
- if (dots) dots = mn(dots);
389
- else dots = '';
390
- if (e) e = `<mo>×</mo><msup><mn>10</mn><mn>${String(e).replace(/^\-/, '–')}</mn></msup>`;
391
- else e = '';
392
- if (s) s = `<mi>${s}</mi>`;
393
- else s = '';
394
- prefix = mn(prefix);
395
- return mrow([prefix, rep, dots, e, s].join(''), e ? p >= pmap["*"] : false, deep);
452
+ if (k in makemap) {
453
+ return makemap[k](origin, p, deep);
396
454
  }
397
455
  if (k === '**') {
398
456
  if (origin instanceof Array) {
@@ -406,17 +464,7 @@ function toString(obj, p, deep) {
406
464
  }
407
465
  }
408
466
  }
409
- if (k === '@' || k === '$') {
410
- return mrow(tabs[k](origin), -1, deep);
411
- }
412
- if (k === 'tab') {
413
- k = origin.shift();
414
- if (!origin.length || !(k in tabs)) {
415
- var args = origin.map(a => toString(a, 0, deep));
416
- return mrow(`<ms>(</ms>${k}${args.length ? "<ms>,</ms>" + args.join('<ms>,</ms>') : ''}<ms>)</ms>`, -1, deep);
417
- }
418
- return mrow(tabs[k](...origin), -1, deep);
419
- }
467
+
420
468
  if (k in 三角函数) {
421
469
  if (origin instanceof Array) {
422
470
  var args = origin.map(a => toString(a, pmap["*"], 0));
@@ -483,25 +531,94 @@ function toString(obj, p, deep) {
483
531
  return mrow(mn(obj), -1, deep);
484
532
  }
485
533
  if (/^[\s,;]+$/.test(obj)) {
486
- obj = obj.replace(/(\r\n|\r|\n)/g, br)
534
+ obj = obj.replace(/(\r\n|\r|\n)\s*/g, br);
487
535
  if (lineBroken) return obj;
488
536
  obj = obj.replace(/\s/g, '&ensp;');
489
- return `<mtext>${obj}</mtext>`;
537
+ return `<ms>${obj}</ms>`;
490
538
  }
491
539
  if (isCap && obj.length === 1) return mrow(ms(obj), -1, deep);
492
540
  obj = String(obj).replace(/\-/g, '–');
493
541
  return mrow(obj ? mi(obj) : '', -1, deep);
494
542
  }
495
- function math(mathObj) {
496
- if (mathObj.tagName) return mathObj;
497
- lineBroken = false;
543
+ function toRows(args) {
498
544
  var res = [];
499
- for (var a of arguments) {
500
- res.push(toString(a, 0, 1));
545
+ var row = [];
546
+ var q = true;
547
+ var br = lineBroken;
548
+ lineBroken = false;
549
+ var inBlock = false;
550
+ var inLine = false;
551
+ var prevIsEqual = false;
552
+ var prevIsBroken = false;
553
+ for (var a of args) {
554
+ if (a instanceof Object && !(a instanceof Array)) {
555
+ for (var k in a) break;
556
+ if (pmap[k] === pmap['=']) {
557
+ if (row.length) {
558
+ if (prevIsBroken) {
559
+ var row1 = row.pop();
560
+ res.push(`<mtd style="text-align:left">`, row.join(''));
561
+ row1 = row1.replace(/\<mtd[^\>]*\>$/, '');
562
+ res.push(row1);
563
+ }
564
+ else {
565
+ res.push('<mtd style="text-align:left">', row.join(''), '</mtd>');
566
+ }
567
+ if (!prevIsEqual) {
568
+ res.push('<mtable><mtr>');
569
+ inBlock = true;
570
+ }
571
+ }
572
+ prevIsEqual = true;
573
+ row = [];
574
+ var r = toCell(a[k], k);
575
+ res.push(r);
576
+ q = true;
577
+ continue;
578
+ }
579
+ }
580
+
581
+ if (a instanceof Object) {
582
+ if (!q) row.push('<ms>&ensp;</ms>');
583
+ if (inBlock) {
584
+ row.push("</mtr></mtable>");
585
+ inBlock = false;
586
+ }
587
+ q = false;
588
+ prevIsEqual = false;
589
+ var r = toString(a, 0, 1);
590
+ row.push(r);
591
+ }
592
+ else if (/^,/.test(a)) {
593
+ row.push('<ms>,&ensp;</ms>'), q = true;
594
+ }
595
+ else if (a === ' ') {
596
+ row.push(`<ms>&ensp;</ms>`), q = true;
597
+ }
598
+ else {
599
+ if (!q) row.push('<ms>&ensp;</ms>');
600
+ var r = toString(a, 0, 1);
601
+ row.push(r);
602
+ var prevIsBroken = lineBroken && /<mtd[^\>]*>$/i.test(r);
603
+ if (prevIsBroken) q = true;
604
+ }
501
605
  }
502
- res = res.join('');
503
- if (lineBroken) {
504
- res = `<mtable style="text-align:justify"><mtr><mtd>${res}</mtd></mtr></mtable>`;
606
+ if (inBlock) {
607
+ row.push('</mtr></mtable>');
505
608
  }
609
+ if (!res.length && !lineBroken) {
610
+ res = row.join('');
611
+ }
612
+ else {
613
+ if (row.length) res.push(`<mtd style="text-align:left">`, row.join(""), `</mtd>`);
614
+ res = `<mtr>${res.join('')}</mtr>`;
615
+ }
616
+ lineBroken = br;
617
+ return res;
618
+ };
619
+ function math(mathObj) {
620
+ if (mathObj.tagName) return mathObj;
621
+ var res = toRows(arguments);
622
+ if (/^\<mtr/.test(res)) res = `<mtable>${res}</mtable>`;
506
623
  return `<math>${res}</math>`;
507
624
  }
@@ -64,20 +64,14 @@ math`S=sqrt(p*(p-a)*(p-b)*(p-c))`
64
64
  * 加减,正负,
65
65
  ```mathscript
66
66
  a +- 2;
67
- a -+ 2;
68
67
  +-a;
69
- -+a;
70
68
  // 分开写将识别为运算符加正负号
71
69
  a + -2;
72
- a - +2;
73
70
  ```
74
71
  ```math
75
72
  a +- 2;
76
- a -+ 2;
77
73
  +-a;
78
- -+a;
79
74
  a + -2;
80
- a - +2;
81
75
  ```
82
76
  * 乘法
83
77
  ```mathscript
@@ -105,12 +99,20 @@ mul(a,b),Mul(a,b),MUL(a,b)
105
99
  ```
106
100
  * 分数
107
101
  ```mathscript
108
- 分子/分母
109
- 1/(2/3),1/2/3;
102
+ 分子/分母
103
+ 1/(2/3),1/2/3;
104
+ 例: 计算 1/2+(1/3)*(3/4);
105
+ 解: 原式=1/2+1/4;
106
+ = 2/4+1/4;
107
+ = 3/4;
110
108
  ```
111
109
  ```math
112
110
  分子/分母
113
- 1/(2/3),1/2/3;
111
+ 1/(2/3),1/2/3;
112
+ 例: 计算 1/2+(1/3)*(3/4);
113
+ 解: 原式=1/2+1/4;
114
+ = 2/4+1/4;
115
+ = 3/4;
114
116
  ```
115
117
  * 以除号表示除法
116
118
  ```mathscript
@@ -121,6 +123,7 @@ mul(a,b),Mul(a,b),MUL(a,b)
121
123
  ```
122
124
  * 绝对值
123
125
  ```mathscript
126
+ // 内部是数值或运算结果为数值
124
127
  |a|;
125
128
  |1+|a||*2;
126
129
  ```
@@ -130,10 +133,20 @@ mul(a,b),Mul(a,b),MUL(a,b)
130
133
  ```
131
134
  * 行列式
132
135
  ```mathscript
136
+ |[1,2,3,4;5,6,7,8]|;
133
137
  |1,2,3,4;5,6,7,8|;
138
+ // 一阶行列式不可去掉中括号,否则识别为绝对值
139
+ |[1]|;// 这种写法识别为一阶行列式
140
+ 一阶行列式与绝对值对比:
141
+ |[1]|,|1|;
134
142
  ```
135
143
  ```math
144
+ |[1,2,3,4;5,6,7,8]|;
136
145
  |1,2,3,4;5,6,7,8|;
146
+ // 一阶行列式不可去掉中括号,否则识别为绝对值
147
+ |[1]|;// 这种写法识别为一阶行列式
148
+ 一阶行列式与绝对值对比:
149
+ |[1]|,|1|;
137
150
  ```
138
151
  * 阶乘: n!
139
152
  ```mathscript
@@ -355,13 +368,14 @@ Series(公式主体,n=1,+Infinity)
355
368
  {
356
369
  a+1=b;
357
370
  a+b**2=3;
358
- }
371
+ };
372
+
359
373
  ```
360
374
  * 标号
361
375
  ```mathscript
362
376
  tab(1); // 带小括号的数字
363
377
  @1,@2,@3,@4,@20,@50; // 带圆圈的数字
364
- $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$3888; //罗马数字
378
+ $1,$2,$3,$4,$5,$38; //罗马数字
365
379
  {// 方程组中使用
366
380
  x+y=10, @1;
367
381
  x*y=25, @2;
@@ -370,7 +384,7 @@ Series(公式主体,n=1,+Infinity)
370
384
  ```math
371
385
  tab(1); // 带小括号的数字
372
386
  @1,@2,@3,@4,@20,@50; // 带圆圈的数字
373
- $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$3888; //罗马数字
387
+ $1,$2,$3,$4,$5,$38; //罗马数字
374
388
  {// 方程组中使用
375
389
  x+y=10, @1;
376
390
  x*y=25, @2;
@@ -1,4 +1,4 @@
1
- var spliter = /\s*[,;\|]\s*/
1
+ var spliter = /\s*[,;\|\r\n]\s*/
2
2
  module.exports = function (names) {
3
3
  if (typeof names === 'string') names = names.split(spliter);
4
4
  return names;
@@ -17,7 +17,7 @@ if (!Promise) {
17
17
  };
18
18
  var thro = function (error) {
19
19
  // <!--
20
- console.error(i18n`在异步过程中发现未处理的异常:`, error);
20
+ console.error(i18n`在异步过程中发现未处理的异常\r\n`, error);
21
21
  // -->
22
22
  };
23
23
  var queue = [];
@@ -238,6 +238,7 @@ Html.prototype.createScoped = function (code) {
238
238
  break;
239
239
  case QUOTED:
240
240
  case PIECE:
241
+ case SCOPED:
241
242
  if (c.length) {
242
243
  c.forEach(run);
243
244
  break;
@@ -46,4 +46,12 @@ test(`<meta charset="utf-8" />`);
46
46
  test('a><a></a>', 'a > <a></a>');
47
47
  test('X', 'X');
48
48
  test('<input -class="{actived:actived===f}"/>', 'scoped.envs.actived', true);
49
- test('<i>>_</i>', '<i>>_</i>');
49
+ test('<i>>_</i>', '<i>>_</i>');
50
+ test('<i -src="[f,data]"></i>', 'scoped.envs', {
51
+ f: true,
52
+ data: true
53
+ });
54
+ test('<i -src=[f,data]></i>', 'scoped.envs', {
55
+ f: true,
56
+ data: true
57
+ });
@@ -1086,7 +1086,7 @@ class Program {
1086
1086
  push_stamp();
1087
1087
  }
1088
1088
  var last = queue.last;
1089
- if (last && last.type & ~(STAMP | STRAP) && !last.ion) {
1089
+ if (last && last.type & ~(STAMP | STRAP | LABEL | PROPERTY) && !last.ion) {
1090
1090
  if (last.isExpress && !last.istype) break scope;
1091
1091
  }
1092
1092
  }
@@ -1844,6 +1844,7 @@ var pickAssignment = function (n) {
1844
1844
  return values;
1845
1845
  }
1846
1846
  var insertBefore = function () {
1847
+ "use strict";
1847
1848
  var [o] = arguments;
1848
1849
  var queue = this || o.queue;
1849
1850
  var index = queue.indexOf(o);
@@ -1,13 +1,12 @@
1
1
  var { SCOPED } = require("./common");
2
2
  var backEach = require("../basic/backEach");
3
-
4
- var polyfills = Object.assign(Object.create(null), {
3
+ var Object_polyfills = Object.assign(Object.create(null), {
5
4
  "Object.assign": '&extend'
6
5
  });
7
- var polyfill = function (o, i, used) {
6
+ var Object_polyfill = function (o, i, used) {
8
7
  var v = o.text;
9
- if (v in polyfills) {
10
- var p = polyfills[v];
8
+ if (v in Object_polyfills) {
9
+ var p = Object_polyfills[v];
11
10
  var n = o.next;
12
11
  if (n && n.type === SCOPED && n.entry === '(') {
13
12
  if (!this.used[p]) {
@@ -20,12 +19,30 @@ var polyfill = function (o, i, used) {
20
19
  }
21
20
  }
22
21
  };
22
+ var Date_polyfill = function (o, i, used) {
23
+ var v = o.text;
24
+ if (v !== 'Date') return
25
+ var n = o.next;
26
+ if (!n || n.type !== SCOPED || n.entry !== "(") return;
27
+ var f = n.first;
28
+ if (!f || f !== n.last || f.type !== QUOTED || f.length) return;
29
+ var dateString = strings.decode(f.text);
30
+ var dateTime = +new Date(dateString);
31
+ if (Number.isFinite(dateTime)) {
32
+ f.type = VALUE;
33
+ f.isdigit = true;
34
+ f.text = String(dateTime);
35
+ }
36
+ }
23
37
 
24
38
  module.exports = function (body) {
25
39
  var envs = body.envs;
26
40
  if (envs.Object) {
27
- backEach(body.used.Object, polyfill, body);
41
+ backEach(body.used.Object, Object_polyfill, body);
28
42
  if (!body.used.Object.length) delete body.used.Object, delete body.envs.Object;
29
43
  }
44
+ if (envs.Date) {
45
+ backEach(body.used.Date, Date_polyfill, body);
46
+ }
30
47
  return body;
31
48
  }
@@ -261,7 +261,19 @@ var toFlat = function (exp) {
261
261
  left.push(make("{", null, getRows(e)));
262
262
  }
263
263
  else if (e.entry === '|') {
264
- left.push(make("^|", getRows(e)));
264
+ var f = e.first;
265
+ if (f.type === SCOPED && f === e.last) {
266
+ left.push({ "^|": getRows(f) });
267
+ }
268
+ else {
269
+ var args = getRows(e);
270
+ if (args.length === 1 && !(args[0] instanceof Array)) {
271
+ left.push(make("&|", args[0]));
272
+ }
273
+ else {
274
+ left.push(make("^|", args));
275
+ }
276
+ }
265
277
  }
266
278
  }
267
279
  else {
@@ -323,6 +335,10 @@ var toFlat = function (exp) {
323
335
  if (e.type === QUOTED) {
324
336
  text = strings.decode(text);
325
337
  }
338
+ if (e.type === LABEL) {
339
+ left.push({ "^:": text });
340
+ continue;
341
+ }
326
342
  left.push(text);
327
343
  }
328
344
  }
@@ -1,5 +1,5 @@
1
1
  // <!--
2
- if (typeof i18n === "undefined") i18n = (a, ...b) => a[0] + b.map((c, i) => c + a[i + 1]).join(',');
2
+ if (typeof i18n === "undefined") i18n = require("../basic/i18n");
3
3
  // -->
4
4
  var helps = [
5
5
  ["f", i18n`显示版本号`, "version", "-v", "--version"],
@@ -12,7 +12,7 @@
12
12
 
13
13
  </btn>
14
14
  <btn class="menu-item" @title="option.name" ng-click="open(option)" ng-repeat="option in options" pop>
15
- <i class="fa" ng-class="option.icon"></i>
15
+ <i class="fa" ng-class="option.icon" -bind="option.sign"></i>
16
16
  <span class="badge" ng-if="option.tip" ng-bind="option.tip"></span>
17
17
  </btn>
18
18
  </div>
@@ -0,0 +1,51 @@
1
+ var bind = function (hostname) {
2
+ var host = parseURL(hostname);
3
+ var obj = parseURL(location.href);
4
+ host = (host.protocol || obj.protocol) + '//' + (host.host || obj.host) + "/";
5
+ var dbbase = k => host + k;
6
+ // <!--
7
+ dbbase = k => host + k;
8
+ // -->
9
+ var api = {
10
+ headers: {
11
+ authorization: ''
12
+ },
13
+ base: host,
14
+ };
15
+ host += '/';
16
+ var cross = data.cross;
17
+ var DB = function (type, id) {
18
+ var url = dbbase(type);
19
+ if (id) url += '/' + id;
20
+ return cross("get", url, null, api);
21
+ };
22
+ DB.load = function (type, size, idstart) {
23
+ return DB(`${idstart || ''},${size},`);
24
+ };
25
+ DB.info = function (type) {
26
+ return DB(type);
27
+ };
28
+ DB.save = function (type, data) {
29
+ return data.id ? DB.update(type, data) : DB.create(type, data);
30
+ }
31
+ DB.create = function (type, data) {
32
+ return cross("put", dbbase(type) + "/", data, api);
33
+ };
34
+ DB.update = function (type, data) {
35
+ return cross("post", dbbase(type) + "/" + data.id, data, api);
36
+ };
37
+ DB.delete = function (type, data) {
38
+ return cross('delete', dbbase(type) + '/' + data.id, data, api);
39
+ };
40
+ DB.search = function (type, searchObj, size = 20, searchtext, searchstart) {
41
+ if (searchObj) searchObj = "?" + serialize(searchObj);
42
+ return DB(type, `${searchstart || ''},${size},${searchtext}${searchObj || ''}`);
43
+ };
44
+ DB.query = function (type, queryObj, size = 100, queryStart) {
45
+ return DB.search(type, queryObj, size, '', queryStart);
46
+ };
47
+ return DB;
48
+ };
49
+ var db = bind(location.host || location.href);
50
+ db.rebind = bind;
51
+ return db;