util-helpers 4.0.6 → 4.2.0

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.
Files changed (50) hide show
  1. package/README.md +10 -51
  2. package/dist/util-helpers.js +230 -64
  3. package/dist/util-helpers.min.js +1 -1
  4. package/dist/util-helpers.min.js.map +1 -1
  5. package/esm/blobToDataURL.js +43 -0
  6. package/esm/dataURLToBlob.js +31 -0
  7. package/esm/divide.js +17 -8
  8. package/esm/formatBankCard.js +1 -1
  9. package/esm/formatMoney.js +7 -5
  10. package/esm/index.js +11 -0
  11. package/esm/isBusinessLicense.js +2 -2
  12. package/esm/isSocialCreditCode.js +2 -2
  13. package/esm/minus.js +17 -8
  14. package/esm/parseIdCard.js +1 -1
  15. package/esm/plus.js +17 -8
  16. package/esm/replaceChar.js +1 -1
  17. package/esm/setDataURLPrefix.js +30 -0
  18. package/esm/times.js +17 -8
  19. package/esm/utils/convertToString.js +2 -11
  20. package/esm/utils/math.util.js +4 -5
  21. package/esm/waitTime.js +26 -0
  22. package/lib/blobToDataURL.js +51 -0
  23. package/lib/dataURLToBlob.js +39 -0
  24. package/lib/divide.js +29 -8
  25. package/lib/formatBankCard.js +1 -1
  26. package/lib/formatMoney.js +6 -5
  27. package/lib/index.js +32 -0
  28. package/lib/isBusinessLicense.js +2 -2
  29. package/lib/isSocialCreditCode.js +2 -2
  30. package/lib/minus.js +29 -8
  31. package/lib/parseIdCard.js +1 -1
  32. package/lib/plus.js +29 -8
  33. package/lib/replaceChar.js +1 -1
  34. package/lib/setDataURLPrefix.js +38 -0
  35. package/lib/times.js +29 -8
  36. package/lib/utils/convertToString.js +2 -12
  37. package/lib/utils/math.util.js +4 -3
  38. package/lib/waitTime.js +34 -0
  39. package/package.json +2 -2
  40. package/types/blobToDataURL.d.ts +25 -0
  41. package/types/dataURLToBlob.d.ts +15 -0
  42. package/types/divide.d.ts +2 -4
  43. package/types/index.d.ts +4 -0
  44. package/types/minus.d.ts +2 -4
  45. package/types/plus.d.ts +2 -4
  46. package/types/setDataURLPrefix.d.ts +25 -0
  47. package/types/times.d.ts +2 -4
  48. package/types/utils/convertToString.d.ts +2 -2
  49. package/types/utils/math.util.d.ts +7 -0
  50. package/types/waitTime.d.ts +20 -0
package/esm/divide.js CHANGED
@@ -1,14 +1,14 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import { strip, digitLength, float2Fixed, checkBoundary } from './utils/math.util';
2
3
  import times from './times';
4
+ import { isNumber, isNaN, isString } from './utils/type';
3
5
  /**
4
6
  * 精确除法,支持多个数相除
5
7
  *
6
8
  * @static
7
9
  * @alias module:Math.divide
8
10
  * @since 3.1.0
9
- * @param {number|string} num1 除数
10
- * @param {number|string} num2 被除数
11
- * @param {...number|string} others 其余被除数
11
+ * @param {...number|string} nums 除数和被除数
12
12
  * @returns {number} 商数
13
13
  * @example
14
14
  *
@@ -22,14 +22,23 @@ import times from './times';
22
22
  * // => 1
23
23
  */
24
24
 
