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

const onElementRemoval = mem(async (element: Element): Promise<void> => {
	return 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;