{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/scroll-js/dist/scroll.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/paginationjs/dist/pagination.js"],"names":["scrollTo","el","options","thisArg","this","_arguments","generator","Element","Window","Error","sanitizeScrollOptions","scroll","from","to","prop","startTime","duration","easeFunc","callback","window","requestAnimationFrame","currentTime","Date","now","time","Math","min","value","document","utils","getDocument","body","documentElement","scrollTop","setScrollPosition","currentScrollPosition","getScrollPosition","scrollProperty","props","y","x","element","getScrollPropertyByElement","Promise","resolve","top","getEasing","easing","P","reject","fulfilled","step","next","e","rejected","result","done","then","apply","scrollIntoView","scroller","undefined","errorMsg","HTMLElement","validateElement","currentContainerScrollYPos","elementScrollYPos","offsetTop","pageYOffset","getBoundingClientRect","left","behavior","__webpack_require__","d","__webpack_exports__","easingMap","linear","t","ease-in","ease-out","ease-in-out","Object","keys","join","jQuery","__WEBPACK_AMD_DEFINE_RESULT__","global","$","throwError","eventPrefix","fn","pagination","target","container","attributes","extend","defaults","initialize","self","data","callHook","initialized","remove","disabled","model","pageRange","pageSize","parseDataSource","dataSource","isAsync","Helpers","isString","isArray","totalNumber","length","isDynamicTotalNumber","totalNumberLocator","render","className","addClass","position","observer","isBoot","isForced","currentPage","pageNumber","totalPage","getTotalPage","rangeStart","rangeEnd","html","generateHTML","hideOnlyOnePage","getPageLinkTag","index","pageLink","generatePageNumbersHTML","args","i","ellipsisText","classPrefix","pageClassName","activeClassName","disableClassName","hideFirstOnEllipsisShow","hideLastOnEllipsisShow","formattedString","getTotalNumber","showPrevious","showNext","showPageNumbers","showNavigator","showSizeChanger","sizeChangerOptions","showGoInput","showGoButton","prevText","nextText","goButtonText","ulClassName","prevClassName","nextClassName","sizeSelect","goInput","goButton","formatSizeChanger","formatNavigator","formatGoInput","formatGoButton","autoHidePrevious","autoHideNext","header","footer","replaceVariables","indexOf","unshift","sort","a","b","total","input","button","findTotalNumberFromRemoteResponse","response","go","number","parseInt","postData","alias","pageSizeName","pageNumberName","ajaxParams","ajax","pageNumberStartWithZero","formatAjaxParams","type","cache","contentType","dataType","async","url","success","originalResponse","filterDataWithLocator","onError","error","jqXHR","textStatus","errorThrown","formatAjaxError","enable","disable","ajaxFunction","getPagingData","direction","formatResult","cloneData","currentPageData","doCallback","customCallback","destroy","off","previous","source","refresh","show","is","hide","template","variables","key","regexp","RegExp","replace","start","end","slice","ceil","getLocator","locator","filteredData","isObject","each","split","item","call","test","ajaxDataType","hook","paginationData","Array","prototype","arguments","shift","hooks","on","event","trim","current","currentTarget","attr","hasClass","val","trigger","which","focus","size","validTotalPage","max","defaultPageNumber","resetPageNumberOnInit","triggerPagingOnInit","isNumeric","parameterChecker","push","selector","content","n","isNaN","parseFloat","isFinite","name","object","tmp","toString","toLowerCase","getObjectType","exports","module"],"mappings":"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","file":"vendors~block-2~page-18.2f662a3aa586e55a56ca.js","sourcesContent":["/*!\n * Scroll-js v2.3.2\n * https://github.com/mkay581/scroll-js\n *\n * Copyright (c) 2019 Mark Kennedy\n * Licensed under the MIT license\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction scrollTo(el, options = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!(el instanceof Element) && !(el instanceof Window)) {\r\n throw new Error(`element passed to scrollTo() must be either the window or a DOM element, you passed ${el}!`);\r\n }\r\n options = sanitizeScrollOptions(options);\r\n const scroll = (from, to, prop, startTime, duration = 300, easeFunc, callback) => {\r\n window.requestAnimationFrame(() => {\r\n const currentTime = Date.now();\r\n const time = Math.min(1, (currentTime - startTime) / duration);\r\n if (from === to) {\r\n return callback ? callback() : null;\r\n }\r\n setScrollPosition(el, easeFunc(time) * (to - from) + from);\r\n /* prevent scrolling, if already there, or at end */\r\n if (time < 1) {\r\n scroll(from, to, prop, startTime, duration, easeFunc, callback);\r\n }\r\n else if (callback) {\r\n callback();\r\n }\r\n });\r\n };\r\n const currentScrollPosition = getScrollPosition(el);\r\n const scrollProperty = getScrollPropertyByElement(el);\r\n return new Promise(resolve => {\r\n scroll(currentScrollPosition, typeof options.top === 'number'\r\n ? options.top\r\n : currentScrollPosition, scrollProperty, Date.now(), options.duration, getEasing(options.easing), resolve);\r\n });\r\n });\r\n}\r\nfunction scrollIntoView(element, scroller, options) {\r\n validateElement(element);\r\n if (scroller && !(scroller instanceof Element)) {\r\n options = scroller;\r\n scroller = undefined;\r\n }\r\n const { duration, easing } = sanitizeScrollOptions(options);\r\n scroller = scroller || utils.getDocument().body;\r\n let currentContainerScrollYPos = 0;\r\n let elementScrollYPos = element ? element.offsetTop : 0;\r\n const document = utils.getDocument();\r\n // if the container is the document body or document itself, we'll\r\n // need a different set of coordinates for accuracy\r\n if (scroller === document.body || scroller === document.documentElement) {\r\n // using pageYOffset for cross-browser compatibility\r\n currentContainerScrollYPos = window.pageYOffset;\r\n // must add containers scroll y position to ensure an absolute value that does not change\r\n elementScrollYPos =\r\n element.getBoundingClientRect().top + currentContainerScrollYPos;\r\n }\r\n return scrollTo(scroller, {\r\n top: elementScrollYPos,\r\n left: 0,\r\n duration,\r\n easing\r\n });\r\n}\r\nfunction validateElement(element) {\r\n if (element === undefined) {\r\n const errorMsg = 'The element passed to scrollIntoView() was undefined.';\r\n throw new Error(errorMsg);\r\n }\r\n if (!(element instanceof HTMLElement)) {\r\n throw new Error(`The element passed to scrollIntoView() must be a valid element. You passed ${element}.`);\r\n }\r\n}\r\nfunction getScrollPropertyByElement(el) {\r\n const props = {\r\n window: {\r\n y: 'scrollY',\r\n x: 'scrollX'\r\n },\r\n element: {\r\n y: 'scrollTop',\r\n x: 'scrollLeft'\r\n }\r\n };\r\n const axis = 'y';\r\n if (el instanceof Window) {\r\n return props.window[axis];\r\n }\r\n else {\r\n return props.element[axis];\r\n }\r\n}\r\nfunction sanitizeScrollOptions(options = {}) {\r\n if (options.behavior === 'smooth') {\r\n options.easing = 'ease-in-out';\r\n options.duration = 300;\r\n }\r\n if (options.behavior === 'auto') {\r\n options.duration = 0;\r\n options.easing = 'linear';\r\n }\r\n return options;\r\n}\r\nfunction getScrollPosition(el) {\r\n const document = utils.getDocument();\r\n if (el === document.body ||\r\n el === document.documentElement ||\r\n el instanceof Window) {\r\n return document.body.scrollTop || document.documentElement.scrollTop;\r\n }\r\n else {\r\n return el.scrollTop;\r\n }\r\n}\r\nfunction setScrollPosition(el, value) {\r\n const document = utils.getDocument();\r\n if (el === document.body ||\r\n el === document.documentElement ||\r\n el instanceof Window) {\r\n document.body.scrollTop = value;\r\n document.documentElement.scrollTop = value;\r\n }\r\n else {\r\n el.scrollTop = value;\r\n }\r\n}\r\nconst utils = {\r\n // we're really just exporting this so that tests can mock the document.documentElement\r\n getDocument() {\r\n return document;\r\n }\r\n};\r\nconst easingMap = {\r\n linear(t) {\r\n return t;\r\n },\r\n 'ease-in'(t) {\r\n return t * t;\r\n },\r\n 'ease-out'(t) {\r\n return t * (2 - t);\r\n },\r\n 'ease-in-out'(t) {\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n }\r\n};\r\nconst getEasing = (easing) => {\r\n const defaultEasing = 'linear';\r\n const easeFunc = easingMap[easing || defaultEasing];\r\n if (!easeFunc) {\r\n const options = Object.keys(easingMap).join(',');\r\n throw new Error(`Scroll error: scroller does not support an easing option of \"${easing}\". Supported options are ${options}`);\r\n }\r\n return easeFunc;\r\n};\n\nexport { easingMap, scrollIntoView, scrollTo, utils };\n","/*\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"],"sourceRoot":""}