code: func (l *TextView) calculateVirtualSize() {
  	w := l.width - 1
  	l.virtualWidth = l.width - 1
  	l.virtualHeight = 0
  
  	l.lengths = make([]int, len(l.lines))
  	for idx, str := range l.lines {
  		str = UnColorizeText(str)
  
  		sz := xs.Len(str)
  		if l.wordWrap {
  			n := sz / w
  			r := sz % w
  			l.virtualHeight += n
  			if r != 0 {
  				l.virtualHeight++
  			}
  		} else {
  			l.virtualHeight++
  			if sz > l.virtualWidth {
  				l.virtualWidth = sz
  			}
  		}
  		l.lengths[idx] = sz
  	}
  }
docs: // own methods