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