UNPKG

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.88 kB
"use strict";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(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 u(e){if(Array.isArray(e))return c(e)}function i(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function s(e,r){if(e){if("string"==typeof e)return c(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)?c(e,r):void 0}}function f(){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 d(e){return u(e)||i(e)||s(e)||f()}function m(e){if(Array.isArray(e))return e}function p(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 y(){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=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}}}}}),g=a.memo(a.forwardRef((function(e,o){var c,u,i=n.useMergeProps(),f=a.useContext(r.PrimeReactContext),g=v.getProps(e,f),h=a.useState([]),b=(u=2,m(c=h)||p(c,u)||s(c,u)||y()),E=b[0],w=b[1],O=v.setMetaData({props:g}),S=O.ptm,j=O.cx,x=O.sx;t.useHandleStyle(v.css.styles,O.isUnstyled,{name:"datascroller"});var H=a.useRef(null),M=a.useRef(null),N=a.useRef(g.value),L=a.useRef([]),A=a.useRef(0),P=a.useRef(null),z=function(){if(g.lazy)g.onLazyLoad&&g.onLazyLoad(T()),A.current=A.current+g.rows;else if(N.current){for(var e=A.current;e<A.current+g.rows&&!(e>=N.current.length);e++)L.current.push(N.current[e]);0!==N.current.length&&(A.current=A.current+g.rows),w(d(L.current))}},R=function(){A.current=0,L.current=[],w(d(L.current)),z()},T=function(){return{first:A.current,rows:g.rows}},U=function(){P.current&&(g.inline&&M.current?M.current.removeEventListener("scroll",P.current):g.loader||window.removeEventListener("scroll",P.current)),P.current=null};n.useMountEffect((function(){z(),g.loader||(g.inline?(P.current=function(){M.current.scrollTop>=M.current.scrollHeight*g.buffer-M.current.clientHeight&&z()},M.current.addEventListener("scroll",P.current)):(P.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)*g.buffer-n&&z()},window.addEventListener("scroll",P.current)))})),n.useUpdateEffect((function(){g.value&&(N.current=g.value,g.lazy||(A.current=0),L.current=[],g.lazy?(L.current=N.current,w(d(L.current))):z())}),[g.value]),n.useUpdateEffect((function(){g.loader&&U()}),[g.loader]),n.useUnmountEffect((function(){P.current&&U()})),a.useImperativeHandle(o,(function(){return{props:g,load:z,reset:R,getElement:function(){return H.current},getContent:function(){return M.current}}}));var _,I,q=function(e,r){var t=i({key:r+"_datascrollitem"},S("item")),n=g.itemTemplate?g.itemTemplate(e):e;return a.createElement("li",t,n)},C=function(){var e=i(S("emptyMessage")),t=l.ObjectUtils.getJSXElement(g.emptyMessage,g)||r.localeOption("emptyMessage");return a.createElement("li",e,t)},D=(_=i({className:j("header")},S("header")),g.header?a.createElement("div",_,g.header):null),k=(I=i({className:j("footer")},S("footer")),g.footer?a.createElement("div",I,g.footer):null),Y=function(){var e=i({ref:M,className:j("content"),style:x("content")},S("content")),r=i({className:j("list")},S("list")),t=l.ObjectUtils.isNotEmpty(E)?E.map(q):C();return a.createElement("div",e,a.createElement("ul",r,t))}(),B=i({id:g.id,ref:H,className:l.classNames(g.className,j("root"))},v.getOtherProps(g),S("root"));return a.createElement("div",B,D,Y,k)})));g.displayName="DataScroller",exports.DataScroller=g;