{"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.d7818a52e4dc7554a6bb.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 || $('<div class=\"paginationjs\"></div>');\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 ? `<a href=\"${pageLink}\">${index}</a>` : `<a>${index}</a>`;\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 += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName} ${activeClassName}\" data-num=\"${i}\"><a>${i}</a></li>`;\n            } else {\n              html += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName}\" data-num=\"${i}\">${getPageLinkTag(i)}</li>`;\n            }\n          }\n          return html;\n        }\n\n        if (rangeStart <= 3) {\n          for (i = 1; i < rangeStart; i++) {\n            if (i == currentPage) {\n              html += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName} ${activeClassName}\" data-num=\"${i}\"><a>${i}</a></li>`;\n            } else {\n              html += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName}\" data-num=\"${i}\">${getPageLinkTag(i)}</li>`;\n            }\n          }\n        } else {\n          if (!attributes.hideFirstOnEllipsisShow) {\n            html += `<li class=\"${classPrefix}-page ${classPrefix}-first J-paginationjs-page ${pageClassName}\" data-num=\"1\">${getPageLinkTag(1)}</li>`;\n          }\n          html += `<li class=\"${classPrefix}-ellipsis ${disableClassName}\"><a>${ellipsisText}</a></li>`;\n        }\n\n        for (i = rangeStart; i <= rangeEnd; i++) {\n          if (i == currentPage) {\n            html += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName} ${activeClassName}\" data-num=\"${i}\"><a>${i}</a></li>`;\n          } else {\n            html += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName}\" data-num=\"${i}\">${getPageLinkTag(i)}</li>`;\n          }\n        }\n\n        if (rangeEnd >= totalPage - 2) {\n          for (i = rangeEnd + 1; i <= totalPage; i++) {\n            html += `<li class=\"${classPrefix}-page J-paginationjs-page ${pageClassName}\" data-num=\"${i}\">${getPageLinkTag(i)}</li>`;\n          }\n        } else {\n          html += `<li class=\"${classPrefix}-ellipsis ${disableClassName}\"><a>${ellipsisText}</a></li>`;\n\n          if (!attributes.hideLastOnEllipsisShow) {\n            html += `<li class=\"${classPrefix}-page ${classPrefix}-last J-paginationjs-page ${pageClassName}\" data-num=\"${totalPage}\">${getPageLinkTag(totalPage)}</li>`;\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 = `<select class=\"J-paginationjs-size-select\">`;\n        var goInput = '<input type=\"text\" class=\"J-paginationjs-go-pagenumber\">';\n        var goButton = `<input type=\"button\" class=\"J-paginationjs-go-button\" value=\"${goButtonText}\">`;\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 += `<div class=\"${classPrefix}-nav J-paginationjs-nav\">${formattedString}</div>`;\n          }\n        }\n\n        if (showPrevious || showPageNumbers || showNext) {\n          html += '<div class=\"paginationjs-pages\">';\n\n          if (ulClassName) {\n            html += `<ul class=\"${ulClassName}\">`;\n          } else {\n            html += '<ul>';\n          }\n\n          // Whether to display Previous button\n          if (showPrevious) {\n            if (currentPage <= 1) {\n              if (!autoHidePrevious) {\n                html += `<li class=\"${classPrefix}-prev ${disableClassName} ${prevClassName}\"><a>${prevText}</a></li>`;\n              }\n            } else {\n              html += `<li class=\"${classPrefix}-prev J-paginationjs-previous ${prevClassName}\" data-num=\"${currentPage - 1}\" title=\"Previous page\">${getPageLinkTag(prevText)}</li>`;\n            }\n          }\n\n          // Whether to display page numbers\n          if (showPageNumbers) {\n            html += self.generatePageNumbersHTML(args);\n          }\n\n          // Whether to display Next button\n          if (showNext) {\n            if (currentPage >= totalPage) {\n              if (!autoHideNext) {\n                html += `<li class=\"${classPrefix}-next ${disableClassName} ${nextClassName}\"><a>${nextText}</a></li>`;\n              }\n            } else {\n              html += `<li class=\"${classPrefix}-next J-paginationjs-next ${nextClassName}\" data-num=\"${currentPage + 1}\" title=\"Next page\">${getPageLinkTag(nextText)}</li>`;\n            }\n          }\n          html += `</ul></div>`;\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 += `<option value=\"${sizeChangerOptions[i]}\"${(sizeChangerOptions[i] === pageSize ? ' selected' : '')}>${sizeChangerOptions[i]} / page</option>`;\n            }\n            sizeSelect += `</select>`;\n            formattedString = sizeSelect;\n\n            if (formatSizeChanger) {\n              formattedString = self.replaceVariables(formatSizeChanger, {\n                length: sizeSelect,\n                total: totalNumber\n              });\n            }\n            html += `<div class=\"paginationjs-size-changer\">${formattedString}</div>`;\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 += `<div class=\"${classPrefix}-go-input\">${formattedString}</div>`;\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 += `<div class=\"${classPrefix}-go-button\">${formattedString}</div>`;\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: '&lsaquo;',\n\n    // 'Next' text\n    nextText: '&rsaquo;',\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":""}