1 | // ================================================================= //
|
2 | // Copyright (c) roydukkey. All rights reserved. //
|
3 | // ================================================================= //
|
4 |
|
5 | import { remove } from './support/store';
|
6 |
|
7 |
|
8 | /**
|
9 | * Detach all event listeners of the specified event types from the given target.
|
10 | *
|
11 | * @param target - The target from which the event listener is detached.
|
12 | * @param types - A case-sensitive string representing the {@link https://developer.mozilla.org/en-US/docs/Web/Events|event type}s to detach.
|
13 | *
|
14 | * @returns `true` when successfully detached at least one listener; otherwise, `false`.
|
15 | */
|
16 | export function off (target: EventTarget, types: string): boolean;
|
17 |
|
18 |
|
19 | /**
|
20 | * Detach an event listener of the specified event types from the given target.
|
21 | *
|
22 | * @param target - The target from which the event listener is detached.
|
23 | * @param types - A case-sensitive string representing the {@link https://developer.mozilla.org/en-US/docs/Web/Events|event type}s to detach.
|
24 | * @param listener - The {@link https://developer.mozilla.org/en-US/docs/Web/API/EventListener|event listener} to detach from the event target.
|
25 | * @param useCapture - Whether or not the EventListener to be detached is registered as a capturing listener.
|
26 | *
|
27 | * @returns `true` when successfully detached at least one listener; otherwise, `false`.
|
28 | */
|
29 | export function off (target: EventTarget, types: string, listener: EventListenerOrEventListenerObject | null, useCapture?: boolean): boolean;
|
30 |
|
31 |
|
32 | /**
|
33 | * Detach an event listener of the specified event types from the given target.
|
34 | *
|
35 | * @param target - The target from which the event listener is detached.
|
36 | * @param types - A case-sensitive string representing the {@link https://developer.mozilla.org/en-US/docs/Web/Events|event type}s to detach.
|
37 | * @param listener - The {@link https://developer.mozilla.org/en-US/docs/Web/API/EventListener|event listener} to detach from the event target.
|
38 | * @param options - An {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#parameters|options object} specifying characteristics about the event listener.
|
39 | *
|
40 | * @returns `true` when successfully detached at least one listener; otherwise, `false`.
|
41 | */
|
42 | export function off (target: EventTarget, types: string, listener: EventListenerOrEventListenerObject | null, options: EventListenerOptions): boolean;
|
43 |
|
44 |
|
45 | /**
|
46 | * Detach all event listeners of the specified event types from the given node for the specified selector.
|
47 | *
|
48 | * @param node - The node from which the event listener is detached.
|
49 | * @param selector - A selector which should match the one used when attaching event listeners.
|
50 | * @param types - A case-sensitive string representing the {@link https://developer.mozilla.org/en-US/docs/Web/Events|event type}s to detach.
|
51 | *
|
52 | * @returns `true` when successfully detached at least one listener; otherwise, `false`.
|
53 | */
|
54 | export function off (node: Node, selector: string, types: string): boolean;
|
55 |
|
56 |
|
57 | /**
|
58 | * Detach an event listener of the specified event types from the given node for the specified selector.
|
59 | *
|
60 | * @param node - The node from which the event listener is detached.
|
61 | * @param selector - A selector which should match the one used when attaching event listeners.
|
62 | * @param types - A case-sensitive string representing the {@link https://developer.mozilla.org/en-US/docs/Web/Events|event type}s to detach.
|
63 | * @param listener - The {@link https://developer.mozilla.org/en-US/docs/Web/API/EventListener|event listener} to detach from the event target.
|
64 | * @param useCapture - Whether or not the EventListener to be detached is registered as a capturing listener.
|
65 | *
|
66 | * @returns `true` when successfully detached at least one listener; otherwise, `false`.
|
67 | */
|
68 | export function off (node: Node, selector: string, types: string, listener: EventListenerOrEventListenerObject | null, useCapture?: boolean): boolean;
|
69 |
|
70 |
|
71 | /**
|
72 | * Detach an event listener of the specified event types from the given node for the specified selector.
|
73 | *
|
74 | * @param node - The node from which the event listener is detached.
|
75 | * @param selector - A selector which should match the one used when attaching event listeners.
|
76 | * @param types - A case-sensitive string representing the {@link https://developer.mozilla.org/en-US/docs/Web/Events|event type}s to detach.
|
77 | * @param listener - The {@link https://developer.mozilla.org/en-US/docs/Web/API/EventListener|event listener} to detach from the event target.
|
78 | * @param options - An {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#parameters|options object} specifying characteristics about the event listener.
|
79 | *
|
80 | * @returns `true` when successfully detached at least one listener; otherwise, `false`.
|
81 | */
|
82 | export function off (node: Node, selector: string, types: string, listener: EventListenerOrEventListenerObject | null, options: EventListenerOptions): boolean;
|
83 |
|
84 |
|
85 | /**
|
86 | * @internal
|
87 | */
|
88 | export function off (
|
89 | target: EventTarget,
|
90 | selector: string,
|
91 | types?: string | EventListenerOrEventListenerObject | null,
|
92 | listener?: boolean | EventListenerOptions | EventListenerOrEventListenerObject | null,
|
93 | options?: boolean | EventListenerOptions
|
94 | ): boolean {
|
95 |
|
96 | if (typeof types === 'string') {
|
97 | return remove(target, selector, types, listener as EventListenerOrEventListenerObject | null, options);
|
98 | }
|
99 |
|
100 | return remove(target, null, selector as string, types as EventListenerOrEventListenerObject | null, listener as EventListenerOptions | boolean | undefined);
|
101 |
|
102 | }
|