@agnos-ui/core
Version:
Framework-agnostic headless component library.
33 lines (32 loc) • 1.03 kB
JavaScript
import { derived } from "@amadeus-it-group/tansu";
import { j as createBrowserStoreDirective } from "../dom-gfxqXJpK.js";
import { noop } from "../utils/func.js";
const createResizeObserver = () => {
const { element$, directive } = createBrowserStoreDirective();
const observedElement$ = derived(
element$,
(element, set) => {
if (element === null) {
return noop;
}
const observer = new ResizeObserver((entries) => {
set(entries[0]);
});
observer.observe(element);
return () => observer == null ? void 0 : observer.disconnect();
},
void 0
);
return {
/**
* Store which contains the dimensions of the observed element (ResizeObserverEntry type)
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry | MDN documentation}
*/
dimensions$: observedElement$,
/** Directive to be attached to html element in order to listen to resize events */
directive
};
};
export {
createResizeObserver
};