class MousePositionObservable { constructor() { this.subscriptions = []; window.addEventListener('mousemove',this.handleMouseMove); } handleMouseMove = (e) => { this.subscriptions.forEach(sub => sub(e.clientX, e.clientY)); } subscribe(callback) { this.subscriptions.push(callback); return () => { this.subscriptions = this.subscriptions.filter(cb => cb === callback); } } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter