@whitesev/pops 2.2.8 → 2.3.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 (146) hide show
  1. package/dist/index.amd.js +2817 -3012
  2. package/dist/index.amd.js.map +1 -1
  3. package/dist/index.cjs.js +2817 -3012
  4. package/dist/index.cjs.js.map +1 -1
  5. package/dist/index.esm.js +2817 -3012
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.iife.js +2817 -3012
  8. package/dist/index.iife.js.map +1 -1
  9. package/dist/index.system.js +2817 -3012
  10. package/dist/index.system.js.map +1 -1
  11. package/dist/index.umd.js +2817 -3012
  12. package/dist/index.umd.js.map +1 -1
  13. package/dist/types/src/Pops.d.ts +497 -192
  14. package/dist/types/src/PopsIcon.d.ts +2 -2
  15. package/dist/types/src/components/panel/index.d.ts +1 -1
  16. package/dist/types/src/components/rightClickMenu/index.d.ts +487 -182
  17. package/dist/types/src/components/tooltip/index.d.ts +2 -2
  18. package/dist/types/src/types/PopsDOMUtilsEventType.d.ts +256 -259
  19. package/dist/types/src/types/animation.d.ts +19 -19
  20. package/dist/types/src/types/button.d.ts +187 -196
  21. package/dist/types/src/types/components.d.ts +213 -229
  22. package/dist/types/src/types/event.d.ts +63 -63
  23. package/dist/types/src/types/global.d.ts +20 -20
  24. package/dist/types/src/types/icon.d.ts +32 -32
  25. package/dist/types/src/types/inst.d.ts +24 -24
  26. package/dist/types/src/types/main.d.ts +114 -122
  27. package/dist/types/src/types/mask.d.ts +49 -49
  28. package/dist/types/src/types/position.d.ts +60 -60
  29. package/package.json +13 -8
  30. package/src/Pops.ts +0 -209
  31. package/src/PopsAnimation.ts +0 -32
  32. package/src/PopsCSS.ts +0 -51
  33. package/src/PopsCore.ts +0 -44
  34. package/src/PopsIcon.ts +0 -95
  35. package/src/PopsInst.ts +0 -21
  36. package/src/components/alert/config.ts +0 -62
  37. package/src/components/alert/index.css +0 -0
  38. package/src/components/alert/index.ts +0 -181
  39. package/src/components/alert/types/index.ts +0 -30
  40. package/src/components/confirm/config.ts +0 -90
  41. package/src/components/confirm/index.css +0 -0
  42. package/src/components/confirm/index.ts +0 -192
  43. package/src/components/confirm/types/index.ts +0 -17
  44. package/src/components/drawer/config.ts +0 -89
  45. package/src/components/drawer/index.css +0 -35
  46. package/src/components/drawer/index.ts +0 -260
  47. package/src/components/drawer/types/index.ts +0 -61
  48. package/src/components/folder/config.ts +0 -147
  49. package/src/components/folder/folderIcon.ts +0 -28
  50. package/src/components/folder/index.css +0 -314
  51. package/src/components/folder/index.ts +0 -1050
  52. package/src/components/folder/types/index.ts +0 -101
  53. package/src/components/iframe/config.ts +0 -60
  54. package/src/components/iframe/index.css +0 -75
  55. package/src/components/iframe/index.ts +0 -351
  56. package/src/components/iframe/types/index.ts +0 -146
  57. package/src/components/loading/config.ts +0 -29
  58. package/src/components/loading/index.css +0 -66
  59. package/src/components/loading/index.ts +0 -114
  60. package/src/components/loading/types/index.ts +0 -40
  61. package/src/components/panel/config.ts +0 -550
  62. package/src/components/panel/handlerComponents.ts +0 -3277
  63. package/src/components/panel/index.css +0 -1292
  64. package/src/components/panel/index.ts +0 -213
  65. package/src/components/panel/types/components-button.ts +0 -69
  66. package/src/components/panel/types/components-common.ts +0 -55
  67. package/src/components/panel/types/components-deepMenu.ts +0 -85
  68. package/src/components/panel/types/components-forms.ts +0 -45
  69. package/src/components/panel/types/components-input.ts +0 -82
  70. package/src/components/panel/types/components-own.ts +0 -31
  71. package/src/components/panel/types/components-select.ts +0 -101
  72. package/src/components/panel/types/components-selectMultiple.ts +0 -133
  73. package/src/components/panel/types/components-slider.ts +0 -78
  74. package/src/components/panel/types/components-switch.ts +0 -57
  75. package/src/components/panel/types/components-textarea.ts +0 -69
  76. package/src/components/panel/types/index.ts +0 -177
  77. package/src/components/prompt/config.ts +0 -94
  78. package/src/components/prompt/index.css +0 -34
  79. package/src/components/prompt/index.ts +0 -222
  80. package/src/components/prompt/types/index.ts +0 -55
  81. package/src/components/rightClickMenu/config.ts +0 -130
  82. package/src/components/rightClickMenu/index.css +0 -88
  83. package/src/components/rightClickMenu/index.ts +0 -689
  84. package/src/components/rightClickMenu/types/index.ts +0 -91
  85. package/src/components/searchSuggestion/config.ts +0 -59
  86. package/src/components/searchSuggestion/index.ts +0 -708
  87. package/src/components/searchSuggestion/types/index.ts +0 -147
  88. package/src/components/tooltip/config.ts +0 -34
  89. package/src/components/tooltip/index.css +0 -196
  90. package/src/components/tooltip/index.ts +0 -655
  91. package/src/components/tooltip/types/index.ts +0 -125
  92. package/src/config/CommonCSSClassName.ts +0 -17
  93. package/src/config/GlobalConfig.ts +0 -80
  94. package/src/css/animation.css +0 -2245
  95. package/src/css/button.css +0 -542
  96. package/src/css/common.css +0 -52
  97. package/src/css/index.css +0 -254
  98. package/src/css/ninePalaceGridPosition.css +0 -50
  99. package/src/css/scrollbar.css +0 -22
  100. package/src/handler/PopsElementHandler.ts +0 -325
  101. package/src/handler/PopsHandler.ts +0 -719
  102. package/src/svg/arrowLeft.svg +0 -4
  103. package/src/svg/arrowRight.svg +0 -4
  104. package/src/svg/chromeFilled.svg +0 -14
  105. package/src/svg/circleClose.svg +0 -8
  106. package/src/svg/close.svg +0 -5
  107. package/src/svg/cpu.svg +0 -8
  108. package/src/svg/delete.svg +0 -5
  109. package/src/svg/documentCopy.svg +0 -5
  110. package/src/svg/edit.svg +0 -8
  111. package/src/svg/eleme.svg +0 -5
  112. package/src/svg/elemePlus.svg +0 -5
  113. package/src/svg/headset.svg +0 -5
  114. package/src/svg/hide.svg +0 -8
  115. package/src/svg/keyboard.svg +0 -8
  116. package/src/svg/loading.svg +0 -5
  117. package/src/svg/max.svg +0 -5
  118. package/src/svg/min.svg +0 -5
  119. package/src/svg/mise.svg +0 -5
  120. package/src/svg/monitor.svg +0 -5
  121. package/src/svg/next.svg +0 -5
  122. package/src/svg/picture.svg +0 -8
  123. package/src/svg/prev.svg +0 -5
  124. package/src/svg/search.svg +0 -5
  125. package/src/svg/share.svg +0 -5
  126. package/src/svg/upload.svg +0 -5
  127. package/src/svg/videoPause.svg +0 -5
  128. package/src/svg/videoPlay.svg +0 -5
  129. package/src/svg/view.svg +0 -5
  130. package/src/types/PopsDOMUtilsEventType.d.ts +0 -259
  131. package/src/types/animation.d.ts +0 -19
  132. package/src/types/button.d.ts +0 -196
  133. package/src/types/components.d.ts +0 -229
  134. package/src/types/event.d.ts +0 -63
  135. package/src/types/global.d.ts +0 -20
  136. package/src/types/icon.d.ts +0 -32
  137. package/src/types/inst.d.ts +0 -24
  138. package/src/types/main.d.ts +0 -122
  139. package/src/types/mask.d.ts +0 -49
  140. package/src/types/position.d.ts +0 -60
  141. package/src/utils/PopsDOMUtils.ts +0 -2649
  142. package/src/utils/PopsDOMUtilsEventsConfig.ts +0 -6
  143. package/src/utils/PopsInstanceUtils.ts +0 -801
  144. package/src/utils/PopsMathUtils.ts +0 -77
  145. package/src/utils/PopsSafeUtils.ts +0 -24
  146. package/src/utils/PopsUtils.ts +0 -430
