{"version":3,"file":"pagination2.js","sources":["../../node_modules/paginationjs/dist/pagination.js"],"sourcesContent":["/*\n * pagination.js 2.6.0\n * A jQuery plugin to provide simple yet fully customisable pagination.\n * https://github.com/superRaytin/paginationjs\n *\n * Homepage: http://pagination.js.org\n *\n * Copyright 2014-2100, superRaytin\n * Released under the MIT license.\n */\n\n(function(global, $) {\n\n if (typeof $ === 'undefined') {\n throwError('Pagination requires jQuery.');\n }\n\n var pluginName = 'pagination';\n\n var pluginHookMethod = 'addHook';\n\n var eventPrefix = '__pagination-';\n\n if ($.fn.pagination) {\n throwError('plugin conflicted, the name \"pagination\" has been taken by another jQuery plugin.');\n }\n\n $.fn[pluginName] = function(options) {\n\n if (typeof options === 'undefined') {\n return this;\n }\n\n var container = $(this);\n\n var attributes = $.extend({}, $.fn[pluginName].defaults, options);\n\n var pagination = {\n\n initialize: function() {\n var self = this;\n\n // Cache data for current instance\n if (!container.data('pagination')) {\n container.data('pagination', {});\n }\n\n if (self.callHook('beforeInit') === false) return;\n\n // Pagination has been initialized, destroy it\n if (container.data('pagination').initialized) {\n $('.paginationjs', container).remove();\n }\n\n // Whether to disable Pagination at the initialization\n self.disabled = !!attributes.disabled;\n\n // Model will be passed to the callback function\n var model = self.model = {\n pageRange: attributes.pageRange,\n pageSize: attributes.pageSize\n };\n\n // Parse dataSource to find available paging data\n self.parseDataSource(attributes.dataSource, function(dataSource) {\n\n // Asynchronous mode\n self.isAsync = Helpers.isString(dataSource);\n if (Helpers.isArray(dataSource)) {\n model.totalNumber = attributes.totalNumber = dataSource.length;\n }\n\n // Asynchronous mode and a 'totalNumberLocator' has been specified\n self.isDynamicTotalNumber = self.isAsync && attributes.totalNumberLocator;\n\n var el = self.render(true);\n\n // Add extra className to the pagination element\n if (attributes.className) {\n el.addClass(attributes.className);\n }\n\n model.el = el;\n\n // Append / prepend pagination element to the container\n container[attributes.position === 'bottom' ? 'append' : 'prepend'](el);\n\n // Bind events\n self.observer();\n\n // Mark pagination has been initialized\n container.data('pagination').initialized = true;\n\n // Call hook after initialization\n self.callHook('afterInit', el);\n });\n },\n\n render: function(isBoot) {\n var self = this;\n var model = self.model;\n var el = model.el || $('
');\n var isForced = isBoot !== true;\n\n self.callHook('beforeRender', isForced);\n\n var currentPage = model.pageNumber || attributes.pageNumber;\n var pageRange = attributes.pageRange || 0;\n var totalPage = self.getTotalPage();\n\n var rangeStart = currentPage - pageRange;\n var rangeEnd = currentPage + pageRange;\n\n if (rangeEnd > totalPage) {\n rangeEnd = totalPage;\n rangeStart = totalPage - pageRange * 2;\n rangeStart = rangeStart < 1 ? 1 : rangeStart;\n }\n\n if (rangeStart <= 1) {\n rangeStart = 1;\n rangeEnd = Math.min(pageRange * 2 + 1, totalPage);\n }\n\n el.html(self.generateHTML({\n currentPage: currentPage,\n pageRange: pageRange,\n rangeStart: rangeStart,\n rangeEnd: rangeEnd\n }));\n\n // Whether to hide pagination when there is only one page\n if (attributes.hideOnlyOnePage) {\n el[totalPage <= 1 ? 'hide' : 'show']();\n }\n\n self.callHook('afterRender', isForced);\n\n return el;\n },\n\n getPageLinkTag: function(index) {\n var pageLink = attributes.pageLink;\n return pageLink ? `${index}` : `${index}`;\n },\n\n // Generate HTML for page numbers\n generatePageNumbersHTML: function(args) {\n var self = this;\n var currentPage = args.currentPage;\n var totalPage = self.getTotalPage();\n var getPageLinkTag = self.getPageLinkTag;\n var rangeStart = args.rangeStart;\n var rangeEnd = args.rangeEnd;\n var html = '';\n var i;\n\n var ellipsisText = attributes.ellipsisText;\n\n var classPrefix = attributes.classPrefix;\n var pageClassName = attributes.pageClassName || '';\n var activeClassName = attributes.activeClassName || '';\n var disableClassName = attributes.disableClassName || '';\n\n // Display all page numbers if page range disabled\n if (attributes.pageRange === null) {\n for (i = 1; i <= totalPage; i++) {\n if (i == currentPage) {\n html += `
  • ${i}
  • `;\n } else {\n html += `
  • ${getPageLinkTag(i)}
  • `;\n }\n }\n return html;\n }\n\n if (rangeStart <= 3) {\n for (i = 1; i < rangeStart; i++) {\n if (i == currentPage) {\n html += `
  • ${i}
  • `;\n } else {\n html += `
  • ${getPageLinkTag(i)}
  • `;\n }\n }\n } else {\n if (!attributes.hideFirstOnEllipsisShow) {\n html += `
  • ${getPageLinkTag(1)}
  • `;\n }\n html += `
  • ${ellipsisText}
  • `;\n }\n\n for (i = rangeStart; i <= rangeEnd; i++) {\n if (i == currentPage) {\n html += `
  • ${i}
  • `;\n } else {\n html += `
  • ${getPageLinkTag(i)}
  • `;\n }\n }\n\n if (rangeEnd >= totalPage - 2) {\n for (i = rangeEnd + 1; i <= totalPage; i++) {\n html += `
  • ${getPageLinkTag(i)}
  • `;\n }\n } else {\n html += `
  • ${ellipsisText}
  • `;\n\n if (!attributes.hideLastOnEllipsisShow) {\n html += `
  • ${getPageLinkTag(totalPage)}
  • `;\n }\n }\n\n return html;\n },\n\n // Generate HTML content\n generateHTML: function(args) {\n var self = this;\n var currentPage = args.currentPage;\n var totalPage = self.getTotalPage();\n var getPageLinkTag = self.getPageLinkTag;\n\n var totalNumber = self.getTotalNumber();\n\n var pageSize = attributes.pageSize;\n var showPrevious = attributes.showPrevious;\n var showNext = attributes.showNext;\n var showPageNumbers = attributes.showPageNumbers;\n var showNavigator = attributes.showNavigator;\n var showSizeChanger = attributes.showSizeChanger;\n var sizeChangerOptions = attributes.sizeChangerOptions;\n var showGoInput = attributes.showGoInput;\n var showGoButton = attributes.showGoButton;\n\n var prevText = attributes.prevText;\n var nextText = attributes.nextText;\n var goButtonText = attributes.goButtonText;\n\n var classPrefix = attributes.classPrefix;\n var disableClassName = attributes.disableClassName || '';\n var ulClassName = attributes.ulClassName || '';\n var prevClassName = attributes.prevClassName || '';\n var nextClassName = attributes.nextClassName || '';\n\n var html = '';\n var sizeSelect = `';\n var goButton = ``;\n var formattedString;\n\n var formatSizeChanger = typeof attributes.formatSizeChanger === 'function' ? attributes.formatSizeChanger(currentPage, totalPage, totalNumber) : attributes.formatSizeChanger;\n var formatNavigator = typeof attributes.formatNavigator === 'function' ? attributes.formatNavigator(currentPage, totalPage, totalNumber) : attributes.formatNavigator;\n var formatGoInput = typeof attributes.formatGoInput === 'function' ? attributes.formatGoInput(goInput, currentPage, totalPage, totalNumber) : attributes.formatGoInput;\n var formatGoButton = typeof attributes.formatGoButton === 'function' ? attributes.formatGoButton(goButton, currentPage, totalPage, totalNumber) : attributes.formatGoButton;\n\n var autoHidePrevious = typeof attributes.autoHidePrevious === 'function' ? attributes.autoHidePrevious() : attributes.autoHidePrevious;\n var autoHideNext = typeof attributes.autoHideNext === 'function' ? attributes.autoHideNext() : attributes.autoHideNext;\n\n var header = typeof attributes.header === 'function' ? attributes.header(currentPage, totalPage, totalNumber) : attributes.header;\n var footer = typeof attributes.footer === 'function' ? attributes.footer(currentPage, totalPage, totalNumber) : attributes.footer;\n\n // Prepend extra contents to the pagination buttons\n if (header) {\n formattedString = self.replaceVariables(header, {\n currentPage: currentPage,\n totalPage: totalPage,\n totalNumber: totalNumber\n });\n html += formattedString;\n }\n\n // Whether to display navigator\n if (showNavigator) {\n if (formatNavigator) {\n formattedString = self.replaceVariables(formatNavigator, {\n currentPage: currentPage,\n totalPage: totalPage,\n totalNumber: totalNumber,\n rangeStart: (currentPage - 1) * pageSize + 1,\n rangeEnd: Math.min(currentPage * pageSize, totalNumber)\n });\n html += `
    ${formattedString}
    `;\n }\n }\n\n if (showPrevious || showPageNumbers || showNext) {\n html += '
    ';\n\n if (ulClassName) {\n html += `
    `;\n }\n\n if (showSizeChanger) {\n if (Helpers.isArray(sizeChangerOptions)) {\n if (sizeChangerOptions.indexOf(pageSize) === -1) {\n sizeChangerOptions.unshift(pageSize);\n sizeChangerOptions.sort((a, b) => a - b);\n }\n for (let i = 0; i < sizeChangerOptions.length; i++) {\n sizeSelect += ``;\n }\n sizeSelect += ``;\n formattedString = sizeSelect;\n\n if (formatSizeChanger) {\n formattedString = self.replaceVariables(formatSizeChanger, {\n length: sizeSelect,\n total: totalNumber\n });\n }\n html += `
    ${formattedString}
    `;\n }\n }\n\n // Whether to display Go input\n if (showGoInput) {\n if (formatGoInput) {\n formattedString = self.replaceVariables(formatGoInput, {\n currentPage: currentPage,\n totalPage: totalPage,\n totalNumber: totalNumber,\n input: goInput\n });\n html += `
    ${formattedString}
    `;\n }\n }\n\n // Whether to display Go button\n if (showGoButton) {\n if (formatGoButton) {\n formattedString = self.replaceVariables(formatGoButton, {\n currentPage: currentPage,\n totalPage: totalPage,\n totalNumber: totalNumber,\n button: goButton\n });\n html += `
    ${formattedString}
    `;\n }\n }\n\n // Append extra contents to the pagination buttons\n if (footer) {\n formattedString = self.replaceVariables(footer, {\n currentPage: currentPage,\n totalPage: totalPage,\n totalNumber: totalNumber\n });\n html += formattedString;\n }\n\n return html;\n },\n\n // dataSource is a request URL and a 'totalNumberLocator' function specified\n // execute it to find out 'totalNumber' from the response\n findTotalNumberFromRemoteResponse: function(response) {\n var self = this;\n self.model.totalNumber = attributes.totalNumberLocator(response);\n },\n\n // Go to the specified page\n go: function(number, callback) {\n var self = this;\n var model = self.model;\n\n if (self.disabled) return;\n\n var pageNumber = number;\n pageNumber = parseInt(pageNumber);\n\n if (!pageNumber || pageNumber < 1) return;\n\n var pageSize = attributes.pageSize;\n var totalNumber = self.getTotalNumber();\n var totalPage = self.getTotalPage();\n\n if (totalNumber > 0 && pageNumber > totalPage) return;\n\n // Pick paging data in synchronous mode\n if (!self.isAsync) {\n render(self.getPagingData(pageNumber));\n return;\n }\n\n var postData = {};\n var alias = attributes.alias || {};\n var pageSizeName = alias.pageSize ? alias.pageSize : 'pageSize';\n var pageNumberName = alias.pageNumber ? alias.pageNumber : 'pageNumber';\n postData[pageSizeName] = pageSize;\n postData[pageNumberName] = pageNumber;\n\n var ajaxParams = typeof attributes.ajax === 'function' ? attributes.ajax() : attributes.ajax;\n\n // If the pageNumber's value starts with 0 via Ajax\n if (ajaxParams && ajaxParams.pageNumberStartWithZero) {\n postData[pageNumberName] = pageNumber - 1;\n }\n\n var formatAjaxParams = {\n type: 'get',\n cache: false,\n data: {},\n contentType: 'application/x-www-form-urlencoded; charset=UTF-8',\n dataType: 'json',\n async: true\n };\n\n $.extend(true, formatAjaxParams, ajaxParams);\n $.extend(formatAjaxParams.data, postData);\n\n formatAjaxParams.url = attributes.dataSource;\n formatAjaxParams.success = function(response) {\n try {\n self.model.originalResponse = response;\n if (self.isDynamicTotalNumber) {\n self.findTotalNumberFromRemoteResponse(response);\n } else {\n self.model.totalNumber = attributes.totalNumber;\n }\n\n var finalData = self.filterDataWithLocator(response);\n render(finalData);\n } catch (e) {\n if(typeof attributes.onError === 'function') {\n attributes.onError(e, 'ajaxSuccessHandlerError');\n } else {\n throw e;\n }\n }\n };\n formatAjaxParams.error = function(jqXHR, textStatus, errorThrown) {\n attributes.formatAjaxError && attributes.formatAjaxError(jqXHR, textStatus, errorThrown);\n self.enable();\n };\n\n self.disable();\n\n if (attributes.ajaxFunction) {\n attributes.ajaxFunction(formatAjaxParams);\n } else {\n $.ajax(formatAjaxParams);\n }\n\n function render(data) {\n if (self.callHook('beforePaging', pageNumber) === false) return false;\n\n // Pagination direction\n model.direction = typeof model.pageNumber === 'undefined' ? 0 : (pageNumber > model.pageNumber ? 1 : -1);\n\n model.pageNumber = pageNumber;\n\n self.render();\n\n if (self.disabled && self.isAsync) {\n // enable pagination\n self.enable();\n }\n\n // cache model data\n container.data('pagination').model = model;\n\n // format result data before callback invoked\n if (attributes.formatResult) {\n var cloneData = $.extend(true, [], data);\n if (!Helpers.isArray(data = attributes.formatResult(cloneData))) {\n data = cloneData;\n }\n }\n\n container.data('pagination').currentPageData = data;\n\n self.doCallback(data, callback);\n\n self.callHook('afterPaging', pageNumber);\n\n if (pageNumber == 1) {\n self.callHook('afterIsFirstPage');\n } else if (pageNumber == self.getTotalPage()) {\n self.callHook('afterIsLastPage');\n }\n }\n },\n\n doCallback: function(data, customCallback) {\n var self = this;\n var model = self.model;\n\n if (typeof customCallback === 'function') {\n customCallback(data, model);\n } else if (typeof attributes.callback === 'function') {\n attributes.callback(data, model);\n }\n },\n\n destroy: function() {\n if (this.callHook('beforeDestroy') === false) return;\n\n this.model.el.remove();\n container.off();\n\n // Remove style element\n $('#paginationjs-style').remove();\n\n this.callHook('afterDestroy');\n },\n\n previous: function(callback) {\n this.go(this.model.pageNumber - 1, callback);\n },\n\n next: function(callback) {\n this.go(this.model.pageNumber + 1, callback);\n },\n\n disable: function() {\n var self = this;\n var source = self.isAsync ? 'async' : 'sync';\n\n if (self.callHook('beforeDisable', source) === false) return;\n\n self.disabled = true;\n self.model.disabled = true;\n\n self.callHook('afterDisable', source);\n },\n\n enable: function() {\n var self = this;\n var source = self.isAsync ? 'async' : 'sync';\n\n if (self.callHook('beforeEnable', source) === false) return;\n\n self.disabled = false;\n self.model.disabled = false;\n\n self.callHook('afterEnable', source);\n },\n\n refresh: function(callback) {\n this.go(this.model.pageNumber, callback);\n },\n\n show: function() {\n var self = this;\n\n if (self.model.el.is(':visible')) return;\n\n self.model.el.show();\n },\n\n hide: function() {\n var self = this;\n\n if (!self.model.el.is(':visible')) return;\n\n self.model.el.hide();\n },\n\n // Replace variables for template string\n replaceVariables: function(template, variables) {\n var formattedString;\n\n for (var key in variables) {\n var value = variables[key];\n var regexp = new RegExp('<%=\\\\s*' + key + '\\\\s*%>', 'img');\n\n formattedString = (formattedString || template).replace(regexp, value);\n }\n\n return formattedString;\n },\n\n getPagingData: function(number) {\n var pageSize = attributes.pageSize;\n var dataSource = attributes.dataSource;\n var totalNumber = this.getTotalNumber();\n\n var start = pageSize * (number - 1) + 1;\n var end = Math.min(number * pageSize, totalNumber);\n\n return dataSource.slice(start - 1, end);\n },\n\n getTotalNumber: function() {\n return this.model.totalNumber || attributes.totalNumber || 0;\n },\n\n getTotalPage: function() {\n return Math.ceil(this.getTotalNumber() / attributes.pageSize);\n },\n\n getLocator: function(locator) {\n var result;\n\n if (typeof locator === 'string') {\n result = locator;\n } else if (typeof locator === 'function') {\n result = locator();\n } else {\n throwError('\"locator\" is incorrect. Expect string or function type.');\n }\n\n return result;\n },\n\n // Filter data with \"locator\"\n filterDataWithLocator: function(dataSource) {\n var locator = this.getLocator(attributes.locator);\n var filteredData;\n\n // Datasource is an Object, use \"locator\" to locate available data\n if (Helpers.isObject(dataSource)) {\n try {\n $.each(locator.split('.'), function(index, item) {\n filteredData = (filteredData ? filteredData : dataSource)[item];\n });\n }\n catch (e) {\n // ignore\n }\n\n if (!filteredData) {\n throwError('dataSource.' + locator + ' is undefined.');\n } else if (!Helpers.isArray(filteredData)) {\n throwError('dataSource.' + locator + ' should be an Array.');\n }\n }\n\n return filteredData || dataSource;\n },\n\n parseDataSource: function(dataSource, callback) {\n var self = this;\n\n if (Helpers.isObject(dataSource)) {\n callback(attributes.dataSource = self.filterDataWithLocator(dataSource));\n } else if (Helpers.isArray(dataSource)) {\n callback(attributes.dataSource = dataSource);\n } else if (typeof dataSource === 'function') {\n attributes.dataSource(function(data) {\n if (!Helpers.isArray(data)) {\n throwError('The parameter of \"done\" Function should be an Array.');\n }\n self.parseDataSource.call(self, data, callback);\n });\n } else if (typeof dataSource === 'string') {\n if (/^https?|file:/.test(dataSource)) {\n attributes.ajaxDataType = 'jsonp';\n }\n callback(dataSource);\n } else {\n throwError('Unexpected dataSource type');\n }\n },\n\n callHook: function(hook) {\n var paginationData = container.data('pagination') || {};\n var result;\n\n var args = Array.prototype.slice.apply(arguments);\n args.shift();\n\n if (attributes[hook] && typeof attributes[hook] === 'function') {\n if (attributes[hook].apply(global, args) === false) {\n result = false;\n }\n }\n\n if (paginationData.hooks && paginationData.hooks[hook]) {\n $.each(paginationData.hooks[hook], function(index, item) {\n if (item.apply(global, args) === false) {\n result = false;\n }\n });\n }\n\n return result !== false;\n },\n\n observer: function() {\n var self = this;\n var el = self.model.el;\n\n // Go to specified page number\n container.on(eventPrefix + 'go', function(event, pageNumber, done) {\n if (typeof pageNumber === 'string') {\n pageNumber = parseInt(pageNumber.trim());\n }\n\n if (!pageNumber) return;\n\n if (typeof pageNumber !== 'number') {\n throwError('\"pageNumber\" is incorrect. (Number)');\n }\n\n self.go(pageNumber, done);\n });\n\n // Page number button click listener\n el.on('click', '.J-paginationjs-page', function(event) {\n var current = $(event.currentTarget);\n var pageNumber = current.attr('data-num').trim();\n\n if (!pageNumber || current.hasClass(attributes.disableClassName) || current.hasClass(attributes.activeClassName)) return;\n\n if (self.callHook('beforePageOnClick', event, pageNumber) === false) return false;\n\n self.go(pageNumber);\n\n self.callHook('afterPageOnClick', event, pageNumber);\n\n if (!attributes.pageLink) return false;\n });\n\n // Previous button click listener\n el.on('click', '.J-paginationjs-previous', function(event) {\n var current = $(event.currentTarget);\n var pageNumber = current.attr('data-num').trim();\n\n if (!pageNumber || current.hasClass(attributes.disableClassName)) return;\n\n if (self.callHook('beforePreviousOnClick', event, pageNumber) === false) return false;\n\n self.go(pageNumber);\n\n self.callHook('afterPreviousOnClick', event, pageNumber);\n\n if (!attributes.pageLink) return false;\n });\n\n // Next button click listener\n el.on('click', '.J-paginationjs-next', function(event) {\n var current = $(event.currentTarget);\n var pageNumber = current.attr('data-num').trim();\n\n if (!pageNumber || current.hasClass(attributes.disableClassName)) return;\n\n if (self.callHook('beforeNextOnClick', event, pageNumber) === false) return false;\n\n self.go(pageNumber);\n\n self.callHook('afterNextOnClick', event, pageNumber);\n\n if (!attributes.pageLink) return false;\n });\n\n // Go button click listener\n el.on('click', '.J-paginationjs-go-button', function(event) {\n var pageNumber = $('.J-paginationjs-go-pagenumber', el).val();\n\n if (self.callHook('beforeGoButtonOnClick', event, pageNumber) === false) return false;\n\n container.trigger(eventPrefix + 'go', pageNumber);\n\n self.callHook('afterGoButtonOnClick', event, pageNumber);\n });\n\n // go input enter keyup listener\n el.on('keyup', '.J-paginationjs-go-pagenumber', function(event) {\n if (event.which === 13) {\n var pageNumber = $(event.currentTarget).val();\n\n if (self.callHook('beforeGoInputOnEnter', event, pageNumber) === false) return false;\n\n container.trigger(eventPrefix + 'go', pageNumber);\n\n // Maintain the cursor\n $('.J-paginationjs-go-pagenumber', el).focus();\n\n self.callHook('afterGoInputOnEnter', event, pageNumber);\n }\n });\n\n el.on('change', '.J-paginationjs-size-select', function(event) {\n var current = $(event.currentTarget);\n var size = parseInt(current.val());\n var currentPage = self.model.pageNumber || attributes.pageNumber;\n\n if (typeof size !== 'number') return;\n\n if (self.callHook('beforeSizeSelectorChange', event, size) === false) return false;\n\n attributes.pageSize = size;\n self.model.pageSize = size;\n self.model.totalPage = self.getTotalPage();\n if (currentPage > self.model.totalPage) {\n currentPage = self.model.totalPage;\n }\n self.go(currentPage);\n\n self.callHook('afterSizeSelectorChange', event, size);\n\n if (!attributes.pageLink) return false;\n });\n\n // Previous page\n container.on(eventPrefix + 'previous', function(event, done) {\n self.previous(done);\n });\n\n // Next page\n container.on(eventPrefix + 'next', function(event, done) {\n self.next(done);\n });\n\n // Disable\n container.on(eventPrefix + 'disable', function() {\n self.disable();\n });\n\n // Enable\n container.on(eventPrefix + 'enable', function() {\n self.enable();\n });\n\n // Refresh\n container.on(eventPrefix + 'refresh', function(event, done) {\n self.refresh(done);\n });\n\n // Show\n container.on(eventPrefix + 'show', function() {\n self.show();\n });\n\n // Hide\n container.on(eventPrefix + 'hide', function() {\n self.hide();\n });\n\n // Destroy\n container.on(eventPrefix + 'destroy', function() {\n self.destroy();\n });\n\n // Whether to load the default page\n var validTotalPage = Math.max(self.getTotalPage(), 1)\n var defaultPageNumber = attributes.pageNumber;\n \n // Default pageNumber should be 1 when totalNumber is dynamic\n if (self.isDynamicTotalNumber) {\n if (attributes.resetPageNumberOnInit) defaultPageNumber = 1;\n }\n\n if (attributes.triggerPagingOnInit) {\n container.trigger(eventPrefix + 'go', Math.min(defaultPageNumber, validTotalPage));\n }\n }\n };\n\n // Pagination has been initialized\n if (container.data('pagination') && container.data('pagination').initialized === true) {\n // Handle events\n if (isNumeric(options)) {\n // eg: container.pagination(5)\n container.trigger.call(this, eventPrefix + 'go', options, arguments[1]);\n return this;\n } else if (typeof options === 'string') {\n var args = Array.prototype.slice.apply(arguments);\n args[0] = eventPrefix + args[0];\n\n switch (options) {\n case 'previous':\n case 'next':\n case 'go':\n case 'disable':\n case 'enable':\n case 'refresh':\n case 'show':\n case 'hide':\n case 'destroy':\n container.trigger.apply(this, args);\n break;\n case 'getSelectedPageNum':\n case 'getCurrentPageNum':\n if (container.data('pagination').model) {\n return container.data('pagination').model.pageNumber;\n } else {\n return container.data('pagination').attributes.pageNumber;\n }\n case 'getTotalPage':\n return Math.ceil(container.data('pagination').model.totalNumber / container.data('pagination').model.pageSize);\n case 'getSelectedPageData':\n case 'getCurrentPageData':\n return container.data('pagination').currentPageData;\n // Whether pagination has been disabled\n case 'isDisabled':\n return container.data('pagination').model.disabled === true;\n default:\n throwError('Unknown action: ' + options);\n }\n return this;\n } else {\n // Uninstall the old instance before initializing a new one\n uninstallPlugin(container);\n }\n } else {\n if (!Helpers.isObject(options)) throwError('Illegal options');\n }\n\n // Check parameters\n parameterChecker(attributes);\n\n pagination.initialize();\n\n return this;\n };\n\n // Instance defaults\n $.fn[pluginName].defaults = {\n\n // Data source\n // Array | String | Function | Object\n //dataSource: '',\n\n // String | Function\n //locator: 'data',\n\n // Function\n //totalNumberLocator: function() {},\n\n // Total number of data items\n totalNumber: 0,\n\n // Default page number\n pageNumber: 1,\n\n // Number of data items per page\n pageSize: 10,\n\n // Page range (pages around current page)\n pageRange: 2,\n\n // Whether to display the 'Previous' button\n showPrevious: true,\n\n // Whether to display the 'Next' button\n showNext: true,\n\n // Whether to display the page buttons\n showPageNumbers: true,\n\n showNavigator: false,\n\n // Whether to display the 'Go' input\n showGoInput: false,\n\n // Whether to display the 'Go' button\n showGoButton: false,\n\n showSizeChanger: false,\n\n sizeChangerOptions: [10, 20, 50, 100],\n\n // Page link\n pageLink: '',\n\n // 'Previous' text\n prevText: '‹',\n\n // 'Next' text\n nextText: '›',\n\n // Ellipsis text\n ellipsisText: '...',\n\n // 'Go' button text\n goButtonText: 'Go',\n\n // Additional class name(s) for the Pagination container\n //className: '',\n\n classPrefix: 'paginationjs',\n\n activeClassName: 'active',\n\n // class name when disabled\n disableClassName: 'disabled',\n\n //ulClassName: '',\n\n //pageClassName: '',\n\n //prevClassName: '',\n\n //nextClassName: '',\n\n formatNavigator: 'Total <%= totalNumber %> items',\n\n formatGoInput: '<%= input %>',\n\n formatGoButton: '<%= button %>',\n\n // position in the container\n position: 'bottom',\n\n // Auto hide previous button when current page is the first\n autoHidePrevious: false,\n\n // Auto hide next button when current page is the last\n autoHideNext: false,\n\n //header: '',\n\n //footer: '',\n\n //alias: {},\n\n // Whether to trigger pagination at initialization\n triggerPagingOnInit: true,\n\n // Whether to reset page number at initialization, it works only if dataSource is a URL and totalNumberLocator is specified\n resetPageNumberOnInit: true,\n\n // Whether to hide pagination when less than one page\n hideOnlyOnePage: false,\n\n hideFirstOnEllipsisShow: false,\n\n hideLastOnEllipsisShow: false,\n\n // Customize item's innerHTML\n callback: function() {}\n };\n\n // Hook register\n $.fn[pluginHookMethod] = function(hook, callback) {\n if (arguments.length < 2) {\n throwError('Expect 2 arguments at least.');\n }\n\n if (typeof callback !== 'function') {\n throwError('callback should be a function.');\n }\n\n var container = $(this);\n var paginationData = container.data('pagination');\n\n if (!paginationData) {\n container.data('pagination', {});\n paginationData = container.data('pagination');\n }\n\n !paginationData.hooks && (paginationData.hooks = {});\n\n //paginationData.hooks[hook] = callback;\n paginationData.hooks[hook] = paginationData.hooks[hook] || [];\n paginationData.hooks[hook].push(callback);\n\n };\n\n // Static method\n $[pluginName] = function(selector, options) {\n if (arguments.length < 2) {\n throwError('Requires two parameters.');\n }\n\n var container;\n\n // 'selector' is a jQuery object\n if (typeof selector !== 'string' && selector instanceof jQuery) {\n container = selector;\n } else {\n container = $(selector);\n }\n\n if (!container.length) return;\n\n container.pagination(options);\n\n return container;\n };\n\n // ============================================================\n // helpers\n // ============================================================\n\n var Helpers = {};\n\n // Throw error\n function throwError(content) {\n throw new Error('Pagination: ' + content);\n }\n\n // Check parameters\n function parameterChecker(args) {\n if (!args.dataSource) {\n throwError('\"dataSource\" is required.');\n }\n\n if (typeof args.dataSource === 'string') {\n if (args.totalNumberLocator === undefined) {\n if (args.totalNumber === undefined) {\n throwError('\"totalNumber\" is required.');\n } else if (!isNumeric(args.totalNumber)) {\n throwError('\"totalNumber\" is incorrect. Expect numberic type');\n }\n } else {\n if (typeof args.totalNumberLocator !== 'function') {\n throwError('\"totalNumberLocator\" should be a Function.');\n }\n }\n } else if (Helpers.isObject(args.dataSource)) {\n if (typeof args.locator === 'undefined') {\n throwError('\"dataSource\" is an Object, please specify a \"locator\".');\n } else if (typeof args.locator !== 'string' && typeof args.locator !== 'function') {\n throwError('' + args.locator + ' is incorrect. Expect string or function type');\n }\n }\n\n if (args.formatResult !== undefined && typeof args.formatResult !== 'function') {\n throwError('\"formatResult\" should be a Function.');\n }\n\n if (args.onError !== undefined && typeof args.onError !== 'function') {\n throwError('\"onError\" should be a Function.');\n }\n }\n\n // uninstall plugin\n function uninstallPlugin(target) {\n var events = ['go', 'previous', 'next', 'disable', 'enable', 'refresh', 'show', 'hide', 'destroy'];\n\n // off all events\n $.each(events, function(index, value) {\n target.off(eventPrefix + value);\n });\n\n // reset pagination data\n target.data('pagination', {});\n\n // remove pagination element\n $('.paginationjs', target).remove();\n }\n\n // Object type detection\n function getObjectType(object, tmp) {\n return ( (tmp = typeof(object)) == \"object\" ? object == null && \"null\" || Object.prototype.toString.call(object).slice(8, -1) : tmp ).toLowerCase();\n }\n\n function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n $.each(['Object', 'Array', 'String'], function(index, name) {\n Helpers['is' + name] = function(object) {\n return getObjectType(object) === name.toLowerCase();\n };\n });\n\n /*\n * export via AMD or CommonJS\n * */\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return $;\n });\n }\n\n})(this, window.jQuery);\n"],"names":["$","args","jQuery","this","window.jQuery"],"mappings":"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","x_google_ignoreList":[0]}