import e,{Component as t}from"react";import{ObjectUtils as r,classNames as n}from"primereact/utils";import{localeOption as o}from"primereact/api";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;r=this.value.length);e++)this.dataToRender.push(this.value[e]);0!==this.value.length&&(this.first=this.first+this.props.rows),this.setState({dataToRender:this.dataToRender})}}},{key:"reset",value:function(){this.first=0,this.dataToRender=[],this.setState({dataToRender:this.dataToRender}),this.load()}},{key:"isEmpty",value:function(){return!this.dataToRender||0===this.dataToRender.length}},{key:"createLazyLoadMetadata",value:function(){return{first:this.first,rows:this.props.rows}}},{key:"bindScrollListener",value:function(){var e=this;this.props.inline?(this.scrollFunction=function(){e.contentElement.scrollTop>=e.contentElement.scrollHeight*e.props.buffer-e.contentElement.clientHeight&&e.load()},this.contentElement.addEventListener("scroll",this.scrollFunction)):(this.scrollFunction=function(){var t=document.body,r=document.documentElement,n=window.pageYOffset||document.documentElement.scrollTop,o=r.clientHeight;n>=Math.max(t.scrollHeight,t.offsetHeight,o,r.scrollHeight,r.offsetHeight)*e.props.buffer-o&&e.load()},window.addEventListener("scroll",this.scrollFunction))}},{key:"unbindScrollListener",value:function(){this.scrollFunction&&(this.props.inline?(this.contentElement.removeEventListener("scroll",this.scrollFunction),this.contentElement=null):this.props.loader||window.removeEventListener("scroll",this.scrollFunction)),this.scrollFunction=null}},{key:"componentDidMount",value:function(){this.load(),this.props.loader||this.bindScrollListener()}},{key:"componentDidUpdate",value:function(e,t){var r=this.props.value;r&&this.value!==r&&(this.value=r,this.first=0,this.dataToRender=[],this.handleDataChange()),e.loader!==this.props.loader&&this.props.loader&&this.unbindScrollListener()}},{key:"componentWillUnmount",value:function(){this.scrollFunction&&this.unbindScrollListener()}},{key:"renderHeader",value:function(){return this.props.header?e.createElement("div",{className:"p-datascroller-header"},this.props.header):null}},{key:"renderFooter",value:function(){return this.props.footer?e.createElement("div",{className:"p-datascroller-footer"},this.props.footer):null}},{key:"renderItem",value:function(t,r){var n=this.props.itemTemplate?this.props.itemTemplate(t):t;return e.createElement("li",{key:r+"_datascrollitem"},n)}},{key:"renderEmptyMessage",value:function(){var t=r.getJSXElement(this.props.emptyMessage,this.props)||o("emptyMessage");return e.createElement("li",null,t)}},{key:"renderContent",value:function(){var t=this,r=this.state.dataToRender&&this.state.dataToRender.length?this.state.dataToRender.map((function(e,r){return t.renderItem(e,r)})):this.renderEmptyMessage();return e.createElement("div",{ref:function(e){return t.contentElement=e},className:"p-datascroller-content",style:{maxHeight:this.props.scrollHeight}},e.createElement("ul",{className:"p-datascroller-list"},r))}},{key:"render",value:function(){var t=n("p-datascroller p-component",this.props.className,{"p-datascroller-inline":this.props.inline}),r=this.renderHeader(),o=this.renderFooter(),i=this.renderContent();return e.createElement("div",{id:this.props.id,className:t},r,i,o)}}])&&s(f.prototype,m),y&&s(f,y),Object.defineProperty(f,"prototype",{writable:!1}),b}();y={id:null,value:null,rows:0,inline:!1,scrollHeight:null,loader:!1,buffer:.9,style:null,className:null,onLazyLoad:null,emptyMessage:null,itemTemplate:null,header:null,footer:null,lazy:!1},(m="defaultProps")in(f=v)?Object.defineProperty(f,m,{value:y,enumerable:!0,configurable:!0,writable:!0}):f[m]=y;export{v as DataScroller};