{"version":3,"file":"jquery.kinetic-15.min.js","sources":["jquery.kinetic-15.js"],"sourcesContent":["/*!\r\n jQuery.kinetic v1.5\r\n Dave Taylor http://the-taylors.org/jquery.kinetic\r\n\r\n The MIT License (MIT)\r\n Copyright (c) <2011> \r\n*/\r\n/* eslint-disable */\r\n/* global define,require */\r\n(function ($) {\r\n 'use strict';\r\n\r\n var DEFAULT_SETTINGS = {\r\n decelerate: true\r\n , triggerHardware: false\r\n , y: true\r\n , x: true\r\n , slowdown: 0.9\r\n , maxvelocity: 40\r\n , throttleFPS: 60\r\n , movingClass: {\r\n up: 'kinetic-moving-up'\r\n , down: 'kinetic-moving-down'\r\n , left: 'kinetic-moving-left'\r\n , right: 'kinetic-moving-right'\r\n }\r\n , deceleratingClass: {\r\n up: 'kinetic-decelerating-up'\r\n , down: 'kinetic-decelerating-down'\r\n , left: 'kinetic-decelerating-left'\r\n , right: 'kinetic-decelerating-right'\r\n }\r\n },\r\n SETTINGS_KEY = 'kinetic-settings',\r\n ACTIVE_CLASS = 'kinetic-active';\r\n\r\n /**\r\n * Provides requestAnimationFrame in a cross browser way.\r\n * http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n */\r\n if (!window.requestAnimationFrame) {\r\n\r\n window.requestAnimationFrame = (function () {\r\n\r\n return window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function ( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {\r\n window.setTimeout(callback, 1000 / 60);\r\n };\r\n\r\n }());\r\n\r\n }\r\n\r\n // add touch checker to jQuery.support\r\n $.support = $.support || {};\r\n $.extend($.support, {\r\n touch: \"ontouchend\" in document\r\n });\r\n var selectStart = function () { return false; };\r\n\r\n var decelerateVelocity = function (velocity, slowdown) {\r\n return Math.floor(Math.abs(velocity)) === 0 ? 0 // is velocity less than 1?\r\n : velocity * slowdown; // reduce slowdown\r\n };\r\n\r\n var capVelocity = function (velocity, max) {\r\n var newVelocity = velocity;\r\n if (velocity > 0) {\r\n if (velocity > max) {\r\n newVelocity = max;\r\n }\r\n } else {\r\n if (velocity < (0 - max)) {\r\n newVelocity = (0 - max);\r\n }\r\n }\r\n return newVelocity;\r\n };\r\n\r\n var setMoveClasses = function (settings, classes) {\r\n this.removeClass(settings.movingClass.up)\r\n .removeClass(settings.movingClass.down)\r\n .removeClass(settings.movingClass.left)\r\n .removeClass(settings.movingClass.right)\r\n .removeClass(settings.deceleratingClass.up)\r\n .removeClass(settings.deceleratingClass.down)\r\n .removeClass(settings.deceleratingClass.left)\r\n .removeClass(settings.deceleratingClass.right);\r\n\r\n if (settings.velocity > 0) {\r\n this.addClass(classes.right);\r\n }\r\n if (settings.velocity < 0) {\r\n this.addClass(classes.left);\r\n }\r\n if (settings.velocityY > 0) {\r\n this.addClass(classes.down);\r\n }\r\n if (settings.velocityY < 0) {\r\n this.addClass(classes.up);\r\n }\r\n\r\n };\r\n\r\n var stop = function ($scroller, settings) {\r\n if (typeof settings.stopped === 'function') {\r\n settings.stopped.call($scroller, settings);\r\n }\r\n };\r\n\r\n /** do the actual kinetic movement */\r\n var move = function ($scroller, settings) {\r\n var scroller = $scroller[0];\r\n // set scrollLeft\r\n if (settings.x && scroller.scrollWidth > 0) {\r\n scroller.scrollLeft = settings.scrollLeft = scroller.scrollLeft + settings.velocity;\r\n if (Math.abs(settings.velocity) > 0) {\r\n settings.velocity = settings.decelerate ?\r\n decelerateVelocity(settings.velocity, settings.slowdown) : settings.velocity;\r\n }\r\n } else {\r\n settings.velocity = 0;\r\n }\r\n\r\n // set scrollTop\r\n if (settings.y && scroller.scrollHeight > 0) {\r\n scroller.scrollTop = settings.scrollTop = scroller.scrollTop + settings.velocityY;\r\n if (Math.abs(settings.velocityY) > 0) {\r\n settings.velocityY = settings.decelerate ?\r\n decelerateVelocity(settings.velocityY, settings.slowdown) : settings.velocityY;\r\n }\r\n } else {\r\n settings.velocityY = 0;\r\n }\r\n\r\n setMoveClasses.call($scroller, settings, settings.deceleratingClass);\r\n\r\n if (typeof settings.moved === 'function') {\r\n settings.moved.call($scroller, settings);\r\n }\r\n\r\n if (Math.abs(settings.velocity) > 0 || Math.abs(settings.velocityY) > 0) {\r\n // tick for next movement\r\n window.requestAnimationFrame(function () { move($scroller, settings); });\r\n } else {\r\n stop($scroller, settings);\r\n }\r\n };\r\n\r\n var callOption = function (method, options) {\r\n var methodFn = $.kinetic.callMethods[method]\r\n , args = Array.prototype.slice.call(arguments)\r\n ;\r\n if (methodFn) {\r\n this.each(function () {\r\n var opts = args.slice(1), settings = $(this).data(SETTINGS_KEY);\r\n opts.unshift(settings);\r\n methodFn.apply(this, opts);\r\n });\r\n }\r\n };\r\n\r\n var attachListeners = function ($this, settings) {\r\n var element = $this[0];\r\n if ($.support.touch) {\r\n element.addEventListener('touchstart', settings.events.touchStart, false);\r\n element.addEventListener('touchend', settings.events.inputEnd, false);\r\n element.addEventListener('touchmove', settings.events.touchMove, false);\r\n } else {\r\n $this\r\n .mousedown(settings.events.inputDown)\r\n .mouseup(settings.events.inputEnd)\r\n .mousemove(settings.events.inputMove);\r\n }\r\n $this.click(settings.events.inputClick)\r\n .bind(\"selectstart\", selectStart); // prevent selection when dragging\r\n $this.bind('dragstart', settings.events.dragStart);\r\n };\r\n var detachListeners = function ($this, settings) {\r\n var element = $this[0];\r\n if ($.support.touch) {\r\n element.removeEventListener('touchstart', settings.events.touchStart, false);\r\n element.removeEventListener('touchend', settings.events.inputEnd, false);\r\n element.removeEventListener('touchmove', settings.events.touchMove, false);\r\n } else {\r\n $this\r\n .unbind('mousedown', settings.events.inputDown)\r\n .unbind('mouseup', settings.events.inputEnd)\r\n .unbind('mousemove', settings.events.inputMove);\r\n }\r\n $this.unbind('click', settings.events.inputClick)\r\n .unbind(\"selectstart\", selectStart); // prevent selection when dragging\r\n $this.unbind('dragstart', settings.events.dragStart);\r\n };\r\n\r\n var initElements = function (options) {\r\n this\r\n .addClass(ACTIVE_CLASS)\r\n .each(function () {\r\n\r\n var settings = $.extend({}, DEFAULT_SETTINGS, options);\r\n\r\n var self = this\r\n , $this = $(this)\r\n , xpos\r\n , prevXPos = false\r\n , ypos\r\n , prevYPos = false\r\n , mouseDown = false\r\n , scrollLeft\r\n , scrollTop\r\n , throttleTimeout = 1000 / settings.throttleFPS\r\n , lastMove\r\n , elementFocused\r\n ;\r\n\r\n settings.velocity = 0;\r\n settings.velocityY = 0;\r\n\r\n // make sure we reset everything when mouse up\r\n var resetMouse = function () {\r\n xpos = false;\r\n ypos = false;\r\n mouseDown = false;\r\n };\r\n $(document).mouseup(resetMouse).click(resetMouse);\r\n\r\n var calculateVelocities = function () {\r\n settings.velocity = capVelocity(prevXPos - xpos, settings.maxvelocity);\r\n settings.velocityY = capVelocity(prevYPos - ypos, settings.maxvelocity);\r\n };\r\n var useTarget = function (target) {\r\n if ($.isFunction(settings.filterTarget)) {\r\n return settings.filterTarget.call(self, target) !== false;\r\n }\r\n return true;\r\n };\r\n var start = function (clientX, clientY) {\r\n mouseDown = true;\r\n settings.velocity = prevXPos = 0;\r\n settings.velocityY = prevYPos = 0;\r\n xpos = clientX;\r\n ypos = clientY;\r\n };\r\n var end = function () {\r\n if (xpos && prevXPos && settings.decelerate === false) {\r\n settings.decelerate = true;\r\n calculateVelocities();\r\n xpos = prevXPos = mouseDown = false;\r\n move($this, settings);\r\n }\r\n };\r\n var inputmove = function (clientX, clientY) {\r\n if (!lastMove || new Date() > new Date(lastMove.getTime() + throttleTimeout)) {\r\n lastMove = new Date();\r\n\r\n if (mouseDown && (xpos || ypos)) {\r\n if (elementFocused) {\r\n $(elementFocused).blur();\r\n elementFocused = null;\r\n $this.focus();\r\n }\r\n settings.decelerate = false;\r\n settings.velocity = settings.velocityY = 0;\r\n $this[0].scrollLeft = settings.scrollLeft = settings.x ? $this[0].scrollLeft - (clientX - xpos) : $this[0].scrollLeft;\r\n $this[0].scrollTop = settings.scrollTop = settings.y ? $this[0].scrollTop - (clientY - ypos) : $this[0].scrollTop;\r\n prevXPos = xpos;\r\n prevYPos = ypos;\r\n xpos = clientX;\r\n ypos = clientY;\r\n\r\n calculateVelocities();\r\n setMoveClasses.call($this, settings, settings.movingClass);\r\n\r\n if (typeof settings.moved === 'function') {\r\n settings.moved.call($this, settings);\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Events\r\n settings.events = {\r\n touchStart: function (e) {\r\n if (useTarget(e.target)) {\r\n start(e.touches[0].clientX, e.touches[0].clientY);\r\n e.stopPropagation();\r\n }\r\n },\r\n touchMove: function (e) {\r\n if (mouseDown) {\r\n inputmove(e.touches[0].clientX, e.touches[0].clientY);\r\n if (e.preventDefault) { e.preventDefault(); }\r\n }\r\n },\r\n inputDown: function (e) {\r\n if (useTarget(e.target)) {\r\n start(e.clientX, e.clientY);\r\n elementFocused = e.target;\r\n if (e.target.nodeName === 'IMG') {\r\n e.preventDefault();\r\n }\r\n e.stopPropagation();\r\n }\r\n },\r\n inputEnd: function (e) {\r\n end();\r\n elementFocused = null;\r\n if (e.preventDefault) { e.preventDefault(); }\r\n },\r\n inputMove: function (e) {\r\n if (mouseDown) {\r\n inputmove(e.clientX, e.clientY);\r\n if (e.preventDefault) { e.preventDefault(); }\r\n }\r\n },\r\n inputClick: function (e) {\r\n if (Math.abs(settings.velocity) > 0) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n },\r\n // prevent drag and drop images in ie\r\n dragStart: function (e) {\r\n if (elementFocused) {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n attachListeners($this, settings);\r\n $this.data(SETTINGS_KEY, settings).css(\"cursor\", \"move\");\r\n\r\n if (settings.triggerHardware) {\r\n $this.css('-webkit-transform', 'translate3d(0,0,0)');\r\n }\r\n });\r\n };\r\n\r\n $.kinetic = {\r\n settingsKey: SETTINGS_KEY,\r\n callMethods: {\r\n start: function (settings, options) {\r\n var $this = $(this);\r\n settings = $.extend(settings, options);\r\n if (settings) {\r\n settings.decelerate = false;\r\n move($this, settings);\r\n }\r\n },\r\n end: function (settings, options) {\r\n var $this = $(this);\r\n if (settings) {\r\n settings.decelerate = true;\r\n }\r\n },\r\n stop: function (settings, options) {\r\n settings.velocity = 0;\r\n settings.velocityY = 0;\r\n settings.decelerate = true;\r\n },\r\n detach: function (settings, options) {\r\n var $this = $(this);\r\n detachListeners($this, settings);\r\n $this\r\n .removeClass(ACTIVE_CLASS)\r\n .css(\"cursor\", \"\");\r\n },\r\n attach: function (settings, options) {\r\n var $this = $(this);\r\n attachListeners($this, settings);\r\n $this\r\n .addClass(ACTIVE_CLASS)\r\n .css(\"cursor\", \"move\");\r\n }\r\n }\r\n };\r\n $.fn.kinetic = function (options) {\r\n if (typeof options === 'string') {\r\n callOption.apply(this, arguments);\r\n } else {\r\n initElements.call(this, options);\r\n }\r\n return this;\r\n };\r\n\r\n}(window.jQuery || window.Zepto));\r\n/* eslint-enable */\r\n"],"names":["$","selectStart","decelerateVelocity","velocity","slowdown","Math","floor","abs","capVelocity","max","newVelocity","setMoveClasses","settings","classes","this","removeClass","movingClass","up","down","left","right","deceleratingClass","addClass","velocityY","move","$scroller","scroller","x","scrollWidth","scrollLeft","decelerate","y","scrollHeight","scrollTop","call","moved","window","requestAnimationFrame","stopped","attachListeners","$this","element","support","touch","addEventListener","events","touchStart","inputEnd","touchMove","mousedown","inputDown","mouseup","mousemove","inputMove","click","inputClick","bind","dragStart","initElements","options","ACTIVE_CLASS","each","resetMouse","mouseDown","ypos","xpos","useTarget","target","isFunction","filterTarget","self","start","clientX","clientY","prevXPos","prevYPos","inputmove","lastMove","Date","getTime","throttleTimeout","elementFocused","blur","focus","calculateVelocities","extend","DEFAULT_SETTINGS","throttleFPS","document","maxvelocity","e","touches","stopPropagation","preventDefault","nodeName","data","SETTINGS_KEY","css","triggerHardware","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","kinetic","settingsKey","callMethods","end","stop","detach","removeEventListener","unbind","attach","fn","method","methodFn","args","Array","prototype","slice","arguments","opts","unshift","apply","jQuery","Zepto"],"mappings":"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"}