@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
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 姓名中间转为星号
|
|
3
|
-
* @param {String} value 姓名
|
|
4
|
-
* @returns {String} 返回转化后字符串
|
|
5
|
-
*/
|
|
6
|
-
function formatStartOfName(value) {
|
|
7
|
-
if (value.length === 2) {
|
|
8
|
-
return _formatStartOf(value, 1, 1);
|
|
9
|
-
} else if (value.length > 2) {
|
|
10
|
-
return _formatStartOf(value, 1, value.length - 2);
|
|
11
|
-
} else {
|
|
12
|
-
return value;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* 手机号码固定位数转为星号
|
|
18
|
-
* @param {String} value 手机号码
|
|
19
|
-
* @param {Number} start 前缀长度,默认3位
|
|
20
|
-
* @param {Number} len 显示星号的长度,默认4位
|
|
21
|
-
* @returns {String} 返回转化后字符串
|
|
22
|
-
*/
|
|
23
|
-
function formatStartOfMobile(value, start = 3, len = 4) {
|
|
24
|
-
return _formatStartOf(value, start, len);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* 身份证号码固定位数转为星号
|
|
29
|
-
* @param {String} value 身份证号码
|
|
30
|
-
* @param {Number} start 前缀长度,默认4位
|
|
31
|
-
* @param {Number} len 显示星号的长度,默认8位
|
|
32
|
-
* @returns {String} 返回转化后字符串
|
|
33
|
-
*/
|
|
34
|
-
function formatStartOfIDCard(value, start = 4, len = 8) {
|
|
35
|
-
return _formatStartOf(value, start, len);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* 银行卡号固定位数转为星号
|
|
40
|
-
* @param {String} value 银行卡号
|
|
41
|
-
* @param {Number} start 前缀长度,默认4位
|
|
42
|
-
* @param {Number} len 显示星号的长度,默认10位
|
|
43
|
-
* @returns {String} 返回转化后字符串
|
|
44
|
-
*/
|
|
45
|
-
function formatStartOfBankCard(value, start = 4, len = 11) {
|
|
46
|
-
return _formatStartOf(value, start, len);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* 指定位置的字符串转为星号
|
|
51
|
-
* @param {String|Number} value 参数
|
|
52
|
-
* @param {Number} start 前缀长度
|
|
53
|
-
* @param {Number} len 显示星号的长度
|
|
54
|
-
* @returns {String} 返回转化后字符串
|
|
55
|
-
*/
|
|
56
|
-
function _formatStartOf(value, start, len) {
|
|
57
|
-
value = String(value);
|
|
58
|
-
if (start > value.length) return value;
|
|
59
|
-
// len小于0和len大于剩余长度
|
|
60
|
-
let startStr = "";
|
|
61
|
-
if (len < 0) len = 0;
|
|
62
|
-
if (len > value.length - start) {
|
|
63
|
-
len = value.length - start;
|
|
64
|
-
}
|
|
65
|
-
startStr = String().padEnd(len, "*");
|
|
66
|
-
return value.substring(0, start) + startStr + value.substring(start + len);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export { formatStartOfBankCard, formatStartOfIDCard, formatStartOfMobile, formatStartOfName };
|
package/dist/es/device/index.mjs
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/* 浏览器信息 */
|
|
2
|
-
/**
|
|
3
|
-
* 获取浏览器信息
|
|
4
|
-
* @description 会获取到浏览器对应的名称以及版本
|
|
5
|
-
* @returns {Object} 返回浏览器信息
|
|
6
|
-
*/
|
|
7
|
-
function getBrowserInfo() {
|
|
8
|
-
let ua = window.navigator.userAgent.toLowerCase();
|
|
9
|
-
|
|
10
|
-
// ie
|
|
11
|
-
let ie = ua.match(/rv:([\d.]+)\) like gecko/) || ua.match(/msie ([\d\.]+)/);
|
|
12
|
-
// edge
|
|
13
|
-
let edge = ua.match(/edg\/([\d\.]+)/);
|
|
14
|
-
// firefox
|
|
15
|
-
let firefox = ua.match(/firefox\/([\d\.]+)/);
|
|
16
|
-
// opera
|
|
17
|
-
let opera = ua.match(/(?:opera|opr).([\d\.]+)/);
|
|
18
|
-
// chrome
|
|
19
|
-
let chrome = ua.match(/chrome\/([\d\.]+)/);
|
|
20
|
-
// safari
|
|
21
|
-
let safari = ua.match(/version\/([\d\.]+).*safari/);
|
|
22
|
-
|
|
23
|
-
// 判断类型
|
|
24
|
-
if (ie) return { name: "ie", version: ie[1] };
|
|
25
|
-
if (edge) return { name: "edge", version: edge[1] };
|
|
26
|
-
if (firefox) return { name: "firefox", version: firefox[1] };
|
|
27
|
-
if (opera) return { name: "opera", version: opera[1] };
|
|
28
|
-
if (chrome) return { name: "chrome", version: chrome[1] };
|
|
29
|
-
if (safari) return { name: "safari", version: safari[1] };
|
|
30
|
-
return "unknown";
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* 设备类型 */
|
|
34
|
-
/**
|
|
35
|
-
* 判断是pc端
|
|
36
|
-
* @returns {Boolean} 返回true和false
|
|
37
|
-
*/
|
|
38
|
-
function isPc() {
|
|
39
|
-
return !isPhone();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* 判断是手机端
|
|
44
|
-
* @description 包含 android、iphone、黑莓手机、微软手机 等多种操作系统机型
|
|
45
|
-
* @returns {Boolean} 返回true和false
|
|
46
|
-
*/
|
|
47
|
-
function isPhone() {
|
|
48
|
-
let ua = window.navigator.userAgent;
|
|
49
|
-
return /Android|webOS|iPhone|iPod|BlackBerry|Windows Phone|IEMobile/i.test(ua);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/* 操作系统类型 */
|
|
53
|
-
/**
|
|
54
|
-
* 判断是 android
|
|
55
|
-
* @returns {Boolean} 返回true和false
|
|
56
|
-
*/
|
|
57
|
-
function isAndroid() {
|
|
58
|
-
let ua = window.navigator.userAgent;
|
|
59
|
-
return /Android|BlackBerry/i.test(ua);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* 判断是 ios
|
|
64
|
-
* @returns {Boolean} 返回true和false
|
|
65
|
-
*/
|
|
66
|
-
function isIos() {
|
|
67
|
-
let ua = window.navigator.userAgent;
|
|
68
|
-
return /iPhone|iPad|iPod|iOS/i.test(ua);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* 判断是 windows phone
|
|
73
|
-
* @returns {Boolean} 返回true和false
|
|
74
|
-
*/
|
|
75
|
-
function isWindowsPhone() {
|
|
76
|
-
let ua = window.navigator.userAgent;
|
|
77
|
-
return /Windows Phone/i.test(ua);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* 判断是 windows
|
|
82
|
-
* @returns {Boolean} 返回true和false
|
|
83
|
-
*/
|
|
84
|
-
function isWindows() {
|
|
85
|
-
let ua = window.navigator.userAgent;
|
|
86
|
-
return /win/i.test(ua);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* 判断是 linux
|
|
91
|
-
* @returns {Boolean} 返回true和false
|
|
92
|
-
*/
|
|
93
|
-
function isLinux() {
|
|
94
|
-
let ua = window.navigator.userAgent;
|
|
95
|
-
return /linux/i.test(ua);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* 判断是 Mac
|
|
100
|
-
* @returns {Boolean} 返回true和false
|
|
101
|
-
*/
|
|
102
|
-
function isMac() {
|
|
103
|
-
let ua = window.navigator.userAgent;
|
|
104
|
-
return /mac/i.test(ua);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/* 苹果设备类型 */
|
|
108
|
-
/**
|
|
109
|
-
* 判断是iphone
|
|
110
|
-
*@returns {Boolean} 返回true和false
|
|
111
|
-
*/
|
|
112
|
-
function isIphone() {
|
|
113
|
-
let ua = window.navigator.userAgent;
|
|
114
|
-
return /iPhone/i.test(ua);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* 判断是ipad
|
|
119
|
-
*@return {Boolean} 返回true和false
|
|
120
|
-
*/
|
|
121
|
-
function isIpad() {
|
|
122
|
-
let ua = window.navigator.userAgent;
|
|
123
|
-
return /iPod/i.test(ua);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* 手机浏览器类型 */
|
|
127
|
-
/**
|
|
128
|
-
* 判断是微信内置浏览器
|
|
129
|
-
* @returns {Boolean} 返回true和false
|
|
130
|
-
*/
|
|
131
|
-
function isWeixin() {
|
|
132
|
-
let ua = window.navigator.userAgent;
|
|
133
|
-
return /MicroMessenger/i.test(ua);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* 判断是QQ内置浏览器
|
|
138
|
-
* @returns {Boolean} 返回true和false
|
|
139
|
-
*/
|
|
140
|
-
function isQQ() {
|
|
141
|
-
let ua = window.navigator.userAgent;
|
|
142
|
-
return /QQ/i.test(ua);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
export { getBrowserInfo, isAndroid, isIos, isIpad, isIphone, isLinux, isMac, isPc, isPhone, isQQ, isWeixin, isWindows, isWindowsPhone };
|
package/dist/es/dom/index.mjs
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/* Class操作 */
|
|
2
|
-
/**
|
|
3
|
-
* 判断元素包含某个类名
|
|
4
|
-
* @param {Element} elem 元素
|
|
5
|
-
* @param {String} className 类名
|
|
6
|
-
* @return {Boolean} 返回true和false
|
|
7
|
-
*/
|
|
8
|
-
function hasClass(elem, className) {
|
|
9
|
-
return elem.className.indexOf(className) > 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* 元素添加类名
|
|
14
|
-
* @param {Element} elem 元素
|
|
15
|
-
* @param {String} className 类名
|
|
16
|
-
*/
|
|
17
|
-
function addClass(elem, className) {
|
|
18
|
-
if (!hasClass(elem, className)) {
|
|
19
|
-
elem.className += " " + className;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 元素删除类名
|
|
25
|
-
* @param {Element} elem 元素
|
|
26
|
-
* @param {String} className 类名
|
|
27
|
-
*/
|
|
28
|
-
function removeClass(elem, className) {
|
|
29
|
-
if (hasClass(elem, className)) {
|
|
30
|
-
elem.className = elem.className.replace(new RegExp(className, "gm"), "");
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* 元素替换类名
|
|
36
|
-
* @param {Element} elem 元素
|
|
37
|
-
* @param {String} newClassName 新的类名
|
|
38
|
-
* @param {String} oldClassName 被替换掉的旧类名
|
|
39
|
-
*/
|
|
40
|
-
function replaceClass(elem, newClassName, oldClassName) {
|
|
41
|
-
removeClass(elem, oldClassName);
|
|
42
|
-
addClass(elem, newClassName);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/* Style操作 */
|
|
46
|
-
/**
|
|
47
|
-
* 添加元素的style样式
|
|
48
|
-
* @param {Element} elem 元素
|
|
49
|
-
* @param {Object} styles 样式属性集合
|
|
50
|
-
*/
|
|
51
|
-
function addStyle(elem, styles = {}) {
|
|
52
|
-
if (!elem) return;
|
|
53
|
-
for (let key in styles) {
|
|
54
|
-
elem.style[key] = styles[key];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* 获取元素的style样式
|
|
60
|
-
* @param {Element} elem 元素
|
|
61
|
-
* @param {String} name 属性
|
|
62
|
-
* @returns {String} 返回样式的值
|
|
63
|
-
*/
|
|
64
|
-
function getStyle(elem, name) {
|
|
65
|
-
if (!elem) return;
|
|
66
|
-
return elem.style[name];
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* 删除元素的style样式
|
|
71
|
-
* @param {Element} elem 元素
|
|
72
|
-
* @param {String} name 属性
|
|
73
|
-
*/
|
|
74
|
-
function removeStyle(elem, name) {
|
|
75
|
-
if (!elem) return;
|
|
76
|
-
elem.style.removeProperty(name);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* Html转码 */
|
|
80
|
-
/**
|
|
81
|
-
* html标签转义
|
|
82
|
-
* @param {String} htmlStr html字符串
|
|
83
|
-
* @returns {String} 返回转义后的字符串
|
|
84
|
-
*/
|
|
85
|
-
function htmlEncode(htmlStr) {
|
|
86
|
-
const temp = {
|
|
87
|
-
"<": "<",
|
|
88
|
-
">": ">",
|
|
89
|
-
"&": "&",
|
|
90
|
-
"(": "(",
|
|
91
|
-
")": ")",
|
|
92
|
-
"/": "/",
|
|
93
|
-
" ": " ",
|
|
94
|
-
'"': """,
|
|
95
|
-
"'": "'",
|
|
96
|
-
};
|
|
97
|
-
return htmlStr.replace(/[<>&|()\/ '"]/g, function (c) {
|
|
98
|
-
return temp[c];
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* html标签解码
|
|
104
|
-
* @param {String} htmlStr html字符串
|
|
105
|
-
* @returns {String} 返回解析后的字符串
|
|
106
|
-
*/
|
|
107
|
-
function htmlDecode(htmlStr) {
|
|
108
|
-
const temp = {
|
|
109
|
-
"<": "<",
|
|
110
|
-
">": ">",
|
|
111
|
-
"&": "&",
|
|
112
|
-
"(": "(",
|
|
113
|
-
")": ")",
|
|
114
|
-
"/": "/",
|
|
115
|
-
" ": " ",
|
|
116
|
-
""": '"',
|
|
117
|
-
"'": "'",
|
|
118
|
-
};
|
|
119
|
-
return htmlStr.replace(/(<|>|&|(|)|/| |"|')/gi, function (all, t) {
|
|
120
|
-
return temp[t];
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/* 复制剪切板 */
|
|
125
|
-
/**
|
|
126
|
-
* 复制文本到剪贴板
|
|
127
|
-
* @param {String} text 文本
|
|
128
|
-
* @description 仅支持谷歌等新浏览器
|
|
129
|
-
* @returns {Promise} 返回Promise的复制成功和失败
|
|
130
|
-
*/
|
|
131
|
-
function copyText(text) {
|
|
132
|
-
// 谷歌等新版本浏览器
|
|
133
|
-
return new Promise((resolve, reject) => {
|
|
134
|
-
navigator.clipboard
|
|
135
|
-
.writeText(text)
|
|
136
|
-
.then(() => {
|
|
137
|
-
resolve(text);
|
|
138
|
-
})
|
|
139
|
-
.catch((error) => {
|
|
140
|
-
console.error("copy error!");
|
|
141
|
-
reject(error);
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* 从剪贴板获取文本
|
|
148
|
-
* @description 仅支持谷歌等新浏览器
|
|
149
|
-
* @returns {Promise} 返回Promise的剪切板内容
|
|
150
|
-
*/
|
|
151
|
-
function getCopyText() {
|
|
152
|
-
return new Promise((resolve, reject) => {
|
|
153
|
-
navigator.clipboard
|
|
154
|
-
.readText()
|
|
155
|
-
.then((text) => {
|
|
156
|
-
resolve(text);
|
|
157
|
-
})
|
|
158
|
-
.catch((error) => {
|
|
159
|
-
reject(error);
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
export { addClass, addStyle, copyText, getCopyText, getStyle, hasClass, htmlDecode, htmlEncode, removeClass, removeStyle, replaceClass };
|
package/dist/es/file/index.mjs
DELETED
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
import { isEmpty } from '../validate/index.mjs';
|
|
2
|
-
|
|
3
|
-
/* 文件信息处理 */
|
|
4
|
-
/**
|
|
5
|
-
* 格式化文件大小自动转为 B,KB,MB,GB
|
|
6
|
-
* @param {Number} size 文件的大小,单位byte字节
|
|
7
|
-
* @returns {String} 返回格式化后的字符串
|
|
8
|
-
*/
|
|
9
|
-
function formatFileSize(size) {
|
|
10
|
-
if (isEmpty(size)) return "0B";
|
|
11
|
-
if (size < 1024) {
|
|
12
|
-
return size + "B";
|
|
13
|
-
} else if (size < 1024 * 1024) {
|
|
14
|
-
return (size / 1024).toFixed(2) + "KB";
|
|
15
|
-
} else if (size < 1024 * 1024 * 1024) {
|
|
16
|
-
return (size / (1024 * 1024)).toFixed(2) + "MB";
|
|
17
|
-
} else {
|
|
18
|
-
return (size / (1024 * 1024 * 1024)).toFixed(2) + "GB";
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* 获得文件名称
|
|
24
|
-
* @param {String} fileName 文件的全名称,例如:测试图片.jpg
|
|
25
|
-
* @returns {String} 返回文件的名称
|
|
26
|
-
*/
|
|
27
|
-
function getFileName(fileName) {
|
|
28
|
-
if (isEmpty(fileName)) return;
|
|
29
|
-
return fileName.substring(0, fileName.lastIndexOf("."));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* 获得文件后缀名
|
|
34
|
-
* @param {String} value 文件地址路径或者文件全名称,例如:http://xxx.com/mytest.jpg,测试图片.jpg
|
|
35
|
-
* @returns {String} 返回文件后缀名
|
|
36
|
-
*/
|
|
37
|
-
function getFileSuffix(value) {
|
|
38
|
-
if (isEmpty(value)) return;
|
|
39
|
-
return value.substring(value.lastIndexOf(".") + 1).toLowerCase();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/* 文件转换 */
|
|
43
|
-
/**
|
|
44
|
-
* file转blob
|
|
45
|
-
* @param {File} file file文件
|
|
46
|
-
* @returns {Promise} 返回Promise的blob
|
|
47
|
-
*/
|
|
48
|
-
function fileToBlob(file) {
|
|
49
|
-
return new Promise((resolve, reject) => {
|
|
50
|
-
// 读取解析文件
|
|
51
|
-
let reader = new FileReader();
|
|
52
|
-
reader.readAsArrayBuffer(file);
|
|
53
|
-
|
|
54
|
-
// 加载成功
|
|
55
|
-
reader.onload = (e) => {
|
|
56
|
-
const blob = new Blob([e.target.result], { type: file.type });
|
|
57
|
-
resolve(blob);
|
|
58
|
-
};
|
|
59
|
-
// 加载失败
|
|
60
|
-
reader.onerror = function (err) {
|
|
61
|
-
console.error(err);
|
|
62
|
-
reject(err);
|
|
63
|
-
};
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* file转base64
|
|
69
|
-
* @param {File} file file文件
|
|
70
|
-
* @returns {Promise} 返回Promise的base64
|
|
71
|
-
*/
|
|
72
|
-
function fileToBase64(file) {
|
|
73
|
-
return new Promise((resolve, reject) => {
|
|
74
|
-
// 读取解析文件
|
|
75
|
-
let reader = new FileReader();
|
|
76
|
-
reader.readAsDataURL(file);
|
|
77
|
-
|
|
78
|
-
// 加载成功
|
|
79
|
-
reader.onload = function (e) {
|
|
80
|
-
resolve(e.target.result);
|
|
81
|
-
};
|
|
82
|
-
// 加载失败
|
|
83
|
-
reader.onerror = function (err) {
|
|
84
|
-
console.error(err);
|
|
85
|
-
reject(err);
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* file转url
|
|
92
|
-
* @description 适用于本地上传图片并预览,需要注意 URL.revokeObjectURL(file) 内存释放
|
|
93
|
-
* @param {File} file file文件
|
|
94
|
-
* @returns {Promise} 返回Promise的url
|
|
95
|
-
*/
|
|
96
|
-
function fileToUrl(file) {
|
|
97
|
-
return new Promise((resolve, reject) => {
|
|
98
|
-
try {
|
|
99
|
-
resolve(URL.createObjectURL(file));
|
|
100
|
-
} catch (err) {
|
|
101
|
-
// 捕捉异常
|
|
102
|
-
console.error(err);
|
|
103
|
-
URL.revokeObjectURL(file);
|
|
104
|
-
reject(err);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* url赚file
|
|
111
|
-
* @param {String} url url地址
|
|
112
|
-
* @returns {Promise} 返回Promise的file
|
|
113
|
-
*/
|
|
114
|
-
function urlToFile(url) {
|
|
115
|
-
return new Promise(async (resolve, reject) => {
|
|
116
|
-
try {
|
|
117
|
-
let res = await window.fetch(url);
|
|
118
|
-
if (res.status === 200) {
|
|
119
|
-
let blob = await res.blob();
|
|
120
|
-
let file = await blobToFile(blob);
|
|
121
|
-
resolve(file);
|
|
122
|
-
}
|
|
123
|
-
} catch (err) {
|
|
124
|
-
console.error(err);
|
|
125
|
-
reject(err);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* blob转file
|
|
132
|
-
* @param {Blob} blob blob数据
|
|
133
|
-
* @param {String} fileName 文件名称,默认以时间戳命名
|
|
134
|
-
* @returns {Promise} 返回Promise的file
|
|
135
|
-
*/
|
|
136
|
-
function blobToFile(blob, fileName = Date.now()) {
|
|
137
|
-
return new Promise((resolve, reject) => {
|
|
138
|
-
try {
|
|
139
|
-
const mime = blob.type;
|
|
140
|
-
const size = blob.size;
|
|
141
|
-
const fileSuffix = mime.split("/")[1];
|
|
142
|
-
const file = new File([blob], `${Date.now()}.${fileSuffix}`, {
|
|
143
|
-
type: mime,
|
|
144
|
-
size: size,
|
|
145
|
-
name: `${fileName}.${fileSuffix}`,
|
|
146
|
-
lastModified: Date.now(),
|
|
147
|
-
lastModifiedDate: new Date(),
|
|
148
|
-
});
|
|
149
|
-
resolve(file);
|
|
150
|
-
} catch (err) {
|
|
151
|
-
// 捕捉异常
|
|
152
|
-
console.error(err);
|
|
153
|
-
reject(err);
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* blob转文本
|
|
160
|
-
* @param {Blob} blob blob数据
|
|
161
|
-
* @returns {Promise} 返回Promise的文本
|
|
162
|
-
*/
|
|
163
|
-
function blobToText(blob) {
|
|
164
|
-
return new Promise((resolve, reject) => {
|
|
165
|
-
const reader = new FileReader();
|
|
166
|
-
reader.onload = function (event) {
|
|
167
|
-
resolve(event.target.result);
|
|
168
|
-
};
|
|
169
|
-
reader.onerror = function (error) {
|
|
170
|
-
reject(error);
|
|
171
|
-
};
|
|
172
|
-
reader.readAsText(blob);
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* blob转base64
|
|
178
|
-
* @param {Blob} blob blob数据
|
|
179
|
-
* @returns {Promise} 返回Promise的base64
|
|
180
|
-
*/
|
|
181
|
-
function blobToBase64(blob) {
|
|
182
|
-
return new Promise((resolve, reject) => {
|
|
183
|
-
// 读取解析文件
|
|
184
|
-
let reader = new FileReader();
|
|
185
|
-
reader.readAsDataURL(blob);
|
|
186
|
-
|
|
187
|
-
// 加载成功
|
|
188
|
-
reader.onload = function (e) {
|
|
189
|
-
resolve(e.target.result);
|
|
190
|
-
};
|
|
191
|
-
// 加载失败
|
|
192
|
-
reader.onerror = function (err) {
|
|
193
|
-
console.error(err);
|
|
194
|
-
reject(err);
|
|
195
|
-
};
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* base64转file
|
|
201
|
-
* @param {String} base64 base64数据
|
|
202
|
-
* @param {String} fileName 文件名称,默认以时间戳命名
|
|
203
|
-
* @returns {Promise} 返回Promise的file
|
|
204
|
-
*/
|
|
205
|
-
function base64ToFile(base64, fileName = Date.now()) {
|
|
206
|
-
return new Promise((resolve, reject) => {
|
|
207
|
-
try {
|
|
208
|
-
const arr = base64.split(",");
|
|
209
|
-
const mime = arr[0].match(/:(.*?);/)[1];
|
|
210
|
-
const fileSuffix = mime.split("/")[1];
|
|
211
|
-
const bstr = window.atob(arr[1]);
|
|
212
|
-
let n = bstr.length;
|
|
213
|
-
const u8arr = new Uint8Array(n);
|
|
214
|
-
|
|
215
|
-
while (n--) {
|
|
216
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
217
|
-
}
|
|
218
|
-
resolve(new File([u8arr], `${fileName}.${fileSuffix}`, { type: mime }));
|
|
219
|
-
} catch (err) {
|
|
220
|
-
// 捕捉异常
|
|
221
|
-
console.error(err);
|
|
222
|
-
reject(err);
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* base64转成blob
|
|
229
|
-
* @param {String} base64 base64数据
|
|
230
|
-
* @returns {Promise} 返回Promise的blob
|
|
231
|
-
*/
|
|
232
|
-
function base64ToBlob(base64) {
|
|
233
|
-
return new Promise((resolve, reject) => {
|
|
234
|
-
try {
|
|
235
|
-
const arr = base64.split(",");
|
|
236
|
-
const mime = arr[0].match(/:(.*?);/)[1];
|
|
237
|
-
const bstr = window.atob(arr[1]);
|
|
238
|
-
let n = bstr.length;
|
|
239
|
-
const u8arr = new Uint8Array(n);
|
|
240
|
-
|
|
241
|
-
while (n--) {
|
|
242
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
243
|
-
}
|
|
244
|
-
resolve(new Blob([u8arr], { type: mime }));
|
|
245
|
-
} catch (err) {
|
|
246
|
-
// 捕捉异常
|
|
247
|
-
console.error(err);
|
|
248
|
-
reject(err);
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* 图片url转base64
|
|
255
|
-
* @param {String} imgUrl 图片url地址
|
|
256
|
-
* @returns {Promise} 返回Promise的base64
|
|
257
|
-
*/
|
|
258
|
-
function urlToBase64(imgUrl) {
|
|
259
|
-
return new Promise((resolve, reject) => {
|
|
260
|
-
// 设置图片
|
|
261
|
-
const img = new Image();
|
|
262
|
-
img.src = imgUrl;
|
|
263
|
-
|
|
264
|
-
// 加载成功
|
|
265
|
-
img.onload = function () {
|
|
266
|
-
// 画图
|
|
267
|
-
const canvas = document.createElement("canvas");
|
|
268
|
-
const context = canvas.getContext("2d");
|
|
269
|
-
canvas.width = img.width;
|
|
270
|
-
canvas.height = img.height;
|
|
271
|
-
context.drawImage(img, 0, 0, img.width, img.height);
|
|
272
|
-
// 转为base64
|
|
273
|
-
const base64 = canvas.toDataURL("image/png");
|
|
274
|
-
resolve(base64);
|
|
275
|
-
};
|
|
276
|
-
// 加载失败
|
|
277
|
-
img.onerror = function (err) {
|
|
278
|
-
console.error(err);
|
|
279
|
-
reject(err);
|
|
280
|
-
};
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/* 下载文件 */
|
|
285
|
-
/**
|
|
286
|
-
* 下载blob格式的文件
|
|
287
|
-
* @param {Blob} blob blob数据
|
|
288
|
-
* @param {String} fileName 下载的文件名,不写后缀名则默认为原文件类型
|
|
289
|
-
*/
|
|
290
|
-
function downloadBlobFile(blob, fileName) {
|
|
291
|
-
try {
|
|
292
|
-
const objUrl = window.URL.createObjectURL(blob);
|
|
293
|
-
const link = window.document.createElement("a");
|
|
294
|
-
link.download = fileName;
|
|
295
|
-
link.href = objUrl;
|
|
296
|
-
link.click();
|
|
297
|
-
URL.revokeObjectURL(objUrl);
|
|
298
|
-
} catch (error) {
|
|
299
|
-
console.error(error);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* 通过文件url地址下载
|
|
305
|
-
* @param {String} fileUrl url文件地址
|
|
306
|
-
* @param {String} fileName 下载的文件名,不写后缀名则默认为原文件类型
|
|
307
|
-
*/
|
|
308
|
-
function downloadFileUrl(fileUrl, fileName) {
|
|
309
|
-
try {
|
|
310
|
-
const link = window.document.createElement("a");
|
|
311
|
-
link.download = fileName;
|
|
312
|
-
link.href = fileUrl;
|
|
313
|
-
// 生成节点点击
|
|
314
|
-
window.document.body.appendChild(link);
|
|
315
|
-
link.click();
|
|
316
|
-
// 点击后移除节点
|
|
317
|
-
window.document.body.removeChild(link);
|
|
318
|
-
} catch (error) {
|
|
319
|
-
console.error(error);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
export { base64ToBlob, base64ToFile, blobToBase64, blobToFile, blobToText, downloadBlobFile, downloadFileUrl, fileToBase64, fileToBlob, fileToUrl, formatFileSize, getFileName, getFileSuffix, urlToBase64, urlToFile };
|