Как заставить svg взаимодействовать с onMouseMove?
Делаю глаз с помощью svg. Задаю нужные классы для групп, чтобы зрачок мог двигаться за курсором мыши, но почему-то код не хочет работать. Подскажите, пожалуйста, как избавиться от проблемы и добиться нужного результата
let eye = document.querySelector('.circle');
let container = document.querySelector('.eye');
let cursor = {x: 0, y: 0};
let position = {x: 0, y: 0};
let width=500, height=500;
let radius = 50;
let speedMultiplier = 0.03;
let lastTime;
document.addEventListener("mousemove", onMouseMove, false);
function onMouseMove(event){
const bounds = container.getBoundingClientRect();
cursor.x = event.clientX - bounds.left;
cursor.y = event.clientY - bounds.top;
}
function loop(timestamp, dt) {
const deltaTime = (timestamp - (lastTime??timestamp))/(1000/60);
lastTime = timestamp;
const multiplier = (speedMultiplier*deltaTime);
const vector = {
x: cursor.x-position.x,
y: cursor.y-position.y
};
position.x = position.x + vector.x*multiplier;
position.y = position.y + vector.y*multiplier;
if(position.x<0) position.x = 0;
if(position.x>width-radius*2) position.x = width-radius*2;
if(position.y<0) position.y = 0;
if(position.y>height-radius*2) position.y = height-radius*2;
eye.style.left = Math.floor(position.x).toString()+'px';
eye.style.top = Math.floor(position.y).toString()+'px';
window.requestAnimationFrame(loop);
}
window.requestAnimationFrame(loop);
.conatiner {
width: 800px;
}
.eye {
width: 500px;
height: 500px;
background: #ff5b40;
margin: 0 auto;
position: relative;
}
.circle {
width: 100px;
height: 100px;
border-radius: 100%;
background: grey;
position: absolute;
left: 0;
top: 50%;
}
.lien {
margin: auto;
width: 20%;
}
#contour {
fill:#fff;
}
<div class="container">
<div class="lien anim">
<svg version="1.1" id="oeil"
viewBox="0 0 62 36">
<style type="text/css">
.st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
.st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
</style>
<path id="contour" class="st0 circle" d="M59,18c0,0-12.5,16-28,16S3,18,3,18S15.5,2,31,2S59,18,59,18z"/>
<g id="pup" class="anim eye">
<circle class="st1" cx="31" cy="18" r="11"/>
<circle id="rondpup" cx="31" cy="18" r="7"/>
</g>
</svg>
</a>
</div>
</div>