@whitesev/domutils 1.6.8 → 1.7.1

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 (57) hide show
  1. package/dist/index.amd.js +1962 -1062
  2. package/dist/index.amd.js.map +1 -1
  3. package/dist/index.amd.min.js +2 -0
  4. package/dist/index.amd.min.js.map +1 -0
  5. package/dist/index.cjs.js +1962 -1062
  6. package/dist/index.cjs.js.map +1 -1
  7. package/dist/index.cjs.min.js +2 -0
  8. package/dist/index.cjs.min.js.map +1 -0
  9. package/dist/index.esm.js +1962 -1062
  10. package/dist/index.esm.js.map +1 -1
  11. package/dist/index.esm.min.js +2 -0
  12. package/dist/index.esm.min.js.map +1 -0
  13. package/dist/index.iife.js +1962 -1062
  14. package/dist/index.iife.js.map +1 -1
  15. package/dist/index.iife.min.js +2 -0
  16. package/dist/index.iife.min.js.map +1 -0
  17. package/dist/index.system.js +1962 -1062
  18. package/dist/index.system.js.map +1 -1
  19. package/dist/index.system.min.js +2 -0
  20. package/dist/index.system.min.js.map +1 -0
  21. package/dist/index.umd.js +1962 -1062
  22. package/dist/index.umd.js.map +1 -1
  23. package/dist/index.umd.min.js +2 -0
  24. package/dist/index.umd.min.js.map +1 -0
  25. package/dist/types/index.d.ts +1 -1
  26. package/dist/types/src/{DOMUtilsCommonUtils.d.ts → CommonUtils.d.ts} +20 -8
  27. package/dist/types/src/ElementAnimate.d.ts +89 -0
  28. package/dist/types/src/{DOMUtilsEvent.d.ts → ElementEvent.d.ts} +27 -92
  29. package/dist/types/src/ElementHandler.d.ts +17 -0
  30. package/dist/types/src/ElementSelector.d.ts +96 -0
  31. package/dist/types/src/ElementWait.d.ts +278 -0
  32. package/dist/types/src/GlobalData.d.ts +4 -0
  33. package/dist/types/src/{DOMUtilsOriginPrototype.d.ts → OriginPrototype.d.ts} +1 -2
  34. package/dist/types/src/Utils.d.ts +68 -0
  35. package/dist/types/src/{DOMUtils.d.ts → index.d.ts} +157 -177
  36. package/dist/types/src/types/DOMUtilsEvent.d.ts +23 -0
  37. package/dist/types/src/types/env.d.ts +9 -0
  38. package/dist/types/src/types/global.d.ts +0 -2
  39. package/dist/types/src/types/gm.d.ts +0 -4
  40. package/index.ts +1 -1
  41. package/package.json +13 -12
  42. package/src/{DOMUtilsCommonUtils.ts → CommonUtils.ts} +25 -11
  43. package/src/ElementAnimate.ts +290 -0
  44. package/src/{DOMUtilsEvent.ts → ElementEvent.ts} +220 -396
  45. package/src/ElementHandler.ts +43 -0
  46. package/src/ElementSelector.ts +260 -0
  47. package/src/ElementWait.ts +699 -0
  48. package/src/GlobalData.ts +5 -0
  49. package/src/{DOMUtilsOriginPrototype.ts → OriginPrototype.ts} +1 -3
  50. package/src/Utils.ts +386 -0
  51. package/src/{DOMUtils.ts → index.ts} +678 -757
  52. package/src/types/DOMUtilsEvent.d.ts +23 -0
  53. package/src/types/env.d.ts +9 -0
  54. package/src/types/global.d.ts +0 -2
  55. package/src/types/gm.d.ts +0 -4
  56. package/dist/types/src/DOMUtilsData.d.ts +0 -5
  57. package/src/DOMUtilsData.ts +0 -7
@@ -1,10 +1,15 @@
1
- import type { DOMUtils_Event, DOMUtils_EventType, DOMUtilsElementEventType, DOMUtilsEventListenerOption, DOMUtilsEventListenerOptionsAttribute } from "./types/DOMUtilsEvent";
1
+ import { ElementAnimate } from "./ElementAnimate";
2
+ import type { DOMUtils_Event, DOMUtils_EventType, DOMUtilsAddEventListenerResult, DOMUtilsElementEventType, DOMUtilsEventListenerOption, DOMUtilsEventListenerOptionsAttribute } from "./types/DOMUtilsEvent";
2
3
  import type { DOMUtilsTargetElementType } from "./types/global";
3
4
  import type { WindowApiOption } from "./types/WindowApi";
4
5
  import { WindowApi } from "./WindowApi";
5
- export declare class DOMUtilsEvent {
6
+ declare class ElementEvent extends ElementAnimate {
6
7
  windowApi: typeof WindowApi.prototype;
7
8
  constructor(windowApiOption?: WindowApiOption);
9
+ /** 获取 animationend 在各个浏览器的兼容名 */
10
+ getAnimationEndNameList(): string[];
11
+ /** 获取 transitionend 在各个浏览器的兼容名 */
12
+ getTransitionEndNameList(): string[];
8
13
  /**
9
14
  * 绑定事件
10
15
  * @param element 需要绑定的元素|元素数组|window
@@ -23,7 +28,7 @@ export declare class DOMUtilsEvent {
23
28
  * console.log("事件触发",event)
24
29
  * })
25
30
  */
26
- on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: DOMUtils_Event[T]) => void, option?: DOMUtilsEventListenerOption | boolean): void;
31
+ on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: DOMUtils_Event[T]) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
27
32
  /**
28
33
  * 绑定事件
29
34
  * @param element 需要绑定的元素|元素数组|window
@@ -42,7 +47,7 @@ export declare class DOMUtilsEvent {
42
47
  * console.log("事件触发",event)
43
48
  * })
44
49
  */
45
- on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: DOMUtilsEventListenerOption | boolean): void;
50
+ on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
46
51
  /**
47
52
  * 绑定事件
48
53
  * @param element 需要绑定的元素|元素数组|window
@@ -67,7 +72,7 @@ export declare class DOMUtilsEvent {
67
72
  * console.log("事件触发", event, selectorTarget)
68
73
  * })
69
74
  */
70
- on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): void;
75
+ on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
71
76
  /**
72
77
  * 绑定事件
73
78
  * @param element 需要绑定的元素|元素数组|window
@@ -92,7 +97,7 @@ export declare class DOMUtilsEvent {
92
97
  * console.log("事件触发", event, selectorTarget)
93
98
  * })
94
99
  */
95
- on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): void;
100
+ on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
96
101
  /**
97
102
  * 取消绑定事件
98
103
  * @param element 需要取消绑定的元素|元素数组
@@ -177,7 +182,7 @@ export declare class DOMUtilsEvent {
177
182
  * @param element 需要触发的元素|元素数组|window
178
183
  * @param eventType 需要触发的事件
179
184
  * @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
180
- * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true
185
+ * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
181
186
  * @example
182
187
  * // 触发元素a.xx的click事件
183
188
  * DOMUtils.trigger(document.querySelector("a.xx"),"click")
@@ -186,13 +191,13 @@ export declare class DOMUtilsEvent {
186
191
  * DOMUtils.trigger(document.querySelector("a.xx"),"click tap hover")
187
192
  * DOMUtils.trigger("a.xx",["click","tap","hover"])
188
193
  */
189
- trigger(element: DOMUtilsTargetElementType | Element | DocumentFragment | any[] | typeof globalThis | Window | Document, eventType: string, details?: object, useDispatchToTriggerEvent?: boolean): void;
194
+ trigger(element: DOMUtilsTargetElementType | Element | DocumentFragment | any[] | typeof globalThis | Window | Document, eventType: string | string[], details?: object, useDispatchToTriggerEvent?: boolean): void;
190
195
  /**
191
196
  * 主动触发事件
192
197
  * @param element 需要触发的元素|元素数组|window
193
198
  * @param eventType 需要触发的事件
194
199
  * @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
195
- * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true
200
+ * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
196
201
  * @example
197
202
  * // 触发元素a.xx的click事件
198
203
  * DOMUtils.trigger(document.querySelector("a.xx"),"click")
@@ -201,7 +206,7 @@ export declare class DOMUtilsEvent {
201
206
  * DOMUtils.trigger(document.querySelector("a.xx"),"click tap hover")
202
207
  * DOMUtils.trigger("a.xx",["click","tap","hover"])
203
208
  */
