filter.go

 1package model
 2
 3import (
 4	"time"
 5
 6	tea "charm.land/bubbletea/v2"
 7)
 8
 9var lastMouseEvent time.Time
10
11func MouseEventFilter(m tea.Model, msg tea.Msg) tea.Msg {
12	switch msg.(type) {
13	case tea.MouseWheelMsg, tea.MouseMotionMsg:
14		now := time.Now()
15		// trackpad is sending too many requests
16		if now.Sub(lastMouseEvent) < 15*time.Millisecond {
17			return nil
18		}
19		lastMouseEvent = now
20	}
21	return msg
22}