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.
- package/#/345/233/275/351/231/205/345/214/226.yml +6 -0
- package/coms/basic/BigNumber.js +132 -17
- package/coms/basic/BigNumber_test.js +13 -2
- package/coms/basic/Speed.js +1 -1
- package/coms/basic/analyse.js +0 -2
- package/coms/basic/i18n.js +1 -1
- package/coms/basic/isArrayLike.js +1 -0
- package/coms/compile/autoeval.js +32 -11
- package/coms/compile/autoeval_test.js +5 -1
- package/coms/kugou/player.js +0 -1
- package/coms/reptile/cross.js +7 -7
- package/coms/third-party//344/273/243/347/240/201/346/235/245/346/272/220.txt +0 -1
- package/coms/zimoli/alert.js +1 -1
- package/coms/zimoli/data.js +5 -1
- package/docs//345/267/245/345/205/267//345/233/275/351/231/205/345/214/226.xht +31 -10
- package/docs//345/267/245/345/205/267//346/225/260/345/200/274/346/215/242/347/256/227.xht +74 -9
- package/docs//347/273/204/344/273/266.xht +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/coms/third-party/NoSleep.js +0 -257
- /package/coms/{zimoli → basic}/check.js +0 -0
- /package/coms/{zimoli → basic}/getName.js +0 -0
package/coms/basic/BigNumber.js
CHANGED
|
@@ -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)
|
|
78
|
-
|
|
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(
|
|
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),
|
|
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 =
|
|
110
|
-
toString(system_scale) {
|
|
174
|
+
static DECIMAL_DIGIT = 324;
|
|
175
|
+
toString(system_scale, 有效数字位数) {
|
|
111
176
|
system_scale |= 0;
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
var
|
|
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(
|
|
192
|
+
dist.unshift(+a);
|
|
121
193
|
}
|
|
122
|
-
|
|
123
|
-
|
|
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(
|
|
128
|
-
if (
|
|
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
|
-
|
|
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
|
|
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",
|
|
72
|
-
assert(new BigNumber("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
|
+
});
|
package/coms/basic/Speed.js
CHANGED
|
@@ -103,7 +103,7 @@ inertia.MOVING = 移动;
|
|
|
103
103
|
inertia.SLOWING_DWON = 减速;
|
|
104
104
|
inertia.REBOUNDING = 回弹;
|
|
105
105
|
inertia.DOCKING = 停靠;
|
|
106
|
-
var 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 () {
|
package/coms/basic/analyse.js
CHANGED
package/coms/basic/i18n.js
CHANGED
|
@@ -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) {
|
package/coms/compile/autoeval.js
CHANGED
|
@@ -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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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 =
|
|
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("(-+-+-
|
|
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"))
|
package/coms/kugou/player.js
CHANGED
package/coms/reptile/cross.js
CHANGED
|
@@ -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
|
package/coms/zimoli/alert.js
CHANGED
|
@@ -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
|
}
|
package/coms/zimoli/data.js
CHANGED
|
@@ -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
|
|
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
|
|
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(
|
|
403
|
+
fanyi[s.id] = await requestBaiduFanyi(text, s.id);
|
|
396
404
|
liang++;
|
|
397
405
|
render.digest();
|
|
398
406
|
}
|
|
399
|
-
|
|
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
|
|
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>"
|
|
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
|
|
427
|
-
|
|
428
|
-
|
|
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
|
|
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 =
|
|
17
|
+
var _value = null;
|
|
18
|
+
BigNumber.DECIMAL_DIGIT = 500;
|
|
7
19
|
var parseFloat = (a, b) => new BigNumber(a, b);
|
|
8
|
-
var
|
|
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)
|
|
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
|
|
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
|
|