summaryrefslogtreecommitdiff
path: root/source/helpers/on-element-removal.ts
blob: 27e8b3b47645308cfaa2d79c74918d858f3a2353 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mem from 'mem';

const onElementRemoval = mem(
	async (element: Element): Promise<void> => (
		new Promise(resolve => {
			// @ts-expect-error until https://github.com/microsoft/TypeScript/issues/37861
			new ResizeObserver(([{target}], observer) => {
				if (!target.isConnected) {
					observer.disconnect();
					resolve();
				}
			}).observe(element);
		})
	)
);

export default onElementRemoval;