@grail-ui/svelte
Version:
[](https://www.npmjs.com/package/@grail-ui/svelte) [](https://bundlephobia.com/package/@grail-ui/svelte) [ • 846 B
JavaScript
import { createResizeObserver } from '../resizeObserver/resizeObserver.js';
import { addEventListener } from '../eventListener/eventListener.js';
import { chain } from '../util/chain.js';
export const createTextareaAutosize = () => {
const { useResizeObserver } = createResizeObserver();
const useTextareaAutosize = (node) => {
function triggerResize() {
node.style.height = 'auto';
node.style.height = `${node.scrollHeight}px`;
}
const observer = useResizeObserver(node, { handler: () => triggerResize() });
const removeEvents = chain(addEventListener(node, 'input', triggerResize));
return {
destroy() {
observer?.destroy?.();
removeEvents();
},
};
};
return {
useTextareaAutosize,
};
};