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