@getgrass/pagination
Version:
## Table of Contents
2 lines (1 loc) • 15.1 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@chakra-ui/react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};function a(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function u(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}var l=1,s=!1,c=4,f=0,p=-1,d="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},h=/^\[object .+?Constructor\]$/,g="object"==typeof d&&d&&d.Object===Object&&d,v="object"==typeof self&&self&&self.Object===Object&&self,b=g||v||Function("return this")();function _(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function m(e,t){return!!(e?e.length:0)&&function(e,t,n){if(t!=t)return function(e,t,n,r){var o=e.length,a=n+(r?1:-1);for(;r?a--:++a<o;)if(t(e[a],a,e))return a;return-1}(e,C,n);var r=n-1,o=e.length;for(;++r<o;)if(e[r]===t)return r;return-1}(e,t,0)>-1}function y(e,t,n){for(var r=-1,o=e?e.length:0;++r<o;)if(n(t,e[r]))return!0;return!1}function P(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}function C(e){return e!=e}function D(e,t){return e.has(t)}function w(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var x,j=Array.prototype,E=Function.prototype,k=Object.prototype,M=b["__core-js_shared__"],S=(x=/[^.]+$/.exec(M&&M.keys&&M.keys.IE_PROTO||""))?"Symbol(src)_1."+x:"",O=E.toString,A=k.hasOwnProperty,I=k.toString,L=RegExp("^"+O.call(A).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),N=b.Symbol,z=k.propertyIsEnumerable,B=j.splice,F=N?N.isConcatSpreadable:void 0,$=Math.max,W=Y(b,"Map"),G=Y(b,"Set"),T=Y(Object,"create");function q(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function R(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function J(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function H(e){var t=-1,n=e?e.length:0;for(this.__data__=new J;++t<n;)this.add(e[t])}function K(e,t){for(var n,r,o=e.length;o--;)if((n=e[o][0])===(r=t)||n!=n&&r!=r)return o;return-1}function Q(e,t,n,r,o){var a=-1,i=e.length;for(n||(n=Z),o||(o=[]);++a<i;){var u=e[a];t>0&&n(u)?t>1?Q(u,t-1,n,r,o):P(o,u):r||(o[o.length]=u)}return o}function U(e){if(!ue(e)||(t=e,S&&S in t))return!1;var t,n=ie(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?L:h;return n.test(function(e){if(null!=e){try{return O.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}q.prototype.clear=function(){this.__data__=T?T(null):{}},q.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},q.prototype.get=function(e){var t=this.__data__;if(T){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return A.call(t,e)?t[e]:void 0},q.prototype.has=function(e){var t=this.__data__;return T?void 0!==t[e]:A.call(t,e)},q.prototype.set=function(e,t){return this.__data__[e]=T&&void 0===t?"__lodash_hash_undefined__":t,this},R.prototype.clear=function(){this.__data__=[]},R.prototype.delete=function(e){var t=this.__data__,n=K(t,e);return!(n<0)&&(n==t.length-1?t.pop():B.call(t,n,1),!0)},R.prototype.get=function(e){var t=this.__data__,n=K(t,e);return n<0?void 0:t[n][1]},R.prototype.has=function(e){return K(this.__data__,e)>-1},R.prototype.set=function(e,t){var n=this.__data__,r=K(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},J.prototype.clear=function(){this.__data__={hash:new q,map:new(W||R),string:new q}},J.prototype.delete=function(e){return X(this,e).delete(e)},J.prototype.get=function(e){return X(this,e).get(e)},J.prototype.has=function(e){return X(this,e).has(e)},J.prototype.set=function(e,t){return X(this,e).set(e,t),this},H.prototype.add=H.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},H.prototype.has=function(e){return this.__data__.has(e)};var V=G&&1/w(new G([,-0]))[1]==1/0?function(e){return new G(e)}:function(){};function X(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function Y(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return U(n)?n:void 0}function Z(e){return re(e)||function(e){return ae(e)&&A.call(e,"callee")&&(!z.call(e,"callee")||"[object Arguments]"==I.call(e))}(e)||!!(F&&e&&e[F])}var ee,te,ne=(ee=function(e){return function(e,t,n){var r=-1,o=m,a=e.length,i=!0,u=[],l=u;if(n)i=!1,o=y;else if(a>=200){var s=t?null:V(e);if(s)return w(s);i=!1,o=D,l=new H}else l=t?[]:u;e:for(;++r<a;){var c=e[r],f=t?t(c):c;if(c=n||0!==c?c:0,i&&f==f){for(var p=l.length;p--;)if(l[p]===f)continue e;t&&l.push(f),u.push(c)}else o(l,f,n)||(l!==u&&l.push(f),u.push(c))}return u}(Q(e,1,ae,!0))},te=$(void 0===te?ee.length-1:te,0),function(){for(var e=arguments,t=-1,n=$(e.length-te,0),r=Array(n);++t<n;)r[t]=e[te+t];t=-1;for(var o=Array(te+1);++t<te;)o[t]=e[t];return o[te]=r,_(ee,this,o)});var re=Array.isArray;function oe(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}(e.length)&&!ie(e)}function ae(e){return function(e){return!!e&&"object"==typeof e}(e)&&oe(e)}function ie(e){var t=ue(e)?I.call(e):"";return"[object Function]"==t||"[object GeneratorFunction]"==t}function ue(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}var le=ne,se=function(e){return e[0]},ce=function(e){return e.slice(-1)[0]},fe=function(e){return e-Math.floor(e)!=0},pe=function(e){var t=e.pagesCount,n=e.currentPage,r=e.innerLimit,o=e.outerLimit;if(null==t)return[];var a=u([],i(Array(t).keys()),!1).map((function(e){return e+1}));if(0===r||0===o)return a;var l,s,c=a.slice(0,o),d=a.slice(1).slice(-o),h=ce(c),g=se(d),v=(l=n-r)<h?a.slice(h,n-1):a.slice(l-1,n-1),b=le(u([],i(c),!1),u([],i(v),!1)),_=se(v)>h+1,m=(s=n+r)>g?a.slice(n+1,g):a.slice(n,s),y=le(u([],i(m),!1),u([],i(d),!1)),P=ce(m)<g-1;return function(e){return e.reduce((function(e,t){return u(u([],i(e),!1),i(t===h&&_?[h,f]:t===g&&P?[p,g]:[t]),!1)}),[])}(le(u([],i(b),!1),[n],u([],i(y),!1)))},de=e.createContext({state:{currentPage:l,isDisabled:s,pagesCount:0},actions:{setCurrentPage:function(){return null},setIsDisabled:function(){return null},changePage:function(){return null}}}),he=function(t){var n=t.children,o=t.onPageChange,a=t.pagesCount,u=t.currentPage,c=t.isDisabled,f=i(e.useState(l),2),p=f[0],d=f[1],h=i(e.useState(s),2),g=h[0],v=h[1],b=i(e.useState(0),2),_=b[0],m=b[1];e.useEffect((function(){v(c)}),[c]),e.useEffect((function(){m(a)}),[a]),e.useEffect((function(){fe(u)?console.error("Ajna pagination -> passed down currentPage has to be a whole number"):u<1?console.error("Ajna pagination -> passed down currentPage can't be lower than 1"):null!=u&&u!==p&&d(u)}),[p,u]);var y={currentPage:p,pagesCount:_,isDisabled:g},P={setCurrentPage:d,setIsDisabled:v,changePage:function(e){d(e),o(e)}};return r.default.createElement(de.Provider,{value:{state:y,actions:P}},n)},ge=function(){return e.useContext(de)},ve=function(e){var t=a(e,[]);return r.default.createElement("svg",o({fill:"none",height:"24",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",viewBox:"0 0 24 24",width:"24"},t),r.default.createElement("polyline",{points:"15 18 9 12 15 6"}))},be=function(e){var t=a(e,[]);return r.default.createElement("svg",o({fill:"none",height:"24",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",viewBox:"0 0 24 24",width:"24"},t),r.default.createElement("polyline",{points:"9 18 15 12 9 6"}))},_e=function(e){var t=a(e,[]);return r.default.createElement("svg",o({fill:"none",height:"24",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",viewBox:"0 0 24 24",width:"24"},t),r.default.createElement("circle",{cx:"12",cy:"12",r:"1"}),r.default.createElement("circle",{cx:"19",cy:"12",r:"1"}),r.default.createElement("circle",{cx:"5",cy:"12",r:"1"}))},me={cursor:"pointer",minW:"auto",justifyContent:"center",pos:"relative",alignItems:"center",bg:"transparent",px:1,sx:{_hover:{".call-to-action":{opacity:1}}}},ye={h:4,w:4,bg:"inherit",color:"inherit"},Pe={m:"auto",pos:"absolute",top:0,left:0,right:0,bottom:0,opacity:0,transition:"all cubic-bezier(0.4, 1, 0.9, 0.6) 0.3s"},Ce=function(n){var i=n.hoverIcon,u=n.separatorPosition,l=n.isDisabled,s=n.jumpSize,f=void 0===s?c:s,p=a(n,["hoverIcon","separatorPosition","isDisabled","jumpSize"]),d=ge(),h=d.actions,g=d.state,v=g.currentPage,b=g.pagesCount,_=g.isDisabled,m=h.changePage,y=function(e){return"left"===e?v-f>0:"right"===e&&v+f<b+1}(u),P=e.useMemo((function(){return!y||(null!=l?l:_)}),[y,l,_]),C=e.useMemo((function(){return"left"===u?"backwards":"forward"}),[u]),D=e.useMemo((function(){return o(o({},me),p)}),[p]),w=function(){if(!P){var e=function(e){return"left"===e?v-f:"right"===e?v+f:0}(u);m(e)}};return r.default.createElement(t.Flex,{as:"li"},r.default.createElement(t.Button,o({className:"pagination-separator"},function(e){var t=e.onClick,n=a(e,["onClick"]);return o(o({},n),{"aria-label":"Jump pages ".concat(C),"aria-disabled":P,onClick:function(e){P||null==t||t(e),w()}})}(D)),r.default.createElement(t.Icon,o({as:_e},ye)),r.default.createElement(t.Icon,o({as:i,className:"call-to-action"},ye,Pe))))},De={minW:"auto",px:1,cursor:"pointer"};exports.Pagination=function(e){var t=e.children,n=e.pagesCount,o=e.isDisabled,a=void 0===o?s:o,i=e.currentPage,u=void 0===i?l:i,c=e.onPageChange;return r.default.createElement(he,{currentPage:u,isDisabled:a,pagesCount:n,onPageChange:c},t)},exports.PaginationContainer=function(e){var n=e.children,i=a(e,["children"]);return r.default.createElement(t.Flex,o({"aria-label":"pagination navigation",as:"nav",className:"pagination-container"},i),n)},exports.PaginationNext=function(n){var i=n.children,u=n.isDisabled,l=a(n,["children","isDisabled"]),s=e.useContext(de),c=s.actions,f=s.state,p=c.changePage,d=f.currentPage,h=f.pagesCount,g=f.isDisabled,v=e.useMemo((function(){return d>h-1}),[d,h]),b=e.useMemo((function(){return v||(null!=u?u:g)}),[v,u,g]),_=e.useMemo((function(){return o(o({},l),{isDisabled:b})}),[l,b]),m=function(){v||p(d+1)};return r.default.createElement(t.Button,o({className:"pagination-next"},function(e){var t=e.onClick,n=e.isDisabled,r=a(e,["onClick","isDisabled"]);return o(o({},r),{"aria-label":"Next page","aria-disabled":n,isDisabled:n,onClick:function(e){n||null==t||t(e),m()}})}(_)),i)},exports.PaginationPage=function(n){var i,u,l,s=n.page,c=n.isDisabled,d=n.separator,h=n._current,g=void 0===h?{}:h,v=a(n,["page","isDisabled","separator","_current"]),b=ge(),_=b.actions,m=b.state,y=_.changePage,P=m.currentPage,C=m.isDisabled,D=e.useMemo((function(){return P===s}),[P,s]),w=e.useMemo((function(){return null!=c?c:C}),[C,c]),x=e.useMemo((function(){var e,t;return null!==(t=null===(e=null==d?void 0:d.props)||void 0===e?void 0:e.isDisabled)&&void 0!==t?t:C}),[C,null===(i=null==d?void 0:d.props)||void 0===i?void 0:i.isDisabled]),j=e.useMemo((function(){return D?g:{}}),[D,g]),E=e.useMemo((function(){return s===f}),[s]),k=e.useMemo((function(){return s===p}),[s]),M=e.useMemo((function(){return D?"Current page, page ".concat(s):"Go to page ".concat(s)}),[D,s]),S=e.useMemo((function(){return o(o(o(o({},De),v),j),{isDisabled:w})}),[v,j,w]);return E?r.default.createElement(Ce,o({hoverIcon:ve,isDisabled:x,separatorPosition:"left"},null!==(u=null==d?void 0:d.props)&&void 0!==u?u:{})):k?r.default.createElement(Ce,o({hoverIcon:be,isDisabled:x,separatorPosition:"right"},null!==(l=null==d?void 0:d.props)&&void 0!==l?l:{})):r.default.createElement(t.Flex,{as:"li"},r.default.createElement(t.Button,o({className:"pagination-page"},function(e){var t=e.onClick,n=e.isDisabled,r=a(e,["onClick","isDisabled"]);return o(o({},r),{"aria-disabled":n,"aria-current":D,"aria-label":M,isDisabled:n,onClick:function(e){n||null==t||t(e),y(s)}})}(S)),s))},exports.PaginationPageGroup=function(n){var i=n.children,u=n.separator,l=a(n,["children","separator"]);return r.default.createElement(t.Stack,o({isInline:!0,as:"ol",className:"pagination-page-group",spacing:1},l),e.Children.map(i,(function(t){if(null!=t)return e.cloneElement(t,{separator:u})})))},exports.PaginationPrevious=function(n){var i=n.children,u=n.isDisabled,l=a(n,["children","isDisabled"]),s=ge(),c=s.actions,f=s.state,p=c.changePage,d=f.currentPage,h=f.isDisabled,g=e.useMemo((function(){return 1===d}),[d]),v=e.useMemo((function(){return g||(null!=u?u:h)}),[g,u,h]),b=e.useMemo((function(){return o(o({},l),{isDisabled:v})}),[l,v]),_=function(){g||p(d-1)};return r.default.createElement(t.Button,o({className:"pagination-previous"},function(e){var t=e.onClick,n=e.isDisabled,r=a(e,["onClick","isDisabled"]);return o(o({},r),{"aria-label":"Previous page","aria-disabled":n,isDisabled:n,onClick:function(e){n||null==t||t(e),_()}})}(b)),i)},exports.PaginationSeparator=Ce,exports.generatePages=pe,exports.usePagination=function(t){var n,r,o=t.total,a=t.initialState,u=t.pagesCount,l=t.limits,s=i(e.useState(null!==(n=a.pageSize)&&void 0!==n?n:0),2),c=s[0],f=s[1],p=i(e.useState(a.currentPage),2),d=p[0],h=p[1],g=i(e.useState(null!==(r=a.isDisabled)&&void 0!==r&&r),2),v=g[0],b=g[1],_=e.useMemo((function(){var e;return null!==(e=null==l?void 0:l.inner)&&void 0!==e?e:0}),[l]),m=e.useMemo((function(){var e;return null!==(e=null==l?void 0:l.outer)&&void 0!==e?e:0}),[l]),y=e.useMemo((function(){return null==c?0:d*c-c}),[d,c]),P=e.useMemo((function(){return null!=u?u:null==o||null==c?0:Math.ceil(o/c)}),[o,c,u]),C=e.useMemo((function(){return pe({currentPage:d,innerLimit:_,outerLimit:m,pagesCount:P})}),[d,_,m,P]);return e.useEffect((function(){null!=_&&fe(_)&&console.error("Ajna pagination -> passed down inner limit has to be a whole number"),null!=m&&fe(m)&&console.error("Ajna pagination -> passed down outerLimit limit has to be a whole number")}),[_,l,m]),{offset:y,currentPage:d,setCurrentPage:h,pageSize:c,setPageSize:f,isDisabled:v,setIsDisabled:b,pages:C,pagesCount:P}};