@@ -1,77 +0,0 @@
1
- export const PopsMathFloatUtils = {
2
- /**
3
- * 判断数字是否是浮点数
4
- * @param num
5
- */
6
- isFloat(num: number): boolean {
7
- return Number(num) === num && num % 1 !== 0;
8
- },
9
- /**
10
- * 浮点数加法
11
- * @param number1
12
- * @param number2
13
- */
14
- add(number1: number, number2: number) {
15
- let number1length, number2length, powValue;
16
- try {
17
- number1length = number1.toString().split(".")[1].length;
18
- } catch (error) {
19
- number1length = 0;
20
- }
21
- try {
22
- number2length = number2.toString().split(".")[1].length;
23
- } catch (error) {
24
- number2length = 0;
25
- }
26
- powValue = Math.pow(10, Math.max(number1length, number2length));
27
- return Math.round(number1 * powValue + number2 * powValue) / powValue;
28
- },
29
- /**
30
- * 减法
31
- * @param number1
32
- * @param number2
33
- */
34
- sub(number1: number, number2: number) {
35
- let number1length, number2length, powValue;
36
- try {
37
- number1length = number1.toString().split(".")[1].length;
38
- } catch (error) {
39
- number1length = 0;
40
- }
41
- try {
42
- number2length = number2.toString().split(".")[1].length;
43
- } catch (error) {
44
- number2length = 0;
45
- }
46
- powValue = Math.pow(10, Math.max(number1length, number2length));
47
- let fixedValue =
48
- number1length >= number2length ? number1length : number2length;
49
- return (
50
- Math.round(number1 * powValue - number2 * powValue) / powValue
51
- ).toFixed(fixedValue);
52
- },
53
- /**
54
- * 除法
55
- * @param number1
56
- * @param number2
57
- */
58
- division(number1: number, number2: number) {
59
- let number1length, number2length, number1ReplaceValue, number2ReplaceValue;
60
- try {
61
- number1length = number1.toString().split(".")[1].length;
62
- } catch (error) {
63
- number1length = 0;
64
- }
65
- try {
66
- number2length = number2.toString().split(".")[1].length;
67
- } catch (error) {
68
- number2length = 0;
69
- }
70
- number1ReplaceValue = Number(number1.toString().replace(".", ""));
71
- number2ReplaceValue = Number(number2.toString().replace(".", ""));
72
- return (
73
- (number1ReplaceValue / number2ReplaceValue) *
74
- Math.pow(10, number2length - number1length)
75
- );
76
- },
77
- };
@@ -1,24 +0,0 @@
1
- export const PopsSafeUtils = {
2
- /**
3
- * 获取安全的html
4
- */
5
- getSafeHTML(text: string) {
6
- // @ts-ignore
7
- if (globalThis.trustedTypes) {
8
- // @ts-ignore
9
- const policy = globalThis.trustedTypes.createPolicy("safe-innerHTML", {
10
- createHTML: (html: string) => html,
11
- });
12
- return policy.createHTML(text);
13
- } else {
14
- return text;
15
- }
16
- },
17
- /**
18
- * 设置安全的html
19
- */
20
- setSafeHTML($el: Element, text: string) {
21
- // 创建 TrustedHTML 策略(需 CSP 允许)
22
- $el.innerHTML = this.getSafeHTML(text);
23
- },
24
- };
@@ -1,430 +0,0 @@
1
- import { PopsCore } from "../PopsCore";
2
- import type { PopsUtilsOwnObject } from "../types/main";
3
- import {
4
- clearInterval as WorkerClearInterval,
5
- clearTimeout as WorkerClearTimeout,
6
- setInterval as WorkerSetInterval,
7
- setTimeout as WorkerSetTimeout,
8
- } from "worker-timers";
9
- import AnyTouch from "any-touch";
10
-
11
- class PopsUtils {
12
- /**
13
- * 判断是否是window,例如window、self、globalThis
14
- * @param target
15
- */
16
- isWin(target: any) {
17
- if (typeof target !== "object") {
18
- return false;
19
- }
20
- if (target instanceof Node) {
21
- return false;
22
- }
23
- if (target === globalThis) {
24
- return true;
25
- }
26
- if (target === window) {
27
- return true;
28
- }
29
- if (target === self) {
30
- return true;
31
- }
32
- if (target === PopsCore.globalThis) {
33
- return true;
34
- }
35
- if (target === PopsCore.window) {
36
- return true;
37
- }
38
- if (target === PopsCore.self) {
39
- return true;
40
- }
41
- if (typeof unsafeWindow !== "undefined" && target === unsafeWindow) {
42
- return true;
43
- }
44
- if (target?.Math?.toString() !== "[object Math]") {
45
- return false;
46
- }
47
- return true;
48
- }
49
- /**
50
- * 判断对象是否是元素
51
- * @param target
52
- * @returns
53
- * + true 是元素
54
- * + false 不是元素
55
- * @example
56
- * Utils.isDOM(document.querySelector("a"))
57
- * > true
58
- */
59
- isDOM(target: any): boolean;
60
- isDOM(target: any): boolean {
61
- return target instanceof Node;
62
- }
63
- /**
64
- * 删除对象上的属性
65
- * @param target
66
- * @param propName
67
- */
68
- delete(target: any, propName: any) {
69
- if (typeof Reflect === "object" && Reflect.deleteProperty) {
70
- Reflect.deleteProperty(target, propName);
71
- } else {
72
- delete target[propName];
73
- }
74
- }
75
- /**
76
- * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
77
- * @param target 目标数据
78
- * @param source 源数据
79
- * @param isAdd 是否可以追加键,默认false
80
- * @example
81
- * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
82
- * >
83
- * {
84
- "1": 1,
85
- "2": {
86
- "3": 4
87
- }
88
- }
89
- */
90
- assign<T1, T2 extends object, T3 extends boolean>(
91
- target: T1,
92
- source: T2,
93
- isAdd?: T3
94
- ): T3 extends true ? T1 & T2 : T1;
95
- assign(target = {}, source = {}, isAdd = false) {
96
- let UtilsContext = this;
97
- if (source == null) {
98
- return target;
99
- }
100
- if (target == null) {
101
- target = {};
102
- }
103
- if (Array.isArray(source)) {
104
- let canTraverse = source.filter((item) => {
105
- return typeof item === "object";
106
- });
107
- if (!canTraverse.length) {
108
- return source;
109
- }
110
- }
111
- if (isAdd) {
112
- for (const sourceKeyName in source) {
113
- const targetKeyName = sourceKeyName;
114
- let targetValue = (target as any)[targetKeyName];
115
- let sourceValue = (source as any)[sourceKeyName];
116
- if (
117
- typeof sourceValue === "object" &&
118
- sourceValue != null &&
119
- sourceKeyName in target &&
120
- !UtilsContext.isDOM(sourceValue)
121
- ) {
122
- /* 源端的值是object类型,且不是元素节点 */
123
- (target as any)[sourceKeyName] = UtilsContext.assign(
124
- targetValue,
125
- sourceValue,
126
- isAdd
127
- );
128
- continue;
129
- }
130
- (target as any)[sourceKeyName] = sourceValue;
131
- }
132
- } else {
133
- for (const targetKeyName in target) {
134
- if (targetKeyName in source) {
135
- // @ts-ignore
136
- let targetValue = target[targetKeyName];
137
- // @ts-ignore
138
- let sourceValue = source[targetKeyName];
139
- if (
140
- typeof sourceValue === "object" &&
141
- sourceValue != null &&
142
- !UtilsContext.isDOM(sourceValue) &&
143
- Object.keys(sourceValue).length
144
- ) {
145
- /* 源端的值是object类型,且不是元素节点 */
146
- // @ts-ignore
147
- target[targetKeyName] = UtilsContext.assign(
148
- targetValue,
149
- sourceValue,
150
- isAdd
151
- );
152
- continue;
153
- }
154
- /* 直接赋值 */
155
- // @ts-ignore
156
- target[targetKeyName] = sourceValue;
157
- }
158
- }
159
- }
160
-
161
- return target;
162
- }
163
- /**
164
- * 生成uuid
165
- */
166
- getRandomGUID() {
167
- if (typeof PopsCore.globalThis?.crypto?.randomUUID === "function") {
168
- return PopsCore.globalThis.crypto.randomUUID();
169
- } else {
170
- return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
171
- /[xy]/g,
172
- function (charStr) {
173
- var randomValue = (Math.random() * 16) | 0,
174
- randomCharValue =
175
- charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
176
- return randomCharValue.toString(16);
177
- }
178
- );
179
- }
180
- }
181
- /**
182
- * 判断元素/页面中是否包含该元素
183
- * @param target 需要判断的元素
184
- * @param context 默认为body
185
- */
186
- contains(target: any): boolean;
187
- contains(context: any, target?: any): boolean;
188
- contains(context: any, target?: any): boolean {
189
- if (arguments.length === 1) {
190
- // 只判断该页面是否存在该元素
191
- return this.contains(
192
- PopsCore.document.body || PopsCore.document.documentElement,
193
- arguments[0]
194
- );
195
- } else {
196
- if (target == null) {
197
- return false;
198
- }
199
- if (typeof (target as any)[Symbol.iterator] === "function") {
200
- // 可遍历的数组
201
- let flag = true;
202
- for (const targetNode of target as any) {
203
- if (!context.contains(targetNode)) {
204
- flag = false;
205
- break;
206
- }
207
- }
208
- return flag;
209
- } else {
210
- return context.contains(target as HTMLElement);
211
- }
212
- }
213
- }
214
-
215
- /**
216
- * 获取格式化后的时间
217
- * @param text (可选)需要格式化的字符串或者时间戳,默认:new Date()
218
- * @param formatType (可选)格式化成的显示类型,默认:yyyy-MM-dd HH:mm:ss
219
- * + yyyy 年
220
- * + MM 月
221
- * + dd 天
222
- * + HH 时 (24小时制)
223
- * + hh 时 (12小时制)
224
- * + mm 分
225
- * + ss 秒
226
- * @returns {string} 返回格式化后的时间
227
- * @example
228
- * Utils.formatTime("2022-08-21 23:59:00","HH:mm:ss");
229
- * > '23:59:00'
230
- * @example
231
- * Utils.formatTime(1899187424988,"HH:mm:ss");
232
- * > '15:10:13'
233
- * @example
234
- * Utils.formatTime()
235
- * > '2023-1-1 00:00:00'
236
- **/
237
- formatTime(text?: string | number | Date, formatType?: string): string;
238
- /**
239
- * 获取格式化后的时间
240
- * @param text (可选)需要格式化的字符串或者时间戳,默认:new Date()
241
- * @param formatType (可选)格式化成的显示类型,默认:yyyy-MM-dd HH:mm:ss
242
- * + yyyy 年
243
- * + MM 月
244
- * + dd 天
245
- * + HH 时 (24小时制)
246
- * + hh 时 (12小时制)
247
- * + mm 分
248
- * + ss 秒
249
- * @returns {string} 返回格式化后的时间
250
- * @example
251
- * Utils.formatTime("2022-08-21 23:59:00","HH:mm:ss");
252
- * > '23:59:00'
253
- * @example
254
- * Utils.formatTime(1899187424988,"HH:mm:ss");
255
- * > '15:10:13'
256
- * @example
257
- * Utils.formatTime()
258
- * > '2023-1-1 00:00:00'
259
- **/
260
- formatTime(
261
- text?: string | number | Date,
262
- formatType?:
263
- | "yyyy-MM-dd HH:mm:ss"
264
- | "yyyy/MM/dd HH:mm:ss"
265
- | "yyyy_MM_dd_HH_mm_ss"
266
- | "yyyy年MM月dd日 HH时mm分ss秒"
267
- | "yyyy年MM月dd日 hh:mm:ss"
268
- | "yyyy年MM月dd日 HH:mm:ss"
269
- | "yyyy-MM-dd"
270
- | "yyyyMMdd"
271
- | "HH:mm:ss"
272
- ): string;
273
- formatTime(text = new Date(), formatType = "yyyy-MM-dd HH:mm:ss") {
274
- let time = text == null ? new Date() : new Date(text);
275
- /**
276
- * 校验时间补0
277
- * @param timeNum
278
- * @returns
279
- */
280
- function checkTime(timeNum: number) {
281
- if (timeNum < 10) return "0" + timeNum;
282
- return timeNum;
283
- }
284
-
285
- /**
286
- * 时间制修改 24小时制转12小时制
287
- * @param hourNum 小时
288
- * @returns
289
- */
290
- function timeSystemChange(hourNum: number) {
291
- return hourNum > 12 ? hourNum - 12 : hourNum;
292
- }
293
-
294
- let timeRegexp = {
295
- yyyy: time.getFullYear(),
296
- /* 年 */
297
- MM: checkTime(time.getMonth() + 1),
298
- /* 月 */
299
- dd: checkTime(time.getDate()),
300
- /* 日 */
301
- HH: checkTime(time.getHours()),
302
- /* 时 (24小时制) */
303
- hh: checkTime(timeSystemChange(time.getHours())),
304
- /* 时 (12小时制) */
305
- mm: checkTime(time.getMinutes()),
306
- /* 分 */
307
- ss: checkTime(time.getSeconds()),
308
- /* 秒 */
309
- };
310
- Object.keys(timeRegexp).forEach(function (key) {
311
- let replaecRegexp = new RegExp(key, "g");
312
- formatType = formatType.replace(replaecRegexp, (timeRegexp as any)[key]);
313
- });
314
- return formatType;
315
- }
316
- /**
317
- * 格式化byte为KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB
318
- * @param byteSize 字节
319
- * @param addType (可选)是否添加单位
320
- * + true (默认) 添加单位
321
- * + false 不添加单位
322
- * @returns
323
- * + {string} 当addType为true时,且保留小数点末尾2位
324
- * + {number} 当addType为false时,且保留小数点末尾2位
325
- * @example
326
- * Utils.formatByteToSize("812304");
327
- * > '793.27KB'
328
- * @example
329
- * Utils.formatByteToSize("812304",false);
330
- * > 793.27
331
- **/
332
- formatByteToSize<T extends boolean>(
333
- byteSize: number | string,
334
- addType?: T
335
- ): T extends true ? string : number;
336
- formatByteToSize(byteSize: number | string, addType = true) {
337
- byteSize = parseInt(byteSize.toString());
338
- if (isNaN(byteSize)) {
339
- throw new TypeError("Utils.formatByteToSize 参数 byteSize 格式不正确");
340
- }
341
- let result = 0;
342
- let resultType = "KB";
343
- let sizeData: PopsUtilsOwnObject<number> = {};
344
- sizeData.B = 1;
345
- sizeData.KB = 1024;
346
- sizeData.MB = sizeData.KB * sizeData.KB;
347
- sizeData.GB = sizeData.MB * sizeData.KB;
348
- sizeData.TB = sizeData.GB * sizeData.KB;
349
- sizeData.PB = sizeData.TB * sizeData.KB;
350
- sizeData.EB = sizeData.PB * sizeData.KB;
351
- sizeData.ZB = sizeData.EB * sizeData.KB;
352
- sizeData.YB = sizeData.ZB * sizeData.KB;
353
- sizeData.BB = sizeData.YB * sizeData.KB;
354
- sizeData.NB = sizeData.BB * sizeData.KB;
355
- sizeData.DB = sizeData.NB * sizeData.KB;
356
- for (let key in sizeData) {
357
- result = byteSize / (sizeData as any)[key];
358
- resultType = key;
359
- if (sizeData.KB >= result) {
360
- break;
361
- }
362
- }
363
- new Date();
364
- result = result.toFixed(2) as any;
365
- result = addType
366
- ? result + resultType.toString()
367
- : (parseFloat(result.toString()) as any);
368
- return result;
369
- }
370
- AnyTouch = () => {
371
- return AnyTouch;
372
- };
373
- /**
374
- * 通过navigator.userAgent判断是否是手机访问
375
- * @param userAgent
376
- */
377
- isPhone(userAgent = PopsCore.globalThis.navigator.userAgent): boolean {
378
- return Boolean(/(iPhone|iPad|iPod|iOS|Android)/i.test(userAgent));
379
- }
380
- /**
381
- * 自动使用 Worker 执行 setTimeout
382
- */
383
- setTimeout(callback: Function, timeout: number = 0) {
384
- try {
385
- return WorkerSetTimeout(callback, timeout);
386
- } catch (error) {
387
- return globalThis.setTimeout(callback, timeout);
388
- }
389
- }
390
- /**
391
- * 配合 .setTimeout 使用
392
- */
393
- clearTimeout(timeId: number | undefined) {
394
- try {
395
- if (timeId != null) {
396
- WorkerClearTimeout(timeId);
397
- }
398
- } catch (error) {
399
- } finally {
400
- globalThis.clearTimeout(timeId);
401
- }
402
- }
403
- /**
404
- * 自动使用 Worker 执行 setInterval
405
- */
406
- setInterval(callback: Function, timeout: number = 0) {
407
- try {
408
- return WorkerSetInterval(callback, timeout);
409
- } catch (error) {
410
- return globalThis.setInterval(callback, timeout);
411
- }
412
- }
413
- /**
414
- * 配合 .setInterval 使用
415
- */
416
- clearInterval(timeId: number | undefined) {
417
- try {
418
- if (timeId != null) {
419
- WorkerClearInterval(timeId);
420
- }
421
- } catch (error) {
422
- } finally {
423
- globalThis.clearInterval(timeId);
424
- }
425
- }
426
- }
427
-
428
- const popsUtils = new PopsUtils();
429
-
430
- export { popsUtils };