{"version":3,"file":"kendo.mobile.scrollview.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","ui","mobile","Transition","effects","Pane","PaneDimensions","Widget","DataBoundWidget","DataSource","data","Buffer","BatchBuffer","math","Math","abs","ceil","round","max","min","floor","CHANGE","CHANGING","REFRESH","CURRENT_PAGE_CLASS","VIRTUAL_PAGE_CLASS","FUNCTION","ITEM_CHANGE","CLEANUP","className","name","Pager","Class","extend","init","scrollView","that","this","element","append","_changeProxy","_change","bind","_refreshProxy","_refresh","items","children","e","pageHTML","idx","pageCount","html","eq","page","addClass","removeClass","destroy","unbind","remove","ScrollViewPager","TRANSITION_END","DRAG_START","DRAG_END","ElasticPane","Observable","options","movable","transition","userEvents","dimensions","dimension","pane","fn","call","container","parent","Movable","axis","onEnd","trigger","UserEvents","fastTap","start","x","velocity","y","capture","cancel","allowSelection","end","elastic","duration","size","width","getSize","height","total","getTotal","offset","updateDimension","update","refresh","moveTo","moveAxis","transitionTo","ease","instant","location","ScrollViewElasticPane","ScrollViewContent","_getPages","pageSize","contentHeight","enablePager","pagerOverlay","scrollTo","easeOutExpo","paneMoved","swipeType","bounce","callback","snap","nextPage","approx","easeOutBack","minSnap","maxSnap","currentPage","updatePage","forcePageUpdate","resizeTo","pageElements","containerHeight","pager","find","length","_outerHeight","css","_paged","roleSelector","VirtualScrollViewContent","_templates","pages","_initPages","forceEnabled","setDataSource","dataSource","create","_buffer","_pendingPageRefresh","_pendingWidgetRefresh","_viewShow","setTimeout","_resetPages","itemsPerPage","buffer","_resizeProxy","_onResize","_resetProxy","_onReset","_endReachedProxy","_onEndReached","resize","reset","endreached","template","emptyTemplate","templateProxy","emptyTemplateProxy","i","Page","push","setWidth","_repositionPages","syncDataSource","at","_updatePagesContent","thresholdPassed","isEndReached","delta","_cancelMove","_moveBackward","_moveForward","shift","setPageContent","unshift","pop","_resetMovable","threshold","position","index","view","Array","isArray","item","content","ns","theContent","VirtualPage","ScrollView","stripWhitespace","wrapInner","inner","first","transitionEnd","_transitionEnd","dragStart","_dragStart","dragEnd","_dragEnd","change","_syncWithContent","angular","elements","dataItem","_content","mobileContainer","nullObject","viewInit","viewShow","velocityThreshold","bounceVelocityThreshold","autoBind","events","value","indexOf","prev","prevPage","eventData","next","emptyDataSource","fetch","plugin","jQuery"],"sources":["kendo.mobile.scrollview.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.fx', 'kendo.data', 'kendo.draganddrop'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"mobile.scrollview\",\n name: \"ScrollView\",\n category: \"mobile\",\n description: \"The Kendo Mobile ScrollView widget is used to scroll content wider than the device screen.\",\n depends: [ \"fx\", \"data\", \"draganddrop\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n mobile = kendo.mobile,\n ui = mobile.ui,\n Transition = kendo.effects.Transition,\n Pane = kendo.ui.Pane,\n PaneDimensions = kendo.ui.PaneDimensions,\n Widget = ui.DataBoundWidget,\n DataSource = kendo.data.DataSource,\n Buffer = kendo.data.Buffer,\n BatchBuffer = kendo.data.BatchBuffer,\n\n // Math\n math = Math,\n abs = math.abs,\n ceil = math.ceil,\n round = math.round,\n max = math.max,\n min = math.min,\n floor = math.floor,\n\n CHANGE = \"change\",\n CHANGING = \"changing\",\n REFRESH = \"refresh\",\n CURRENT_PAGE_CLASS = \"current-page\",\n VIRTUAL_PAGE_CLASS = \"virtual-page\",\n FUNCTION = \"function\",\n ITEM_CHANGE = \"itemChange\",\n CLEANUP = \"cleanup\",\n\n VIRTUAL_PAGE_COUNT = 3,\n LEFT_PAGE = -1,\n CETER_PAGE = 0,\n RIGHT_PAGE = 1,\n\n LEFT_SWIPE = -1,\n NUDGE = 0,\n RIGHT_SWIPE = 1;\n\n function className(name) {\n return \"k-\" + name + \" km-\" + name;\n }\n\n var Pager = kendo.Class.extend({\n init: function(scrollView) {\n var that = this,\n element = $(\"
    \");\n\n scrollView.element.append(element);\n\n this._changeProxy = that._change.bind(that);\n this._refreshProxy = that._refresh.bind(that);\n scrollView.bind(CHANGE, this._changeProxy);\n scrollView.bind(REFRESH, this._refreshProxy);\n\n $.extend(that, { element: element, scrollView: scrollView });\n },\n\n items: function() {\n return this.element.children();\n },\n\n _refresh: function(e) {\n var pageHTML = \"\";\n\n for (var idx = 0; idx < e.pageCount; idx ++) {\n pageHTML += \"
  1. \";\n }\n\n this.element.html(pageHTML);\n this.items().eq(e.page).addClass(className(CURRENT_PAGE_CLASS));\n },\n\n _change: function(e) {\n this.items()\n .removeClass(className(CURRENT_PAGE_CLASS))\n .eq(e.page).addClass(className(CURRENT_PAGE_CLASS));\n },\n\n destroy: function() {\n this.scrollView.unbind(CHANGE, this._changeProxy);\n this.scrollView.unbind(REFRESH, this._refreshProxy);\n this.element.remove();\n }\n });\n\n kendo.mobile.ui.ScrollViewPager = Pager;\n\n var TRANSITION_END = \"transitionEnd\",\n DRAG_START = \"dragStart\",\n DRAG_END = \"dragEnd\";\n\n var ElasticPane = kendo.Observable.extend({\n init: function(element, options) {\n var that = this;\n\n kendo.Observable.fn.init.call(this);\n\n this.element = element;\n this.container = element.parent();\n\n var movable,\n transition,\n userEvents,\n dimensions,\n dimension,\n pane;\n\n movable = new kendo.ui.Movable(that.element);\n\n transition = new Transition({\n axis: \"x\",\n movable: movable,\n onEnd: function() {\n that.trigger(TRANSITION_END);\n }\n });\n\n userEvents = new kendo.UserEvents(element, {\n fastTap: true,\n start: function(e) {\n if (abs(e.x.velocity) * 2 >= abs(e.y.velocity)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n\n that.trigger(DRAG_START, e);\n transition.cancel();\n },\n allowSelection: true,\n end: function(e) {\n that.trigger(DRAG_END, e);\n }\n });\n\n dimensions = new PaneDimensions({\n element: that.element,\n container: that.container\n });\n\n dimension = dimensions.x;\n\n dimension.bind(CHANGE, function() {\n that.trigger(CHANGE);\n });\n\n pane = new Pane({\n dimensions: dimensions,\n userEvents: userEvents,\n movable: movable,\n elastic: true\n });\n\n $.extend(that, {\n duration: options && options.duration || 1,\n movable: movable,\n transition: transition,\n userEvents: userEvents,\n dimensions: dimensions,\n dimension: dimension,\n pane: pane\n });\n\n this.bind([TRANSITION_END, DRAG_START, DRAG_END, CHANGE], options);\n },\n\n size: function() {\n return { width: this.dimensions.x.getSize(), height: this.dimensions.y.getSize() };\n },\n\n total: function() {\n return this.dimension.getTotal();\n },\n\n offset: function() {\n return -this.movable.x;\n },\n\n updateDimension: function() {\n this.dimension.update(true);\n },\n\n refresh: function() {\n this.dimensions.refresh();\n },\n\n moveTo: function(offset) {\n this.movable.moveAxis(\"x\", -offset);\n },\n\n transitionTo: function(offset, ease, instant) {\n if (instant) {\n this.moveTo(-offset);\n } else {\n this.transition.moveTo({ location: offset, duration: this.duration, ease: ease });\n }\n }\n });\n\n kendo.mobile.ui.ScrollViewElasticPane = ElasticPane;\n\n var ScrollViewContent = kendo.Observable.extend({\n init: function(element, pane, options) {\n var that = this;\n\n kendo.Observable.fn.init.call(this);\n that.element = element;\n that.pane = pane;\n that._getPages();\n this.page = 0;\n this.pageSize = options.pageSize || 1;\n this.contentHeight = options.contentHeight;\n this.enablePager = options.enablePager;\n this.pagerOverlay = options.pagerOverlay;\n },\n\n scrollTo: function(page, instant) {\n this.page = page;\n this.pane.transitionTo(- page * this.pane.size().width, Transition.easeOutExpo, instant);\n },\n\n paneMoved: function(swipeType, bounce, callback, /*internal*/ instant) {\n var that = this,\n pane = that.pane,\n width = pane.size().width * that.pageSize,\n approx = round,\n ease = bounce ? Transition.easeOutBack : Transition.easeOutExpo,\n snap,\n nextPage;\n\n if (swipeType === LEFT_SWIPE) {\n approx = ceil;\n } else if (swipeType === RIGHT_SWIPE) {\n approx = floor;\n }\n\n nextPage = approx(pane.offset() / width);\n\n snap = max(that.minSnap, min(-nextPage * width, that.maxSnap));\n\n if (nextPage != that.page) {\n if (callback && callback({ currentPage: that.page, nextPage: nextPage })) {\n snap = -that.page * pane.size().width;\n }\n }\n\n pane.transitionTo(snap, ease, instant);\n },\n\n updatePage: function() {\n var pane = this.pane,\n page = round(pane.offset() / pane.size().width);\n\n if (page != this.page) {\n this.page = page;\n return true;\n }\n\n return false;\n },\n\n forcePageUpdate: function() {\n return this.updatePage();\n },\n\n resizeTo: function(size) {\n var pane = this.pane,\n width = size.width;\n\n this.pageElements.width(width);\n\n if (this.contentHeight === \"100%\") {\n var containerHeight = this.element.parent().height();\n\n if (this.enablePager === true) {\n var pager = this.element.parent().find(\"ol.km-pages\");\n if (!this.pagerOverlay && pager.length) {\n containerHeight -= kendo._outerHeight(pager, true);\n }\n }\n\n this.element.css(\"height\", containerHeight);\n this.pageElements.css(\"height\", containerHeight);\n }\n\n // re-read pane dimension after the pageElements have been resized.\n pane.updateDimension();\n\n if (!this._paged) {\n this.page = floor(pane.offset() / width);\n }\n\n this.scrollTo(this.page, true);\n\n this.pageCount = ceil(pane.total() / width);\n this.minSnap = - (this.pageCount - 1) * width;\n this.maxSnap = 0;\n },\n\n _getPages: function() {\n this.pageElements = this.element.find(kendo.roleSelector(\"page\"));\n this._paged = this.pageElements.length > 0;\n }\n });\n\n kendo.mobile.ui.ScrollViewContent = ScrollViewContent;\n\n var VirtualScrollViewContent = kendo.Observable.extend({\n init: function(element, pane, options) {\n var that = this;\n\n kendo.Observable.fn.init.call(this);\n\n that.element = element;\n that.pane = pane;\n that.options = options;\n that._templates();\n that.page = options.page || 0;\n that.pages = [];\n that._initPages();\n that.resizeTo(that.pane.size());\n\n that.pane.dimension.forceEnabled();\n },\n\n setDataSource: function(dataSource) {\n this.dataSource = DataSource.create(dataSource);\n this._buffer();\n this._pendingPageRefresh = false;\n this._pendingWidgetRefresh = false;\n },\n\n _viewShow: function() {\n var that = this;\n if (that._pendingWidgetRefresh) {\n setTimeout(function() {\n that._resetPages();\n }, 0);\n that._pendingWidgetRefresh = false;\n }\n },\n\n _buffer: function() {\n var itemsPerPage = this.options.itemsPerPage;\n\n if (this.buffer) {\n this.buffer.destroy();\n }\n\n if (itemsPerPage > 1) {\n this.buffer = new BatchBuffer(this.dataSource, itemsPerPage);\n } else {\n this.buffer = new Buffer(this.dataSource, itemsPerPage * 3);\n }\n\n this._resizeProxy = this._onResize.bind(this);\n this._resetProxy = this._onReset.bind(this);\n this._endReachedProxy = this._onEndReached.bind(this);\n\n this.buffer.bind({\n \"resize\": this._resizeProxy,\n \"reset\": this._resetProxy,\n \"endreached\": this._endReachedProxy\n });\n },\n\n _templates: function() {\n var template = this.options.template,\n emptyTemplate = this.options.emptyTemplate,\n templateProxy = {},\n emptyTemplateProxy = {};\n\n if (typeof template === FUNCTION) {\n templateProxy.template = template;\n template = \"#=this.template(data)#\";\n }\n\n this.template = kendo.template(template).bind(templateProxy);\n\n if (typeof emptyTemplate === FUNCTION) {\n emptyTemplateProxy.emptyTemplate = emptyTemplate;\n emptyTemplate = \"#=this.emptyTemplate(data)#\";\n }\n\n this.emptyTemplate = kendo.template(emptyTemplate).bind(emptyTemplateProxy);\n },\n\n _initPages: function() {\n var pages = this.pages,\n element = this.element,\n page;\n\n for (var i = 0; i < VIRTUAL_PAGE_COUNT; i++) {\n page = new Page(element);\n pages.push(page);\n }\n\n this.pane.updateDimension();\n },\n\n resizeTo: function(size) {\n var pages = this.pages,\n pane = this.pane;\n\n for (var i = 0; i < pages.length; i++) {\n pages[i].setWidth(size.width);\n }\n\n if (this.options.contentHeight === \"auto\") {\n this.element.css(\"height\", this.pages[1].element.height());\n }\n\n else if (this.options.contentHeight === \"100%\") {\n var containerHeight = this.element.parent().height();\n\n if (this.options.enablePager === true) {\n var pager = this.element.parent().find(\"ol.km-pages\");\n if (!this.options.pagerOverlay && pager.length) {\n containerHeight -= kendo._outerHeight(pager, true);\n }\n }\n\n this.element.css(\"height\", containerHeight);\n pages[0].element.css(\"height\", containerHeight);\n pages[1].element.css(\"height\", containerHeight);\n pages[2].element.css(\"height\", containerHeight);\n }\n\n pane.updateDimension();\n\n this._repositionPages();\n\n this.width = size.width;\n },\n\n scrollTo: function(page) {\n var buffer = this.buffer,\n dataItem;\n\n buffer.syncDataSource();\n dataItem = buffer.at(page);\n\n if (!dataItem) {\n return;\n }\n\n this._updatePagesContent(page);\n\n this.page = page;\n },\n\n paneMoved: function(swipeType, bounce, callback, /*internal*/ instant) {\n var that = this,\n pane = that.pane,\n width = pane.size().width,\n offset = pane.offset(),\n thresholdPassed = Math.abs(offset) >= width / 3,\n ease = bounce ? kendo.effects.Transition.easeOutBack : kendo.effects.Transition. easeOutExpo,\n isEndReached = that.page + 2 > that.buffer.total(),\n nextPage,\n delta = 0;\n\n if (swipeType === RIGHT_SWIPE) {\n if (that.page !== 0) {\n delta = -1; //backward\n }\n } else if (swipeType === LEFT_SWIPE && !isEndReached) {\n delta = 1; //forward\n } else if (offset > 0 && (thresholdPassed && !isEndReached)) {\n delta = 1; //forward\n } else if (offset < 0 && thresholdPassed) {\n if (that.page !== 0) {\n delta = -1; //backward\n }\n }\n\n nextPage = that.page;\n if (delta) {\n nextPage = (delta > 0) ? nextPage + 1 : nextPage - 1;\n }\n\n if (callback && callback({ currentPage: that.page, nextPage: nextPage })) {\n delta = 0;\n }\n\n if (delta === 0) {\n that._cancelMove(ease, instant);\n } else if (delta === -1) {\n that._moveBackward(instant);\n } else if (delta === 1) {\n that._moveForward(instant);\n }\n },\n\n updatePage: function() {\n var pages = this.pages;\n\n if (this.pane.offset() === 0) {\n return false;\n }\n\n if (this.pane.offset() > 0) {\n pages.push(this.pages.shift());//forward\n this.page++;\n this.setPageContent(pages[2], this.page + 1);\n } else {\n pages.unshift(this.pages.pop()); //back\n this.page--;\n this.setPageContent(pages[0], this.page - 1);\n }\n\n this._repositionPages();\n\n this._resetMovable();\n\n return true;\n },\n\n forcePageUpdate: function() {\n var offset = this.pane.offset(),\n threshold = this.pane.size().width * 3 / 4;\n\n if (abs(offset) > threshold) {\n return this.updatePage();\n }\n\n return false;\n },\n\n _resetMovable: function() {\n this.pane.moveTo(0);\n },\n\n _moveForward: function(instant) {\n this.pane.transitionTo(-this.width, kendo.effects.Transition.easeOutExpo, instant);\n },\n\n _moveBackward: function(instant) {\n this.pane.transitionTo(this.width, kendo.effects.Transition.easeOutExpo, instant);\n },\n\n _cancelMove: function(ease, /*internal*/ instant) {\n this.pane.transitionTo(0, ease, instant);\n },\n\n _resetPages: function() {\n this.page = this.options.page || 0;\n\n this._updatePagesContent(this.page);\n this._repositionPages();\n\n this.trigger(\"reset\");\n },\n\n _onResize: function() {\n this.pageCount = ceil(this.dataSource.total() / this.options.itemsPerPage);\n\n if (this._pendingPageRefresh) {\n this._updatePagesContent(this.page);\n this._pendingPageRefresh = false;\n }\n\n this.trigger(\"resize\");\n },\n\n _onReset: function() {\n this.pageCount = ceil(this.dataSource.total() / this.options.itemsPerPage);\n this._resetPages();\n },\n\n _onEndReached: function() {\n this._pendingPageRefresh = true;\n },\n\n _repositionPages: function() {\n var pages = this.pages;\n\n pages[0].position(LEFT_PAGE);\n pages[1].position(CETER_PAGE);\n pages[2].position(RIGHT_PAGE);\n },\n\n _updatePagesContent: function(offset) {\n var pages = this.pages,\n currentPage = offset || 0;\n\n this.setPageContent(pages[0], currentPage - 1);\n this.setPageContent(pages[1], currentPage);\n this.setPageContent(pages[2], currentPage + 1);\n },\n\n setPageContent: function(page, index) {\n var buffer = this.buffer,\n template = this.template,\n emptyTemplate = this.emptyTemplate,\n view = null;\n\n if (index >= 0) {\n view = buffer.at(index);\n if (Array.isArray(view) && !view.length) {\n view = null;\n }\n }\n\n this.trigger(CLEANUP, { item: page.element });\n\n if (view !== null) {\n page.content(template(view));\n } else {\n page.content(emptyTemplate({}));\n }\n\n kendo.mobile.init(page.element);\n this.trigger(ITEM_CHANGE, { item: page.element, data: view, ns: kendo.mobile.ui });\n\n }\n });\n\n kendo.mobile.ui.VirtualScrollViewContent = VirtualScrollViewContent;\n\n var Page = kendo.Class.extend({\n init: function(container) {\n this.element = $(\"
    \");\n this.width = container.width();\n this.element.width(this.width);\n container.append(this.element);\n },\n\n content: function(theContent) {\n this.element.html(theContent);\n },\n\n position: function(position) { //position can be -1, 0, 1\n this.element.css(\"transform\", \"translate3d(\" + this.width * position + \"px, 0, 0)\");\n },\n\n setWidth: function(width) {\n this.width = width;\n this.element.width(width);\n }\n });\n\n kendo.mobile.ui.VirtualPage = Page;\n\n var ScrollView = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n options = that.options;\n element = that.element;\n\n kendo.stripWhitespace(element[0]);\n\n element\n .wrapInner(\"
    \")\n .addClass(\"k-widget \" + className(\"scrollview\"));\n\n if (this.options.enablePager) {\n this.pager = new Pager(this);\n\n if (this.options.pagerOverlay) {\n element.addClass(className(\"scrollview-overlay\"));\n }\n }\n\n that.inner = element.children().first();\n that.page = 0;\n that.inner.css(\"height\", options.contentHeight);\n\n that.pane = new ElasticPane(that.inner, {\n duration: this.options.duration,\n transitionEnd: this._transitionEnd.bind(this),\n dragStart: this._dragStart.bind(this),\n dragEnd: this._dragEnd.bind(this),\n change: this[REFRESH].bind(this)\n });\n\n that.bind(\"resize\", function() {\n that.pane.refresh();\n });\n\n that.page = options.page;\n\n var empty = this.inner.children().length === 0;\n\n var content = empty ? new VirtualScrollViewContent(that.inner, that.pane, options) : new ScrollViewContent(that.inner, that.pane, options);\n\n content.page = that.page;\n\n content.bind(\"reset\", function() {\n this._pendingPageRefresh = false;\n that._syncWithContent();\n that.trigger(REFRESH, { pageCount: content.pageCount, page: content.page });\n });\n\n content.bind(\"resize\", function() {\n that.trigger(REFRESH, { pageCount: content.pageCount, page: content.page });\n });\n\n content.bind(ITEM_CHANGE, function(e) {\n that.trigger(ITEM_CHANGE, e);\n\n that.angular(\"compile\", function() {\n return { elements: e.item, data: [ { dataItem: e.data } ] };\n });\n });\n\n content.bind(CLEANUP, function(e) {\n that.angular(\"cleanup\", function() {\n return { elements: e.item };\n });\n });\n\n that._content = content;\n that.setDataSource(options.dataSource);\n\n var mobileContainer = that.container();\n\n if (mobileContainer.nullObject) {\n that.viewInit();\n that.viewShow();\n } else {\n mobileContainer.bind(\"show\", this.viewShow.bind(this)).bind(\"init\", this.viewInit.bind(this));\n }\n },\n\n options: {\n name: \"ScrollView\",\n page: 0,\n duration: 400,\n velocityThreshold: 0.8,\n contentHeight: \"auto\",\n pageSize: 1,\n itemsPerPage: 1,\n bounceVelocityThreshold: 1.6,\n enablePager: true,\n pagerOverlay: false,\n autoBind: true,\n template: \"\",\n emptyTemplate: \"\"\n },\n\n events: [\n CHANGING,\n CHANGE,\n REFRESH\n ],\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n kendo.destroy(this.element);\n },\n\n viewInit: function() {\n if (this.options.autoBind) {\n this._content.scrollTo(this._content.page, true);\n }\n },\n\n viewShow: function() {\n this.pane.refresh();\n },\n\n refresh: function() {\n var content = this._content;\n\n content.resizeTo(this.pane.size());\n this.page = content.page;\n this.trigger(REFRESH, { pageCount: content.pageCount, page: content.page });\n },\n\n content: function(html) {\n this.element.children().first().html(html);\n this._content._getPages();\n this.pane.refresh();\n },\n\n value: function(item) {\n var dataSource = this.dataSource;\n\n if (item) {\n this.scrollTo(dataSource.indexOf(item), true);\n } else {\n return dataSource.at(this.page);\n }\n },\n\n scrollTo: function(page, instant) {\n this._content.scrollTo(page, instant);\n this._syncWithContent();\n },\n\n prev: function() {\n var that = this,\n prevPage = that.page - 1;\n\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(RIGHT_SWIPE, undefined$1, function(eventData) {\n return that.trigger(CHANGING, eventData);\n });\n } else if (prevPage > -1) {\n that.scrollTo(prevPage);\n }\n },\n\n next: function() {\n var that = this,\n nextPage = that.page + 1;\n\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(LEFT_SWIPE, undefined$1, function(eventData) {\n return that.trigger(CHANGING, eventData);\n });\n } else if (nextPage < that._content.pageCount) {\n that.scrollTo(nextPage);\n }\n },\n\n setDataSource: function(dataSource) {\n if (!(this._content instanceof VirtualScrollViewContent)) {\n return;\n }\n // the scrollview should have a ready datasource for MVVM to function properly. But an empty datasource should not empty the element\n var emptyDataSource = !dataSource;\n this.dataSource = DataSource.create(dataSource);\n\n this._content.setDataSource(this.dataSource);\n\n if (this.options.autoBind && !emptyDataSource) {\n // this.items().remove();\n this.dataSource.fetch();\n }\n },\n\n items: function() {\n return this.element.find(\".km-\" + VIRTUAL_PAGE_CLASS);\n },\n\n _syncWithContent: function() {\n var pages = this._content.pages,\n buffer = this._content.buffer,\n data,\n element;\n\n this.page = this._content.page;\n\n data = buffer ? buffer.at(this.page) : undefined$1;\n if (!(data instanceof Array)) {\n data = [data];\n }\n element = pages ? pages[1].element : undefined$1;\n\n this.trigger(CHANGE, { page: this.page, element: element, data: data });\n },\n\n _dragStart: function() {\n if (this._content.forcePageUpdate()) {\n this._syncWithContent();\n }\n },\n\n _dragEnd: function(e) {\n var that = this,\n velocity = e.x.velocity,\n velocityThreshold = this.options.velocityThreshold,\n swipeType = NUDGE,\n bounce = abs(velocity) > this.options.bounceVelocityThreshold;\n\n if (velocity > velocityThreshold) {\n swipeType = RIGHT_SWIPE;\n } else if (velocity < -velocityThreshold) {\n swipeType = LEFT_SWIPE;\n }\n\n this._content.paneMoved(swipeType, bounce, function(eventData) {\n return that.trigger(CHANGING, eventData);\n });\n },\n\n _transitionEnd: function() {\n if (this._content.updatePage()) {\n this._syncWithContent();\n }\n }\n });\n\n ui.plugin(ScrollView);\n\n })(window.kendo.jQuery);\n\n}));\n"]}