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) • 6.11 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("primereact/api"),t=require("primereact/componentbase"),n=require("primereact/hooks"),l=require("primereact/utils");function o(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var a=o(e);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},c.apply(this,arguments)}function u(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];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,r){if(e){if("string"==typeof e)return u(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?u(e,r):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 p(e){return i(e)||s(e)||f(e)||d()}function m(e){if(Array.isArray(e))return e}function y(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,l,o,a,c=[],u=!0,i=!1;try{if(o=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;u=!1}else for(;!(u=(n=o.call(t)).done)&&(c.push(n.value),c.length!==r);u=!0);}catch(e){i=!0,l=e}finally{try{if(!u&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(i)throw l}}return c}}function v(){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 g=t.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 l.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}}}}}),h=a.memo(a.forwardRef((function(e,o){var u,i,s=n.useMergeProps(),d=a.useContext(r.PrimeReactContext),h=g.getProps(e,d),b=a.useState([]),E=(i=2,m(u=b)||y(u,i)||f(u,i)||v()),w=E[0],O=E[1],j=g.setMetaData({props:h}),S=j.ptm,x=j.cx,H=j.sx;t.useHandleStyle(g.css.styles,j.isUnstyled,{name:"datascroller"});var M=a.useRef(null),N=a.useRef(null),L=a.useRef(h.value),P=a.useRef([]),A=a.useRef(0),z=a.useRef(null),R=function(){if(h.lazy)h.onLazyLoad&&h.onLazyLoad(U()),A.current=A.current+h.rows;else if(L.current){for(var e=A.current;e<A.current+h.rows&&!(e>=L.current.length);e++)P.current.push(L.current[e]);0!==L.current.length&&(A.current=A.current+h.rows),O(p(P.current))}},T=function(){A.current=0,P.current=[],O(p(P.current)),R()},U=function(){return{first:A.current,rows:h.rows}},_=function(){z.current&&(h.inline&&N.current?N.current.removeEventListener("scroll",z.current):h.loader||window.removeEventListener("scroll",z.current)),z.current=null};n.useMountEffect((function(){R(),h.loader||(h.inline?(z.current=function(){N.current.scrollTop>=N.current.scrollHeight*h.buffer-N.current.clientHeight&&R()},N.current.addEventListener("scroll",z.current)):(z.current=function(){var e=document.body,r=document.documentElement,t=window.pageYOffset||document.documentElement.scrollTop,n=r.clientHeight;t>=Math.max(e.scrollHeight,e.offsetHeight,n,r.scrollHeight,r.offsetHeight)*h.buffer-n&&R()},window.addEventListener("scroll",z.current)))})),n.useUpdateEffect((function(){h.value&&(L.current=h.value,h.lazy||(A.current=0),P.current=[],h.lazy?(P.current=L.current,O(p(P.current))):R())}),[h.value]),n.useUpdateEffect((function(){h.loader&&_()}),[h.loader]),n.useUnmountEffect((function(){z.current&&_()})),a.useImperativeHandle(o,(function(){return{props:h,load:R,reset:T,getElement:function(){return M.current},getContent:function(){return N.current}}}));var I,q,C=function(e,r){var t=S("item"),n=h.itemTemplate?h.itemTemplate(e):e;return a.createElement("li",c({},t,{key:r+"_datascrollitem"}),n)},D=function(){var e=s(S("emptyMessage")),t=l.ObjectUtils.getJSXElement(h.emptyMessage,h)||r.localeOption("emptyMessage");return a.createElement("li",e,t)},k=(I=s({className:x("header")},S("header")),h.header?a.createElement("div",I,h.header):null),Y=(q=s({className:x("footer")},S("footer")),h.footer?a.createElement("div",q,h.footer):null),B=function(){var e=s({ref:N,className:x("content"),style:H("content")},S("content")),r=s({className:x("list")},S("list")),t=l.ObjectUtils.isNotEmpty(w)?w.map(C):D();return a.createElement("div",e,a.createElement("ul",r,t))}(),J=s({id:h.id,ref:M,className:l.classNames(h.className,x("root"))},g.getOtherProps(h),S("root"));return a.createElement("div",J,k,B,Y)})));h.displayName="DataScroller",exports.DataScroller=h;
;