/*! * Name : Cotton.JS is a JavaScript library that allows you to make a mouse interaction animation easily. * Version : 1.3.3 * Author : CottonJS * GitHub : https://github.com/cotton123236/CottonJS */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Cotton=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,a=new Array(t);n1||this.params.speed<=0)&&(this.params.speed=.125),this.params.airMode){var s=this.params.airMode,i={resistance:15,reverse:!1,alive:!1};"object"!==e(s)||Array.isArray(s)?this.params.airMode=i:this.params.airMode=Object.assign(i,s),(s.resistance<1||s.resistance>100)&&(s.resistance=15)}(r=navigator.userAgent).indexOf("Android")>-1||r.indexOf("Adr"),r.indexOf("Mac")>-1&&"ontouchend"in document||a.init(this)}var d,u,f;return d=a,f=[{key:"getMouseData",value:function(e){var t=e.element,a=e.scene,o=e.params,c=o.data,l=o.airMode;a.addEventListener("mousemove",(function(a){c.mouseX=l?a.pageX:a.clientX,c.mouseY=l?a.pageY:a.clientY,n(t.classList).indexOf(o.conttonInitClass)>-1&&t.classList.add(o.cottonMovingClass),o.on.cottonMove&&"function"==typeof o.on.cottonMove&&o.on.cottonMove.call(e,t,a)})),l&&(l.alive||(c.rect=r(t),c.transformX=s(t),c.transformY=i(t),window.addEventListener("resize",(function(){c.rect=r(t)}))),a.addEventListener("mousemove",(function(){l.alive&&(c.rect=r(t));var e=window.innerWidth+c.rect.width/2,n=window.innerHeight+c.rect.height/2,a=c.mouseX-c.rect.centerX,o=c.mouseY-c.rect.centerY;c.distanceX=Math.min(Math.max(parseInt(a),-e),e),c.distanceY=Math.min(Math.max(parseInt(o),-n),n)})))}},{key:"init",value:function(e){var t=e.element,n=e.params,o=e.scene;o.addEventListener("mouseenter",(function(a){n.on.enterScene&&"function"==typeof n.on.enterScene&&n.on.enterScene.call(e,t,o,a)})),o.addEventListener("mouseleave",(function(a){t.classList.remove(n.cottonMovingClass),n.on.leaveScene&&"function"==typeof n.on.leaveScene&&n.on.leaveScene.call(e,t,o,a)})),a.getMouseData(e,!0),e.move(),m(e,!0)}}],(u=[{key:"enterModelHandler",value:function(e){var t=this.element,n=this.params;n.on.enterModel&&"function"==typeof n.on.enterModel&&n.on.enterModel.call(this,t,e.target,e),t.classList.add(n.cottonActiveClass),e.target.classList.add(n.modelsActiveClass)}},{key:"leaveModelHandler",value:function(e){var t=this.element,n=this.params;n.on.leaveModel&&"function"==typeof n.on.leaveModel&&n.on.leaveModel.call(this,t,e.target,e),t.classList.remove(n.cottonActiveClass),e.target.classList.remove(n.modelsActiveClass)}},{key:"move",value:function(){var e=this.params.data,t=this.params.airMode;this.element.classList.add(this.params.conttonInitClass),e.animationFrame||(t?l(this):c(this))}},{key:"stop",value:function(){var e=this.params.data;this.element.classList.remove(this.params.conttonInitClass),this.element.classList.remove(this.params.cottonMovingClass),cancelAnimationFrame(e.animationFrame),e.animationFrame=void 0}},{key:"updateModels",value:function(){m(this,!1)}}])&&t(d.prototype,u),f&&t(d,f),a}()}));