204
- trigger(element: HTMLElement | string | NodeList | any[] | Window | Document, eventType: DOMUtils_EventType | DOMUtils_EventType[], details?: object, useDispatchToTriggerEvent?: boolean): void;
209
+ trigger(element: Element | string | NodeList | any[] | Window | Document, eventType: DOMUtils_EventType | DOMUtils_EventType[], details?: object, useDispatchToTriggerEvent?: boolean): void;
205
210
  /**
206
211
  * 绑定或触发元素的click事件
207
212
  * @param element 目标元素
@@ -395,91 +400,21 @@ export declare class DOMUtilsEvent {
395
400
  removeListen(): void;
396
401
  };
397
402
  /**
398
- * 选择器,可使用以下的额外语法
399
- *
400
- * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
401
- * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
402
- * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
403
- * @param selector 选择器
404
- * @param parent 指定父元素
403
+ * 阻止事件传递
404
+ * @param event 要阻止传递的事件
405
405
  * @example
406
- * DOMUtils.selector("div:contains('测试')")
407
- * > div.xxx
408
- * @example
409
- * DOMUtils.selector("div:empty")
410
- * > div.xxx
411
- * @example
412
- * DOMUtils.selector("div:regexp('^xxxx$')")
413
- * > div.xxx
406
+ * DOMUtils.preventEvent(event);
414
407
  */
415
- selector<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K] | undefined;
416
- selector<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E | undefined;
408
+ preventEvent(event: Event): boolean;
417
409
  /**
418
- * 选择器,可使用以下的额外语法
419
- *
420
- * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
421
- * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
422
- * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
423
- * @param selector 选择器
424
- * @param parent 指定父元素
425
- * @example
426
- * DOMUtils.selectorAll("div:contains('测试')")
427
- * > [div.xxx]
428
- * @example
429
- * DOMUtils.selectorAll("div:empty")
430
- * > [div.xxx]
431
- * @example
432
- * DOMUtils.selectorAll("div:regexp('^xxxx$')")
433
- * > [div.xxx]
434
- * @example
435
- * DOMUtils.selectorAll("div:regexp(/^xxx/ig)")
436
- * > [div.xxx]
437
- */
438
- selectorAll<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K][];
439
- selectorAll<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E[];
440
- /**
441
- * 匹配元素,可使用以下的额外语法
442
- *
443
- * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
444
- * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
445
- * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
446
- * @param $el 元素
447
- * @param selector 选择器
448
- * @example
449
- * DOMUtils.matches("div:contains('测试')")
450
- * > true
451
- * @example
452
- * DOMUtils.matches("div:empty")
453
- * > true
454
- * @example
455
- * DOMUtils.matches("div:regexp('^xxxx$')")
456
- * > true
457
- * @example
458
- * DOMUtils.matches("div:regexp(/^xxx/ig)")
459
- * > false
460
- */
461
- matches($el: HTMLElement | Element | null | undefined, selector: string): boolean;
462
- /**
463
- * 根据选择器获取上层元素,可使用以下的额外语法
464
- *
465
- * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
466
- * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
467
- * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
468
- * @param $el 元素
469
- * @param selector 选择器
470
- * @example
471
- * DOMUtils.closest("div:contains('测试')")
472
- * > div.xxx
473
- * @example
474
- * DOMUtils.closest("div:empty")
475
- * > div.xxx
476
- * @example
477
- * DOMUtils.closest("div:regexp('^xxxx$')")
478
- * > div.xxxx
410
+ * 通过监听事件来主动阻止事件的传递
411
+ * @param $el 要进行处理的元素
412
+ * @param eventNameList (可选)要阻止的事件名|列表
413
+ * @param capture (可选)是否捕获,默认false
479
414
  * @example
480
- * DOMUtils.closest("div:regexp(/^xxx/ig)")
481
- * > null
415
+ * DOMUtils.preventEvent(document.querySelector("a"),"click")
482
416
  */
