@haluo/util 2.0.21 → 2.0.23

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.
@@ -3,19 +3,98 @@
3
3
  * @Author: wanghui
4
4
  */
5
5
  'use strict';
6
- let previous = 0;
7
- let timeout = null;
8
- import cloneDeep from 'lodash/cloneDeep';
9
- import copy from 'clipboard-copy';
10
- class ToolsClass {
11
- constructor() {
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ var previous = 0;
8
+ var timeout = null;
9
+ var ToolsClass = /** @class */ (function () {
10
+ function ToolsClass() {
11
+ var _this = this;
12
+ /**
13
+ * 蒙层显示后,html禁止滚动操作
14
+ * @param {String} className
15
+ * @return {Void}
16
+ */
17
+ this.stopScroll = function (className) {
18
+ if (!(window && window.document)) {
19
+ return new Error('仅支持浏览器');
20
+ }
21
+ var html = document.documentElement;
22
+ html.style.overflow = 'hidden';
23
+ html.style.height = '100%';
24
+ var body = document.body;
25
+ body.style.overflow = 'hidden';
26
+ body.style.height = '100%';
27
+ if (className) {
28
+ var dom = document.querySelector(".".concat(className));
29
+ dom && dom.addEventListener('touchmove', _this.__setDefault__);
30
+ }
31
+ };
32
+ /**
33
+ * 蒙层隐藏后,html开启滚动操作
34
+ * @param {String} className
35
+ * @return {Void}
36
+ */
37
+ this.startScroll = function (className) {
38
+ if (!(window && window.document)) {
39
+ return new Error('仅支持浏览器');
40
+ }
41
+ var html = document.documentElement;
42
+ html.style.overflow = 'visible';
43
+ html.style.height = 'auto';
44
+ var body = document.body;
45
+ body.style.overflow = 'visible';
46
+ body.style.height = 'auto';
47
+ if (className) {
48
+ var dom = document.querySelector(".".concat(className));
49
+ dom && dom.removeEventListener('touchmove', _this.__setDefault__);
50
+ }
51
+ };
52
+ /**
53
+ * object 对象转 array 数组
54
+ * demo:
55
+ * objectToArray({a:1,b:2}) 输出:["a=1", "b=2"]
56
+ * @param {Object} obj
57
+ * @returns {Array} arr
58
+ */
59
+ this.objectToArray = function (obj) {
60
+ var arr = [];
61
+ if (typeof obj === 'object') {
62
+ for (var key in obj) {
63
+ if (obj.hasOwnProperty(key)) {
64
+ arr.push([key, obj[key]].join('='));
65
+ }
66
+ }
67
+ }
68
+ return arr;
69
+ };
70
+ /**
71
+ * convertEnum
72
+ * 枚举键值互换
73
+ * @param {Object} obj
74
+ * convertKeyValueEnum({a: 1, b: 2}) // {1: "a", 2: "b"}
75
+ * @returns {Object} result
76
+ */
77
+ this.convertKeyValueEnum = function (obj) {
78
+ var result = {};
79
+ if (typeof obj === 'object') {
80
+ for (var key in obj) {
81
+ if (obj.hasOwnProperty(key)) {
82
+ result[obj[key]] = key;
83
+ }
84
+ }
85
+ }
86
+ return result;
87
+ };
88
+ this.isDefined = function (val) {
89
+ return val !== undefined && val !== null;
90
+ };
12
91
  this.__loaded__ = {}; // 已加载的资源
13
92
  /**
14
93
  * 阻止事件传递
15
94
  * @param {Event} e
16
95
  * @return {Void}
17
96
  */
18
- this.__setDefault__ = (e) => {
97
+ this.__setDefault__ = function (e) {
19
98
  e && e.preventDefault();
20
99
  };
21
100
  }
@@ -25,31 +104,32 @@ class ToolsClass {
25
104
  * @param {String} data
26
105
  * @return {Object}
27
106
  */
28
- deepCopy(data) {
107
+ ToolsClass.prototype.deepCopy = function (data) {
29
108
  return JSON.parse(JSON.stringify(data));
30
- }
109
+ };
31
110
  /**
32
111
  * 深拷贝 Object|Array
33
112
  * 支持 普通对象、数组和函数的深复制,但是未解决循环引用、Date、RegExp
34
113
  * @param {Object|Array} data
35
114
  * @return {Object}
36
115
  */
37
- deepCopy2(obj) {
38
- const _obj = Array.isArray(obj) ? [] : {};
39
- for (const i in obj) {
116
+ ToolsClass.prototype.deepCopy2 = function (obj) {
117
+ var _obj = Array.isArray(obj) ? [] : {};
118
+ for (var i in obj) {
40
119
  _obj[i] = typeof obj[i] === 'object' ? this.deepCopy2(obj[i]) : obj[i];
41
120
  }
42
121
  return _obj;
43
- }
122
+ };
44
123
  /**
45
124
  * 深拷贝 Object|Array
46
125
  * 注意:需要 yarn add lodash
47
126
  * @param {Object|Array} data
48
127
  * @return {Object}
49
128
  */
50
- deepCopy3(obj) {
51
- return cloneDeep(obj);
52
- }
129
+ ToolsClass.prototype.deepCopy3 = function (obj) {
130
+ var deepcopy = require('lodash/cloneDeep');
131
+ return deepcopy(obj);
132
+ };
53
133
  /**
54
134
  * 防抖
55
135
  * demo:debounce(func, 300)(args)
@@ -57,17 +137,17 @@ class ToolsClass {
57
137
  * @param {Number} wait 节流时间,毫秒
58
138
  * @return {Function} delay
59
139
  */
60
- debounce(func, wait) {
61
- const delay = function () {
62
- const args = arguments;
140
+ ToolsClass.prototype.debounce = function (func, wait) {
141
+ var delay = function () {
142
+ var args = arguments;
63
143
  if (timeout)
64
144
  clearTimeout(timeout);
65
- timeout = setTimeout(() => {
145
+ timeout = setTimeout(function () {
66
146
  func.apply(delay, args);
67
147
  }, wait);
68
148
  };
69
149
  return delay;
70
- }
150
+ };
71
151
  /**
72
152
  * 节流
73
153
  * demo:throttle(func, 300)(args)
@@ -75,124 +155,86 @@ class ToolsClass {
75
155
  * @param {Number} wait 节流时间,毫秒
76
156
  * @return {Function} delay
77
157
  */
78
- throttle(func, wait) {
79
- const delay = function () {
80
- const now = Date.now();
158
+ ToolsClass.prototype.throttle = function (func, wait) {
159
+ var delay = function () {
160
+ var now = Date.now();
81
161
  if (now - previous > wait) {
82
162
  func.apply(delay, arguments);
83
163
  previous = now;
84
164
  }
85
165
  };
86
166
  return delay;
87
- }
167
+ };
88
168
  /**
89
169
  * 获取路径中文件名称
90
170
  * @param {String} url
91
171
  * @return {String}
92
172
  */
93
- getUrlName(url) {
173
+ ToolsClass.prototype.getUrlName = function (url) {
94
174
  return (url && url.split('?')[0].split('/').reverse()[0]);
95
- }
175
+ };
96
176
  /**
97
177
  * 动态加载脚本
98
178
  * tip:按需加载时用(多次调用,js不会重复加载)
99
179
  * @param {String} url
100
180
  * @return {Promise}
101
181
  */
102
- loadJs(url) {
182
+ ToolsClass.prototype.loadJs = function (url) {
183
+ var _this = this;
103
184
  if (!(window && window.document)) {
104
185
  return new Error('仅支持浏览器');
105
186
  }
106
- const name = this.getUrlName(url);
107
- const id = 'js_' + name;
108
- return new Promise((resolve, reject) => {
109
- if (this.__loaded__[id]) {
187
+ var name = this.getUrlName(url);
188
+ var id = 'js_' + name;
189
+ return new Promise(function (resolve, reject) {
190
+ if (_this.__loaded__[id]) {
110
191
  return resolve();
111
192
  }
112
- const script = document.createElement('script');
193
+ var script = document.createElement('script');
113
194
  script.type = 'text/javascript';
114
195
  script.async = true;
115
196
  script.src = url;
116
197
  script.id = id;
117
- script.onload = () => {
118
- this.__loaded__[id] = true;
198
+ script.onload = function () {
199
+ _this.__loaded__[id] = true;
119
200
  resolve();
120
201
  };
121
- script.onerror = (e) => {
202
+ script.onerror = function (e) {
122
203
  reject(e);
123
204
  };
124
205
  document.body.appendChild(script);
125
206
  });
126
- }
207
+ };
127
208
  /**
128
209
  * 动态加载样式
129
210
  * @param {String} url
130
211
  * @return {Promise}
131
212
  */
132
- loadCss(url) {
213
+ ToolsClass.prototype.loadCss = function (url) {
214
+ var _this = this;
133
215
  if (!(window && window.document)) {
134
216
  return new Error('仅支持浏览器');
135
217
  }
136
- const name = this.getUrlName(url);
137
- const id = 'css_' + name;
138
- return new Promise((resolve, reject) => {
139
- if (this.__loaded__[id]) {
218
+ var name = this.getUrlName(url);
219
+ var id = 'css_' + name;
220
+ return new Promise(function (resolve, reject) {
221
+ if (_this.__loaded__[id]) {
140
222
  return resolve();
141
223
  }
142
- const link = document.createElement('link');
224
+ var link = document.createElement('link');
143
225
  link.type = 'text/css';
144
226
  link.rel = 'stylesheet';
145
227
  link.href = url;
146
228
  link.id = id;
147
- link.onload = () => {
148
- this.__loaded__[id] = true;
229
+ link.onload = function () {
230
+ _this.__loaded__[id] = true;
149
231
  resolve();
150
232
  };
151
- link.onerror = (e) => {
233
+ link.onerror = function (e) {
152
234
  reject(e);
153
235
  };
154
236
  document.head.appendChild(link);
155
237
  });
156
- }
157
- /**
158
- * 蒙层显示后,html禁止滚动操作
159
- * @param {String} className
160
- * @return {Void}
161
- */
162
- stopScroll = (className) => {
163
- if (!(window && window.document)) {
164
- return new Error('仅支持浏览器');
165
- }
166
- const html = document.documentElement;
167
- html.style.overflow = 'hidden';
168
- html.style.height = '100%';
169
- const body = document.body;
170
- body.style.overflow = 'hidden';
171
- body.style.height = '100%';
172
- if (className) {
173
- const dom = document.querySelector(`.${className}`);
174
- dom && dom.addEventListener('touchmove', this.__setDefault__);
175
- }
176
- };
177
- /**
178
- * 蒙层隐藏后,html开启滚动操作
179
- * @param {String} className
180
- * @return {Void}
181
- */
182
- startScroll = (className) => {
183
- if (!(window && window.document)) {
184
- return new Error('仅支持浏览器');
185
- }
186
- const html = document.documentElement;
187
- html.style.overflow = 'visible';
188
- html.style.height = 'auto';
189
- const body = document.body;
190
- body.style.overflow = 'visible';
191
- body.style.height = 'auto';
192
- if (className) {
193
- const dom = document.querySelector(`.${className}`);
194
- dom && dom.removeEventListener('touchmove', this.__setDefault__);
195
- }
196
238
  };
197
239
  /**
198
240
  * 字符串复制到剪贴板
@@ -200,91 +242,59 @@ class ToolsClass {
200
242
  * @param {String} str
201
243
  * @return {String}
202
244
  */
203
- clipboard(str) {
245
+ ToolsClass.prototype.clipboard = function (str) {
204
246
  if (!(window && window.document)) {
205
247
  return new Error('仅支持浏览器');
206
248
  }
249
+ var copy = require('clipboard-copy');
207
250
  return copy(str);
208
- }
251
+ };
209
252
  /**
210
253
  * 首字母大写
211
254
  * @param {String} str
212
255
  * @return {String}
213
256
  */
214
- firstUpperCase(str) {
257
+ ToolsClass.prototype.firstUpperCase = function (str) {
215
258
  return str.charAt(0).toUpperCase() + str.toString().slice(1);
216
- }
259
+ };
217
260
  /**
218
261
  * 截取数组或字符串,示例:slice('1234', 3)
219
262
  * @param {Array|String} target 数组或字符串
220
263
  * @param {Number} length 截取长度,从0开始
221
264
  * @return {any}
222
265
  */
223
- slice(target = '', length = 0) {
266
+ ToolsClass.prototype.slice = function (target, length) {
267
+ if (target === void 0) { target = ''; }
268
+ if (length === void 0) { length = 0; }
224
269
  return target.slice(0, length);
225
- }
270
+ };
226
271
  /**
227
272
  * 获取guid
228
273
  * @return {String}
229
274
  */
230
- guid() {
275
+ ToolsClass.prototype.guid = function () {
231
276
  function S4() {
232
277
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
233
278
  }
234
279
  return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
235
- }
280
+ };
236
281
  /**
237
282
  * 获取文本字节数(含中文)
238
283
  * @param {String} str
239
284
  * @return {String}
240
285
  */
241
- getBytesOfText(str = '') {
286
+ ToolsClass.prototype.getBytesOfText = function (str) {
287
+ if (str === void 0) { str = ''; }
242
288
  return str.replace(/[^\u0000-\u00ff]/g, "aa").length;
243
- }
244
- /**
245
- * object 对象转 array 数组
246
- * demo:
247
- * objectToArray({a:1,b:2}) 输出:["a=1", "b=2"]
248
- * @param {Object} obj
249
- * @returns {Array} arr
250
- */
251
- objectToArray = (obj) => {
252
- var arr = [];
253
- if (typeof obj === 'object') {
254
- for (var key in obj) {
255
- if (obj.hasOwnProperty(key)) {
256
- arr.push([key, obj[key]].join('='));
257
- }
258
- }
259
- }
260
- return arr;
261
- };
262
- /**
263
- * convertEnum
264
- * 枚举键值互换
265
- * @param {Object} obj
266
- * convertKeyValueEnum({a: 1, b: 2}) // {1: "a", 2: "b"}
267
- * @returns {Object} result
268
- */
269
- convertKeyValueEnum = (obj) => {
270
- const result = {};
271
- if (typeof obj === 'object') {
272
- for (const key in obj) {
273
- if (obj.hasOwnProperty(key)) {
274
- result[obj[key]] = key;
275
- }
276
- }
277
- }
278
- return result;
279
289
  };
280
290
  /**
281
291
  * 数组去重
282
292
  * @param {Array} arr
283
293
  * @returns {Array}
284
294
  */
285
- uniqueArr(arr) {
295
+ ToolsClass.prototype.uniqueArr = function (arr) {
286
296
  return Array.from(new Set(arr));
287
- }
297
+ };
288
298
  /**
289
299
  * 数组元素交换位置
290
300
  * index1和index2分别是两个数组的索引值,即是两个要交换元素位置的索引值,如1,5就是数组中下标为1和5的两个元素交换位置
@@ -294,37 +304,38 @@ class ToolsClass {
294
304
  * swapArray([1, 2, 3, 4], 2, 3) // [1, 2, 4, 3]
295
305
  * @returns {Array<string | number>} array
296
306
  */
297
- swapArray(array, index1, index2) {
298
- [array[index1], array[index2]] = [array[index2], array[index1]];
307
+ ToolsClass.prototype.swapArray = function (array, index1, index2) {
308
+ var _a;
309
+ _a = [array[index2], array[index1]], array[index1] = _a[0], array[index2] = _a[1];
299
310
  return array;
300
- }
311
+ };
301
312
  /**
302
313
  * 过滤表情符号
303
314
  * @param {String} str
304
315
  * @return {String}
305
316
  */
306
- filterEmoji(str) {
317
+ ToolsClass.prototype.filterEmoji = function (str) {
307
318
  return str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg, '');
308
- }
319
+ };
309
320
  /**
310
321
  * 是否包含表情
311
322
  * @param {String} str
312
323
  * @return {boolean}
313
324
  */
314
- containsEmoji(str) {
315
- const reg = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg;
325
+ ToolsClass.prototype.containsEmoji = function (str) {
326
+ var reg = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg;
316
327
  return reg.test(str);
317
- }
328
+ };
318
329
  /**
319
330
  * 是否包含表汉字
320
331
  * @param {String} str
321
332
  * @return {boolean}
322
333
  */
323
- containsHanZi(str) {
324
- const reg = /[\u4e00-\u9fa5]/mg;
334
+ ToolsClass.prototype.containsHanZi = function (str) {
335
+ var reg = /[\u4e00-\u9fa5]/mg;
325
336
  return reg.test(str);
326
- }
327
- isEmpty(val) {
337
+ };
338
+ ToolsClass.prototype.isEmpty = function (val) {
328
339
  // null or undefined
329
340
  if (val == null)
330
341
  return true;
@@ -351,11 +362,8 @@ class ToolsClass {
351
362
  }
352
363
  }
353
364
  return false;
354
- }
355
- ;
356
- isDefined = (val) => {
357
- return val !== undefined && val !== null;
358
365
  };
366
+ ;
359
367
  /**
360
368
  * 字段脱敏处理
361
369
  * @param {String} field 未脱敏字段
@@ -363,20 +371,23 @@ class ToolsClass {
363
371
  * @param {Int} after 结尾未脱敏字符数
364
372
  * @return {String} 已脱敏字段
365
373
  */
366
- sensitiveField(field, before = 3, after = 4) {
374
+ ToolsClass.prototype.sensitiveField = function (field, before, after) {
375
+ if (before === void 0) { before = 3; }
376
+ if (after === void 0) { after = 4; }
367
377
  if (!field) {
368
378
  return '';
369
379
  }
370
380
  field = String(field);
371
- let sensitiveLen = field.length - before - after;
381
+ var sensitiveLen = field.length - before - after;
372
382
  if (sensitiveLen < 0) {
373
383
  sensitiveLen = 0;
374
384
  }
375
385
  // 匹配中文、英文、数字
376
- const regItem = '[\u4e00-\u9fa5a-zA-Z0-9]';
377
- const regExp = `(${regItem}{${before}})${regItem}*(${regItem}{${after}})`;
378
- const reg = new RegExp(regExp);
379
- return field.replace(reg, `$1${"*".repeat(sensitiveLen)}$2`);
380
- }
381
- }
382
- export default new ToolsClass();
386
+ var regItem = '[\u4e00-\u9fa5a-zA-Z0-9]';
387
+ var regExp = "(".concat(regItem, "{").concat(before, "})").concat(regItem, "*(").concat(regItem, "{").concat(after, "})");
388
+ var reg = new RegExp(regExp);
389
+ return field.replace(reg, "$1".concat("*".repeat(sensitiveLen), "$2"));
390
+ };
391
+ return ToolsClass;
392
+ }());
393
+ exports.default = new ToolsClass();