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