// This injects a box into the page that moves with the mouse; // Useful for debugging (function () { const box = document.createElement('div'); box.classList.add('mouse-helper'); const styleElement = document.createElement('style'); styleElement.innerHTML = ` .mouse-helper { pointer-events: none; position: absolute; top: 0; left: 0; width: 20px; height: 20px; background: rgba(0,0,0,.4); border: 1px solid white; border-radius: 10px; margin-left: -10px; margin-top: -10px; transition: background .2s, border-radius .2s, border-color .2s; } .mouse-helper.button-1 { transition: none; background: rgba(0,0,0,0.9); } .mouse-helper.button-2 { transition: none; border-color: rgba(0,0,255,0.9); } .mouse-helper.button-3 { transition: none; border-radius: 4px; } .mouse-helper.button-4 { transition: none; border-color: rgba(255,0,0,0.9); } .mouse-helper.button-5 { transition: none; border-color: rgba(0,255,0,0.9); } `; document.head.appendChild(styleElement); document.body.appendChild(box); document.addEventListener( 'mousemove', (event) => { box.style.left = event.pageX + 'px'; box.style.top = event.pageY + 'px'; updateButtons(event.buttons); }, true ); document.addEventListener( 'mousedown', (event) => { updateButtons(event.buttons); box.classList.add('button-' + event.which); }, true ); document.addEventListener( 'mouseup', (event) => { updateButtons(event.buttons); box.classList.remove('button-' + event.which); }, true ); function updateButtons(buttons) { for (let i = 0; i < 5; i++) box.classList.toggle('button-' + i, buttons & (1 << i)); } })();