import SplitText from './lib/splitText' import { TweenMax } from “gsap”
const Mouse = {
last_position: { x: 0, y: 0 }, text: null, chars: null, output: null, init: function(){ document.addEventListener('mousemove', Mouse.modifieTexte, false) Mouse.text = new SplitText("#output", { type: "chars" }) Mouse.chars = Mouse.text.chars Mouse.output = document.getElementById("output") }, modifieTexte: function(e){ let { chars, last_position, output } = Mouse; var restore; var deltaX = last_position.x - event.offsetX, deltaY = last_position.y - event.offsetY; if (deltaX > 20) deltaX = 20 if (deltaY > 20) deltaY = 20 if (deltaX < -20) deltaX = -20 if (deltaY < -20) deltaY = -20 if (true) { TweenMax.staggerTo( chars, 0.5, { cycle: { x: function(index, target) { return index * index / 3 * deltaX / 2; }, y: function(index, target) { return index * index / 3 * deltaY / 2; }, ease: Expo.easeInOut, force3D: true } }) window.clearTimeout(restore) restore = setTimeout(function() { TweenMax.staggerTo( chars, 0.2, { x: 0, y: 0 }); }) } TweenLite.to( output, 0.1, { top: event.pageY - 20, left: event.pageX - 20 }) last_position = { x: event.offsetX, y: event.offsetY, ease: Expo.easeInOut } }
}
export default Mouse