blob: 4aa3990deeb9205bcd73d822f1e8d9ba660236e4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import mem from 'mem';
const onElementRemoval = mem(async (element: Element, signal?: AbortSignal): Promise<void> => {
if (signal?.aborted) {
return;
}
return new Promise(resolve => {
const observer = new ResizeObserver(([{target}], observer) => {
if (!target.isConnected) {
observer.disconnect();
resolve();
}
});
if (signal) {
signal.addEventListener('abort', () => {
observer.disconnect();
resolve();
}, {
once: true,
});
}
observer.observe(element);
});
});
export default onElementRemoval;
|