@ivujs/i-utils 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -19
- package/dist/cjs/id/index.cjs +26 -43
- package/dist/cjs/index.cjs +8 -398
- package/dist/es/id/index.d.ts +16 -0
- package/dist/es/id/index.mjs +28 -42
- package/dist/es/index.d.ts +2 -0
- package/dist/es/index.mjs +8 -58
- package/dist/index.d.ts +21 -0
- package/dist/lib/index.full.cjs.js +38 -0
- package/dist/lib/index.full.cjs.min.js +2 -0
- package/dist/lib/index.full.cjs.min.js.map +1 -0
- package/dist/lib/index.full.esm.js +35 -15822
- package/dist/lib/index.full.esm.min.js +2 -58
- package/dist/lib/index.full.esm.min.js.map +1 -0
- package/dist/lib/index.full.umd.js +39 -16176
- package/dist/lib/index.full.umd.min.js +2 -0
- package/dist/lib/index.full.umd.min.js.map +1 -0
- package/package.json +77 -54
- package/dist/cjs/ID-card/index.cjs +0 -122
- package/dist/cjs/array/index.cjs +0 -465
- package/dist/cjs/clipboard/index.cjs +0 -135
- package/dist/cjs/color/index.cjs +0 -210
- package/dist/cjs/constants/date.cjs +0 -186
- package/dist/cjs/constants/lang.cjs +0 -13
- package/dist/cjs/constants/math.cjs +0 -13
- package/dist/cjs/constants/regexp.cjs +0 -57
- package/dist/cjs/constants/sort.cjs +0 -15
- package/dist/cjs/cookie/index.cjs +0 -71
- package/dist/cjs/crypto/aes/aes.cjs +0 -533
- package/dist/cjs/crypto/aes/index.cjs +0 -28
- package/dist/cjs/crypto/base32/base32.cjs +0 -385
- package/dist/cjs/crypto/base32/index.cjs +0 -44
- package/dist/cjs/crypto/base64/base64.cjs +0 -433
- package/dist/cjs/crypto/base64/index.cjs +0 -64
- package/dist/cjs/crypto/des/des.cjs +0 -1054
- package/dist/cjs/crypto/des/index.cjs +0 -30
- package/dist/cjs/crypto/md5/index.cjs +0 -25
- package/dist/cjs/crypto/md5/md5.cjs +0 -944
- package/dist/cjs/crypto/sha/sha1/index.cjs +0 -25
- package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -602
- package/dist/cjs/crypto/sha/sha256/index.cjs +0 -46
- package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -654
- package/dist/cjs/crypto/sha/sha3/index.cjs +0 -44
- package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -747
- package/dist/cjs/crypto/sha/sha512/index.cjs +0 -88
- package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -1186
- package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -167
- package/dist/cjs/crypto/sm/lib/ec.cjs +0 -352
- package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1633
- package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -173
- package/dist/cjs/crypto/sm/lib/utils.cjs +0 -198
- package/dist/cjs/crypto/sm/sm2/index.cjs +0 -122
- package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -269
- package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
- package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -103
- package/dist/cjs/crypto/sm/sm4/index.cjs +0 -28
- package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -362
- package/dist/cjs/crypto/tea/index.cjs +0 -26
- package/dist/cjs/crypto/tea/tea.cjs +0 -215
- package/dist/cjs/date/index.cjs +0 -1349
- package/dist/cjs/desensitized/index.cjs +0 -74
- package/dist/cjs/device/index.cjs +0 -159
- package/dist/cjs/dom/index.cjs +0 -176
- package/dist/cjs/file/index.cjs +0 -339
- package/dist/cjs/function/index.cjs +0 -67
- package/dist/cjs/keycode/index.cjs +0 -142
- package/dist/cjs/math/index.cjs +0 -284
- package/dist/cjs/number/index.cjs +0 -14
- package/dist/cjs/object/index.cjs +0 -216
- package/dist/cjs/pagination/index.cjs +0 -140
- package/dist/cjs/random/index.cjs +0 -25
- package/dist/cjs/regexp/index.cjs +0 -109
- package/dist/cjs/storage/index.cjs +0 -11
- package/dist/cjs/storage/localStorage.cjs +0 -40
- package/dist/cjs/storage/sessionStorage.cjs +0 -40
- package/dist/cjs/string/index.cjs +0 -338
- package/dist/cjs/url/index.cjs +0 -279
- package/dist/cjs/validate/index.cjs +0 -487
- package/dist/cjs/weapp/index.cjs +0 -151
- package/dist/es/ID-card/index.mjs +0 -116
- package/dist/es/array/index.mjs +0 -437
- package/dist/es/clipboard/index.mjs +0 -129
- package/dist/es/color/index.mjs +0 -200
- package/dist/es/constants/date.mjs +0 -184
- package/dist/es/constants/lang.mjs +0 -11
- package/dist/es/constants/math.mjs +0 -11
- package/dist/es/constants/regexp.mjs +0 -55
- package/dist/es/constants/sort.mjs +0 -13
- package/dist/es/cookie/index.mjs +0 -65
- package/dist/es/crypto/aes/aes.mjs +0 -529
- package/dist/es/crypto/aes/index.mjs +0 -25
- package/dist/es/crypto/base32/base32.mjs +0 -381
- package/dist/es/crypto/base32/index.mjs +0 -39
- package/dist/es/crypto/base64/base64.mjs +0 -427
- package/dist/es/crypto/base64/index.mjs +0 -57
- package/dist/es/crypto/des/des.mjs +0 -1050
- package/dist/es/crypto/des/index.mjs +0 -27
- package/dist/es/crypto/md5/index.mjs +0 -22
- package/dist/es/crypto/md5/md5.mjs +0 -941
- package/dist/es/crypto/sha/sha1/index.mjs +0 -22
- package/dist/es/crypto/sha/sha1/sha1.mjs +0 -599
- package/dist/es/crypto/sha/sha256/index.mjs +0 -41
- package/dist/es/crypto/sha/sha256/sha256.mjs +0 -649
- package/dist/es/crypto/sha/sha3/index.mjs +0 -39
- package/dist/es/crypto/sha/sha3/sha3.mjs +0 -742
- package/dist/es/crypto/sha/sha512/index.mjs +0 -79
- package/dist/es/crypto/sha/sha512/sha512.mjs +0 -1177
- package/dist/es/crypto/sm/lib/asn1.mjs +0 -164
- package/dist/es/crypto/sm/lib/ec.mjs +0 -349
- package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1630
- package/dist/es/crypto/sm/lib/sm3.mjs +0 -170
- package/dist/es/crypto/sm/lib/utils.mjs +0 -186
- package/dist/es/crypto/sm/sm2/index.mjs +0 -111
- package/dist/es/crypto/sm/sm2/sm2.mjs +0 -258
- package/dist/es/crypto/sm/sm3/index.mjs +0 -13
- package/dist/es/crypto/sm/sm3/sm3.mjs +0 -99
- package/dist/es/crypto/sm/sm4/index.mjs +0 -25
- package/dist/es/crypto/sm/sm4/sm4.mjs +0 -359
- package/dist/es/crypto/tea/index.mjs +0 -23
- package/dist/es/crypto/tea/tea.mjs +0 -211
- package/dist/es/date/index.mjs +0 -1262
- package/dist/es/desensitized/index.mjs +0 -69
- package/dist/es/device/index.mjs +0 -145
- package/dist/es/dom/index.mjs +0 -164
- package/dist/es/file/index.mjs +0 -323
- package/dist/es/function/index.mjs +0 -63
- package/dist/es/keycode/index.mjs +0 -139
- package/dist/es/math/index.mjs +0 -274
- package/dist/es/number/index.mjs +0 -12
- package/dist/es/object/index.mjs +0 -203
- package/dist/es/pagination/index.mjs +0 -134
- package/dist/es/random/index.mjs +0 -22
- package/dist/es/regexp/index.mjs +0 -98
- package/dist/es/storage/index.mjs +0 -9
- package/dist/es/storage/localStorage.mjs +0 -35
- package/dist/es/storage/sessionStorage.mjs +0 -35
- package/dist/es/string/index.mjs +0 -321
- package/dist/es/url/index.mjs +0 -261
- package/dist/es/validate/index.mjs +0 -451
- package/dist/es/weapp/index.mjs +0 -140
package/dist/cjs/file/index.cjs
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('../validate/index.cjs');
|
|
4
|
-
|
|
5
|
-
/* 文件信息处理 */
|
|
6
|
-
/**
|
|
7
|
-
* 格式化文件大小自动转为 B,KB,MB,GB
|
|
8
|
-
* @param {Number} size 文件的大小,单位byte字节
|
|
9
|
-
* @returns {String} 返回格式化后的字符串
|
|
10
|
-
*/
|
|
11
|
-
function formatFileSize(size) {
|
|
12
|
-
if (index.isEmpty(size)) return "0B";
|
|
13
|
-
if (size < 1024) {
|
|
14
|
-
return size + "B";
|
|
15
|
-
} else if (size < 1024 * 1024) {
|
|
16
|
-
return (size / 1024).toFixed(2) + "KB";
|
|
17
|
-
} else if (size < 1024 * 1024 * 1024) {
|
|
18
|
-
return (size / (1024 * 1024)).toFixed(2) + "MB";
|
|
19
|
-
} else {
|
|
20
|
-
return (size / (1024 * 1024 * 1024)).toFixed(2) + "GB";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* 获得文件名称
|
|
26
|
-
* @param {String} fileName 文件的全名称,例如:测试图片.jpg
|
|
27
|
-
* @returns {String} 返回文件的名称
|
|
28
|
-
*/
|
|
29
|
-
function getFileName(fileName) {
|
|
30
|
-
if (index.isEmpty(fileName)) return;
|
|
31
|
-
return fileName.substring(0, fileName.lastIndexOf("."));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* 获得文件后缀名
|
|
36
|
-
* @param {String} value 文件地址路径或者文件全名称,例如:http://xxx.com/mytest.jpg,测试图片.jpg
|
|
37
|
-
* @returns {String} 返回文件后缀名
|
|
38
|
-
*/
|
|
39
|
-
function getFileSuffix(value) {
|
|
40
|
-
if (index.isEmpty(value)) return;
|
|
41
|
-
return value.substring(value.lastIndexOf(".") + 1).toLowerCase();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* 文件转换 */
|
|
45
|
-
/**
|
|
46
|
-
* file转blob
|
|
47
|
-
* @param {File} file file文件
|
|
48
|
-
* @returns {Promise} 返回Promise的blob
|
|
49
|
-
*/
|
|
50
|
-
function fileToBlob(file) {
|
|
51
|
-
return new Promise((resolve, reject) => {
|
|
52
|
-
// 读取解析文件
|
|
53
|
-
let reader = new FileReader();
|
|
54
|
-
reader.readAsArrayBuffer(file);
|
|
55
|
-
|
|
56
|
-
// 加载成功
|
|
57
|
-
reader.onload = (e) => {
|
|
58
|
-
const blob = new Blob([e.target.result], { type: file.type });
|
|
59
|
-
resolve(blob);
|
|
60
|
-
};
|
|
61
|
-
// 加载失败
|
|
62
|
-
reader.onerror = function (err) {
|
|
63
|
-
console.error(err);
|
|
64
|
-
reject(err);
|
|
65
|
-
};
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* file转base64
|
|
71
|
-
* @param {File} file file文件
|
|
72
|
-
* @returns {Promise} 返回Promise的base64
|
|
73
|
-
*/
|
|
74
|
-
function fileToBase64(file) {
|
|
75
|
-
return new Promise((resolve, reject) => {
|
|
76
|
-
// 读取解析文件
|
|
77
|
-
let reader = new FileReader();
|
|
78
|
-
reader.readAsDataURL(file);
|
|
79
|
-
|
|
80
|
-
// 加载成功
|
|
81
|
-
reader.onload = function (e) {
|
|
82
|
-
resolve(e.target.result);
|
|
83
|
-
};
|
|
84
|
-
// 加载失败
|
|
85
|
-
reader.onerror = function (err) {
|
|
86
|
-
console.error(err);
|
|
87
|
-
reject(err);
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* file转url
|
|
94
|
-
* @description 适用于本地上传图片并预览,需要注意 URL.revokeObjectURL(file) 内存释放
|
|
95
|
-
* @param {File} file file文件
|
|
96
|
-
* @returns {Promise} 返回Promise的url
|
|
97
|
-
*/
|
|
98
|
-
function fileToUrl(file) {
|
|
99
|
-
return new Promise((resolve, reject) => {
|
|
100
|
-
try {
|
|
101
|
-
resolve(URL.createObjectURL(file));
|
|
102
|
-
} catch (err) {
|
|
103
|
-
// 捕捉异常
|
|
104
|
-
console.error(err);
|
|
105
|
-
URL.revokeObjectURL(file);
|
|
106
|
-
reject(err);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* url赚file
|
|
113
|
-
* @param {String} url url地址
|
|
114
|
-
* @returns {Promise} 返回Promise的file
|
|
115
|
-
*/
|
|
116
|
-
function urlToFile(url) {
|
|
117
|
-
return new Promise(async (resolve, reject) => {
|
|
118
|
-
try {
|
|
119
|
-
let res = await window.fetch(url);
|
|
120
|
-
if (res.status === 200) {
|
|
121
|
-
let blob = await res.blob();
|
|
122
|
-
let file = await blobToFile(blob);
|
|
123
|
-
resolve(file);
|
|
124
|
-
}
|
|
125
|
-
} catch (err) {
|
|
126
|
-
console.error(err);
|
|
127
|
-
reject(err);
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* blob转file
|
|
134
|
-
* @param {Blob} blob blob数据
|
|
135
|
-
* @param {String} fileName 文件名称,默认以时间戳命名
|
|
136
|
-
* @returns {Promise} 返回Promise的file
|
|
137
|
-
*/
|
|
138
|
-
function blobToFile(blob, fileName = Date.now()) {
|
|
139
|
-
return new Promise((resolve, reject) => {
|
|
140
|
-
try {
|
|
141
|
-
const mime = blob.type;
|
|
142
|
-
const size = blob.size;
|
|
143
|
-
const fileSuffix = mime.split("/")[1];
|
|
144
|
-
const file = new File([blob], `${Date.now()}.${fileSuffix}`, {
|
|
145
|
-
type: mime,
|
|
146
|
-
size: size,
|
|
147
|
-
name: `${fileName}.${fileSuffix}`,
|
|
148
|
-
lastModified: Date.now(),
|
|
149
|
-
lastModifiedDate: new Date(),
|
|
150
|
-
});
|
|
151
|
-
resolve(file);
|
|
152
|
-
} catch (err) {
|
|
153
|
-
// 捕捉异常
|
|
154
|
-
console.error(err);
|
|
155
|
-
reject(err);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* blob转文本
|
|
162
|
-
* @param {Blob} blob blob数据
|
|
163
|
-
* @returns {Promise} 返回Promise的文本
|
|
164
|
-
*/
|
|
165
|
-
function blobToText(blob) {
|
|
166
|
-
return new Promise((resolve, reject) => {
|
|
167
|
-
const reader = new FileReader();
|
|
168
|
-
reader.onload = function (event) {
|
|
169
|
-
resolve(event.target.result);
|
|
170
|
-
};
|
|
171
|
-
reader.onerror = function (error) {
|
|
172
|
-
reject(error);
|
|
173
|
-
};
|
|
174
|
-
reader.readAsText(blob);
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* blob转base64
|
|
180
|
-
* @param {Blob} blob blob数据
|
|
181
|
-
* @returns {Promise} 返回Promise的base64
|
|
182
|
-
*/
|
|
183
|
-
function blobToBase64(blob) {
|
|
184
|
-
return new Promise((resolve, reject) => {
|
|
185
|
-
// 读取解析文件
|
|
186
|
-
let reader = new FileReader();
|
|
187
|
-
reader.readAsDataURL(blob);
|
|
188
|
-
|
|
189
|
-
// 加载成功
|
|
190
|
-
reader.onload = function (e) {
|
|
191
|
-
resolve(e.target.result);
|
|
192
|
-
};
|
|
193
|
-
// 加载失败
|
|
194
|
-
reader.onerror = function (err) {
|
|
195
|
-
console.error(err);
|
|
196
|
-
reject(err);
|
|
197
|
-
};
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* base64转file
|
|
203
|
-
* @param {String} base64 base64数据
|
|
204
|
-
* @param {String} fileName 文件名称,默认以时间戳命名
|
|
205
|
-
* @returns {Promise} 返回Promise的file
|
|
206
|
-
*/
|
|
207
|
-
function base64ToFile(base64, fileName = Date.now()) {
|
|
208
|
-
return new Promise((resolve, reject) => {
|
|
209
|
-
try {
|
|
210
|
-
const arr = base64.split(",");
|
|
211
|
-
const mime = arr[0].match(/:(.*?);/)[1];
|
|
212
|
-
const fileSuffix = mime.split("/")[1];
|
|
213
|
-
const bstr = window.atob(arr[1]);
|
|
214
|
-
let n = bstr.length;
|
|
215
|
-
const u8arr = new Uint8Array(n);
|
|
216
|
-
|
|
217
|
-
while (n--) {
|
|
218
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
219
|
-
}
|
|
220
|
-
resolve(new File([u8arr], `${fileName}.${fileSuffix}`, { type: mime }));
|
|
221
|
-
} catch (err) {
|
|
222
|
-
// 捕捉异常
|
|
223
|
-
console.error(err);
|
|
224
|
-
reject(err);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* base64转成blob
|
|
231
|
-
* @param {String} base64 base64数据
|
|
232
|
-
* @returns {Promise} 返回Promise的blob
|
|
233
|
-
*/
|
|
234
|
-
function base64ToBlob(base64) {
|
|
235
|
-
return new Promise((resolve, reject) => {
|
|
236
|
-
try {
|
|
237
|
-
const arr = base64.split(",");
|
|
238
|
-
const mime = arr[0].match(/:(.*?);/)[1];
|
|
239
|
-
const bstr = window.atob(arr[1]);
|
|
240
|
-
let n = bstr.length;
|
|
241
|
-
const u8arr = new Uint8Array(n);
|
|
242
|
-
|
|
243
|
-
while (n--) {
|
|
244
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
245
|
-
}
|
|
246
|
-
resolve(new Blob([u8arr], { type: mime }));
|
|
247
|
-
} catch (err) {
|
|
248
|
-
// 捕捉异常
|
|
249
|
-
console.error(err);
|
|
250
|
-
reject(err);
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* 图片url转base64
|
|
257
|
-
* @param {String} imgUrl 图片url地址
|
|
258
|
-
* @returns {Promise} 返回Promise的base64
|
|
259
|
-
*/
|
|
260
|
-
function urlToBase64(imgUrl) {
|
|
261
|
-
return new Promise((resolve, reject) => {
|
|
262
|
-
// 设置图片
|
|
263
|
-
const img = new Image();
|
|
264
|
-
img.src = imgUrl;
|
|
265
|
-
|
|
266
|
-
// 加载成功
|
|
267
|
-
img.onload = function () {
|
|
268
|
-
// 画图
|
|
269
|
-
const canvas = document.createElement("canvas");
|
|
270
|
-
const context = canvas.getContext("2d");
|
|
271
|
-
canvas.width = img.width;
|
|
272
|
-
canvas.height = img.height;
|
|
273
|
-
context.drawImage(img, 0, 0, img.width, img.height);
|
|
274
|
-
// 转为base64
|
|
275
|
-
const base64 = canvas.toDataURL("image/png");
|
|
276
|
-
resolve(base64);
|
|
277
|
-
};
|
|
278
|
-
// 加载失败
|
|
279
|
-
img.onerror = function (err) {
|
|
280
|
-
console.error(err);
|
|
281
|
-
reject(err);
|
|
282
|
-
};
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/* 下载文件 */
|
|
287
|
-
/**
|
|
288
|
-
* 下载blob格式的文件
|
|
289
|
-
* @param {Blob} blob blob数据
|
|
290
|
-
* @param {String} fileName 下载的文件名,不写后缀名则默认为原文件类型
|
|
291
|
-
*/
|
|
292
|
-
function downloadBlobFile(blob, fileName) {
|
|
293
|
-
try {
|
|
294
|
-
const objUrl = window.URL.createObjectURL(blob);
|
|
295
|
-
const link = window.document.createElement("a");
|
|
296
|
-
link.download = fileName;
|
|
297
|
-
link.href = objUrl;
|
|
298
|
-
link.click();
|
|
299
|
-
URL.revokeObjectURL(objUrl);
|
|
300
|
-
} catch (error) {
|
|
301
|
-
console.error(error);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* 通过文件url地址下载
|
|
307
|
-
* @param {String} fileUrl url文件地址
|
|
308
|
-
* @param {String} fileName 下载的文件名,不写后缀名则默认为原文件类型
|
|
309
|
-
*/
|
|
310
|
-
function downloadFileUrl(fileUrl, fileName) {
|
|
311
|
-
try {
|
|
312
|
-
const link = window.document.createElement("a");
|
|
313
|
-
link.download = fileName;
|
|
314
|
-
link.href = fileUrl;
|
|
315
|
-
// 生成节点点击
|
|
316
|
-
window.document.body.appendChild(link);
|
|
317
|
-
link.click();
|
|
318
|
-
// 点击后移除节点
|
|
319
|
-
window.document.body.removeChild(link);
|
|
320
|
-
} catch (error) {
|
|
321
|
-
console.error(error);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
exports.base64ToBlob = base64ToBlob;
|
|
326
|
-
exports.base64ToFile = base64ToFile;
|
|
327
|
-
exports.blobToBase64 = blobToBase64;
|
|
328
|
-
exports.blobToFile = blobToFile;
|
|
329
|
-
exports.blobToText = blobToText;
|
|
330
|
-
exports.downloadBlobFile = downloadBlobFile;
|
|
331
|
-
exports.downloadFileUrl = downloadFileUrl;
|
|
332
|
-
exports.fileToBase64 = fileToBase64;
|
|
333
|
-
exports.fileToBlob = fileToBlob;
|
|
334
|
-
exports.fileToUrl = fileToUrl;
|
|
335
|
-
exports.formatFileSize = formatFileSize;
|
|
336
|
-
exports.getFileName = getFileName;
|
|
337
|
-
exports.getFileSuffix = getFileSuffix;
|
|
338
|
-
exports.urlToBase64 = urlToBase64;
|
|
339
|
-
exports.urlToFile = urlToFile;
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 防抖函数
|
|
5
|
-
* @description 事件执行后,在延迟时间内如果再次执行,会清空定时器重新延迟执行,举例:用户在输入框进行输入搜索,最终是会获取到最后一次输入,节约请求资源
|
|
6
|
-
* @param {Function} fn 目标函数
|
|
7
|
-
* @param {Number} delay 延迟时间,单位毫秒,默认 1*1000 毫秒
|
|
8
|
-
* @param {Boolean} immediate 是否立即执行,默认true
|
|
9
|
-
* @returns {Function} 返回function()
|
|
10
|
-
*/
|
|
11
|
-
function debounce(fn, delay = 1 * 1000, immediate = true) {
|
|
12
|
-
let timer;
|
|
13
|
-
return function () {
|
|
14
|
-
const _args = arguments;
|
|
15
|
-
// 先关闭定时器
|
|
16
|
-
if (timer) clearTimeout(timer);
|
|
17
|
-
// 立即执行判断
|
|
18
|
-
if (immediate) {
|
|
19
|
-
// 如果需要立即执行
|
|
20
|
-
// 开启新定时器防止短时间内再次触发
|
|
21
|
-
const canExecute = !timer;
|
|
22
|
-
timer = setTimeout(function () {
|
|
23
|
-
timer = null;
|
|
24
|
-
}, delay);
|
|
25
|
-
if (canExecute) fn.apply(this, _args);
|
|
26
|
-
} else {
|
|
27
|
-
// 如果不需要立即执行
|
|
28
|
-
// 每次触发开启新定时器即可
|
|
29
|
-
timer = setTimeout(function () {
|
|
30
|
-
fn.apply(this, _args);
|
|
31
|
-
}, delay);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* 节流函数
|
|
38
|
-
* @description 高频触发时,在指定时间间隔内只执行一次,举例:监听页面滚动,不会频繁触发,只会在固定时间内获取一次
|
|
39
|
-
* @param {Function} fn 目标函数
|
|
40
|
-
* @param {Number} interval 时间间隔,单位毫秒,默认1*1000毫秒
|
|
41
|
-
* @returns {Function} 返回function()
|
|
42
|
-
*/
|
|
43
|
-
function throttle(fn, interval = 1 * 1000) {
|
|
44
|
-
let timer;
|
|
45
|
-
return function () {
|
|
46
|
-
const _args = arguments;
|
|
47
|
-
// 有定时器则返回
|
|
48
|
-
if (timer) return;
|
|
49
|
-
timer = setTimeout(() => {
|
|
50
|
-
timer = null;
|
|
51
|
-
fn.apply(this, _args);
|
|
52
|
-
}, interval);
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* 睡眠延迟执行
|
|
58
|
-
* @description 需要配合 async/await 来达到延迟效果
|
|
59
|
-
* @param {Number} delay 延迟时间,单位毫秒,默认1*1000毫秒
|
|
60
|
-
*/
|
|
61
|
-
function sleep(delay = 1 * 1000) {
|
|
62
|
-
return new Promise((resolve) => setTimeout(resolve, delay));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
exports.debounce = debounce;
|
|
66
|
-
exports.sleep = sleep;
|
|
67
|
-
exports.throttle = throttle;
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const keyCodeMap = {
|
|
4
|
-
// 字符键
|
|
5
|
-
8: "Backspace",
|
|
6
|
-
9: "Tab",
|
|
7
|
-
13: "Enter",
|
|
8
|
-
16: "Shift",
|
|
9
|
-
17: "Ctrl",
|
|
10
|
-
18: "Alt",
|
|
11
|
-
19: "Pause",
|
|
12
|
-
20: "Caps Lock",
|
|
13
|
-
27: "Escape",
|
|
14
|
-
32: "Space",
|
|
15
|
-
33: "Page Up",
|
|
16
|
-
34: "Page Down",
|
|
17
|
-
35: "End",
|
|
18
|
-
36: "Home",
|
|
19
|
-
37: "Left",
|
|
20
|
-
38: "Up",
|
|
21
|
-
39: "Right",
|
|
22
|
-
40: "Down",
|
|
23
|
-
42: "Print Screen",
|
|
24
|
-
45: "Insert",
|
|
25
|
-
46: "Delete",
|
|
26
|
-
// 数字键
|
|
27
|
-
48: "0",
|
|
28
|
-
49: "1",
|
|
29
|
-
50: "2",
|
|
30
|
-
51: "3",
|
|
31
|
-
52: "4",
|
|
32
|
-
53: "5",
|
|
33
|
-
54: "6",
|
|
34
|
-
55: "7",
|
|
35
|
-
56: "8",
|
|
36
|
-
57: "9",
|
|
37
|
-
// 字母键
|
|
38
|
-
65: "A",
|
|
39
|
-
66: "B",
|
|
40
|
-
67: "C",
|
|
41
|
-
68: "D",
|
|
42
|
-
69: "E",
|
|
43
|
-
70: "F",
|
|
44
|
-
71: "G",
|
|
45
|
-
72: "H",
|
|
46
|
-
73: "I",
|
|
47
|
-
74: "J",
|
|
48
|
-
75: "K",
|
|
49
|
-
76: "L",
|
|
50
|
-
77: "M",
|
|
51
|
-
78: "N",
|
|
52
|
-
79: "O",
|
|
53
|
-
80: "P",
|
|
54
|
-
81: "Q",
|
|
55
|
-
82: "R",
|
|
56
|
-
83: "S",
|
|
57
|
-
84: "T",
|
|
58
|
-
85: "U",
|
|
59
|
-
86: "V",
|
|
60
|
-
87: "W",
|
|
61
|
-
88: "X",
|
|
62
|
-
89: "Y",
|
|
63
|
-
90: "Z",
|
|
64
|
-
// window
|
|
65
|
-
91: "Windows",
|
|
66
|
-
93: "Right Click",
|
|
67
|
-
// Numpad
|
|
68
|
-
96: "Numpad 0",
|
|
69
|
-
97: "Numpad 1",
|
|
70
|
-
98: "Numpad 2",
|
|
71
|
-
99: "Numpad 3",
|
|
72
|
-
100: "Numpad 4",
|
|
73
|
-
101: "Numpad 5",
|
|
74
|
-
102: "Numpad 6",
|
|
75
|
-
103: "Numpad 7",
|
|
76
|
-
104: "Numpad 8",
|
|
77
|
-
105: "Numpad 9",
|
|
78
|
-
106: "Numpad *",
|
|
79
|
-
107: "Numpad +",
|
|
80
|
-
109: "Numpad -",
|
|
81
|
-
110: "Numpad .",
|
|
82
|
-
111: "Numpad /",
|
|
83
|
-
// F功能键
|
|
84
|
-
112: "F1",
|
|
85
|
-
113: "F2",
|
|
86
|
-
114: "F3",
|
|
87
|
-
115: "F4",
|
|
88
|
-
116: "F5",
|
|
89
|
-
117: "F6",
|
|
90
|
-
118: "F7",
|
|
91
|
-
119: "F8",
|
|
92
|
-
120: "F9",
|
|
93
|
-
121: "F10",
|
|
94
|
-
122: "F11",
|
|
95
|
-
123: "F12",
|
|
96
|
-
// 特殊符号
|
|
97
|
-
144: "Num Lock",
|
|
98
|
-
145: "Scroll Lock",
|
|
99
|
-
182: "My Computer",
|
|
100
|
-
183: "My Calculator",
|
|
101
|
-
186: ";",
|
|
102
|
-
187: "=",
|
|
103
|
-
188: ",",
|
|
104
|
-
189: "-",
|
|
105
|
-
190: ".",
|
|
106
|
-
191: "/",
|
|
107
|
-
192: "`",
|
|
108
|
-
219: "[",
|
|
109
|
-
220: "\\",
|
|
110
|
-
221: "]",
|
|
111
|
-
222: "'",
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* 根据keycode获得键名
|
|
116
|
-
* @param {Number} keycode 键值
|
|
117
|
-
* @returns {String} 返回键名
|
|
118
|
-
*/
|
|
119
|
-
function getKeyName(keycode) {
|
|
120
|
-
if (keyCodeMap[keycode]) {
|
|
121
|
-
return keyCodeMap[keycode];
|
|
122
|
-
} else {
|
|
123
|
-
console.log("Unknow Key Code: " + keycode);
|
|
124
|
-
return "";
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* 根据keyname获得键值
|
|
130
|
-
* @param {Number} keyname
|
|
131
|
-
* @returns {Number} 返回键值
|
|
132
|
-
*/
|
|
133
|
-
function getKeyCode(keyname) {
|
|
134
|
-
for (let key in keyCodeMap) {
|
|
135
|
-
if (keyCodeMap[key] === keyname) {
|
|
136
|
-
return key;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
exports.getKeyCode = getKeyCode;
|
|
142
|
-
exports.getKeyName = getKeyName;
|