@siberiacancode/reactuse 0.2.28 → 0.2.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),P=({total:O=Number.POSITIVE_INFINITY,pageSize:t=10,initialPage:b=1,onPageChange:r=()=>{},onPageCountChange:o=()=>{},onPageSizeChange:i=()=>{}}={})=>{const[c,f]=e.useState(b),m=e.useRef(r),R=e.useRef(o),a=e.useRef(i);m.current=r,R.current=o,a.current=i;const n=Math.max(1,Math.ceil(O/t)),I=c===1,l=c===n,E=()=>{if(l)return r({page:n,pageSize:t});f(s=>{const u=s+1;return r({page:u,pageSize:t}),u})},M=()=>{if(I)return r({page:1,pageSize:t});f(s=>{const u=s-1;return r({page:u,pageSize:t}),u})},N=s=>{f(s),r({page:s,pageSize:t})};return e.useEffect(()=>{R.current({page:c,pageSize:t})},[n]),e.useEffect(()=>{a.current({page:c,pageSize:t})},[t]),{page:c,set:N,currentPageSize:t,isFirstPage:I,isLastPage:l,pageCount:n,next:E,prev:M}};exports.useOffsetPagination=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),I=({total:g=Number.POSITIVE_INFINITY,initialPage:p=1,initialPageSize:f=10,onChange:e=()=>{}}={})=>{const[a,c]=u.useState(p),[t,P]=u.useState(f),S=u.useRef(e);S.current=e;const n=Math.max(1,Math.ceil(g/t)),i=a===1,o=a===n;return{page:a,setPage:s=>{c(s),e({page:s,pageSize:t})},setPageSize:P,pageSize:t,isFirstPage:i,isLastPage:o,pageCount:n,next:()=>{if(o)return e({page:n,pageSize:t});c(s=>{const r=s+1;return e({page:r,pageSize:t}),r})},prev:()=>{if(i)return e({page:1,pageSize:t});c(s=>{const r=s-1;return e({page:r,pageSize:t}),r})}}};exports.useOffsetPagination=I;
2
2
  //# sourceMappingURL=useOffsetPagination.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOffsetPagination.cjs","sources":["../../../../src/hooks/useOffsetPagination/useOffsetPagination.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationOptions {\n /** The initial page number */\n initialPage?: number;\n /** The number of items per page */\n pageSize?: number;\n /** The total number of items */\n total?: number;\n /** The callback function to be invoked when page changes */\n onPageChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n /** The callback function to be invoked when page count changes */\n onPageCountChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n /** The callback function to be invoked when page size changes */\n onPageSizeChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n}\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationReturn {\n /** The number of items per page */\n currentPageSize: number;\n /** Whether the current page is the first page */\n isFirstPage: boolean;\n /** Whether the current page is the last page */\n isLastPage: boolean;\n /** The current page number */\n page: number;\n /** The total number of pages */\n pageCount: number;\n /** The callback function to go to the next page */\n next: () => void;\n /** The callback function to go to the previous page */\n prev: () => void;\n /** The callback function to set the current page */\n set: (page: number) => void;\n}\n\n/**\n * @name useOffsetPagination\n * @description - Hook that defines the logic when pagination\n * @category State\n *\n * @param {UseOffsetPaginationOptions} options - The options for the hook\n * @param {number} [options.total] - The total number of items\n * @param {number} [options.pageSize] - The number of items per page\n * @param {number} [options.initialPage] - The current page\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageChange] - The callback function to be invoked when page changes\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageCountChange] - The callback function to be invoked when page count changes\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageSizeChange] - The callback function to be invoked when page size changes\n * @returns {UseOffsetPaginationReturn} - The state of the hook\n *\n * @example\n * const { currentPage, currentPageSize, pageCount, isFirstPage, isLastPage, prev, next } = useOffsetPagination({\n * total: 100,\n * pageSize: 10,\n * page: 1,\n * onPageChange: (page) => {},\n * onPageCountChange: (pageCount) => {},\n * onPageSizeChange: (pageSize) => {}\n * });\n */\nexport const useOffsetPagination = ({\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n initialPage = 1,\n onPageChange = () => {},\n onPageCountChange = () => {},\n onPageSizeChange = () => {}\n}: UseOffsetPaginationOptions = {}): UseOffsetPaginationReturn => {\n const [page, setPage] = useState(initialPage);\n\n const onPageChangeRef = useRef(onPageChange);\n const onPageCountChangeRef = useRef(onPageCountChange);\n const onPageSizeChangeRef = useRef(onPageSizeChange);\n\n onPageChangeRef.current = onPageChange;\n onPageCountChangeRef.current = onPageCountChange;\n onPageSizeChangeRef.current = onPageSizeChange;\n\n const pageCount = Math.max(1, Math.ceil(total / pageSize));\n\n const isFirstPage = page === 1;\n const isLastPage = page === pageCount;\n\n const next = () => {\n if (isLastPage) return onPageChange({ page: pageCount, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage + 1;\n onPageChange({ page, pageSize });\n return page;\n });\n };\n\n const prev = () => {\n if (isFirstPage) return onPageChange({ page: 1, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage - 1;\n onPageChange({ page, pageSize });\n return page;\n });\n };\n\n const set = (page: number) => {\n setPage(page);\n onPageChange({ page, pageSize });\n };\n\n useEffect(() => {\n onPageCountChangeRef.current({ page, pageSize });\n }, [pageCount]);\n\n useEffect(() => {\n onPageSizeChangeRef.current({ page, pageSize });\n }, [pageSize]);\n\n return {\n page,\n set,\n currentPageSize: pageSize,\n isFirstPage,\n isLastPage,\n pageCount,\n next,\n prev\n };\n};\n"],"names":["useOffsetPagination","total","pageSize","initialPage","onPageChange","onPageCountChange","onPageSizeChange","page","setPage","useState","onPageChangeRef","useRef","onPageCountChangeRef","onPageSizeChangeRef","pageCount","isFirstPage","isLastPage","next","prevPage","prev","set","useEffect"],"mappings":"yGA8DaA,EAAsB,CAAC,CAClC,MAAAC,EAAQ,OAAO,kBACf,SAAAC,EAAW,GACX,YAAAC,EAAc,EACd,aAAAC,EAAe,IAAM,CAAA,EACrB,kBAAAC,EAAoB,IAAM,CAAA,EAC1B,iBAAAC,EAAmB,IAAM,CAAA,CAC3B,EAAgC,KAAkC,CAChE,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAASN,CAAW,EAEtCO,EAAkBC,EAAAA,OAAOP,CAAY,EACrCQ,EAAuBD,EAAAA,OAAON,CAAiB,EAC/CQ,EAAsBF,EAAAA,OAAOL,CAAgB,EAEnDI,EAAgB,QAAUN,EAC1BQ,EAAqB,QAAUP,EAC/BQ,EAAoB,QAAUP,EAE9B,MAAMQ,EAAY,KAAK,IAAI,EAAG,KAAK,KAAKb,EAAQC,CAAQ,CAAC,EAEnDa,EAAcR,IAAS,EACvBS,EAAaT,IAASO,EAEtBG,EAAO,IAAM,CACjB,GAAID,EAAY,OAAOZ,EAAa,CAAE,KAAMU,EAAW,SAAAZ,EAAU,EAEjEM,EAASU,GAAa,CACpB,MAAMX,EAAOW,EAAW,EACxB,OAAAd,EAAa,CAAE,KAAAG,EAAM,SAAAL,CAAA,CAAU,EACxBK,CAAA,CACR,CAAA,EAGGY,EAAO,IAAM,CACjB,GAAIJ,EAAa,OAAOX,EAAa,CAAE,KAAM,EAAG,SAAAF,EAAU,EAE1DM,EAASU,GAAa,CACpB,MAAMX,EAAOW,EAAW,EACxB,OAAAd,EAAa,CAAE,KAAAG,EAAM,SAAAL,CAAA,CAAU,EACxBK,CAAA,CACR,CAAA,EAGGa,EAAOb,GAAiB,CAC5BC,EAAQD,CAAI,EACZH,EAAa,CAAE,KAAAG,EAAM,SAAAL,CAAA,CAAU,CAAA,EAGjCmB,OAAAA,EAAAA,UAAU,IAAM,CACdT,EAAqB,QAAQ,CAAE,KAAAL,EAAM,SAAAL,CAAA,CAAU,CAAA,EAC9C,CAACY,CAAS,CAAC,EAEdO,EAAAA,UAAU,IAAM,CACdR,EAAoB,QAAQ,CAAE,KAAAN,EAAM,SAAAL,CAAA,CAAU,CAAA,EAC7C,CAACA,CAAQ,CAAC,EAEN,CACL,KAAAK,EACA,IAAAa,EACA,gBAAiBlB,EACjB,YAAAa,EACA,WAAAC,EACA,UAAAF,EACA,KAAAG,EACA,KAAAE,CAAA,CAEJ"}
