efront 4.3.6 → 4.3.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.
@@ -1,3 +1,9 @@
1
+ - zh-CN: 翻译工具
2
+ en: translation tool
3
+
4
+ - zh-CN: 数值过大易造成页面卡死!
5
+ en: Too large a value can easily cause the page to freeze!
6
+
1
7
  - zh-CN: 服务异常
2
8
  en: Service exception
3
9
 
@@ -68,20 +68,74 @@ var adds = function (s, c) {
68
68
  }
69
69
  adds("0123456789", 0);
70
70
  adds("abcdefghijklmnopqrstuvwxyz", 10);
71
+ var 缩放到1附近 = function (bign, scale, 有效数字位数) {
72
+ var scale = scale.toString();
73
+ var 用乘法 = /^0\./.test(bign);
74
+ var targetSize;
75
+ if (用乘法) {
76
+ targetSize = /^0\.0*/.exec(bign)[0].length;
77
+ }
78
+ else {
79
+ targetSize = bign.toString().replace(/\.[\s\S]+$/, '').length;
80
+ }
81
+ var system = [scale];
82
+ var halfSize = targetSize >> 1;
83
+ while (scale.length <= halfSize) {
84
+ scale = BigNumber.prd(scale, scale);
85
+ system.push(scale);
86
+ }
87
+ scale = system.pop();
88
+ var zerocount = 1 << system.length;
89
+ while (system.length > 1) {
90
+ var s = system.pop();
91
+ if (s.length + scale.length > targetSize) continue;
92
+ s = BigNumber.prd(scale, s);
93
+ if (s.length < targetSize) {
94
+ scale = s;
95
+ zerocount += 1 << system.length;
96
+ }
97
+ }
98
+ if (用乘法) bign = BigNumber.prd(bign, scale);
99
+ else {
100
+ bign = BigNumber.div(bign, scale, BigNumber.DECIMAL_DIGIT);
101
+ }
102
+ return [bign, 用乘法 ? -zerocount : zerocount];
103
+ };
71
104
  class BigNumber {
72
105
  constructor(value, system_scale) {
73
106
  if (!this || this.constructor !== BigNumber) {
74
107
  return new BigNumber(value, system_scale);
75
108
  }
109
+ value = String(value || 0);
76
110
  system_scale = system_scale | 0;
77
- if (!system_scale) system_scale = 10;
78
- if (system_scale <= 1 || system_scale > 36) throw new Error("进制错误!");
111
+ if (!system_scale) {
112
+ system_scale = 10;
113
+ }
114
+ if (system_scale === 1) throw new Error("不支持半年级数数进制!");
115
+ if (system_scale < 1) throw new Error("不支持小于1的进位方针!");
116
+ var BACK_DIGIT = BigNumber.DECIMAL_DIGIT;
117
+ var digit = value.indexOf('.');
118
+ if (digit < 0) digit = 0;
119
+ else digit = value.length - digit;
120
+ if (system_scale === 10 && value.indexOf('e') > 0) {
121
+ var [value, ratio] = value.split('e');
122
+ if (/^\-/.test(ratio)) digit += ratio - ratio.length, ratio = "0." + Array(+ratio.slice(1)).join('0') + "1";
123
+ else {
124
+ if (/^\+/.test(ratio)) ratio = ratio.slice(1);
125
+ ratio = "1" + Array(+ratio + 1).join('0');
126
+ }
127
+ }
128
+ if (digit > 1) digit += 6;
129
+ digit = Math.ceil(digit * Math.log10(system_scale));
130
+ if (digit > BACK_DIGIT) BigNumber.DECIMAL_DIGIT = digit;
79
131
  var num = '0';
80
132
  var dotOccurs;
81
133
  var scale = system_scale;
82
134
  if (system_scale <= 36) {
83
135
  value = value.toLowerCase();
84
136
  }
137
+ value = value.replace(/^\[|\]$/g, '').split(/[,:;、;。,]|\]\[/);
138
+ if (value.length === 1) value = value[0];
85
139
  var sign = false;
86
140
  for (var v of value) {
87
141
  if (v === "-") {
@@ -95,41 +149,102 @@ class BigNumber {
95
149
  }
96
150
  if (v === '_') continue;
97
151
  if (v === ',') continue;
152
+ if (!(v in vmap)) {
153
+ v = +v;
154
+ }
155
+ else v = vmap[v];
156
+ if (Number.isNaN(v) || v >= system_scale || v !== +v) throw new Error("数据错误!");
157
+
98
158
  if (dotOccurs) {
99
- num = BigNumber.add(num, BigNumber.div(vmap[v], scale, BigNumber.DECIMAL_DIGIT))
159
+ num = BigNumber.add(num, BigNumber.div(v, scale, BigNumber.DECIMAL_DIGIT))
100
160
  scale = BigNumber.prd(scale, system_scale);
101
161
  }
102
162
  else {
103
- num = BigNumber.add(BigNumber.prd(num, scale), vmap[v]);
163
+ num = BigNumber.add(BigNumber.prd(num, scale), v);
104
164
  }
105
165
  }
106
166
  if (sign) num = '-' + num;
167
+ if (ratio) num = BigNumber.prd(num, ratio);
107
168
  this.value = num;
169
+ if (digit > BACK_DIGIT) {
170
+ this.digit = digit;
171
+ }
172
+ BigNumber.DECIMAL_DIGIT = BACK_DIGIT;
108
173
  }
109
- static DECIMAL_DIGIT = 120;
110
- toString(system_scale) {
174
+ static DECIMAL_DIGIT = 324;
175
+ toString(system_scale, 有效数字位数) {
111
176
  system_scale |= 0;
112
- if (!system_scale || system_scale === 10) return this.value || "0";
113
- if (system_scale <= 1 || system_scale > 36) throw new Error("进制错误!");
114
- var [s, n, m] = prepare(this.value);
177
+ var 收起零 = 有效数字位数 < 0;
178
+ if (收起零) 有效数字位数 = -有效数字位数;
179
+ var zero = system_scale <= 36 ? '0' : '[0]';
180
+ if (!system_scale || system_scale === 10) return this.value || zero;
181
+ if (system_scale <= 1) throw new Error("进制错误!");
182
+ var BACK_DIGIT = BigNumber.DECIMAL_DIGIT;
183
+ if (!有效数字位数) 有效数字位数 = Math.ceil((this.digit || BigNumber.DECIMAL_DIGIT) / Math.log10(system_scale));
184
+ BigNumber.DECIMAL_DIGIT = 有效数字位数 + 10 + system_scale;
185
+ var [value, zerocount] = 缩放到1附近(this.value, system_scale, 有效数字位数);
186
+ var [s, n, m] = prepare(value);
115
187
  var dist = [];
116
188
  while (n && n !== "0") {
117
189
  var n0 = BigNumber.div(n, system_scale, 0);
118
190
  var a = BigNumber.sub(n, BigNumber.prd(n0, system_scale));
119
191
  n = n0;
120
- dist.unshift(vsrc[+a]);
192
+ dist.unshift(+a);
121
193
  }
122
- if (m && m !== "0") {
123
- var c = 0;
194
+ var c = dist.length;
195
+ var mid = (system_scale - 1) / 2 | 0;
196
+ var end = system_scale - 1;
197
+ if (m && m !== "0" && c <= 有效数字位数) {
124
198
  dist.push('.');
125
199
  while (m !== "0") {
126
200
  [a, m = '0'] = BigNumber.prd("0." + m, system_scale).split('.');
127
- dist.push(vsrc[+a]);
128
- if (++c > BigNumber.DECIMAL_DIGIT || !m) break;
201
+ dist.push(+a);
202
+ if (c > 0 || +a > 0) {
203
+ if (c++ >= 有效数字位数 || !m) break;
204
+ }
129
205
  }
206
+ if (c > 有效数字位数) {
207
+ if (dist[dist.length - 1] > mid) {
208
+ dist.pop();
209
+ while (dist[dist.length - 1] === end) dist.pop();
210
+ if (dist[dist.length - 1] === ".") dist.pop();
211
+ c = dist.length - 1;
212
+ while (dist[c] === end) dist[c--] = 0;
213
+ if (c < 0) dist.unshift(1);
214
+ else dist[c] = dist[c] + 1;
215
+ }
216
+ else dist.pop();
217
+ }
218
+ } else if (c > 有效数字位数) {
219
+ if (dist[有效数字位数] > mid) {
220
+ var c = 有效数字位数 - 1;
221
+ while (dist[c] === end) dist[c--] = 0;
222
+ if (c < 0) dist.unshift(1);
223
+ else dist[c] = dist[c] + 1;
224
+ }
225
+ while (有效数字位数 < dist.length) dist[有效数字位数++] = 0;
226
+ }
227
+ var i = dist.indexOf('.');
228
+ if (i >= 0) dist.splice(i, 1);
229
+ else i = dist.length;
230
+ i += zerocount;
231
+ if (i <= 0) {
232
+ if (收起零 && i <= -30) dist.unshift(`${zero}.(${- i}个${zero})`);
233
+ else dist.unshift(zero + "." + Array(1 - i).join(zero));
234
+ }
235
+ else if (i === dist.length);
236
+ else if (i < dist.length) dist.splice(i, 0, '.');
237
+ else if (i > dist.length) {
238
+ if (收起零 && i >= dist.length + 30) dist.push(`(还有${i - dist.length}位)`);
239
+ else dist.push(Array(i - dist.length + 1).join(zero));
130
240
  }
131
- if (!dist.length) dist.push("0");
241
+ while (dist[0] === 0) dist.shift();
242
+ if (dist[0] === '.') dist.unshift(0);
243
+ else if (!dist.length) dist.push(0);
132
244
  if (s) dist.unshift('-');
245
+ BigNumber.DECIMAL_DIGIT = BACK_DIGIT;
246
+ if (system_scale <= 36) dist = dist.map(d => Number.isFinite(d) ? vsrc[d] : d);
247
+ else dist = dist.map(d => Number.isFinite(d) ? '[' + d + ']' : d);
133
248
  return dist.join('');
134
249
  };
135
250
  add(bignumber) {
@@ -189,7 +304,7 @@ class BigNumber {
189
304
  var neg = neg1 && neg2;
190
305
  }
191
306
  var res = [];
192
- var end = (numstr1.length / 15 | 0) * 15;
307
+ var end = ((numstr1.length - 1) / 15 | 0) * 15;
193
308
  var rest = 0;
194
309
  while (end >= 0) {
195
310
  var s1 = numstr1.slice(end, end + 15);
@@ -262,7 +377,7 @@ class BigNumber {
262
377
  var [neg1, s11, s12] = prepare(numstr1);
263
378
  var [neg2, s21, s22] = prepare(numstr2);
264
379
  var d = s12.length + decimal - s22.length;
265
- decimal = (decimal | 0) + 1;
380
+ decimal = (decimal & 0x7fffffff) + 1;
266
381
  numstr1 = s11 + s12;
267
382
  numstr2 = s21 + s22;
268
383
  numstr1 = numstr1.replace(/^0+/, '');
@@ -8,6 +8,7 @@ testAdd(0x1fffffffffffff, 1, '9007199254740992');
8
8
  testAdd(0x1fffffffffffff, 2, '9007199254740993');
9
9
  testAdd(0x1fffffffffffff, 3, '9007199254740994');
10
10
  testAdd(0x1fffffffffffff, 3, '9007199254740994');
11
+ testAdd("562949953421296", 15, '562949953421311');
11
12
  testAdd("900719925474099.2", 0.1, '900719925474099.3');
12
13
  testAdd("900719925474099.2", 0.1, '900719925474099.3');
13
14
  testAdd("900719925474099.3", -0.2, '900719925474099.1');
@@ -68,5 +69,15 @@ assert(BigNumber.div("9007199254740992.2345678901", "9007199254740992.2345678901
68
69
  assert(BigNumber.div("9007199254740992.2345678901", "90071992547409922345678.901", 6), "0.000000");
69
70
  assert(BigNumber.div("9007199254740992.2345678901", "900719925474099223456.78901", 6), "0.000010");
70
71
  assert(BigNumber.div("99999", "9", 6), "11111.000000");
71
- assert(new BigNumber("1.23", 8).toString(), "1.296875");
72
- assert(new BigNumber("1.23", 8).toString(8), "1.23");
72
+ assert(new BigNumber("1.23", 8).toString(), "1.296875");
73
+ assert(new BigNumber("1.23", 8).toString(8), "1.23");
74
+ assert(new BigNumber("17", 8).toString(), "15");
75
+ assert(new BigNumber("17", 8).toString(8), "17");
76
+ assert(new BigNumber("1fffffffffffff", 16).toString(), '9007199254740991');
77
+ assert(new BigNumber("1fffffffffffff", 16).toString(16), '1fffffffffffff');
78
+ BigNumber.DECIMAL_DIGIT = 500;
79
+ [2, 4, 8, 16, 32].forEach(cx => {
80
+ var number = BigNumber.div(new BigNumber("5"), new BigNumber((10n ** 324n).toString()), 500);
81
+ assert(new BigNumber(number).toString(cx).slice(0, 5e-324 .toString(cx).length), 5e-324 .toString(cx));
82
+ assert(new BigNumber("-" + number).toString(cx).slice(0, (-5e-324).toString(cx).length), (-5e-324).toString(cx));
83
+ });
@@ -103,7 +103,7 @@ inertia.MOVING = 移动;
103
103
  inertia.SLOWING_DWON = 减速;
104
104
  inertia.REBOUNDING = 回弹;
105
105
  inertia.DOCKING = 停靠;
106
- var performance = window.performance;
106
+ var performance = this.performance;
107
107
  if (!performance || !performance.now) performance = Date;
108
108
  var now = performance.now;
109
109
  if (!performance.now) performance.now = function () {
@@ -309,5 +309,3 @@ function main(text) {
309
309
  format();
310
310
  return result;
311
311
  }
312
- window.wordslike = wordslike;
313
- window.words = words;
@@ -2,7 +2,7 @@
2
2
  var languageMap = {};
3
3
  var languageIndex = 0;
4
4
  function i18n(arg) {
5
- if (typeof arg === 'string') arg = arguments;
5
+ if (typeof arg === 'string' || !isArrayLike(arg)) arg = arguments;
6
6
  return arg[isFinite(this) ? this : languageIndex];
7
7
  };
8
8
  i18n.lang = function (type) {
@@ -1,3 +1,4 @@
1
+ var window = this;
1
2
  function isArrayLike(a) {
2
3
  if (a === null || a === window || typeof a !== 'object' || isNode(a)) return false;
3
4
  if (isFinite(a.length)) {
@@ -1,5 +1,13 @@
1
- var { skipAssignment, createString, QUOTED, STAMP, SCOPED, VALUE, SPACE, COMMENT, relink } = require("./common");
1
+ var { skipAssignment, createString, QUOTED, STAMP, SCOPED, VALUE, SPACE, COMMENT, EXPRESS, relink } = require("./common");
2
2
 
3
+ var eval2 = function (v) {
4
+ v = eval(v);
5
+ if (typeof v === 'bigint') return String(v) + "n";
6
+ return String(v);
7
+ };
8
+ var canbeunbrace = function () {
9
+
10
+ }
3
11
  var calculate = function (body) {
4
12
  for (var cx = 0; cx < body.length; cx) {
5
13
  var o = body[cx];
@@ -16,16 +24,27 @@ var calculate = function (body) {
16
24
  if (o.type === SCOPED && o.entry === '(') {
17
25
  var p = o.prev;
18
26
  if (!p || p.type === STAMP || p.type === VALUE && p.isdigit) {
19
- if (o.last.type === VALUE && o.last.isdigit) {
20
- if ((o.first === o.last)) {
21
- o.type = VALUE;
22
- o.text = o.last.text;
23
- o.isdigit = true;
27
+ var last = o.last, first = o.first;
28
+ if (last.type === VALUE && last.isdigit) {
29
+ var text = null;
30
+ if ((first === last)) {
31
+ text = last.text;
32
+ }
33
+ else if (first.next === last && first.type === STAMP && /^[+-~]+$/.test(first.text)) {
34
+ text = eval2(first.text + last.text);
35
+ last.text = text;
36
+ o.splice(0, o.length);
37
+ o.push(last);
38
+ o.first = o.last = last;
24
39
  }
25
- else if (o.first.next === o.last && o.first.type === STAMP && /^[+-~]+$/.test(o.first.text)) {
26
- o.type = VALUE;
27
- o.text = eval(o.first.text + o.last.text);
28
- o.isdigit = true;
40
+ var next = o.next;
41
+ if (text) {
42
+ if (/^\-/.test(text) && next && next.type === EXPRESS && /^[\.\[]/.test(next.text));
43
+ else {
44
+ o.type = VALUE;
45
+ o.text = text;
46
+ o.isdigit = true;
47
+ }
29
48
  }
30
49
  }
31
50
  }
@@ -36,7 +55,9 @@ var calculate = function (body) {
36
55
  }
37
56
  if (ignore || ex - ox < 3) continue;
38
57
  var o = body[ox];
39
- o.text = eval(createString(body.slice(ox, ex)));
58
+ o.text = eval2(createString(body.slice(ox, ex)));
59
+ o.type = VALUE;
60
+ o.isdigit = true;
40
61
  cx = ox + 1;
41
62
  body.splice(cx, ex - cx);
42
63
  }
@@ -17,7 +17,7 @@ t("1+1", "2");
17
17
  t("1+3", "4");
18
18
  t("(1+3)", "4");
19
19
  t("(-1)*(1+3)", "-4");
20
- t("(-+-+-1)*(1+3)", "-4");
20
+ t("(-+-+-2)*(1+3)", "-8");
21
21
  t("(~1)*(1+3)", "-8");
22
22
  t("(1*-1)+(1+3)", "3");
23
23
  t("1+(1+3)", "5");
@@ -25,4 +25,8 @@ t("a(1+3)", "a(4)");
25
25
  t("(1+3,5,3+4)", "(4, 5, 7)");
26
26
  t("(1>>3,5,3+4)", "(0, 5, 7)");
27
27
  t("a=1,b=2;(a|b)&c", "a = 1, b = 2; 3 & c");
28
+ t("(1+2).toString()", "3 .toString()");
29
+ t("(1n+2n).toString()", "3n .toString()");
30
+ t("(-1).toString()", "(-1).toString()");
31
+ t("(-(2n*324n)).toString()", "(-648n).toString()");
28
32
  // tf(path.join(__dirname, "../zimoli/spacechar_test.js"))
@@ -425,7 +425,6 @@ var createControls = function () {
425
425
  });
426
426
  return player;
427
427
  };
428
- var ns = document.addEventListener && new thirdParty$NoSleep;
429
428
 
430
429
  var player = function (player) {
431
430
  render(player, $scope);
@@ -52,6 +52,11 @@ var cross = cross_.bind(function (callback, onerror) {
52
52
  auth,
53
53
  headers: this.headers,
54
54
  };
55
+ var onerror1 = function (e) {
56
+ xhr.readyState = 4;
57
+ error = e;
58
+ onerror(e);
59
+ };
55
60
  var req = this.http.request(options, function (res) {
56
61
  var data = [];
57
62
  xhr.status = res.statusCode;
@@ -65,16 +70,11 @@ var cross = cross_.bind(function (callback, onerror) {
65
70
  xhr.readyState = 4;
66
71
  callback();
67
72
  });
68
- var onerror1 = function (e) {
69
- xhr.readyState = 4;
70
- error = e;
71
- onerror(e);
72
- };
73
- res.on("error", onerror1);
74
- res.on('timeout', onerror1);
75
73
  this.readyState = 2;
76
74
  });
77
75
  this.readyState = 1;
76
+ req.on("error", onerror1);
77
+ req.on("timeout", onerror1);
78
78
  req.setTimeout(3000);
79
79
  if (data) req.end(data);
80
80
  else req.end();
@@ -1,7 +1,6 @@
1
1
  第三方代码来源及日期,后续版本请自行更新
2
2
  2022-12-30 https://npmjs.com/package/crypto-js
3
3
  2022-11-12 https://github.com/kazuhikoarase/qrcode-generator 逻辑有修改 qrcode.js
4
- 2022-09-29 https://github.com/richtr/NoSleep.js
5
4
  2021-06-15 https://www.npmjs.com/package/html2canvas
6
5
  2019-08-03 https://github.com/gorhill/Javascript-Voronoi
7
6
  2017-05-17 https://github.com/dankogai/js-deflate
@@ -67,7 +67,7 @@ function alert() {
67
67
  var waitclose = function (autoclose, deltaTime) {
68
68
  if (autoclose) {
69
69
  if (autoclose === true) {
70
- autoclose = text.length * 160 + deltaTime;
70
+ autoclose = text && text.length * 160 + deltaTime;
71
71
  } else if (autoclose < 100) {
72
72
  autoclose = autoclose * 1000;
73
73
  }
@@ -104,8 +104,12 @@ function getErrorMessage(error = this) {
104
104
  if (error[a]) {
105
105
  return String(error[a]);
106
106
  }
107
+ a = a.charAt(0).toUpperCase() + a.slice(1);
108
+ if (error[a]) return String(error[a]);
109
+ a = a.toUpperCase();
110
+ if (error[a]) return String(error[a]);
107
111
  }
108
- return JSON.stringify(error);
112
+ return Object.keys(error).map(k => `${k}: ${error[k]}`).join(',\r\n');
109
113
  }
110
114
 
111
115
  function getTranspile(url) {
@@ -44,6 +44,7 @@
44
44
  <div -else>
45
45
  <button @click="chooseFolder">${i18n`选择代码文件夹`}</button>
46
46
  <button @click="editCode()">${i18n`修改国际化参数`}</button>
47
+ <button @click="显示翻译窗口()">${i18n`翻译工具`}</button>
47
48
  <button style="float:right" -if="tableData.length" @click="exportCSV">${i18n`导出到文件`}</button>
48
49
  <hr />
49
50
  <form>
@@ -389,14 +390,21 @@
389
390
  a: button,
390
391
  async baidu() {
391
392
  var fanyi = this.fanyi;
392
- var liang = this.item.liang;
393
+ var item = this.item;
394
+ if (item) {
395
+ var liang = item.liang;
396
+ var text = item.text;
397
+ }
398
+ if (!text) for (var k in fanyi) {
399
+ if (fanyi[k]) text = fanyi[k];
400
+ }
393
401
  for (var s of this.supports) {
394
402
  if (fanyi[s.id] && fanyi[s.id].trim()) continue;
395
- fanyi[s.id] = await requestBaiduFanyi(this.item.text, s.id);
403
+ fanyi[s.id] = await requestBaiduFanyi(text, s.id);
396
404
  liang++;
397
405
  render.digest();
398
406
  }
399
- this.item.liang = liang;
407
+ if (item) item.liang = liang;
400
408
  },
401
409
  save() {
402
410
 
@@ -406,12 +414,11 @@
406
414
  }
407
415
  };
408
416
  var activedRow;
409
- var showDetail = function (event) {
410
- var tr = getTargetIn(tableElement.children[1], event.active, false);
417
+ var initDetailWindow = function () {
411
418
  if (!detailWindow) {
412
419
  detailWindow = view();
413
420
  on('submit')(detailWindow, e => e.preventDefault());
414
- detailWindow.innerHTML = `<div head>${i18n`翻译: `}"<span -bind="item?.text"></span>"<drop @click="close()"></drop></div><lattice itemwidth=260 -src="s in supports" body><field style="display:inline-block;padding:0 0 6px 12px;" ><label style="padding-left:0"><span -bind="s.name"></span>(<span -bind="s.lang"></span>)</label><textarea -model="fanyi[s.id]" class='body' style="resize:none"></textarea></field></lattice><div foot><a style="float:left" @click="baidu">${i18n`一键百度`}</a></div>`;
421
+ detailWindow.innerHTML = `<div head><span -if=!item? >${i18n`翻译工具`} </span><template -else>${i18n`翻译: `}"<span -bind="item?.text"></span>"</template><drop @click="close()"></drop></div><lattice itemwidth=260 -src="s in supports" body><field style="display:inline-block;padding:0 0 6px 12px;" ><label style="padding-left:0"><span -bind="s.name"></span>(<span -bind="s.lang"></span>)</label><textarea -model="fanyi[s.id]" class='body' style="resize:none"></textarea></field></lattice><div foot><a style="float:left" @click="baidu">${i18n`一键百度`}</a></div>`;
415
422
  drag.on(detailWindow, detailWindow.firstElementChild);
416
423
  resize.on(detailWindow);
417
424
  css(detailWindow, `position:absolute;left:0;top:0;bottom:0;width:260px;`);
@@ -423,12 +430,21 @@
423
430
  for (var s of supports) {
424
431
  if (fanyi[s.id] && fanyi[s.id].trim()) count++;
425
432
  }
426
- detailScope.item.liang = count;
427
- removeClass(activedRow, "actived");
428
- activedRow = null;
433
+ if (detailScope.item) {
434
+ detailScope.item.liang = count;
435
+ }
436
+ if (activedRow) {
437
+ removeClass(activedRow, "actived");
438
+ activedRow = null;
439
+ delete detailScope.item;
440
+ }
429
441
  })
430
442
 
431
443
  }
444
+ }
445
+ var showDetail = function (event) {
446
+ initDetailWindow();
447
+ var tr = getTargetIn(tableElement.children[1], event.active, false);
432
448
  var item = detailScope.item = event.item;
433
449
  if (activedRow !== tr) {
434
450
  if (activedRow) removeClass(activedRow, 'actived');
@@ -445,7 +461,12 @@
445
461
  // }
446
462
  if (!item.fanyi) item.fanyi = {}, item.fanyi[supports[0].id] = item.text;
447
463
  detailScope.fanyi = item.fanyi;
448
-
464
+ if (!isMounted(detailWindow)) popup(detailWindow);
465
+ };
466
+ var 显示翻译窗口 = function () {
467
+ initDetailWindow();
468
+ delete detailScope.item;
469
+ detailScope.fanyi = Object.create(null);
449
470
  if (!isMounted(detailWindow)) popup(detailWindow);
450
471
  }
451
472
  var readText = async function (e) {
@@ -1,11 +1,25 @@
1
- <style></style>
1
+ <style>
2
+ h4 {
3
+ text-align: center;
4
+ font-size: 16px;
5
+ color: #822;
6
+ /* background: #fc2; */
7
+ margin: 0;
8
+ padding: 20px 0;
9
+ font-family: 'Times New Roman', Times, serif;
10
+ }
11
+ </style>
2
12
  <div>
13
+ <h4>${i18n`数值过大易造成页面卡死!`}</h4>
3
14
  <field -repeat="f in formats" -src="[f,value]"></field>
4
15
  </div>
5
16
  <script>
6
- var _value = 0;
17
+ var _value = null;
18
+ BigNumber.DECIMAL_DIGIT = 500;
7
19
  var parseFloat = (a, b) => new BigNumber(a, b);
8
- var value = {
20
+ var value0 = Object.create(null);
21
+
22
+ var value1 = {
9
23
  get [i18n`十进制`]() {
10
24
  return _value;
11
25
  },
@@ -13,29 +27,35 @@
13
27
  _value = parseFloat(v)
14
28
  },
15
29
  get [i18n`十六进制`]() {
16
- return _value.toString(16);
30
+ return _value.toString(16, -73);
17
31
  },
18
32
  set [i18n`十六进制`](v) {
19
33
  _value = parseFloat(v, 16);
20
34
  },
21
35
  get [i18n`二进制`]() {
22
- return _value.toString(2);
36
+ return _value.toString(2, -73);
23
37
  },
24
38
  set [i18n`二进制`](v) {
25
39
  _value = parseFloat(v, 2);
26
40
  },
27
41
  get [i18n`八进制`]() {
28
- return _value.toString(8)
42
+ return _value.toString(8, -53)
29
43
  },
30
44
  set [i18n`八进制`](v) {
31
45
  _value = parseFloat(v, 8)
32
46
  },
33
47
  get [i18n`三十六进制`]() {
34
- return _value.toString(36);
48
+ return _value.toString(36, -73);
35
49
  },
36
50
  set [i18n`三十六进制`](v) {
37
51
  _value = parseFloat(v, 36);
38
52
  },
53
+ get [i18n`六十进制`]() {
54
+ return _value.toString(60, -73);
55
+ },
56
+ set [i18n`六十进制`](v) {
57
+ _value = parseFloat(v, 60);
58
+ },
39
59
  get [i18n`浮点数机器码`]() {
40
60
  var v = +_value;
41
61
  var s = /^-/.test(v);
@@ -60,7 +80,7 @@
60
80
  var s = /^-/.test(_value);
61
81
  var v = window.parseFloat(_value);
62
82
  if (s) v = -v;
63
- var i = Math.log2(v) | 0;
83
+ var i = Math.floor(Math.log2(v));
64
84
  if (!v) i = 0;
65
85
  else v = (v * Math.pow(2, -i) - 1) * Math.pow(2, 52), i += 1023;
66
86
  return [
@@ -77,14 +97,59 @@
77
97
  var i = parseInt(v.slice(0, 3), 16) & 0x7ff;
78
98
  v = parseInt(v.slice(3), 16);
79
99
  if (i === 0 && v === 0) v = 0;
100
+ else if (i < 1023) v = (v + Math.pow(2, 52)) * Math.pow(2, i - 1023 - 52);
80
101
  else v = (v + Math.pow(2, 53)) * Math.pow(2, i - 1023 - 53);
81
102
  if (s) v = -v;
82
103
  _value = v;
83
104
  },
105
+ get [i18n`双精度机器码`]() {
106
+ var v = _value.toString(2, 53);
107
+ var s = /^-/.test(v) ? "1" : '0';
108
+ if (+s) v = v.slice(1);
109
+ var i = v.indexOf('.');
110
+ if (i < 0) i = v.length;
111
+ else v = v.slice(0, i) + v.slice(i + 1);
112
+ if (/^0/.test(v)) {
113
+ var e = v.indexOf("1");
114
+ v = v.slice(e);
115
+ i -= e;
116
+ }
117
+ i--;
118
+ if (v === '0' || i < -1078) {
119
+ i = Array(12).join("0");
120
+ v = Array(53).join('0');
121
+ }
122
+ else if (i > 1023) {
123
+ v = "0";
124
+ i = Array(12).join('1');
125
+ }
126
+ else {
127
+ i += 1023;
128
+ if (i < 0) v = Array(2 - i).join('0') + v, i = 0;
129
+ v = v.slice(1, 53);
130
+ i = i.toString(2);
131
+ }
132
+ if (i.length < 11) i = Array(12 - i.length).join('0') + i;
133
+ if (v.length < 52) v += Array(53 - v.length).join("0");
134
+ v = (s + i + v).replace(/[01]{4}/g, a => parseInt(a, 2).toString(16));
135
+ return v;
136
+ },
84
137
 
85
138
  };
86
139
  var hex = a => a < 0x10 ? "0" + a.toString(16) : a.toString(16);
87
- var formats = Object.getOwnPropertyNames(value).map(k => {
140
+ var value = Object.create(null);
141
+ var 进制 = Object.getOwnPropertyNames(value1);
142
+ var formats = 进制.map(k => {
143
+ Object.defineProperty(value, k, {
144
+ get() {
145
+ return value0[k];
146
+ },
147
+ set(v) {
148
+ if (v === value0[k]) return;
149
+ value1[k] = v;
150
+ 进制.forEach(k => value0[k] = value1[k]);
151
+ },
152
+ })
88
153
  return { name: k, key: k };
89
154
  });
90
155