2 lines
1.2 KiB
JavaScript
2 lines
1.2 KiB
JavaScript
import{r as t,j as m}from"./router-zNjPR4CY.js";import{g}from"./index-CuOHsLf7.js";const w=t.forwardRef(({className:o,autoResize:n=!0,minHeight:a=60,maxHeight:r,value:f,onChange:u,...h},p)=>{const i=t.useRef(null),[l,x]=t.useState(!1);t.useImperativeHandle(p,()=>i.current),t.useEffect(()=>{if(o){const e=/\b(h-\d+|h-\[[\d.]+(?:px|rem|em)\]|min-h-\[[\d.]+(?:px|rem|em)\])\b/.test(o);x(e)}},[o]);const s=t.useCallback(()=>{const e=i.current;if(!e||!n||l)return;e.style.height="auto";const c=e.scrollHeight;let d=Math.max(c,a);r&&r>0&&(d=Math.min(d,r)),e.style.height=`${d}px`,r&&r>0&&c>r?e.style.overflowY="auto":e.style.overflowY="hidden"},[n,l,a,r]);t.useEffect(()=>{s()},[f,s]),t.useEffect(()=>{s()},[s]);const b=t.useCallback(e=>{u?.(e),requestAnimationFrame(()=>{s()})},[u,s]);return m.jsx("textarea",{className:g("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","custom-scrollbar",n&&!l&&"resize-none overflow-hidden",o),ref:i,value:f,onChange:b,style:{minHeight:n&&!l?`${a}px`:void 0},...h})});w.displayName="Textarea";export{w as T};
|