UNPKG

@grail-ui/svelte

Version:

[![NPM](https://img.shields.io/npm/v/@grail-ui/svelte)](https://www.npmjs.com/package/@grail-ui/svelte) [![minified](https://img.shields.io/bundlephobia/min/@grail-ui/svelte)](https://bundlephobia.com/package/@grail-ui/svelte) [![minified + zipped](https:

24 lines (23 loc) 846 B
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, }; };