{"version":3,"file":"kendo.scrollview.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendoscrollview","js","this","$","undefined$1","kendo","window","ui","Transition","effects","Pane","keys","PaneDimensions","Widget","DataBoundWidget","DataSource","data","math","Math","abs","ceil","round","max","min","floor","CHANGE","CLICK","REFRESH","CURRENT_PAGE_CLASS","VIRTUAL_PAGE_CLASS","FUNCTION","ITEM_CHANGE","NS","KEYDOWN","FOCUS","FOCUSOUT","FOCUSED","TABINDEX","className","name","ScrollViewDataReader","Observable","extend","init","dataSource","that","pendingRequestArray","initialFetch","useRanges","options","serverPaging","fn","call","bind","_change","trigger","offset","page","callback","view","range","pageSize","scrollTo","pageCount","total","prevPage","prevPrefetch","currentPage","nextPage","nextPrefetch","push","getViewData","index","length","destroy","unbind","Pager","Class","scrollView","element","navigationWrapElement","append","_navigationContainer","_changeProxy","_refreshProxy","_refresh","on","_click","_navigatable","items","children","_focus","_focused","_setCurrent","find","_blur","_current","removeClass","removeAttr","_keyDown","e","handled","next","current","key","keyCode","LEFT","prev","RIGHT","SPACEBAR","ENTER","preventDefault","stopPropagation","id","guid","attr","addClass","pageable","tabindex","messages","pagerLabel","role","itemsWrapper","_ariaTemplate","template","ARIATemplate","ref","navigatable","pageHTML","idx","html","eq","_toggleNavigation","isDefaultPrevented","innerNavigationContainer","scrollViewWidth","width","containerOffset","pageWidth","outerWidth","itemOffset","position","left","scrollLeft","translate","animate","newPage","currentTarget","off","remove","ScrollViewPager","TRANSITION_END","DRAG_START","DRAG_END","ElasticPane","movable","transition","userEvents","dimensions","dimension","pane","container","parent","Movable","axis","onEnd","UserEvents","fastTap","start","x","velocity","y","capture","cancel","allowSelection","end","elastic","duration","size","getSize","height","getTotal","updateDimension","update","refresh","enabled","moveTo","moveAxis","transitionTo","ease","instant","location","tansition","ScrollViewElasticPane","ScrollViewContent","_getPages","contentHeight","enablePager","pagerOverlay","forceEnabled","easeOutExpo","paneMoved","swipeType","bounce","snap","approx","easeOutBack","minSnap","maxSnap","updatePage","forcePageUpdate","resizeTo","pageElements","containerHeight","pager","_outerHeight","css","_paged","roleSelector","VirtualScrollViewContent","_templates","pages","_initPages","setDataSource","create","_dataReader","_pendingPageRefresh","_pendingWidgetRefresh","_viewShow","setTimeout","_resetPages","dataReader","_pageProxy","_onPage","_resetProxy","_onReset","reset","emptyTemplate","templateProxy","emptyTemplateProxy","i","Page","setWidth","_repositionPages","silent","pagerScroll","thresholdPassed","isEndReached","delta","Array","_cancelMove","_moveBackward","_moveForward","shift","setPageContent","unshift","pop","_resetMovable","threshold","item","content","top","theContent","VirtualPage","ScrollView","stripWhitespace","scrollViewWrap","wrapInner","_initNavigation","inner","first","transitionEnd","_transitionEnd","dragStart","_dragStart","dragEnd","_dragEnd","change","_defaultPrevented","angular","elements","dataItem","_content","viewInit","viewShow","velocityThreshold","bounceVelocityThreshold","enableNavigationButtons","autoBind","previousButtonLabel","nextButtonLabel","events","ariaLiveEl","eventData","emptyDataSource","fetch","_updateAria","prevArrow","nextArrow","navigationContainer","itemsWrapperId","icon","hide","target","click","show","plugin","jQuery"],"sources":["kendo.scrollview.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.fx.js'), require('kendo.data.js'), require('kendo.draganddrop.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.fx', 'kendo.data', 'kendo.draganddrop', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendoscrollview = global.kendoscrollview || {}, global.kendoscrollview.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"scrollview\",\n name: \"ScrollView\",\n category: \"web\",\n description: \"The Kendo ScrollView widget is used to scroll content wider than the device screen.\",\n depends: [ \"fx\", \"data\", \"draganddrop\", \"icons\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Transition = kendo.effects.Transition,\n Pane = kendo.ui.Pane,\n keys = kendo.keys,\n PaneDimensions = kendo.ui.PaneDimensions,\n Widget = ui.DataBoundWidget,\n DataSource = kendo.data.DataSource,\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 CLICK = \"click\",\n CHANGING = \"changing\",\n REFRESH = \"refresh\",\n CURRENT_PAGE_CLASS = \"primary\",\n VIRTUAL_PAGE_CLASS = \"scrollview-page\",\n FUNCTION = \"function\",\n ITEM_CHANGE = \"itemChange\",\n CLEANUP = \"cleanup\",\n NS = \".ScrollView\",\n DOT = \".\",\n KEYDOWN = \"keydown\",\n FOCUS = \"focus\",\n FOCUSOUT = \"focusout\",\n FOCUSED = \"k-focus\",\n TABINDEX = \"tabindex\",\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;\n }\n\n var ScrollViewDataReader = kendo.Observable.extend({\n init: function(dataSource) {\n var that = this;\n this.dataSource = dataSource;\n this.pendingRequestArray = [];\n this.initialFetch = false;\n this.useRanges = dataSource.options.serverPaging;\n\n kendo.Observable.fn.init.call(this);\n\n dataSource.bind(\"change\", function() {\n that._change();\n });\n },\n\n _change: function() {\n this.trigger(\"reset\", { offset: this.offset });\n },\n\n page: function(page, callback) {\n var that = this;\n\n if (!this.useRanges) {\n this.dataSource.page(page + 1);\n if (callback) {\n callback(that.dataSource.view());\n } else {\n that.trigger(\"page\", { page: page });\n }\n }\n if (this.useRanges) {\n this.dataSource.range(page * this.dataSource.pageSize(), this.dataSource.pageSize(), function() {\n if (callback) {\n callback(that.dataSource.view());\n } else {\n that.trigger(\"page\", { page: page });\n }\n });\n }\n },\n\n scrollTo: function(page) {\n var pageCount = Math.ceil(this.dataSource.total() / this.dataSource.pageSize() || 1);\n var prevPage = page - 1;\n var prevPrefetch = prevPage - 1;\n var currentPage = page;\n var nextPage = pageCount > 0 && page + 1 >= pageCount ? - 1 : page + 1;\n var nextPrefetch = pageCount > 0 && nextPage + 1 >= pageCount ? - 1 : nextPage + 1;\n\n if (nextPage >= 0) {\n this.pendingRequestArray.push(nextPage);\n }\n\n if (prevPage >= 0) {\n this.pendingRequestArray.push(prevPage);\n }\n\n if (prevPrefetch >= 0) {\n this.pendingRequestArray.push(prevPrefetch);\n }\n\n if (nextPrefetch >= 0) {\n this.pendingRequestArray.push(nextPrefetch);\n }\n\n this.page(currentPage);\n },\n\n getViewData: function() {\n var view = this.dataSource.view();\n var data;\n if (this.dataSource.options.pageSize > 1) {\n data = [];\n for (var index = 0; index < view.length; index++) {\n data.push(view[index]);\n }\n }\n else {\n data = view[0];\n }\n return data;\n },\n destroy: function() {\n var that = this;\n\n that.dataSource.unbind();\n that.dataSource = null;\n }\n });\n\n kendo.ui.ScrollViewDataReader = ScrollViewDataReader;\n\n var Pager = kendo.Class.extend({\n init: function(scrollView) {\n var that = this,\n element = $(\"
\"),\n navigationWrapElement = $(\"
\");\n\n navigationWrapElement.append(element);\n scrollView._navigationContainer.append(navigationWrapElement);\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 element.on(CLICK + NS, \".k-link\", this._click.bind(scrollView));\n\n $.extend(that, { element: element, scrollView: scrollView });\n\n that._navigatable();\n },\n\n items: function() {\n return this.element.children();\n },\n\n _focus: function() {\n var that = this;\n that._focused = true;\n that._setCurrent(that.element.find(DOT + className(CURRENT_PAGE_CLASS)));\n },\n\n _blur: function() {\n var that = this;\n\n that._focused = false;\n\n if (that._current) {\n that._current.removeClass(FOCUSED);\n that._current.removeAttr(\"id\");\n that.element.removeAttr(\"aria-activedescendant\");\n }\n },\n\n _keyDown: function(e) {\n var that = this;\n var handled;\n var next;\n var current = that._current;\n\n var key = e.keyCode;\n\n if (key == keys.LEFT) {\n handled = true;\n next = current.prev(\".k-link\");\n\n if (next.length) {\n that._setCurrent(next);\n }\n }\n\n if (key == keys.RIGHT) {\n handled = true;\n next = current.next(\".k-link\");\n\n if (next.length) {\n that._setCurrent(next);\n }\n }\n\n if (e.keyCode == keys.SPACEBAR || e.keyCode == keys.ENTER) {\n handled = true;\n that._current.trigger(\"click\");\n }\n\n if (handled) {\n e.preventDefault();\n // prevent changing of items in scrollview\n e.stopPropagation();\n }\n },\n\n _setCurrent: function(current) {\n if (!this._focused) {\n return;\n }\n var that = this;\n var id = kendo.guid();\n var next = $(current);\n\n if (that._current) {\n $(that._current)\n .removeClass(FOCUSED)\n .removeAttr(\"id\");\n\n that.element.removeAttr(\"aria-activedescendant\");\n }\n\n next\n .attr(\"id\", id)\n .addClass(FOCUSED);\n\n that.element.attr(\"aria-activedescendant\", id);\n\n that._current = next;\n },\n\n _navigatable: function() {\n var that = this;\n var pageable = that.scrollView.options.pageable || {};\n var defaultAriaTemplate = function (ref) {\n var index = ref.index;\n\n return (\"Item \" + (index + 1));\n };\n\n that.element.attr({\n tabindex: 0,\n \"aria-label\": that.scrollView.options.messages.pagerLabel,\n role: \"group\"\n });\n\n if (that.scrollView.itemsWrapper) {\n that.element.attr(\"aria-controls\", that.scrollView.itemsWrapper.attr(\"id\"));\n }\n\n that._ariaTemplate = kendo.template(pageable.ARIATemplate || defaultAriaTemplate);\n\n if (!that.scrollView.options.navigatable) {\n return;\n }\n\n that.element.on(KEYDOWN + NS, that, that._keyDown.bind(that));\n that.element.on(FOCUS + NS, that._focus.bind(that));\n that.element.on(FOCUSOUT + NS, that._blur.bind(that));\n },\n\n _refresh: function(e) {\n var pageHTML = \"\";\n var current;\n\n for (var idx = 0; idx < e.pageCount; idx ++) {\n pageHTML += '';\n }\n\n this.element.html(pageHTML);\n current = this.items().eq(e.page);\n current.addClass(className(CURRENT_PAGE_CLASS));\n\n current.attr(\"aria-pressed\", true);\n\n this.scrollView._toggleNavigation({ currentPage: e.page });\n },\n\n _change: function(e) {\n if (e.isDefaultPrevented()) {\n return;\n }\n\n var innerNavigationContainer = this.scrollView._navigationContainer.find(\".k-scrollview-nav\");\n var scrollViewWidth = this.scrollView.element.width();\n var containerOffset = (scrollViewWidth - innerNavigationContainer.width()) / 2;\n var pageWidth = innerNavigationContainer.find(\".k-link\").eq(0).outerWidth(true) / 2;\n var items = this.items();\n var current;\n\n items.removeClass(className(CURRENT_PAGE_CLASS));\n\n current = items.eq(e.nextPage).addClass(className(CURRENT_PAGE_CLASS));\n items.attr(\"aria-pressed\", false);\n this._setCurrent(current);\n current.attr(\"aria-pressed\", true);\n\n var itemOffset = this.items().eq(e.nextPage).length > 0 ? this.items().eq(e.nextPage).position().left : 0;\n\n if (itemOffset > scrollViewWidth / 2 || itemOffset < kendo.scrollLeft(innerNavigationContainer) + scrollViewWidth / 2) {\n var translate = 0;\n\n if (itemOffset > scrollViewWidth / 2) {\n translate = kendo.scrollLeft(innerNavigationContainer) + itemOffset - scrollViewWidth / 2;\n }\n else {\n translate = kendo.scrollLeft(innerNavigationContainer) - (scrollViewWidth / 2 - itemOffset);\n }\n\n translate += (containerOffset + pageWidth);\n\n innerNavigationContainer.animate({ \"scrollLeft\": translate }, 300);\n }\n\n this.scrollView._toggleNavigation({ currentPage: e.currentPage, nextPage: e.nextPage });\n },\n\n _click: function(e) {\n var newPage = $(e.currentTarget).index();\n\n this.scrollTo(newPage);\n },\n\n destroy: function() {\n this.scrollView.unbind(CHANGE, this._changeProxy);\n this.scrollView.unbind(REFRESH, this._refreshProxy);\n this.element.off(NS);\n this.element.remove();\n }\n });\n\n kendo.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 this.dimensions.y.enabled = false;\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 destroy: function() {\n var that = this;\n\n that.userEvents.destroy();\n that.unbind();\n that.movable = that.tansition = that.dimensions = that.dimension = that.pane = null;\n that.element.remove();\n }\n });\n\n kendo.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 that.pane.dimension.forceEnabled();\n },\n\n scrollTo: function(page, instant) {\n var that = this;\n\n if (page == that.page && !instant) {\n return;\n }\n\n if (!that.trigger(\"resize\", { currentPage: this.page, nextPage: page, data: undefined$1 })) {\n that.page = page;\n that.pane.transitionTo(- page * that.pane.size().width, Transition.easeOutExpo, instant);\n }\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 if (nextPage < 0 || nextPage >= that.pageCount) {\n var tansition = nextPage < 0 ? 0 : (- this.page * this.pane.size().width);\n return this.pane.transitionTo(tansition, ease, instant);\n }\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(\"div.k-scrollview-nav\");\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, true);\n\n this.pageCount = this.pageElements.length;\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 destroy: function() {\n var that = this;\n\n that.pane = null;\n that.element.remove();\n }\n });\n\n kendo.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._dataReader();\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 _dataReader: function() {\n this.dataReader = new ScrollViewDataReader(this.dataSource);\n\n this._pageProxy = this._onPage.bind(this);\n this._resetProxy = this._onReset.bind(this);\n\n this.dataReader.bind({\n \"page\": this._pageProxy,\n \"reset\": this._resetProxy\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 = function (data) { return templateProxy.template(data); };\n }\n\n this.template = kendo.template(template).bind(templateProxy);\n\n if (typeof emptyTemplate === FUNCTION) {\n emptyTemplateProxy.emptyTemplate = emptyTemplate;\n emptyTemplate = function (data) { return emptyTemplateProxy.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(\"div.k-scrollview-nav\");\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 else if (this.options.contentHeight) {\n pages[0].element.css(\"height\", this.options.contentHeight);\n pages[1].element.css(\"height\", this.options.contentHeight);\n pages[2].element.css(\"height\", this.options.contentHeight);\n }\n\n pane.updateDimension();\n\n this._repositionPages();\n\n this.width = size.width;\n },\n\n scrollTo: function(page, instant, silent) {\n var that = this;\n var dataReader = that.dataReader;\n\n if (page == that.page && !instant) {\n return;\n }\n\n dataReader.page(page, function(data) {\n if (silent) {\n dataReader.scrollTo(page);\n return;\n }\n if (!that.trigger(\"resize\", { currentPage: that.page, nextPage: page, data: data })) {\n if (!instant) {\n dataReader.pagerScroll = page > that.page ? - 1 : 1;\n that.page = page + dataReader.pagerScroll;\n } else {\n that.page = page;\n }\n dataReader.scrollTo(page);\n }\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.pageCount,\n nextPage,\n delta = 0,\n data,\n element;\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 if (that instanceof kendo.ui.VirtualScrollViewContent) {\n that.dataReader.page(nextPage);\n data = that.dataReader.getViewData();\n }\n else {\n data = undefined$1;\n }\n\n if (!(data instanceof Array)) {\n data = [data];\n }\n element = that.pages ? that.pages[1].element : undefined$1;\n\n }\n\n if (callback && that.page != nextPage && callback({ currentPage: that.page, nextPage: nextPage, element: element, data: data })) {\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 if (this.page + 2 < this.pageCount) {\n this.dataReader.pendingRequestArray.push(this.page + 2);\n }\n if (this.page + 1 < this.pageCount) {\n this.dataReader.page(this.page + 1);\n }\n\n if (this.page + 1 == this.pageCount) {\n this.setPageContent(this.pages[2], null);\n }\n\n } else {\n pages.unshift(this.pages.pop()); //back\n this.page--;\n if (this.page - 2 >= 0) {\n this.dataReader.pendingRequestArray.push(this.page - 2);\n }\n if (this.page - 1 >= 0) {\n this.dataReader.page(this.page - 1);\n }\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 this._repositionPages();\n\n this.trigger(\"reset\");\n },\n\n _onPage: function(e) {\n if (e.page >= this.pageCount) {\n this.setPageContent(this.pages[2], null);\n }\n if (this.page == e.page) {\n if (!this.dataReader.pagerScroll || this.dataReader.pagerScroll === 0 && this.dataReader.initialFetch) {\n this.setPageContent(this.pages[1], this.dataReader.getViewData());\n }\n else {\n if (this.dataReader.pagerScroll < 0) {\n this._moveForward();\n }\n else {\n this._moveBackward();\n }\n\n this.dataReader.pagerScroll = 0;\n this.setPageContent(this.pages[1], this.dataReader.getViewData());\n }\n }\n else if (this.page + 1 == e.page) {\n this.setPageContent(this.pages[2], this.dataReader.getViewData());\n }\n else if (this.page - 1 == e.page) {\n this.setPageContent(this.pages[0], this.dataReader.getViewData());\n }\n\n if (this.dataReader.pendingRequestArray.length > 0 && this.dataReader.initialFetch) {\n var item = this.dataReader.pendingRequestArray.shift();\n this.dataReader.page(item);\n }\n },\n\n _onReset: function() {\n this.pageCount = ceil(this.dataSource.total() / this.dataSource.pageSize());\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 setPageContent: function(page, data) {\n var template = this.template,\n emptyTemplate = this.emptyTemplate;\n\n if (data !== null && data !== undefined$1) {\n page.content(template(data));\n } else {\n page.content(emptyTemplate({}));\n }\n },\n\n destroy: function() {\n var that = this;\n var pages = that.pages;\n\n that.dataReader.unbind();\n that.dataSource.unbind();\n that.dataReader = that.dataSource = that.pane = null;\n\n for (var index = 0; index < pages.length; index++) {\n pages[index].destroy();\n }\n\n that.element.remove();\n }\n });\n\n kendo.ui.VirtualScrollViewContent = VirtualScrollViewContent;\n\n var Page = kendo.Class.extend({\n init: function(container) {\n this.element = $(\"
  • \");\n this.element.css({\n position: \"absolute\",\n top: \"0\",\n left: \"0\"\n });\n\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 destroy: function() {\n var that = this;\n\n that.element.remove();\n that.element = null;\n }\n });\n\n kendo.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 var scrollViewWrap = $((\"<\" + (element.children().length === 0 ? 'ul' : 'div') + \" class=\\\"k-scrollview-wrap\\\" />\"));\n\n element.wrapInner(scrollViewWrap);\n\n that.itemsWrapper = element.find(\".k-scrollview-wrap\");\n\n element.addClass(className(\"scrollview\"));\n\n that._initNavigation();\n\n if (this.options.pageable || this.options.enablePager) {\n this.pager = new Pager(this);\n\n if (this.options.pagerOverlay) {\n element.addClass(className(\"scrollview-overlay\"));\n }\n } else {\n this._changeProxy = that._toggleNavigation.bind(that);\n this.bind(CHANGE, this._changeProxy);\n }\n\n that.inner = element.children().first();\n that.page = 0;\n\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.trigger(REFRESH, { pageCount: content.pageCount, page: content.page });\n that._toggleNavigation({ currentPage: content.page, nextPage: content.page });\n });\n\n content.bind(\"resize\", function(e) {\n var currentPage = content.page;\n var nextPage = e.nextPage;\n\n if (currentPage != nextPage) {\n e._defaultPrevented = that.trigger(CHANGE, { currentPage: content.page, nextPage: e.nextPage, data: e.data });\n }\n that._toggleNavigation({ currentPage: content.page, nextPage: e.nextPage });\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 that.viewInit();\n that.viewShow();\n\n that._navigatable();\n\n },\n\n options: {\n name: \"ScrollView\",\n ARIATemplate: function (ref) {\n var index = ref.index;\n var total = ref.total;\n\n return (\"Item \" + index + \" of \" + total);\n },\n page: 0,\n duration: 400,\n velocityThreshold: 0.8,\n contentHeight: \"auto\",\n pageSize: 1,\n bounceVelocityThreshold: 1.6,\n enablePager: true,\n enableNavigationButtons: true,\n pagerOverlay: true,\n navigatable: false,\n autoBind: true,\n pageable: false,\n template: function () { return \"\"; },\n emptyTemplate: function () { return \"\"; },\n messages: {\n previousButtonLabel: \"Previous\",\n nextButtonLabel: \"Next\",\n pagerLabel: \"ScrollView pager\"\n }\n },\n\n events: [\n CHANGING,\n CHANGE,\n REFRESH\n ],\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this._content.destroy();\n this.pane.destroy();\n\n if (this.pager) {\n this.pager.destroy();\n }\n\n this._navigationContainer.off(NS);\n this._navigationContainer = null;\n this.itemsWrapper.off(NS);\n this.itemsWrapper = null;\n\n this.ariaLiveEl = this._current = null;\n\n this.inner = null;\n kendo.destroy(this.element);\n },\n\n viewInit: function() {\n if (this.options.autoBind) {\n this._content.scrollTo(this._content.page, true, true);\n }\n },\n\n viewShow: function() {\n this.pane.refresh();\n },\n\n refresh: function() {\n var content = this._content;\n var options = this.options;\n\n content.resizeTo(this.pane.size());\n this.page = content.page;\n\n if (content instanceof ScrollViewContent || content.dataReader.initialFetch) {\n if (options.enablePager) {\n this.trigger(REFRESH, { pageCount: content.pageCount, page: content.page });\n }\n else {\n this.trigger(CHANGE, { pageCount: content.pageCount, currentPage: content.page });\n }\n }\n },\n\n content: function(html) {\n this.element.children().first().html(html);\n this._content._getPages();\n this.pane.refresh();\n },\n\n scrollTo: function(page, instant, silent) {\n this._content.scrollTo(page, instant, silent);\n },\n\n prev: function() {\n var that = this,\n prevPage = that._content.page - 1;\n\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(RIGHT_SWIPE, undefined$1, function(eventData) {\n return that.trigger(CHANGE, eventData);\n });\n } else if (prevPage > -1) {\n that.scrollTo(prevPage);\n }\n },\n\n next: function() {\n var that = this,\n nextPage = that._content.page + 1;\n\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(LEFT_SWIPE, undefined$1, function(eventData) {\n return that.trigger(CHANGE, eventData);\n });\n } else if (nextPage < that._content.pageCount) {\n that.scrollTo(nextPage);\n }\n },\n\n setDataSource: function(dataSource) {\n var that = this;\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 if (dataSource instanceof DataSource) {\n dataSource.options.pageSize = dataSource.options.pageSize || 1;\n this.dataSource = dataSource = new DataSource(dataSource.options);\n }\n else {\n this.dataSource = DataSource.create(dataSource);\n }\n\n this._content.setDataSource(this.dataSource);\n\n if (this.options.autoBind && !emptyDataSource) {\n this.dataSource.fetch(function() {\n that._content.dataReader.initialFetch = true;\n that.scrollTo(that._content.page, true, true);\n that._content.trigger(\"reset\");\n });\n }\n },\n\n items: function() {\n return this.element.find(\".k-\" + VIRTUAL_PAGE_CLASS);\n },\n\n _updateAria: function() {\n var content = this._content;\n\n this.ariaLiveEl.html(this._ariaTemplate({ index: (content.page + 1), total: content.pageCount }));\n },\n\n _setCurrent: function(current) {\n if (!this._focused) {\n return;\n }\n var that = this;\n var page = that._content.page;\n var id = kendo.guid();\n var children = that.itemsWrapper.children();\n var next = $(current || children.eq(page));\n\n if (that._content.pages) {\n children.attr(\"aria-hidden\", true);\n that._content.pages[1].element.removeAttr(\"aria-hidden\");\n return;\n }\n\n if (that._current) {\n $(that._current)\n .removeClass(FOCUSED)\n .removeAttr(\"id\");\n\n children.attr(\"aria-hidden\", true);\n }\n\n next.addClass(FOCUSED);\n that._updateAria();\n that._current = next;\n },\n\n _dragStart: function() {\n this._content.forcePageUpdate();\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(CHANGE, eventData);\n });\n },\n\n _transitionEnd: function() {\n this._content.updatePage();\n this._setCurrent();\n },\n\n _initNavigation: function() {\n var that = this;\n var prevArrow;\n var nextArrow;\n var messages = that.options.messages;\n var navigationContainer = that._navigationContainer = $(\"
    \");\n var itemsWrapper = that.itemsWrapper;\n var itemsWrapperId = itemsWrapper.attr(\"id\") || kendo.guid();\n\n itemsWrapper.attr(\"id\", itemsWrapperId);\n\n prevArrow = $((\"\" + (kendo.ui.icon({ icon: \"chevron-left\", size: \"xxxlarge\" })) + \"\"));\n nextArrow = $((\"\" + (kendo.ui.icon({ icon: \"chevron-right\", size: \"xxxlarge\" })) + \"\"));\n\n prevArrow.hide();\n nextArrow.hide();\n\n navigationContainer.append(prevArrow);\n navigationContainer.append(nextArrow);\n that.element.append(navigationContainer);\n\n that.ariaLiveEl = $(\"
    \");\n that.element.append(that.ariaLiveEl);\n\n navigationContainer.on(CLICK + NS, \"span.k-scrollview-prev\", that.prev.bind(that));\n navigationContainer.on(CLICK + NS, \"span.k-scrollview-next\", that.next.bind(that));\n },\n\n _navigatable: function() {\n var that = this;\n var navigationContainer = that._navigationContainer;\n\n that._ariaTemplate = kendo.template(that.options.ARIATemplate);\n\n navigationContainer.on(KEYDOWN + NS, that, function(e) {\n var target = $(e.target);\n if (e.keyCode == keys.SPACEBAR || e.keyCode == keys.ENTER) {\n e.preventDefault();\n target.click();\n }\n });\n\n that.element.attr({\n tabindex: 0,\n role: \"application\",\n \"aria-roledescription\": \"carousel\"\n });\n\n that.itemsWrapper\n .attr(\"role\", \"list\")\n .children()\n .addClass(\"k-scrollview-view\")\n .attr({\n \"role\": \"listitem\",\n \"aria-roledescription\": \"slide\"\n });\n\n if (!that.options.navigatable) {\n return;\n }\n\n navigationContainer.find(\">span.k-scrollview-prev\").attr(TABINDEX, 0);\n navigationContainer.find(\">span.k-scrollview-next\").attr(TABINDEX, 0);\n\n that.element.on(KEYDOWN + NS, that, that._keyDown.bind(that));\n that.element.on(FOCUS + NS, that._focus.bind(that));\n that.element.on(FOCUSOUT + NS, that._blur.bind(that));\n },\n\n _focus: function() {\n var that = this;\n that._focused = true;\n that._setCurrent();\n },\n\n _blur: function() {\n if (this._current) {\n this._current.removeClass(FOCUSED);\n }\n },\n\n _keyDown: function(e) {\n var that = this;\n var handled;\n var key = e.keyCode;\n\n if (key == keys.LEFT) {\n handled = true;\n that.prev();\n }\n\n if (key == keys.RIGHT) {\n handled = true;\n that.next();\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n\n _toggleNavigation: function(e) {\n var page = e.nextPage || e.nextPage === 0 ? e.nextPage : e.currentPage;\n var navigationContainer = this._navigationContainer;\n var prevArrow = navigationContainer.find(\">span.k-scrollview-prev\");\n var nextArrow = navigationContainer.find(\">span.k-scrollview-next\");\n\n prevArrow.hide();\n nextArrow.hide();\n\n if (page || page === 0) {\n if (page !== 0) {\n prevArrow.show();\n }\n if (page != this._content.pageCount - 1) {\n nextArrow.show();\n }\n }\n }\n });\n\n ui.plugin(ScrollView);\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}