@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.
- package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs +1 -1
- package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
- package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs +34 -41
- package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
- package/dist/types/hooks/useObject/useObject.d.ts +34 -0
- package/dist/types/hooks/useOffsetPagination/useOffsetPagination.d.ts +11 -24
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
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 {
|
|
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
|
|
2
|
-
const
|
|
3
|
-
total:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 [
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
*
|
|
62
|
-
*
|
|
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,
|
|
55
|
+
export declare const useOffsetPagination: ({ total, initialPage, initialPageSize, onChange }?: UseOffsetPaginationOptions) => UseOffsetPaginationReturn;
|