import e,{Component as t}from"react";import{classNames as n,ObjectUtils as r}from"primereact/utils";import{Ripple as o}from"primereact/ripple";import{Dropdown as a}from"primereact/dropdown";import{InputNumber as s}from"primereact/inputnumber";function i(e){if(Array.isArray(e))return e}function p(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],s=!0,i=!1;try{for(n=n.call(e);!(s=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==n.return||n.return()}finally{if(i)throw o}}return a}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0}},{key:"render",value:function(){var t=this.hasOptions(),n=t?this.props.options.map((function(e){return{label:String(e),value:e}})):[],o=t?e.createElement(a,{value:this.props.value,options:n,onChange:this.props.onChange,appendTo:this.props.appendTo,disabled:this.props.disabled}):null;return this.props.template?r.getJSXElement(this.props.template,{value:this.props.value,options:n,onChange:this.props.onChange,appendTo:this.props.appendTo,currentPage:this.props.page,totalPages:this.props.pageCount,totalRecords:this.props.totalRecords,disabled:this.props.disabled,element:o,props:this.props}):o}}]),p}();function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function J(e){for(var t=1;t0?this.props.page+1:0,n=e.createElement(s,{value:t,onChange:this.onChange,className:"p-paginator-page-input",disabled:this.props.disabled});return this.props.template?r.getJSXElement(this.props.template,{value:t,onChange:this.onChange,disabled:this.props.disabled,className:"p-paginator-page-input",element:n,props:this.props}):n}}]),p}();function _(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}k(A,"defaultProps",{page:null,rows:null,pageCount:null,disabled:!1,template:null,onChange:null});var I=function(o){v(g,t);var a,s,l=(a=g,s=_(),function(){var e,t=b(a);if(s){var n=b(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return P(this,e)});function g(e){var t;return f(this,g),(t=l.call(this,e)).changePageToFirst=t.changePageToFirst.bind(m(t)),t.changePageToPrev=t.changePageToPrev.bind(m(t)),t.changePageToNext=t.changePageToNext.bind(m(t)),t.changePageToLast=t.changePageToLast.bind(m(t)),t.onRowsChange=t.onRowsChange.bind(m(t)),t.changePage=t.changePage.bind(m(t)),t.onPageLinkClick=t.onPageLinkClick.bind(m(t)),t}return d(g,[{key:"isFirstPage",value:function(){return 0===this.getPage()}},{key:"isLastPage",value:function(){return this.getPage()===this.getPageCount()-1}},{key:"getPageCount",value:function(){return Math.ceil(this.props.totalRecords/this.props.rows)}},{key:"calculatePageLinkBoundaries",value:function(){var e=this.getPageCount(),t=Math.min(this.props.pageLinkSize,e),n=Math.max(0,Math.ceil(this.getPage()-t/2)),r=Math.min(e-1,n+t-1);return[n=Math.max(0,n-(this.props.pageLinkSize-(r-n+1))),r]}},{key:"updatePageLinks",value:function(){for(var e=[],t=this.calculatePageLinkBoundaries(),n=t[1],r=t[0];r<=n;r++)e.push(r+1);return e}},{key:"changePage",value:function(e,t){var n=this.getPageCount(),r=Math.floor(e/t);r>=0&&r0&&e.totalRecords!==this.props.totalRecords&&this.props.first>=this.props.totalRecords&&this.changePage((this.getPageCount()-1)*this.props.rows,this.props.rows):this.changePage(0,this.props.rows),this.isRowChanged=!1}},{key:"renderElement",value:function(t,n){var r;switch(t){case"FirstPageLink":r=e.createElement(w,{key:t,onClick:this.changePageToFirst,disabled:this.isFirstPage()||this.empty(),template:n});break;case"PrevPageLink":r=e.createElement(N,{key:t,onClick:this.changePageToPrev,disabled:this.isFirstPage()||this.empty(),template:n});break;case"NextPageLink":r=e.createElement(E,{key:t,onClick:this.changePageToNext,disabled:this.isLastPage()||this.empty(),template:n});break;case"LastPageLink":r=e.createElement(L,{key:t,onClick:this.changePageToLast,disabled:this.isLastPage()||this.empty(),template:n});break;case"PageLinks":r=e.createElement(j,{key:t,value:this.updatePageLinks(),page:this.getPage(),rows:this.props.rows,pageCount:this.getPageCount(),onClick:this.onPageLinkClick,template:n});break;case"RowsPerPageDropdown":r=e.createElement(B,{key:t,value:this.props.rows,page:this.getPage(),pageCount:this.getPageCount(),totalRecords:this.props.totalRecords,options:this.props.rowsPerPageOptions,onChange:this.onRowsChange,appendTo:this.props.dropdownAppendTo,template:n,disabled:this.empty()});break;case"CurrentPageReport":r=e.createElement(F,{reportTemplate:this.props.currentPageReportTemplate,key:t,page:this.getPage(),pageCount:this.getPageCount(),first:this.props.first,rows:this.props.rows,totalRecords:this.props.totalRecords,template:n});break;case"JumpToPageInput":r=e.createElement(A,{key:t,rows:this.props.rows,page:this.getPage(),pageCount:this.getPageCount(),onChange:this.changePage,disabled:this.empty(),template:n});break;default:r=null}return r}},{key:"renderElements",value:function(){var e=this,t=this.props.template;return t?"object"===h(t)?t.layout?t.layout.split(" ").map((function(n){var r=n.trim();return e.renderElement(r,t[r])})):Object.entries(t).map((function(t){var n,r,o=(r=2,i(n=t)||p(n,r)||c(n,r)||u());return e.renderElement(o[0],o[1])})):t.split(" ").map((function(t){return e.renderElement(t.trim())})):null}},{key:"render",value:function(){if(this.props.alwaysShow||1!==this.getPageCount()){var t=n("p-paginator p-component",this.props.className),o=r.getJSXElement(this.props.leftContent,this.props),a=r.getJSXElement(this.props.rightContent,this.props),s=this.renderElements();return e.createElement("div",{className:t,style:this.props.style},o&&e.createElement("div",{className:"p-paginator-left-content"},o),s,a&&e.createElement("div",{className:"p-paginator-right-content"},a))}return null}}]),g}();k(I,"defaultProps",{totalRecords:0,rows:0,first:0,pageLinkSize:5,rowsPerPageOptions:null,alwaysShow:!0,style:null,className:null,template:"FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown",onPageChange:null,leftContent:null,rightContent:null,dropdownAppendTo:null,currentPageReportTemplate:"({currentPage} of {totalPages})"});export{I as Paginator};