1
+ {"version":3,"file":"useOffsetPagination.cjs","sources":["../../../../src/hooks/useOffsetPagination/useOffsetPagination.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationOptions {\n /** The initial page number */\n initialPage?: number;\n /** The number of items per page */\n initialPageSize?: number;\n /** The total number of items */\n total?: number;\n /** The callback function to be invoked when page changes */\n onChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n}\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationReturn {\n /** Whether the current page is the first page */\n isFirstPage: boolean;\n /** Whether the current page is the last page */\n isLastPage: boolean;\n /** The current page number */\n page: number;\n /** The total number of pages */\n pageCount: number;\n /** The number of items per page */\n pageSize: number;\n /** The callback function to go to the next page */\n next: () => void;\n /** The callback function to go to the previous page */\n prev: () => void;\n /** The callback function to set the current page */\n setPage: (page: number) => void;\n /** The callback function to set the page size */\n setPageSize: (pageSize: number) => void;\n}\n\n/**\n * @name useOffsetPagination\n * @description - Hook that defines the logic when pagination\n * @category State\n *\n * @param {UseOffsetPaginationOptions} options - The options for the hook\n * @param {number} [options.total] - The total number of items\n * @param {number} [options.pageSize] - The number of items per page\n * @param {number} [options.initialPage] - The current page\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onChange] - The callback function to be invoked when page changes\n * @returns {UseOffsetPaginationReturn} - The state of the hook\n *\n * @example\n * const { currentPage, currentPageSize, pageCount, isFirstPage, isLastPage, prev, next } = useOffsetPagination({\n * total: 100,\n * initialPageSize: 10,\n * initialPage: 1\n * });\n */\nexport const useOffsetPagination = ({\n total = Number.POSITIVE_INFINITY,\n initialPage = 1,\n initialPageSize = 10,\n onChange = () => {}\n}: UseOffsetPaginationOptions = {}): UseOffsetPaginationReturn => {\n const [page, setPage] = useState(initialPage);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const pageCount = Math.max(1, Math.ceil(total / pageSize));\n\n const isFirstPage = page === 1;\n const isLastPage = page === pageCount;\n\n const next = () => {\n if (isLastPage) return onChange({ page: pageCount, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage + 1;\n onChange({ page, pageSize });\n return page;\n });\n };\n\n const prev = () => {\n if (isFirstPage) return onChange({ page: 1, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage - 1;\n onChange({ page, pageSize });\n return page;\n });\n };\n\n const set = (page: number) => {\n setPage(page);\n onChange({ page, pageSize });\n };\n\n return {\n page,\n setPage: set,\n setPageSize,\n pageSize,\n isFirstPage,\n isLastPage,\n pageCount,\n next,\n prev\n };\n};\n"],"names":["useOffsetPagination","total","initialPage","initialPageSize","onChange","page","setPage","useState","pageSize","setPageSize","onChangeRef","useRef","pageCount","isFirstPage","isLastPage","prevPage"],"mappings":"yGAuDaA,EAAsB,CAAC,CAClC,MAAAC,EAAQ,OAAO,kBACf,YAAAC,EAAc,EACd,gBAAAC,EAAkB,GAClB,SAAAC,EAAW,IAAM,CAAA,CACnB,EAAgC,KAAkC,CAChE,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAASL,CAAW,EACtC,CAACM,EAAUC,CAAW,EAAIF,EAAAA,SAASJ,CAAe,EAElDO,EAAcC,EAAAA,OAAOP,CAAQ,EACnCM,EAAY,QAAUN,EAEtB,MAAMQ,EAAY,KAAK,IAAI,EAAG,KAAK,KAAKX,EAAQO,CAAQ,CAAC,EAEnDK,EAAcR,IAAS,EACvBS,EAAaT,IAASO,EA2B5B,MAAO,CACL,KAAAP,EACA,QAPWA,GAAiB,CAC5BC,EAAQD,CAAI,EACZD,EAAS,CAAE,KAAAC,EAAM,SAAAG,CAAA,CAAU,CAAA,EAM3B,YAAAC,EACA,SAAAD,EACA,YAAAK,EACA,WAAAC,EACA,UAAAF,EACA,KAjCW,IAAM,CACjB,GAAIE,EAAY,OAAOV,EAAS,CAAE,KAAMQ,EAAW,SAAAJ,EAAU,EAE7DF,EAASS,GAAa,CACpB,MAAMV,EAAOU,EAAW,EACxB,OAAAX,EAAS,CAAE,KAAAC,EAAM,SAAAG,CAAA,CAAU,EACpBH,CAAA,CACR,CAAA,EA2BD,KAxBW,IAAM,CACjB,GAAIQ,EAAa,OAAOT,EAAS,CAAE,KAAM,EAAG,SAAAI,EAAU,EAEtDF,EAASS,GAAa,CACpB,MAAMV,EAAOU,EAAW,EACxB,OAAAX,EAAS,CAAE,KAAAC,EAAM,SAAAG,CAAA,CAAU,EACpBH,CAAA,CACR,CAAA,CAiBD,CAEJ"}
@@ -1,48 +1,41 @@
1
- import { useState as i, useRef as o, useEffect as p } from "react";
2
- const v = ({
3
- total: E = Number.POSITIVE_INFINITY,
4
- pageSize: t = 10,
5
- initialPage: F = 1,
6
- onPageChange: r = () => {
7
- },
8
- onPageCountChange: f = () => {
9
- },
10
- onPageSizeChange: I = () => {
1
+ import { useState as i, useRef as m } from "react";
2
+ const z = ({
3
+ total: u = Number.POSITIVE_INFINITY,
4
+ initialPage: g = 1,
5
+ initialPageSize: f = 10,
6
+ onChange: e = () => {
11
7
  }
12
8
  } = {}) => {
13
- const [c, e] = i(F), M = o(r), m = o(f), R = o(I);
14
- M.current = r, m.current = f, R.current = I;
15
- const u = Math.max(1, Math.ceil(E / t)), x = c === 1, N = c === u, O = () => {
16
- if (N) return r({ page: u, pageSize: t });
17
- e((s) => {
18
- const n = s + 1;
19
- return r({ page: n, pageSize: t }), n;
20
- });
21
- }, T = () => {
22
- if (x) return r({ page: 1, pageSize: t });
23
- e((s) => {
24
- const n = s - 1;
25
- return r({ page: n, pageSize: t }), n;
26
- });
27
- }, b = (s) => {
28
- e(s), r({ page: s, pageSize: t });
29
- };
30
- return p(() => {
31
- m.current({ page: c, pageSize: t });
32
- }, [u]), p(() => {
33
- R.current({ page: c, pageSize: t });
34
- }, [t]), {
35
- page: c,
36
- set: b,
37
- currentPageSize: t,
38
- isFirstPage: x,
39
- isLastPage: N,
40
- pageCount: u,
41
- next: O,
42
- prev: T
9
+ const [a, c] = i(g), [t, P] = i(f), I = m(e);
10
+ I.current = e;
11
+ const n = Math.max(1, Math.ceil(u / t)), p = a === 1, o = a === n;
12
+ return {
13
+ page: a,
14
+ setPage: (s) => {
15
+ c(s), e({ page: s, pageSize: t });
16
+ },
17
+ setPageSize: P,
18
+ pageSize: t,
19
+ isFirstPage: p,
20
+ isLastPage: o,
21
+ pageCount: n,
22
+ next: () => {
23
+ if (o) return e({ page: n, pageSize: t });
24
+ c((s) => {
25
+ const r = s + 1;
26
+ return e({ page: r, pageSize: t }), r;
27
+ });
28
+ },
29
+ prev: () => {
30
+ if (p) return e({ page: 1, pageSize: t });
31
+ c((s) => {
32
+ const r = s - 1;
33
+ return e({ page: r, pageSize: t }), r;
34
+ });
35
+ }
43
36
  };
44
37
  };
45
38
  export {
46
- v as useOffsetPagination
39
+ z as useOffsetPagination
47
40
  };
48
41
  //# sourceMappingURL=useOffsetPagination.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOffsetPagination.mjs","sources":["../../../../src/hooks/useOffsetPagination/useOffsetPagination.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationOptions {\n /** The initial page number */\n initialPage?: number;\n /** The number of items per page */\n pageSize?: number;\n /** The total number of items */\n total?: number;\n /** The callback function to be invoked when page changes */\n onPageChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n /** The callback function to be invoked when page count changes */\n onPageCountChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n /** The callback function to be invoked when page size changes */\n onPageSizeChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n}\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationReturn {\n /** The number of items per page */\n currentPageSize: number;\n /** Whether the current page is the first page */\n isFirstPage: boolean;\n /** Whether the current page is the last page */\n isLastPage: boolean;\n /** The current page number */\n page: number;\n /** The total number of pages */\n pageCount: number;\n /** The callback function to go to the next page */\n next: () => void;\n /** The callback function to go to the previous page */\n prev: () => void;\n /** The callback function to set the current page */\n set: (page: number) => void;\n}\n\n/**\n * @name useOffsetPagination\n * @description - Hook that defines the logic when pagination\n * @category State\n *\n * @param {UseOffsetPaginationOptions} options - The options for the hook\n * @param {number} [options.total] - The total number of items\n * @param {number} [options.pageSize] - The number of items per page\n * @param {number} [options.initialPage] - The current page\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageChange] - The callback function to be invoked when page changes\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageCountChange] - The callback function to be invoked when page count changes\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageSizeChange] - The callback function to be invoked when page size changes\n * @returns {UseOffsetPaginationReturn} - The state of the hook\n *\n * @example\n * const { currentPage, currentPageSize, pageCount, isFirstPage, isLastPage, prev, next } = useOffsetPagination({\n * total: 100,\n * pageSize: 10,\n * page: 1,\n * onPageChange: (page) => {},\n * onPageCountChange: (pageCount) => {},\n * onPageSizeChange: (pageSize) => {}\n * });\n */\nexport const useOffsetPagination = ({\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n initialPage = 1,\n onPageChange = () => {},\n onPageCountChange = () => {},\n onPageSizeChange = () => {}\n}: UseOffsetPaginationOptions = {}): UseOffsetPaginationReturn => {\n const [page, setPage] = useState(initialPage);\n\n const onPageChangeRef = useRef(onPageChange);\n const onPageCountChangeRef = useRef(onPageCountChange);\n const onPageSizeChangeRef = useRef(onPageSizeChange);\n\n onPageChangeRef.current = onPageChange;\n onPageCountChangeRef.current = onPageCountChange;\n onPageSizeChangeRef.current = onPageSizeChange;\n\n const pageCount = Math.max(1, Math.ceil(total / pageSize));\n\n const isFirstPage = page === 1;\n const isLastPage = page === pageCount;\n\n const next = () => {\n if (isLastPage) return onPageChange({ page: pageCount, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage + 1;\n onPageChange({ page, pageSize });\n return page;\n });\n };\n\n const prev = () => {\n if (isFirstPage) return onPageChange({ page: 1, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage - 1;\n onPageChange({ page, pageSize });\n return page;\n });\n };\n\n const set = (page: number) => {\n setPage(page);\n onPageChange({ page, pageSize });\n };\n\n useEffect(() => {\n onPageCountChangeRef.current({ page, pageSize });\n }, [pageCount]);\n\n useEffect(() => {\n onPageSizeChangeRef.current({ page, pageSize });\n }, [pageSize]);\n\n return {\n page,\n set,\n currentPageSize: pageSize,\n isFirstPage,\n isLastPage,\n pageCount,\n next,\n prev\n };\n};\n"],"names":["useOffsetPagination","total","pageSize","initialPage","onPageChange","onPageCountChange","onPageSizeChange","page","setPage","useState","onPageChangeRef","useRef","onPageCountChangeRef","onPageSizeChangeRef","pageCount","isFirstPage","isLastPage","next","prevPage","prev","set","useEffect"],"mappings":";AA8DO,MAAMA,IAAsB,CAAC;AAAA,EAClC,OAAAC,IAAQ,OAAO;AAAA,EACf,UAAAC,IAAW;AAAA,EACX,aAAAC,IAAc;AAAA,EACd,cAAAC,IAAe,MAAM;AAAA,EAAA;AAAA,EACrB,mBAAAC,IAAoB,MAAM;AAAA,EAAA;AAAA,EAC1B,kBAAAC,IAAmB,MAAM;AAAA,EAAA;AAC3B,IAAgC,OAAkC;AAChE,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAASN,CAAW,GAEtCO,IAAkBC,EAAOP,CAAY,GACrCQ,IAAuBD,EAAON,CAAiB,GAC/CQ,IAAsBF,EAAOL,CAAgB;AAEnD,EAAAI,EAAgB,UAAUN,GAC1BQ,EAAqB,UAAUP,GAC/BQ,EAAoB,UAAUP;AAE9B,QAAMQ,IAAY,KAAK,IAAI,GAAG,KAAK,KAAKb,IAAQC,CAAQ,CAAC,GAEnDa,IAAcR,MAAS,GACvBS,IAAaT,MAASO,GAEtBG,IAAO,MAAM;AACjB,QAAID,EAAY,QAAOZ,EAAa,EAAE,MAAMU,GAAW,UAAAZ,GAAU;AAEjE,IAAAM,EAAQ,CAACU,MAAa;AACpB,YAAMX,IAAOW,IAAW;AACxB,aAAAd,EAAa,EAAE,MAAAG,GAAM,UAAAL,EAAA,CAAU,GACxBK;AAAAA,IAAA,CACR;AAAA,EAAA,GAGGY,IAAO,MAAM;AACjB,QAAIJ,EAAa,QAAOX,EAAa,EAAE,MAAM,GAAG,UAAAF,GAAU;AAE1D,IAAAM,EAAQ,CAACU,MAAa;AACpB,YAAMX,IAAOW,IAAW;AACxB,aAAAd,EAAa,EAAE,MAAAG,GAAM,UAAAL,EAAA,CAAU,GACxBK;AAAAA,IAAA,CACR;AAAA,EAAA,GAGGa,IAAM,CAACb,MAAiB;AAC5B,IAAAC,EAAQD,CAAI,GACZH,EAAa,EAAE,MAAAG,GAAM,UAAAL,EAAA,CAAU;AAAA,EAAA;AAGjC,SAAAmB,EAAU,MAAM;AACd,IAAAT,EAAqB,QAAQ,EAAE,MAAAL,GAAM,UAAAL,EAAA,CAAU;AAAA,EAAA,GAC9C,CAACY,CAAS,CAAC,GAEdO,EAAU,MAAM;AACd,IAAAR,EAAoB,QAAQ,EAAE,MAAAN,GAAM,UAAAL,EAAA,CAAU;AAAA,EAAA,GAC7C,CAACA,CAAQ,CAAC,GAEN;AAAA,IACL,MAAAK;AAAA,IACA,KAAAa;AAAA,IACA,iBAAiBlB;AAAA,IACjB,aAAAa;AAAA,IACA,YAAAC;AAAA,IACA,WAAAF;AAAA,IACA,MAAAG;AAAA,IACA,MAAAE;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useOffsetPagination.mjs","sources":["../../../../src/hooks/useOffsetPagination/useOffsetPagination.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationOptions {\n /** The initial page number */\n initialPage?: number;\n /** The number of items per page */\n initialPageSize?: number;\n /** The total number of items */\n total?: number;\n /** The callback function to be invoked when page changes */\n onChange?: ({ page, pageSize }: { page: number; pageSize: number }) => void;\n}\n\n/** The use offset pagination return type */\nexport interface UseOffsetPaginationReturn {\n /** Whether the current page is the first page */\n isFirstPage: boolean;\n /** Whether the current page is the last page */\n isLastPage: boolean;\n /** The current page number */\n page: number;\n /** The total number of pages */\n pageCount: number;\n /** The number of items per page */\n pageSize: number;\n /** The callback function to go to the next page */\n next: () => void;\n /** The callback function to go to the previous page */\n prev: () => void;\n /** The callback function to set the current page */\n setPage: (page: number) => void;\n /** The callback function to set the page size */\n setPageSize: (pageSize: number) => void;\n}\n\n/**\n * @name useOffsetPagination\n * @description - Hook that defines the logic when pagination\n * @category State\n *\n * @param {UseOffsetPaginationOptions} options - The options for the hook\n * @param {number} [options.total] - The total number of items\n * @param {number} [options.pageSize] - The number of items per page\n * @param {number} [options.initialPage] - The current page\n * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onChange] - The callback function to be invoked when page changes\n * @returns {UseOffsetPaginationReturn} - The state of the hook\n *\n * @example\n * const { currentPage, currentPageSize, pageCount, isFirstPage, isLastPage, prev, next } = useOffsetPagination({\n * total: 100,\n * initialPageSize: 10,\n * initialPage: 1\n * });\n */\nexport const useOffsetPagination = ({\n total = Number.POSITIVE_INFINITY,\n initialPage = 1,\n initialPageSize = 10,\n onChange = () => {}\n}: UseOffsetPaginationOptions = {}): UseOffsetPaginationReturn => {\n const [page, setPage] = useState(initialPage);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const pageCount = Math.max(1, Math.ceil(total / pageSize));\n\n const isFirstPage = page === 1;\n const isLastPage = page === pageCount;\n\n const next = () => {\n if (isLastPage) return onChange({ page: pageCount, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage + 1;\n onChange({ page, pageSize });\n return page;\n });\n };\n\n const prev = () => {\n if (isFirstPage) return onChange({ page: 1, pageSize });\n\n setPage((prevPage) => {\n const page = prevPage - 1;\n onChange({ page, pageSize });\n return page;\n });\n };\n\n const set = (page: number) => {\n setPage(page);\n onChange({ page, pageSize });\n };\n\n return {\n page,\n setPage: set,\n setPageSize,\n pageSize,\n isFirstPage,\n isLastPage,\n pageCount,\n next,\n prev\n };\n};\n"],"names":["useOffsetPagination","total","initialPage","initialPageSize","onChange","page","setPage","useState","pageSize","setPageSize","onChangeRef","useRef","pageCount","isFirstPage","isLastPage","prevPage"],"mappings":";AAuDO,MAAMA,IAAsB,CAAC;AAAA,EAClC,OAAAC,IAAQ,OAAO;AAAA,EACf,aAAAC,IAAc;AAAA,EACd,iBAAAC,IAAkB;AAAA,EAClB,UAAAC,IAAW,MAAM;AAAA,EAAA;AACnB,IAAgC,OAAkC;AAChE,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAASL,CAAW,GACtC,CAACM,GAAUC,CAAW,IAAIF,EAASJ,CAAe,GAElDO,IAAcC,EAAOP,CAAQ;AACnC,EAAAM,EAAY,UAAUN;AAEtB,QAAMQ,IAAY,KAAK,IAAI,GAAG,KAAK,KAAKX,IAAQO,CAAQ,CAAC,GAEnDK,IAAcR,MAAS,GACvBS,IAAaT,MAASO;AA2B5B,SAAO;AAAA,IACL,MAAAP;AAAA,IACA,SAPU,CAACA,MAAiB;AAC5B,MAAAC,EAAQD,CAAI,GACZD,EAAS,EAAE,MAAAC,GAAM,UAAAG,EAAA,CAAU;AAAA,IAAA;AAAA,IAM3B,aAAAC;AAAA,IACA,UAAAD;AAAA,IACA,aAAAK;AAAA,IACA,YAAAC;AAAA,IACA,WAAAF;AAAA,IACA,MAjCW,MAAM;AACjB,UAAIE,EAAY,QAAOV,EAAS,EAAE,MAAMQ,GAAW,UAAAJ,GAAU;AAE7D,MAAAF,EAAQ,CAACS,MAAa;AACpB,cAAMV,IAAOU,IAAW;AACxB,eAAAX,EAAS,EAAE,MAAAC,GAAM,UAAAG,EAAA,CAAU,GACpBH;AAAAA,MAAA,CACR;AAAA,IAAA;AAAA,IA2BD,MAxBW,MAAM;AACjB,UAAIQ,EAAa,QAAOT,EAAS,EAAE,MAAM,GAAG,UAAAI,GAAU;AAEtD,MAAAF,EAAQ,CAACS,MAAa;AACpB,cAAMV,IAAOU,IAAW;AACxB,eAAAX,EAAS,EAAE,MAAAC,GAAM,UAAAG,EAAA,CAAU,GACpBH;AAAAA,MAAA,CACR;AAAA,IAAA;AAAA,EAiBD;AAEJ;"}
@@ -0,0 +1,34 @@
1
+ /** The use object return type */
2
+ export interface UseObjectReturn<Value extends object> {
3
+ /** Checks if the object is empty */
4
+ empty: boolean;
5
+ /** Gets the keys of the object */
6
+ keys: Array<keyof Value>;
7
+ /** Gets the number of properties */
8
+ size: number;
9
+ /** The current object state */
10
+ value: Value;
11
+ /** Clears all properties from the object */
12
+ clear: () => void;
13
+ /** Checks if a property exists */
14
+ has: (key: keyof Value) => boolean;
15
+ /** Removes a property from the object */
16
+ remove: (key: keyof Value) => void;
17
+ /** Resets the object to its initial value */
18
+ reset: () => void;
19
+ /** Sets a property on the object */
20
+ set: (value: Partial<Value>) => void;
21
+ }
22
+ /**
23
+ * @name useObject
24
+ * @description - Hook that provides state and helper methods to manage an object
25
+ * @category State
26
+ *
27
+ * @template Value The type of the object
28
+ * @param {Value} initialValue The initial object value
29
+ * @returns {UseObjectReturn<Value>} An object containing the current state and functions to interact with the object
30
+ *
31
+ * @example
32
+ * const { value, set, reset, remove, update, merge, clear, toggle, has, keys, isEmpty, size } = useObject({ name: 'John', age: 30, isActive: true });
33
+ */
34
+ export declare function useObject<Value extends object>(initialValue: Value): UseObjectReturn<Value>;
@@ -3,29 +3,17 @@ export interface UseOffsetPaginationOptions {
3
3
  /** The initial page number */
4
4
  initialPage?: number;
5
5
  /** The number of items per page */
6
- pageSize?: number;
6
+ initialPageSize?: number;
7
7
  /** The total number of items */
8
8
  total?: number;
9
9
  /** The callback function to be invoked when page changes */
10
- onPageChange?: ({ page, pageSize }: {
11
- page: number;
12
- pageSize: number;
13
- }) => void;
14
- /** The callback function to be invoked when page count changes */
15
- onPageCountChange?: ({ page, pageSize }: {
16
- page: number;
17
- pageSize: number;
18
- }) => void;
19
- /** The callback function to be invoked when page size changes */
20
- onPageSizeChange?: ({ page, pageSize }: {
10
+ onChange?: ({ page, pageSize }: {
21
11
  page: number;
22
12
  pageSize: number;
23
13
  }) => void;
24
14
  }
25
15
  /** The use offset pagination return type */
26
16
  export interface UseOffsetPaginationReturn {
27
- /** The number of items per page */
28
- currentPageSize: number;
29
17
  /** Whether the current page is the first page */
30
18
  isFirstPage: boolean;
31
19
  /** Whether the current page is the last page */
@@ -34,12 +22,16 @@ export interface UseOffsetPaginationReturn {
34
22
  page: number;
35
23
  /** The total number of pages */
36
24
  pageCount: number;
25
+ /** The number of items per page */
26
+ pageSize: number;
37
27
  /** The callback function to go to the next page */
38
28
  next: () => void;
39
29
  /** The callback function to go to the previous page */
40
30
  prev: () => void;
41
31
  /** The callback function to set the current page */
42
- set: (page: number) => void;
32
+ setPage: (page: number) => void;
33
+ /** The callback function to set the page size */
34
+ setPageSize: (pageSize: number) => void;
43
35
  }
44
36
  /**
45
37
  * @name useOffsetPagination
@@ -50,19 +42,14 @@ export interface UseOffsetPaginationReturn {
50
42
  * @param {number} [options.total] - The total number of items
51
43
  * @param {number} [options.pageSize] - The number of items per page
52
44
  * @param {number} [options.initialPage] - The current page
53
- * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageChange] - The callback function to be invoked when page changes
54
- * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageCountChange] - The callback function to be invoked when page count changes
55
- * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onPageSizeChange] - The callback function to be invoked when page size changes
45
+ * @param {({ page, pageSize }: { page: number; pageSize: number }) => void} [options.onChange] - The callback function to be invoked when page changes
56
46
  * @returns {UseOffsetPaginationReturn} - The state of the hook
57
47
  *
58
48
  * @example
59
49
  * const { currentPage, currentPageSize, pageCount, isFirstPage, isLastPage, prev, next } = useOffsetPagination({
60
50
  * total: 100,
61
- * pageSize: 10,
62
- * page: 1,
63
- * onPageChange: (page) => {},
64
- * onPageCountChange: (pageCount) => {},
65
- * onPageSizeChange: (pageSize) => {}
51
+ * initialPageSize: 10,
52
+ * initialPage: 1
66
53
  * });
67
54
  */
68
- export declare const useOffsetPagination: ({ total, pageSize, initialPage, onPageChange, onPageCountChange, onPageSizeChange }?: UseOffsetPaginationOptions) => UseOffsetPaginationReturn;
55
+ export declare const useOffsetPagination: ({ total, initialPage, initialPageSize, onChange }?: UseOffsetPaginationOptions) => UseOffsetPaginationReturn;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siberiacancode/reactuse",
3
- "version": "0.2.28",
3
+ "version": "0.2.29",
4
4
  "description": "The ultimate collection of react hooks",
5
5
  "author": {
6
6
  "name": "SIBERIA CAN CODE 🧊",