UNPKG

@table-library/react-table-library

Version:
3 lines (2 loc) 2.05 kB
import{s as e}from"./slicedToArray-c92cae3a.js";import{d as r}from"./defineProperty-9f9de5d0.js";import*as t from"react";import{u as n,a as o,b as a}from"./useSyncControlledState-6e39bfdc.js";import"./unsupportedIterableToArray-dc74e326.js";function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}var u="SET",c=function(e,r){if(r.type===u)return function(e,r){return s(s({},e),r.payload)}(e,r);throw new Error},p={page:0,size:10},l={isServer:!1},f=function(r,i,f,g){var y,b=s(s({},p),null!==(y=null==i?void 0:i.state)&&void 0!==y?y:{}),d=null!=i&&i.onChange?i.onChange:function(){},O=n(c,b,[],[d],g),j=e(O,2),m=j[0],v=j[1],P=t.useCallback((function(e){return v({type:u,payload:{page:e}})}),[v]),h=t.useCallback((function(e){return v({type:u,payload:{size:e,page:0}})}),[v]);o(b,m,(function(){return v({type:u,payload:b})}));var z=t.useCallback((function(e){return Math.ceil(e.length/m.size)}),[m.size]),S=t.useCallback((function(e){return e.reduce((function(e,r,t){var n=Math.floor(t/m.size);return e[n]||(e[n]=[]),e[n].push(r),e}),[])}),[m.size]),w=t.useCallback((function(e){var r=m.page*m.size+1,t=m.page*m.size+m.size;return{start:r,end:t>e.length?e.length:t}}),[m.page,m.size]),C=t.useMemo((function(){return{onSetPage:P,onSetSize:h}}),[P,h]);a("pagination",g,m);var k=s(s({},l),null!=f?f:{}),D=s(s({},m),{},{getTotalPages:z,getPages:S,getPageBoundaries:w});return{state:D,fns:C,options:k,modifier:function(e){return k.isServer?e:D.getPages(e)[m.page]||[]}}};export{f as usePagination}; //# sourceMappingURL=pagination.js.map