25
- function divide(num1, num2) {
26
- for (var _len = arguments.length, others = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
27
- others[_key - 2] = arguments[_key];
25
+ function divide() {
26
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ nums[_key] = arguments[_key];
28
28
  }
29
29
 
30
- if (others.length > 0) {
30
+ var num1 = nums[0],
31
+ num2 = nums[1],
32
+ rest = nums.slice(2);
33
+
34
+ if (rest.length > 0) {
35
+ return divide.apply(void 0, [divide(num1, num2)].concat(_toConsumableArray(rest)));
36
+ } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
37
+
38
+
39
+ if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
31
40
  // @ts-ignore
32
- return divide.apply(void 0, [divide(num1, num2)].concat(others));
41
+ return num1;
33
42
  }
34
43
 
35
44
  var num1Changed = float2Fixed(num1);
@@ -42,7 +42,7 @@ function formatBankCard() {
42
42
  var realValue = bankCardNo.replace(regChar, '');
43
43
  var needRemoveLastChar = realValue.length % length === 0;
44
44
  var str = realValue.replace(reg, "$1".concat(_char));
45
- return needRemoveLastChar ? str.substr(0, str.length - 1) : str;
45
+ return needRemoveLastChar ? str.substring(0, str.length - 1) : str;
46
46
  }
47
47
 
48
48
  export default formatBankCard;
@@ -1,6 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { checkBoundary, scientificToNumber, isScientificNumber } from './utils/math.util';
3
3
  import isNaN from './utils/type/isNaN';
4
+ import { trimLeftZero } from './utils/math.util';
4
5
  import { config } from './utils/config';
5
6
  var reg = /^[+-]?\d*\.?\d*$/;
6
7
  /**
@@ -8,7 +9,7 @@ var reg = /^[+-]?\d*\.?\d*$/;
8
9
  *
9
10
  * @private
10
11
  * @param {string} num
11
- * @returns 是否为数字
12
+ * @returns 是否为数字
12
13
  */
13
14
 
14
15
  function checkNumber(num) {
@@ -40,10 +41,11 @@ function checkNumber(num) {
40
41
 
41
42
  function formatInt(intStr, thousand) {
42
43
  var txt = '';
43
- intStr = intStr[0] === '+' ? intStr.substr(1) : intStr; // 去掉+符号
44
+ intStr = trimLeftZero(intStr);
45
+ intStr = intStr[0] === '+' ? intStr.substring(1) : intStr; // 去掉+符号
44
46
 
45
47
  var negativeSymbol = Number(intStr) < 0 ? '-' : '';
46
- var reArr = negativeSymbol ? intStr.substr(1).split('').reverse() : intStr.split('').reverse();
48
+ var reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();
47
49
 
48
50
  for (var i = 0; i < reArr.length; i++) {
49
51
  txt += reArr[i] + ((i + 1) % 3 === 0 && i + 1 !== reArr.length ? thousand : '');
@@ -72,9 +74,9 @@ function formatDec(decStr, precision, decimal) {
72
74
 
73
75
  if (decStr && Number(decStr) > 0) {
74
76
  var tmpNum = parseFloat('0.' + decStr);
75
- ret = tmpNum.toFixed(precision).substr(2);
77
+ ret = tmpNum.toFixed(precision).substring(2);
76
78
  } else {
77
- ret = zero.toFixed(precision).substr(2);
79
+ ret = zero.toFixed(precision).substring(2);
78
80
  }
79
81
 
80
82
  return decimal + ret;
package/esm/index.js CHANGED
@@ -38,6 +38,9 @@ export { default as replaceChar } from './replaceChar';
38
38
  export { default as numberToChinese } from './numberToChinese';
39
39
  export { default as bytesToSize } from './bytesToSize';
40
40
  export { default as parseIdCard } from './parseIdCard';
41
+ export { default as blobToDataURL } from './blobToDataURL';
42
+ export { default as dataURLToBlob } from './dataURLToBlob';
43
+ export { default as setDataURLPrefix } from './setDataURLPrefix';
41
44
  /**
42
45
  * 数学计算,修正浮点数计算问题
43
46
  *
@@ -52,6 +55,14 @@ export { default as minus } from './minus';
52
55
  export { default as times } from './times';
53
56
  export { default as divide } from './divide';
54
57
  export { default as round } from './round';
58
+ /**
59
+ * 其他
60
+ *
61
+ * @module Other
62
+ * @since 4.2.0
63
+ */
64
+
65
+ export { default as waitTime } from './waitTime';
55
66
  /**
56
67
  * 调试相关
57
68
  *
@@ -75,9 +75,9 @@ function isBusinessLicense(value) {
75
75
  } // 前14位
76
76
 
77
77
 
78
- var preCode = valueStr.substr(0, 14); // 校验码
78
+ var preCode = valueStr.substring(0, 14); // 校验码
79
79
 
80
- var lastCode = valueStr.substr(-1); // 计算校验码
80
+ var lastCode = valueStr.substring(valueStr.length - 1); // 计算校验码
81
81
 
82
82
  var checkCode = sumCheckCode(preCode);
83
83
  return lastCode === String(checkCode);
@@ -94,9 +94,9 @@ function isSocialCreditCode(value) {
94
94
  } // 前17位
95
95
 
96
96
 
97
- var preCode = valueStr.substr(0, 17); // 校验码
97
+ var preCode = valueStr.substring(0, 17); // 校验码
98
98
 
99
- var lastCode = valueStr.substr(-1); // 计算校验码
99
+ var lastCode = valueStr.substring(valueStr.length - 1); // 计算校验码
100
100
 
101
101
  var checkCode = sumCheckCode(preCode);
102
102
  return lastCode === checkCode;
package/esm/minus.js CHANGED
@@ -1,14 +1,14 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import { digitLength } from './utils/math.util';
2
3
  import times from './times';
4
+ import { isNumber, isNaN, isString } from './utils/type';
3
5
  /**
4
6
  * 精确减法,支持多个数相减
5
7
  *
6
8
  * @static
7
9
  * @alias module:Math.minus
8
10
  * @since 3.1.0
9
- * @param {number|string} num1 相减的第一个数
10
- * @param {number|string} num2 相减的第二个数
11
- * @param {...number|string} others 相减的第其余数
11
+ * @param {...number|string} nums 相减的数
12
12
  * @returns {number} 差
13
13
  * @example
14
14
  *
@@ -22,14 +22,23 @@ import times from './times';
22
22
  * // => 0
23
23
  */
24
24
 
25
- function minus(num1, num2) {
26
- for (var _len = arguments.length, others = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
27
- others[_key - 2] = arguments[_key];
25
+ function minus() {
26
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ nums[_key] = arguments[_key];
28
28
  }
29
29
 
30
- if (others.length > 0) {
30
+ var num1 = nums[0],
31
+ num2 = nums[1],
32
+ rest = nums.slice(2);
33
+
34
+ if (rest.length > 0) {
35
+ return minus.apply(void 0, [minus(num1, num2)].concat(_toConsumableArray(rest)));
36
+ } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
37
+
38
+
39
+ if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
31
40
  // @ts-ignore
32
- return minus.apply(void 0, [minus(num1, num2)].concat(others));
41
+ return num1;
33
42
  }
34
43
 
35
44
  var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
@@ -124,7 +124,7 @@ function parseIdCard(id) {
124
124
  }
125
125
 
126
126
  var birthday = "".concat(origin.year, "-").concat(origin.month, "-").concat(origin.day);
127
- var gender = Number(origin.gender) % 2 === 0 ? '女' : '男'; // const region = Regions.find(item => item[0] === origin.province?.substr(0, 1));
127
+ var gender = Number(origin.gender) % 2 === 0 ? '女' : '男'; // const region = Regions.find(item => item[0] === origin.province?.substring(0, 1));
128
128
 
129
129
  return {
130
130
  // region,
package/esm/plus.js CHANGED
@@ -1,14 +1,14 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import { digitLength } from './utils/math.util';
2
3
  import times from './times';
4
+ import { isNumber, isNaN, isString } from './utils/type';
3
5
  /**
4
6
  * 精确加法,支持多个数相加
5
7
  *
6
8
  * @static
7
9
  * @alias module:Math.plus
8
10
  * @since 3.1.0
9
- * @param {number|string} num1 相加的第一个数
10
- * @param {number|string} num2 相加的第二个数
11
- * @param {...number|string} others 相加的其余数
11
+ * @param {...number|string} nums 相加的数
12
12
  * @returns {number} 总和
13
13
  * @example
14
14
  *
@@ -22,14 +22,23 @@ import times from './times';
22
22
  * // => 1
23
23
  */
24
24
 
25
- function plus(num1, num2) {
26
- for (var _len = arguments.length, others = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
27
- others[_key - 2] = arguments[_key];
25
+ function plus() {
26
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ nums[_key] = arguments[_key];
28
28
  }
29
29
 
30
- if (others.length > 0) {
30
+ var num1 = nums[0],
31
+ num2 = nums[1],
32
+ rest = nums.slice(2);
33
+
34
+ if (rest.length > 0) {
35
+ return plus.apply(void 0, [plus(num1, num2)].concat(_toConsumableArray(rest)));
36
+ } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
37
+
38
+
39
+ if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
31
40
  // @ts-ignore
32
- return plus.apply(void 0, [plus(num1, num2)].concat(others));
41
+ return num1;
33
42
  }
34
43
 
35
44
  var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
@@ -80,7 +80,7 @@ function replaceChar() {
80
80
  middleStr = _char.repeat(repeat);
81
81
  }
82
82
 
83
- return str.substr(0, start) + middleStr + str.substr(end);
83
+ return str.substring(0, start) + middleStr + str.substring(end);
84
84
  }
85
85
 
86
86
  export default replaceChar;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 设置 DataURL 前缀、MIME 类型、base64 标识。<br/><br/>
3
+ *
4
+ * 如果你需要获取DataURL 的 MIME 类型和数据本身,推荐使用 <a href="https://www.npmjs.com/package/data-urls">data-urls</a>。
5
+ *
6
+ * @static
7
+ * @alias module:Processor.setDataURLPrefix
8
+ * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Data_URIs|Data URLs}
9
+ * @see 参考 {@link https://mimesniff.spec.whatwg.org/#understanding-mime-types|MIME types}
10
+ * @since 4.1.0
11
+ * @param {string} data 数据本身
12
+ * @param {string} [mimetype="image/png"] MIME 类型
13
+ * @param {boolean} [base64=true] 添加 base64 标识
14
+ * @returns {string} DataURL 格式的字符串
15
+ * @example
16
+ * const data = 'PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=';
17
+ * setDataURLPrefix(data); // data:image/png;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
18
+ * setDataURLPrefix(data, 'image/png', false); // data:image/png,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
19
+ * setDataURLPrefix(data, 'image/jpg'); // data:image/jpg;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
20
+ * setDataURLPrefix(data, 'text/html'); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
21
+ * setDataURLPrefix(data, ''); // data:;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
22
+ * setDataURLPrefix(data, '', false); // data:,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
23
+ */
24
+ function setDataURLPrefix(data) {
25
+ var mimetype = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'image/png';
26
+ var base64 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
27
+ return "data:".concat(mimetype).concat(base64 ? ';base64' : '', ",").concat(data);
28
+ }
29
+
30
+ export default setDataURLPrefix;
package/esm/times.js CHANGED
@@ -1,13 +1,13 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import { digitLength, float2Fixed, checkBoundary } from './utils/math.util';
3
+ import { isNumber, isNaN, isString } from './utils/type';
2
4
  /**
3
5
  * 精确乘法,支持多个数相乘
4
6
  *
5
7
  * @static
6
8
  * @alias module:Math.times
7
9
  * @since 3.1.0
8
- * @param {number|string} num1 相乘的第一个数
9
- * @param {number|string} num2 相乘的第二个数
10
- * @param {...number|string} others 相乘的其余数
10
+ * @param {...number|string} nums 相乘的数
11
11
  * @returns {number} 乘积
12
12
  * @example
13
13
  *
@@ -21,14 +21,23 @@ import { digitLength, float2Fixed, checkBoundary } from './utils/math.util';
21
21
  * // => 36
22
22
  */
23
23
 
24
- function times(num1, num2) {
25
- for (var _len = arguments.length, others = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
26
- others[_key - 2] = arguments[_key];
24
+ function times() {
25
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ nums[_key] = arguments[_key];
27
27
  }
28
28
 
29
- if (others.length > 0) {
29
+ var num1 = nums[0],
30
+ num2 = nums[1],
31
+ rest = nums.slice(2);
32
+
33
+ if (rest.length > 0) {
34
+ return times.apply(void 0, [times(num1, num2)].concat(_toConsumableArray(rest)));
35
+ } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
36
+
37
+
38
+ if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
30
39
  // @ts-ignore
31
- return times.apply(void 0, [times(num1, num2)].concat(others));
40
+ return num1;
32
41
  }
33
42
 
34
43
  var num1Changed = float2Fixed(num1);
@@ -1,22 +1,13 @@
1
1
  import isString from './type/isString';
2
- import { config } from './config';
3
2
  /**
4
3
  * 转换为字符串
5
4
  *
6
5
  * @param {*} value 值
7
- * @returns 字符串
6
+ * @returns {string} 字符串
8
7
  */
9
8
 
10
9
  function convertToString(value) {
11
- if (!isString(value)) {
12
- if (!config.disableWarning) {
13
- console.warn("[validatePassword] value must be a string.");
14
- }
15
-
16
- return String(value);
17
- }
18
-
19
- return value;
10
+ return isString(value) ? value : String(value);
20
11
  }
21
12
 
22
13
  export default convertToString;
@@ -79,14 +79,14 @@ export function checkBoundary(num) {
79
79
  * @returns {string}
80
80
  */
81
81
 
82
- function trimLeftZero(num) {
83
- var reg = /^([+-])?(0+)([1-9\.]+)$/;
82
+ export function trimLeftZero(num) {
83
+ var reg = /^([+-])?(0+)([0-9\.]+)$/;
84
84
  var result = reg.exec(num);
85
85
  var sign;
86
86
 
87
87
  if (result) {
88
88
  sign = result[1] || '';
89
- return sign + result[3];
89
+ return sign + (result[3][0] === '.' ? '0' + result[3] : result[3]);
90
90
  }
91
91
 
92
92
  return num;
@@ -102,7 +102,6 @@ function trimLeftZero(num) {
102
102
  * @returns {string} 转换后的数字字符串
103
103
  */
104
104
 
105
-
106
105
  export function scientificToNumber(num) {
107
106
  if (isScientificNumber(num.toString())) {
108
107
  var zero = '0';
@@ -125,7 +124,7 @@ export function scientificToNumber(num) {
125
124
  var dec = coeff_array[1]; //如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数
126
125
 
127
126
  if (l - dec.length < 0) {
128
- num = trimLeftZero(coeff_array[0] + dec.substr(0, l)) + '.' + dec.substr(l);
127
+ num = trimLeftZero(coeff_array[0] + dec.substring(0, l)) + '.' + dec.substring(l);
129
128
  } else {
130
129
  //拼接字符串,如果是整数,不需要拼接小数点
131
130
  num = coeff_array.join('') + new Array(l - dec.length + 1).join(zero);
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 等待时间返回 Promise 。常用于异步方法中延时。
3
+ *
4
+ * @static
5
+ * @alias module:Other.waitTime
6
+ * @since 3.1.0
7
+ * @param {number} [time=1000] 延时时间,单位毫秒
8
+ * @returns {Promise<void>}
9
+ * @example
10
+ * const test = async ()=>{
11
+ * await waitTime();
12
+ * // do something
13
+ * }
14
+ *
15
+ * waitTime(500).then(()=>{
16
+ * // do something
17
+ * })
18
+ */
19
+ function waitTime() {
20
+ var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1000;
21
+ return new Promise(function (resolve) {
22
+ setTimeout(resolve, time);
23
+ });
24
+ }
25
+
26
+ export default waitTime;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ // file、blob文件如何预览图片?
9
+ // 方法1:将file或者blob类型文件转成base64数据,再作为src赋值给img标签
10
+ // 方法2:使用 window.URL.createObjectURL(blob) 为blob、file 创建一个指向该参数对象的URL
11
+
12
+ /**
13
+ * 将 Blob 或 File 对象转成 data:URL 格式的 Base64 字符串。
14
+ *
15
+ * @static
16
+ * @alias module:Processor.blobToDataURL
17
+ * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsDataURL|FileReader.readAsDataURL()}
18
+ * @since 4.1.0
19
+ * @param {Blob} blob Blob 或 File 对象
20
+ * @returns {Promise<string>} data:URL 格式的 Base64 字符串。
21
+ * @example
22
+ * const aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组
23
+ * const htmlBlob = new Blob(aFileParts, { type: 'text/html' }); // 得到 blob
24
+ *
25
+ * blobToDataURL(htmlBlob).then(data=>{
26
+ * console.log(data); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
27
+ * });
28
+ *
29
+ * const textBlob = new Blob(aFileParts, { type: 'text/plain' });
30
+ *
31
+ * blobToDataURL(textBlob).then(data=>{
32
+ * console.log(data); // data:text/plain;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
33
+ * });
34
+ */
35
+ function blobToDataURL(blob) {
36
+ return new Promise(function (resolve, reject) {
37
+ var reader = new FileReader();
38
+ reader.readAsDataURL(blob); // @ts-ignore
39
+
40
+ reader.onload = function () {
41
+ return resolve(reader.result);
42
+ };
43
+
44
+ reader.onerror = function (error) {
45
+ return reject(error);
46
+ };
47
+ });
48
+ }
49
+
50
+ var _default = blobToDataURL;
51
+ exports["default"] = _default;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ /**
9
+ * 将 DataURL 转为 Blob 对象
10
+ *
11
+ * @static
12
+ * @alias module:Processor.dataURLToBlob
13
+ * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Glossary/Base64|Base64}
14
+ * @since 4.1.0
15
+ * @param {string} dataurl data: 协议的URL
16
+ * @returns {Blob} Blob 对象
17
+ * @example
18
+ * const dataurl = 'data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=';
19
+ * dataURLToBlob(dataurl);
20
+ */
21
+ function dataURLToBlob(dataurl) {
22
+ var arr = dataurl.split(','); // @ts-ignore
23
+
24
+ var mime = arr[0].match(/:(.*?);/)[1];
25
+ var bstr = atob(arr[1]);
26
+ var n = bstr.length;
27
+ var u8arr = new Uint8Array(n);
28
+
29
+ while (n--) {
30
+ u8arr[n] = bstr.charCodeAt(n);
31
+ }
32
+
33
+ return new Blob([u8arr], {
34
+ type: mime
35
+ });
36
+ }
37
+
38
+ var _default = dataURLToBlob;
39
+ exports["default"] = _default;
package/lib/divide.js CHANGED
@@ -9,17 +9,29 @@ var _math = require("./utils/math.util");
9
9
 
10
10
  var _times = _interopRequireDefault(require("./times"));
11
11
 
12
+ var _type = require("./utils/type");
13
+
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
15
 
16
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
17
+
18
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+
22
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
23
+
24
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
25
+
26
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
27
+
14
28
  /**
15
29
  * 精确除法,支持多个数相除
16
30
  *
17
31
  * @static
18
32
  * @alias module:Math.divide
19
33
  * @since 3.1.0
20
- * @param {number|string} num1 除数
21
- * @param {number|string} num2 被除数
22
- * @param {...number|string} others 其余被除数
34
+ * @param {...number|string} nums 除数和被除数
23
35
  * @returns {number} 商数
24
36
  * @example
25
37
  *
@@ -32,14 +44,23 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
32
44
  * divide(1000, 10, 10, 10);
33
45
  * // => 1
34
46
  */
35
- function divide(num1, num2) {
36
- for (var _len = arguments.length, others = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
37
- others[_key - 2] = arguments[_key];
47
+ function divide() {
48
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
49
+ nums[_key] = arguments[_key];
38
50
  }
39
51
 
40
- if (others.length > 0) {
52
+ var num1 = nums[0],
53
+ num2 = nums[1],
54
+ rest = nums.slice(2);
55
+
56
+ if (rest.length > 0) {
57
+ return divide.apply(void 0, [divide(num1, num2)].concat(_toConsumableArray(rest)));
58
+ } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
59
+
60
+
61
+ if ((!(0, _type.isNumber)(num2) || (0, _type.isNaN)(num2)) && !(0, _type.isString)(num2)) {
41
62
  // @ts-ignore
42
- return divide.apply(void 0, [divide(num1, num2)].concat(others));
63
+ return num1;
43
64
  }
44
65
 
45
66
  var num1Changed = (0, _math.float2Fixed)(num1);
@@ -49,7 +49,7 @@ function formatBankCard() {
49
49
  var realValue = bankCardNo.replace(regChar, '');
50
50
  var needRemoveLastChar = realValue.length % length === 0;
51
51
  var str = realValue.replace(reg, "$1".concat(_char));
52
- return needRemoveLastChar ? str.substr(0, str.length - 1) : str;
52
+ return needRemoveLastChar ? str.substring(0, str.length - 1) : str;
53
53
  }
54
54
 
55
55
  var _default = formatBankCard;
@@ -31,7 +31,7 @@ var reg = /^[+-]?\d*\.?\d*$/;
31
31
  *
32
32
  * @private
33
33
  * @param {string} num
34
- * @returns 是否为数字
34
+ * @returns 是否为数字
35
35
  */
36
36
 
37
37
  function checkNumber(num) {
@@ -63,10 +63,11 @@ function checkNumber(num) {
63
63
 
64
64
  function formatInt(intStr, thousand) {
65
65
  var txt = '';
66
- intStr = intStr[0] === '+' ? intStr.substr(1) : intStr; // 去掉+符号
66
+ intStr = (0, _math.trimLeftZero)(intStr);
67
+ intStr = intStr[0] === '+' ? intStr.substring(1) : intStr; // 去掉+符号
67
68
 
68
69
  var negativeSymbol = Number(intStr) < 0 ? '-' : '';
69
- var reArr = negativeSymbol ? intStr.substr(1).split('').reverse() : intStr.split('').reverse();
70
+ var reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();
70
71
 
71
72
  for (var i = 0; i < reArr.length; i++) {
72
73
  txt += reArr[i] + ((i + 1) % 3 === 0 && i + 1 !== reArr.length ? thousand : '');
@@ -95,9 +96,9 @@ function formatDec(decStr, precision, decimal) {
95
96
 
96
97
  if (decStr && Number(decStr) > 0) {
97
98
  var tmpNum = parseFloat('0.' + decStr);
98
- ret = tmpNum.toFixed(precision).substr(2);
99
+ ret = tmpNum.toFixed(precision).substring(2);
99
100
  } else {
100
- ret = zero.toFixed(precision).substr(2);
101
+ ret = zero.toFixed(precision).substring(2);
101
102
  }
102
103
 
103
104
  return decimal + ret;