{"version":3,"sources":["kendo.mobile.scroller.js"],"names":["f","define","$","undefined","kendo","window","mobile","fx","effects","ui","proxy","extend","Widget","Class","Movable","Pane","PaneDimensions","Transition","Animation","abs","Math","SNAPBACK_DURATION","SCROLLBAR_OPACITY","FRICTION","VELOCITY_MULTIPLIER","MAX_VELOCITY","OUT_OF_BOUNDS_FRICTION","ANIMATED_SCROLLER_PRECISION","RELEASECLASS","REFRESHCLASS","PULL","CHANGE","RESIZE","SCROLL","MOUSE_WHEEL_ID","ZoomSnapBack","init","options","that","this","fn","call","userEvents","bind","start","tapCapture","cancel","enabled","movable","scale","dimensions","minScale","done","tick","scaleWith","rescale","onEnd","scaleTo","DragInertia","transition","axis","_end","onCancel","freeze","location","_moveTo","paneAxis","outOfBounds","_snapBack","velocity","e","dimension","touch","id","max","min","velocityMultiplier","captureNext","friction","delta","elastic","moveAxis","cancelCapture","end","snapBack","moveTo","duration","ease","easeOutExpo","AnimatedScroller","origin","destination","offset","_updateCoordinates","y","x","callback","setCoordinates","from","to","setCallback","isFunction","ScrollBar","horizontal","element","elementSize","scrollMovable","alwaysVisible","size","refresh","container","append","show","paneSize","sizeRatio","total","position","round","css","opacity","visibility","hide","Scroller","inner","avoidScrolling","pane","zoomSnapBack","animatedScroller","_native","useNative","support","hasNativeScrolling","addClass","prepend","scrollElement","fixedContainer","children","first","wrapInner","eq","TapCapture","forcedEnabled","zoom","UserEvents","touchAction","fastTap","allowSelection","preventDragEvent","captureUpIfMoved","multiTouch","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","contains","event","target","verticalSwipe","capture","coordinates","scrollTo","scrollTop","scrollLeft","trigger","mousewheelScrolling","on","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelScroll","press","clearTimeout","_wheelTimeout","setTimeout","wheelDeltaY","move","preventDefault","makeVirtual","virtualSize","height","scrollHeight","scrollWidth","name","pullOffset","visibleScrollHints","messages","pullTemplate","releaseTemplate","refreshTemplate","events","_resize","contentResized","setOptions","reset","_scale","zoomOut","fitScale","centerCoordinates","enable","disable","animatedScrollTo","pullHandled","refreshHint","removeClass","hintContainer","html","yinertia","xinertia","destroy","forceEnabled","template","_paneChange","_dragEnd","scrollBar","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.mobile.scroller.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.mobile.scroller', [\n 'kendo.fx',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.scroller',\n name: 'Scroller',\n category: 'mobile',\n description: 'The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.',\n depends: [\n 'fx',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, mobile = kendo.mobile, fx = kendo.effects, ui = mobile.ui, proxy = $.proxy, extend = $.extend, Widget = ui.Widget, Class = kendo.Class, Movable = kendo.ui.Movable, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Transition = fx.Transition, Animation = fx.Animation, abs = Math.abs, SNAPBACK_DURATION = 500, SCROLLBAR_OPACITY = 0.7, FRICTION = 0.96, VELOCITY_MULTIPLIER = 10, MAX_VELOCITY = 55, OUT_OF_BOUNDS_FRICTION = 0.5, ANIMATED_SCROLLER_PRECISION = 5, RELEASECLASS = 'km-scroller-release', REFRESHCLASS = 'km-scroller-refresh', PULL = 'pull', CHANGE = 'change', RESIZE = 'resize', SCROLL = 'scroll', MOUSE_WHEEL_ID = 2;\n var ZoomSnapBack = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.tapCapture.bind('press', proxy(that.cancel, that));\n },\n enabled: function () {\n return this.movable.scale < this.dimensions.minScale;\n },\n done: function () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n tick: function () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n onEnd: function () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n var DragInertia = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function () {\n that._end();\n }\n })\n });\n that.tapCapture.bind('press', function () {\n that.cancel();\n });\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n },\n onCancel: function () {\n this.transition.cancel();\n },\n freeze: function (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n onEnd: function () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n done: function () {\n return abs(this.velocity) < 1;\n },\n start: function (e) {\n var that = this, velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n tick: function () {\n var that = this, dimension = that.dimension, friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction, delta = that.velocity *= friction, location = that.movable[that.axis] + delta;\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n that.movable.moveAxis(that.axis, location);\n },\n _end: function () {\n this.tapCapture.cancelCapture();\n this.end();\n },\n _snapBack: function () {\n var that = this, dimension = that.dimension, snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n _moveTo: function (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n });\n var AnimatedScroller = Animation.extend({\n init: function (options) {\n var that = this;\n kendo.effects.Animation.fn.init.call(this);\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n tick: function () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n done: function () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n onEnd: function () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n setCoordinates: function (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n setCallback: function (callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n },\n _updateCoordinates: function () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n var ScrollBar = Class.extend({\n init: function (options) {\n var that = this, horizontal = options.axis === 'x', element = $('
');\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n that.scrollMovable.bind(CHANGE, proxy(that.refresh, that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n refresh: function () {\n var that = this, axis = that.axis, dimension = that.dimension, paneSize = dimension.size, scrollMovable = that.scrollMovable, sizeRatio = paneSize / dimension.total, position = Math.round(-scrollMovable[axis] * sizeRatio), size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.css('display', 'none');\n } else {\n this.element.css('display', '');\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize != size) {\n that.element.css(that.size, size + 'px');\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n },\n show: function () {\n this.element.css({\n opacity: SCROLLBAR_OPACITY,\n visibility: 'visible'\n });\n },\n hide: function () {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n }\n });\n var Scroller = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass('km-native-scroller').prepend('
');\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n return;\n }\n element.css('overflow', 'hidden').addClass('km-scroll-wrapper').wrapInner('
').prepend('
');\n var inner = element.children().eq(1), tapCapture = new kendo.TapCapture(element), movable = new Movable(inner), dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }), avoidScrolling = this.options.avoidScrolling, userEvents = new kendo.UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n start: function (e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity), velocityY = abs(e.y.velocity), horizontalSwipe = velocityX * 2 >= velocityY, originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target), verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }), pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }), zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }), animatedScroller = new AnimatedScroller({\n moveTo: function (coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n movable.bind(CHANGE, function () {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n if (that.options.mousewheelScrolling) {\n element.on('DOMMouseScroll mousewheel', proxy(this, '_wheelScroll'));\n }\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n that._initAxis('x');\n that._initAxis('y');\n that._wheelEnd = function () {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n dimensions.refresh();\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n _wheelScroll: function (e) {\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = kendo.wheelDeltaY(e);\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n e.preventDefault();\n },\n makeVirtual: function () {\n this.dimensions.y.makeVirtual();\n },\n virtualSize: function (min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n height: function () {\n return this.dimensions.y.size;\n },\n scrollHeight: function () {\n return this.scrollElement[0].scrollHeight;\n },\n scrollWidth: function () {\n return this.scrollElement[0].scrollWidth;\n },\n options: {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function () {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n },\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n _resize: function () {\n if (!this._native) {\n this.contentResized();\n }\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n reset: function () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n },\n contentResized: function () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n },\n zoomOut: function () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n enable: function () {\n this.enabled = true;\n },\n disable: function () {\n this.enabled = false;\n },\n scrollTo: function (x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n },\n animatedScrollTo: function (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n pullHandled: function () {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n _scale: function (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n _initPullToRefresh: function () {\n var that = this;\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children('.km-template');\n that.pane.y.bind('change', proxy(that._paneChange, that));\n that.userEvents.bind('end', proxy(that._dragEnd, that));\n },\n _dragEnd: function () {\n var that = this;\n if (!that.pulled) {\n return;\n }\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger('pull');\n },\n _paneChange: function () {\n var that = this;\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n _initAxis: function (axis) {\n var that = this, movable = that.movable, dimension = that.dimensions[axis], tapCapture = that.tapCapture, paneAxis = that.pane[axis], scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n dimension.bind(CHANGE, function () {\n scrollBar.refresh();\n });\n paneAxis.bind(CHANGE, function () {\n scrollBar.show();\n });\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function () {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n ui.plugin(Scroller);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}