| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 
							- import { useEffect, useRef } from 'react'
 
- import cn from '@/utils/classnames'
 
- type AutoHeightTextareaProps =
 
-   & React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>
 
-   & { outerClassName?: string }
 
- const AutoHeightTextarea = (
 
-   {
 
-     ref: outRef,
 
-     outerClassName,
 
-     value,
 
-     className,
 
-     placeholder,
 
-     autoFocus,
 
-     disabled,
 
-     ...rest
 
-   }: AutoHeightTextareaProps & {
 
-     ref: React.RefObject<HTMLTextAreaElement>;
 
-   },
 
- ) => {
 
-   const innerRef = useRef<HTMLTextAreaElement>(null)
 
-   const ref = outRef || innerRef
 
-   useEffect(() => {
 
-     if (autoFocus && !disabled && value) {
 
-       if (typeof ref !== 'function') {
 
-         ref.current?.setSelectionRange(`${value}`.length, `${value}`.length)
 
-         ref.current?.focus()
 
-       }
 
-     }
 
-   }, [autoFocus, disabled, ref])
 
-   return (
 
-     (<div className={outerClassName}>
 
-       <div className='relative'>
 
-         <div className={cn(className, 'invisible whitespace-pre-wrap break-all')}>
 
-           {!value ? placeholder : `${value}`.replace(/\n$/, '\n ')}
 
-         </div>
 
-         <textarea
 
-           ref={ref}
 
-           placeholder={placeholder}
 
-           className={cn(className, 'absolute inset-0 h-full w-full resize-none appearance-none border-none outline-none disabled:bg-transparent')}
 
-           value={value}
 
-           disabled={disabled}
 
-           {...rest}
 
-         />
 
-       </div>
 
-     </div>)
 
-   )
 
- }
 
- AutoHeightTextarea.displayName = 'AutoHeightTextarea'
 
- export default AutoHeightTextarea
 
 
  |