mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
27 lines
775 B
TypeScript
27 lines
775 B
TypeScript
export default function (node: HTMLElement) {
|
|
const setHeight = (detail: HTMLDetailsElement, open = false) => {
|
|
detail.open = open;
|
|
const rect = detail.getBoundingClientRect();
|
|
detail.dataset.width = `${rect.width}`;
|
|
detail.style.setProperty(open ? `--expanded` : `--collapsed`, `${rect.height}px`);
|
|
};
|
|
const RO = new ResizeObserver((entries) => {
|
|
return entries.forEach((entry) => {
|
|
const detail: HTMLDetailsElement = entry.target;
|
|
const width: number = parseInt(detail.dataset.width, 10);
|
|
if (width !== parseInt(entry.contentRect.width, 10)) {
|
|
detail.removeAttribute('style');
|
|
setHeight(detail);
|
|
setHeight(detail, true);
|
|
detail.open = false;
|
|
}
|
|
});
|
|
});
|
|
RO.observe(node);
|
|
|
|
return {
|
|
destroy() {
|
|
RO.unobserve(node);
|
|
}
|
|
};
|
|
}
|