mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							42 lines
						
					
					
						
							864 B
						
					
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							864 B
						
					
					
				export default class extends HTMLElement {
 | 
						|
  connectedCallback () {
 | 
						|
    this.resize()
 | 
						|
 | 
						|
    this.textarea.addEventListener('input', () => this.resize())
 | 
						|
 | 
						|
    this.observeVisibility()
 | 
						|
  }
 | 
						|
 | 
						|
  resize () {
 | 
						|
    if (this.textarea.clientHeight < this.textarea.scrollHeight) {
 | 
						|
      this.textarea.style.height = `${this.textarea.scrollHeight + 5}px`
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  observeVisibility () {
 | 
						|
    this.observer = new IntersectionObserver(
 | 
						|
      (entries) => {
 | 
						|
        entries.forEach((entry) => {
 | 
						|
          if (entry.isIntersecting) {
 | 
						|
            this.resize()
 | 
						|
            this.observer.unobserve(this.textarea)
 | 
						|
          }
 | 
						|
        })
 | 
						|
      },
 | 
						|
      {
 | 
						|
        threshold: 0.1
 | 
						|
      }
 | 
						|
    )
 | 
						|
 | 
						|
    this.observer.observe(this.textarea)
 | 
						|
  }
 | 
						|
 | 
						|
  disconnectedCallback () {
 | 
						|
    this.observer.unobserve(this.textarea)
 | 
						|
  }
 | 
						|
 | 
						|
  get textarea () {
 | 
						|
    return this.querySelector('textarea')
 | 
						|
  }
 | 
						|
}
 |