483
- closest<K extends keyof HTMLElementTagNameMap>($el: HTMLElement | Element, selector: string): HTMLElementTagNameMap[K] | null;
484
- closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null;
417
+ preventEvent($el: HTMLElement, eventNameList?: string | string[], capture?: boolean): void;
485
418
  }
419
+ declare const elementEvent: ElementEvent;
420
+ export { elementEvent, ElementEvent };
@@ -0,0 +1,17 @@
1
+ import { ElementEvent } from "./ElementEvent";
2
+ import type { WindowApiOption } from "./types/WindowApi";
3
+ import { WindowApi } from "./WindowApi";
4
+ declare class ElementHandler extends ElementEvent {
5
+ windowApi: typeof WindowApi.prototype;
6
+ constructor(windowApiOption?: WindowApiOption);
7
+ /**
8
+ * 获取元素的选择器字符串
9
+ * @param $el
10
+ * @example
11
+ * DOMUtils.getElementSelector(document.querySelector("a"))
12
+ * > '.....'
13
+ */
14
+ getElementSelector($el: HTMLElement): string;
15
+ }
16
+ declare const elementHandler: ElementHandler;
17
+ export { elementHandler, ElementHandler };
@@ -0,0 +1,96 @@
1
+ import type { WindowApiOption } from "./types/WindowApi";
2
+ import { WindowApi } from "./WindowApi";
3
+ declare class ElementSelector {
4
+ windowApi: typeof WindowApi.prototype;
5
+ constructor(windowApiOption?: WindowApiOption);
6
+ /**
7
+ * 选择器,可使用以下的额外语法
8
+ *
9
+ * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
10
+ * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
11
+ * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
12
+ * @param selector 选择器
13
+ * @param parent 指定父元素
14
+ * @example
15
+ * DOMUtils.selector("div:contains('测试')")
16
+ * > div.xxx
17
+ * @example
18
+ * DOMUtils.selector("div:empty")
19
+ * > div.xxx
20
+ * @example
21
+ * DOMUtils.selector("div:regexp('^xxxx$')")
22
+ * > div.xxx
23
+ */
24
+ selector<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K] | undefined;
25
+ selector<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E | undefined;
26
+ /**
27
+ * 选择器,可使用以下的额外语法
28
+ *
29
+ * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
30
+ * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
31
+ * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
32
+ * @param selector 选择器
33
+ * @param parent 指定父元素
34
+ * @example
35
+ * DOMUtils.selectorAll("div:contains('测试')")
36
+ * > [div.xxx]
37
+ * @example
38
+ * DOMUtils.selectorAll("div:empty")
39
+ * > [div.xxx]
40
+ * @example
41
+ * DOMUtils.selectorAll("div:regexp('^xxxx$')")
42
+ * > [div.xxx]
43
+ * @example
44
+ * DOMUtils.selectorAll("div:regexp(/^xxx/ig)")
45
+ * > [div.xxx]
46
+ */
47
+ selectorAll<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K][];
48
+ selectorAll<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E[];
49
+ /**
50
+ * 匹配元素,可使用以下的额外语法
51
+ *
52
+ * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
53
+ * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
54
+ * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
55
+ * @param $el 元素
56
+ * @param selector 选择器
57
+ * @example
58
+ * DOMUtils.matches("div:contains('测试')")
59
+ * > true
60
+ * @example
61
+ * DOMUtils.matches("div:empty")
62
+ * > true
63
+ * @example
64
+ * DOMUtils.matches("div:regexp('^xxxx$')")
65
+ * > true
66
+ * @example
67
+ * DOMUtils.matches("div:regexp(/^xxx/ig)")
68
+ * > false
69
+ */
70
+ matches($el: HTMLElement | Element | null | undefined, selector: string): boolean;
71
+ /**
72
+ * 根据选择器获取上层元素,可使用以下的额外语法
73
+ *
74
+ * + :contains([text]) 作用: 找到包含指定文本内容的指定元素
75
+ * + :empty 作用:找到既没有文本内容也没有子元素的指定元素
76
+ * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
77
+ * @param $el 元素
78
+ * @param selector 选择器
79
+ * @example
80
+ * DOMUtils.closest("div:contains('测试')")
81
+ * > div.xxx
82
+ * @example
83
+ * DOMUtils.closest("div:empty")
84
+ * > div.xxx
85
+ * @example
86
+ * DOMUtils.closest("div:regexp('^xxxx$')")
87
+ * > div.xxxx
88
+ * @example
89
+ * DOMUtils.closest("div:regexp(/^xxx/ig)")
90
+ * > null
91
+ */
92
+ closest<K extends keyof HTMLElementTagNameMap>($el: HTMLElement | Element, selector: string): HTMLElementTagNameMap[K] | null;
93
+ closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null;
94
+ }
95
+ declare const elementSelector: ElementSelector;
96
+ export { elementSelector, ElementSelector };
@@ -0,0 +1,278 @@
1
+ import { ElementSelector } from "./ElementSelector";
2
+ import type { WindowApiOption } from "./types/WindowApi";
3
+ import { WindowApi } from "./WindowApi";
4
+ declare class ElementWait extends ElementSelector {
5
+ windowApi: typeof WindowApi.prototype;
6
+ constructor(windowApiOption?: WindowApiOption);
7
+ /**
8
+ * 等待任意事件成立
9
+ *
10
+ * 运行方式为根据页面元素的改变而触发回调
11
+ * @param checkFn 检测的函数
12
+ * @param timeout 超时时间,默认0
13
+ * @param parent (可选)父元素,默认document
14
+ * @example
15
+ * Utils.wait(()=> {
16
+ * let $test = document.querySelector("#test");
17
+ * return {
18
+ * success: $test !== null,
19
+ * data: $test
20
+ * }
21
+ * })
22
+ */
23
+ wait<T>(checkFn: (...args: any[]) => {
24
+ /**
25
+ * 是否检测成功
26
+ */
27
+ success: boolean;
28
+ /**
29
+ * 返回的值
30
+ */
31
+ data: T;
32
+ }, timeout?: null | undefined, parent?: Node | Element | Document | HTMLElement): Promise<T>;
33
+ wait<T>(checkFn: (...args: any[]) => {
34
+ /**
35
+ * 是否检测成功
36
+ */
37
+ success: boolean;
38
+ /**
39
+ * 返回的值
40
+ */
41
+ data: T;
42
+ }, timeout?: number, parent?: Node | Element | Document | HTMLElement): Promise<T | null>;
43
+ /**
44
+ * 等待元素出现
45
+ * @param selectorFn 获取元素的函数
46
+ * @param timeout 超时时间,默认0
47
+ * @example
48
+ * Utils.waitNode(()=>document.querySelector("div"), 1000).then( $div =>{
49
+ * console.log($div); // $div => HTMLDivELement | null
50
+ * })
51
+ */
52
+ waitNode<K>(selectorFn: () => K | null | undefined): Promise<K>;
53
+ waitNode<K>(selectorFn: () => K | null | undefined, timeout: number): Promise<K | null | undefined>;
54
+ /**
55
+ * 等待元素出现
56
+ * @param selector CSS选择器
57
+ * @param parent (可选)父元素,默认document
58
+ * @example
59
+ * Utils.waitNode("div").then( $div =>{
60
+ * console.log($div); // div => HTMLDivELement
61
+ * })
62
+ * Utils.waitNode("div", document).then( $div =>{
63
+ * console.log($div); // div => HTMLDivELement
64
+ * })
65
+ */
66
+ waitNode<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Node | Element | Document | HTMLElement): Promise<HTMLElementTagNameMap[K]>;
67
+ waitNode<T extends Element>(selector: string, parent?: Node | Element | Document | HTMLElement): Promise<T>;
68
+ /**
69
+ * 等待元素出现
70
+ * @param selectorList CSS选择器数组
71
+ * @param parent (可选)父元素,默认document
72
+ * @example
73
+ * Utils.waitNode(["div"]).then( ([$div]) =>{
74
+ * console.log($div); // div => HTMLDivELement[]
75
+ * })
76
+ * Utils.waitNode(["div"], document).then( ([$div]) =>{
77
+ * console.log($div); // div => HTMLDivELement[]
78
+ * })
79
+ */
80
+ waitNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<HTMLElementTagNameMap[K][]>;
81
+ waitNode<T extends Element[]>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<T>;
82
+ /**
83
+ * 等待元素出现
84
+ * @param selector CSS选择器
85
+ * @param parent 父元素,默认document
86
+ * @param timeout 超时时间,默认0
87
+ * @example
88
+ * Utils.waitNode("div", document, 1000).then( $div =>{
89
+ * console.log($div); // $div => HTMLDivELement | null
90
+ * })
91
+ */
92
+ waitNode<K extends keyof HTMLElementTagNameMap>(selector: K, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
93
+ waitNode<T extends Element>(selector: string, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
94
+ /**
95
+ * 等待元素出现
96
+ * @param selectorList CSS选择器数组
97
+ * @param parent 父元素,默认document
98
+ * @param timeout 超时时间,默认0
99
+ * @example
100
+ * Utils.waitNode(["div"], document, 1000).then( ([$div]) =>{
101
+ * console.log($div); // $div => HTMLDivELement[] | null
102
+ * })
103
+ */
104
+ waitNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
105
+ waitNode<T extends Element[]>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
106
+ /**
107
+ * 等待元素出现
108
+ * @param selector CSS选择器
109
+ * @param timeout 超时时间,默认0
110
+ * @example
111
+ * Utils.waitNode("div", 1000).then( $div =>{
112
+ * console.log($div); // $div => HTMLDivELement | null
113
+ * })
114
+ */
115
+ waitNode<K extends keyof HTMLElementTagNameMap>(selector: K, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
116
+ waitNode<T extends Element>(selector: string, timeout: number): Promise<T | null>;
117
+ /**
118
+ * 等待元素出现
119
+ * @param selectorList CSS选择器数组
120
+ * @param timeout 超时时间,默认0
121
+ * @example
122
+ * Utils.waitNode(["div"], 1000).then( [$div] =>{
123
+ * console.log($div); // $div => HTMLDivELement[] | null
124
+ * })
125
+ */
126
+ waitNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
127
+ waitNode<T extends Element[]>(selectorList: string[], timeout: number): Promise<T | null>;
128
+ /**
129
+ * 等待任意元素出现
130
+ * @param selectorList CSS选择器数组
131
+ * @param parent (可选)监听的父元素
132
+ * @example
133
+ * Utils.waitAnyNode(["div","div"]).then( $div =>{
134
+ * console.log($div); // $div => HTMLDivELement 这里是第一个
135
+ * })
136
+ * Utils.waitAnyNode(["a","div"], document).then( $a =>{
137
+ * console.log($a); // $a => HTMLAnchorElement 这里是第一个
138
+ * })
139
+ */
140
+ waitAnyNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<HTMLElementTagNameMap[K]>;
141
+ waitAnyNode<T extends Element>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<T>;
142
+ /**
143
+ * 等待任意元素出现
144
+ * @param selectorList CSS选择器数组
145
+ * @param parent 父元素,默认document
146
+ * @param timeout 超时时间,默认0
147
+ * @example
148
+ * Utils.waitAnyNode(["div","div"], document, 10000).then( $div =>{
149
+ * console.log($div); // $div => HTMLDivELement | null
150
+ * })
151
+ */
152
+ waitAnyNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
153
+ waitAnyNode<T extends Element>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
154
+ /**
155
+ * 等待任意元素出现
156
+ * @param selectorList CSS选择器数组
157
+ * @param timeout 超时时间,默认0
158
+ * @example
159
+ * Utils.waitAnyNode(["div","div"], 10000).then( $div =>{
160
+ * console.log($div); // $div => HTMLDivELement | null
161
+ * })
162
+ */
163
+ waitAnyNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
164
+ waitAnyNode<T extends Element>(selectorList: string[], timeout: number): Promise<T | null>;
165
+ /**
166
+ * 等待元素数组出现
167
+ * @param selector CSS选择器
168
+ * @param parent (可选)监听的父元素
169
+ * @example
170
+ * Utils.waitNodeList("div").then( $result =>{
171
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>
172
+ * })
173
+ * Utils.waitNodeList("div", document).then( $result =>{
174
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>
175
+ * })
176
+ */
177
+ waitNodeList<T extends keyof HTMLElementTagNameMap>(selector: T, parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<HTMLElementTagNameMap[T]>>;
178
+ waitNodeList<T extends NodeListOf<Element>>(selector: string, parent?: Node | Element | Document | HTMLElement): Promise<T>;
179
+ /**
180
+ * 等待元素数组出现
181
+ * @param selectorList CSS选择器数组
182
+ * @param parent (可选)监听的父元素
183
+ * @example
184
+ * Utils.waitNodeList(["div"]).then( $result =>{
185
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>[]
186
+ * })
187
+ * Utils.waitNodeList(["div"], document).then( $result =>{
188
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>[]
189
+ * })
190
+ */
191
+ waitNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<HTMLElementTagNameMap[K]>[]>;
192
+ waitNodeList<T extends NodeListOf<Element>[]>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<T>;
193
+ /**
194
+ * 等待元素数组出现
195
+ * @param selector CSS选择器
196
+ * @param parent 监听的父元素
197
+ * @param timeout 超时时间,默认0
198
+ * @example
199
+ * Utils.waitNodeList("div", document, 10000).then( $result =>{
200
+ * console.log($result); // $result => NodeListOf<HTMLDivElement> | null
201
+ * })
202
+ */
203
+ waitNodeList<T extends NodeListOf<Element>>(selector: string, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
204
+ waitNodeList<K extends keyof HTMLElementTagNameMap>(selector: K, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
205
+ /**
206
+ * 等待元素数组出现
207
+ * @param selectorList CSS选择器数组
208
+ * @param parent 监听的父元素
209
+ * @param timeout 超时时间,默认0
210
+ * @example
211
+ * Utils.waitNodeList(["div"], document, 10000).then( $result =>{
212
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>[] | null
213
+ * })
214
+ */
215
+ waitNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]>[] | null>;
216
+ waitNodeList<T extends NodeListOf<Element>[]>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
217
+ /**
218
+ * 等待元素数组出现
219
+ * @param selector CSS选择器数组
220
+ * @param timeout 超时时间,默认0
221
+ * @example
222
+ * Utils.waitNodeList("div", 10000).then( $result =>{
223
+ * console.log($result); // $result => NodeListOf<HTMLDivElement> | null
224
+ * })
225
+ */
226
+ waitNodeList<K extends keyof HTMLElementTagNameMap>(selector: K[], timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
227
+ waitNodeList<T extends NodeListOf<Element>>(selector: string[], timeout: number): Promise<T | null>;
228
+ /**
229
+ * 等待元素数组出现
230
+ * @param selectorList CSS选择器数组
231
+ * @param timeout 超时时间,默认0
232
+ * @example
233
+ * Utils.waitNodeList(["div"], 10000).then( $result =>{
234
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>[] | null
235
+ * })
236
+ */
237
+ waitNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]>[] | null>;
238
+ waitNodeList<T extends NodeListOf<Element>>(selectorList: string[], timeout: number): Promise<T[] | null>;
239
+ /**
240
+ * 等待任意元素数组出现
241
+ * @param selectorList CSS选择器数组
242
+ * @param parent (可选)监听的父元素
243
+ * @example
244
+ * Utils.waitAnyNodeList(["div","a"]).then( $result =>{
245
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>
246
+ * })
247
+ * Utils.waitAnyNodeList(["div","a"], document).then( $result =>{
248
+ * console.log($result); // $result => NodeListOf<HTMLDivElement>
249
+ * })
250
+ */
251
+ waitAnyNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<HTMLElementTagNameMap[K]>>;
252
+ waitAnyNodeList<T extends Element>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<T>>;
253
+ /**
254
+ * 等待任意元素数组出现
255
+ * @param selectorList CSS选择器数组
256
+ * @param parent 父元素,默认document
257
+ * @param timeout 超时时间,默认0
258
+ * @example
259
+ * Utils.waitAnyNodeList(["div","a"], document, 10000).then( $result =>{
260
+ * console.log($result); // $result => NodeListOf<HTMLDivElement> | null
261
+ * })
262
+ */
263
+ waitAnyNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
264
+ waitAnyNodeList<T extends Element>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<T> | null>;
265
+ /**
266
+ * 等待任意元素出现
267
+ * @param selectorList CSS选择器数组
268
+ * @param timeout 超时时间,默认0
269
+ * @example
270
+ * Utils.waitAnyNodeList(["div","div"], 10000).then( $result =>{
271
+ * console.log($result); // $result => NodeListOf<HTMLDivElement> | null
272
+ * })
273
+ */
274
+ waitAnyNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
275
+ waitAnyNodeList<T extends Element>(selectorList: string[], timeout: number): Promise<NodeListOf<T> | null>;
276
+ }
277
+ declare const elementWait: ElementWait;
278
+ export { elementWait, ElementWait };
@@ -0,0 +1,4 @@
1
+ export declare const GlobalData: {
2
+ /** .on添加在元素存储的事件 */
3
+ domEventSymbol: symbol;
4
+ };
@@ -1,6 +1,5 @@
1
- declare const OriginPrototype: {
1
+ export declare const OriginPrototype: {
2
2
  Object: {
3
3
  defineProperty: <T>(o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) => T;
4
4
  };
5
5
  };
6
- export { OriginPrototype };
@@ -0,0 +1,68 @@
1
+ import type { WindowApiOption } from "./types/WindowApi";
2
+ declare class Utils {
3
+ private windowApi;
4
+ constructor(option?: WindowApiOption);
5
+ /**
6
+ * 判断对象是否是jQuery对象
7
+ * @param target
8
+ * @returns
9
+ * + true 是jQuery对象
10
+ * + false 不是jQuery对象
11
+ * @example
12
+ * Utils.isJQuery($("a"))
13
+ * > true
14
+ */
15
+ isJQuery(target: any): boolean;
16
+ /**
17
+ * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
18
+ * @param target 目标数据
19
+ * @param source 源数据
20
+ * @param isAdd 是否可以追加键,默认false
21
+ * @example
22
+ * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
23
+ * >
24
+ * {
25
+ "1": 1,
26
+ "2": {
27
+ "3": 4
28
+ }
29
+ }
30
+ */
31
+ assign<T1, T2 extends object, T3 extends boolean>(target: T1, source: T2, isAdd?: T3): T3 extends true ? T1 & T2 : T1;
32
+ /**
33
+ * 监听页面元素改变并处理
34
+ * @param target 需要监听的元素,如果不存在,可以等待它出现
35
+ * @param observer_config MutationObserver的配置
36
+ * @example
37
+ Utils.mutationObserver(document.querySelector("div.xxxx"),{
38
+ "callback":(mutations, observer)=>{},
39
+ "config":{childList:true,attributes:true}
40
+ });
41
+ * @example
42
+ Utils.mutationObserver(document.querySelectorAll("div.xxxx"),{
43
+ "callback":(mutations, observer)=>{},
44
+ "config":{childList:true,attributes:true}}
45
+ );
46
+ * @example
47
+ Utils.mutationObserver($("div.xxxx"),{
48
+ "callback":(mutations, observer)=>{},
49
+ "config":{childList:true,attributes:true}}
50
+ );
51
+ **/
52
+ mutationObserver(target: HTMLElement | Node | NodeList | Document, observer_config: {
53
+ /**
54
+ * observer的配置
55
+ */
56
+ config?: MutationObserverInit;
57
+ /**
58
+ * 是否主动触发一次
59
+ */
60
+ immediate?: boolean;
61
+ /**
62
+ * 触发的回调函数
63
+ */
64
+ callback: MutationCallback;
65
+ }): MutationObserver;
66
+ }
67
+ declare const utils: Utils;
68
+ export { utils, Utils };