{"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","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","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","pager","inner","first","transitionEnd","_transitionEnd","dragStart","_dragStart","dragEnd","_dragEnd","change","_defaultPrevented","_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 = ({ index }) => `Item ${index + 1}`;\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 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 = (data) => 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 = (data) => 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 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 === \"dark\") {\n element.addClass(className(\"scrollview-dark\"));\n } else if (this.options.pagerOverlay === \"light\") {\n element.addClass(className(\"scrollview-light\"));\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\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: ({ index, total }) => `Item ${index} of ${total}`,\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: \"none\",\n navigatable: false,\n autoBind: true,\n pageable: false,\n template: () => \"\",\n emptyTemplate: () => \"\",\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"]}