primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 5.9 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.datascroller=function(e,t,r,n,l,o){"use strict";function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=a(t);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e){if(Array.isArray(e))return u(e)}function s(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function f(e,t){if(e){if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}function d(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(e){return i(e)||s(e)||f(e)||d()}function p(e){if(Array.isArray(e))return e}function y(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,l,o,a,c=[],u=!0,i=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){i=!0,l=e}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(i)throw l}}return c}}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var v=n.ComponentBase.extend({defaultProps:{__TYPE:"DataScroller",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,children:void 0},css:{classes:{header:"p-datascroller-header",footer:"p-datascroller-footer",content:"p-datascroller-content",list:"p-datascroller-list",root:function(e){return o.classNames("p-datascroller p-component",{"p-datascroller-inline":e.props.inline})}},styles:"\n@layer primereact {\n .p-datascroller .p-datascroller-header {\n text-align: center;\n padding: .5em .75em;\n border-bottom: 0 none;\n }\n \n .p-datascroller .p-datascroller-footer {\n text-align: center;\n padding: .25em .625em;\n border-top: 0px none;\n }\n \n .p-datascroller .p-datascroller-content {\n padding: .25em .625em;\n }\n \n .p-datascroller-inline .p-datascroller-content {\n overflow: auto;\n }\n \n .p-datascroller .p-datascroller-list {\n list-style-type: none; \n margin: 0;\n padding: 0;\n }\n}\n",inlineStyles:{content:function(e){return{maxHeight:e.props.scrollHeight}}}}}),g=c.memo(c.forwardRef((function(e,t){var a,u,i=l.useMergeProps(),s=c.useContext(r.PrimeReactContext),d=v.getProps(e,s),g=c.useState([]),b=(u=2,p(a=g)||y(a,u)||f(a,u)||h()),E=b[0],w=b[1],O=v.setMetaData({props:d}),S=O.ptm,j=O.cx,H=O.sx;n.useHandleStyle(v.css.styles,O.isUnstyled,{name:"datascroller"});var x=c.useRef(null),M=c.useRef(null),N=c.useRef(d.value),L=c.useRef([]),A=c.useRef(0),P=c.useRef(null),R=function(){if(d.lazy)d.onLazyLoad&&d.onLazyLoad(T()),A.current=A.current+d.rows;else if(N.current){for(var e=A.current;e<A.current+d.rows&&!(e>=N.current.length);e++)L.current.push(N.current[e]);0!==N.current.length&&(A.current=A.current+d.rows),w(m(L.current))}},z=function(){A.current=0,L.current=[],w(m(L.current)),R()},T=function(){return{first:A.current,rows:d.rows}},U=function(){P.current&&(d.inline&&M.current?M.current.removeEventListener("scroll",P.current):d.loader||window.removeEventListener("scroll",P.current)),P.current=null};l.useMountEffect((function(){R(),d.loader||(d.inline?(P.current=function(){M.current.scrollTop>=M.current.scrollHeight*d.buffer-M.current.clientHeight&&R()},M.current.addEventListener("scroll",P.current)):(P.current=function(){var e=document.body,t=document.documentElement,r=window.pageYOffset||document.documentElement.scrollTop,n=t.clientHeight;r>=Math.max(e.scrollHeight,e.offsetHeight,n,t.scrollHeight,t.offsetHeight)*d.buffer-n&&R()},window.addEventListener("scroll",P.current)))})),l.useUpdateEffect((function(){d.value&&(N.current=d.value,d.lazy||(A.current=0),L.current=[],d.lazy?(L.current=N.current,w(m(L.current))):R())}),[d.value]),l.useUpdateEffect((function(){d.loader&&U()}),[d.loader]),l.useUnmountEffect((function(){P.current&&U()})),c.useImperativeHandle(t,(function(){return{props:d,load:R,reset:z,getElement:function(){return x.current},getContent:function(){return M.current}}}));var _,I,C=function(e,t){var r=i({key:t+"_datascrollitem"},S("item")),n=d.itemTemplate?d.itemTemplate(e):e;return c.createElement("li",r,n)},D=function(){var e=i(S("emptyMessage")),t=o.ObjectUtils.getJSXElement(d.emptyMessage,d)||r.localeOption("emptyMessage");return c.createElement("li",e,t)},k=(_=i({className:j("header")},S("header")),d.header?c.createElement("div",_,d.header):null),Y=(I=i({className:j("footer")},S("footer")),d.footer?c.createElement("div",I,d.footer):null),B=function(){var e=i({ref:M,className:j("content"),style:H("content")},S("content")),t=i({className:j("list")},S("list")),r=o.ObjectUtils.isNotEmpty(E)?E.map(C):D();return c.createElement("div",e,c.createElement("ul",t,r))}(),J=i({id:d.id,ref:x,className:o.classNames(d.className,j("root"))},v.getOtherProps(d),S("root"));return c.createElement("div",J,k,B,Y)})));return g.displayName="DataScroller",e.DataScroller=g,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.componentbase,primereact.hooks,primereact.utils);