@zydon/common 2.9.21 → 2.9.22

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.
Files changed (99) hide show
  1. package/dist/chunk-5KEVIB7P.js +7 -0
  2. package/dist/chunk-5KEVIB7P.js.map +1 -0
  3. package/dist/{chunk-XO2DW5UL.js → chunk-6L44C7QM.js} +2 -2
  4. package/dist/{chunk-Y5W727NP.js → chunk-7IE367Y6.js} +2 -2
  5. package/dist/{chunk-UJMWTYPH.js → chunk-A7AOWJKX.js} +2 -2
  6. package/dist/{chunk-WLRSUL67.js → chunk-E5SBGF5G.js} +2 -2
  7. package/dist/chunk-GTPEQ3CM.js +8 -0
  8. package/dist/chunk-GTPEQ3CM.js.map +1 -0
  9. package/dist/chunk-HFDGIEZC.js +7 -0
  10. package/dist/chunk-HFDGIEZC.js.map +1 -0
  11. package/dist/{chunk-I3B772WD.js → chunk-HW6M33F3.js} +2 -2
  12. package/dist/{chunk-TGDOTL22.js → chunk-IF6OSFZ7.js} +2 -2
  13. package/dist/{chunk-F7RZH6OK.js → chunk-RU3QT4Q3.js} +2 -2
  14. package/dist/chunk-SV2GIIMQ.js +6 -0
  15. package/dist/chunk-SV2GIIMQ.js.map +1 -0
  16. package/dist/chunk-TXJ45CNA.js +7 -0
  17. package/dist/chunk-TXJ45CNA.js.map +1 -0
  18. package/dist/{chunk-HJPMWQB2.js → chunk-ULVPJ2DF.js} +3 -3
  19. package/dist/{chunk-BVPBGV4Y.js → chunk-ZMXVWURR.js} +2 -2
  20. package/dist/components/Analytics/OverviewAnalytics/index.js +3 -3
  21. package/dist/components/Analytics/PartnerAnalysis/index.js +2 -2
  22. package/dist/components/Analytics/index.js +1 -1
  23. package/dist/components/AutocompleteDetailed/index.js +2 -2
  24. package/dist/components/Avatar/index.d.ts +1 -1
  25. package/dist/components/AvatarButton/index.js +2 -2
  26. package/dist/components/CopyButton/index.js +2 -2
  27. package/dist/components/DataView/index.d.ts +1 -1
  28. package/dist/components/DataView/index.js +2 -2
  29. package/dist/components/DynamicDataView/index.js +6 -6
  30. package/dist/components/EasyCropModal/index.js +2 -2
  31. package/dist/components/FileUpload/index.js +4 -4
  32. package/dist/components/Filters/index.js +1 -1
  33. package/dist/components/ResponsivePopover/index.js +2 -2
  34. package/dist/components/SeoPreview/index.js +2 -2
  35. package/dist/components/TextMaxLine/index.js +2 -2
  36. package/dist/components/ToggleTheme/index.js +2 -2
  37. package/dist/components/animate/index.js +2 -2
  38. package/dist/components/form/AutocompleteDetailed/index.js +2 -2
  39. package/dist/components/form/FileUpload/index.js +4 -4
  40. package/dist/hooks/useCopyToClipboard.d.ts +1 -0
  41. package/dist/hooks/useCopyToClipboard.js +1 -1
  42. package/dist/hooks/useDatagrid.d.ts +1 -0
  43. package/dist/hooks/useDatagrid.js +1 -1
  44. package/dist/hooks/useDynamicAutocomplete.d.ts +1 -0
  45. package/dist/hooks/useDynamicAutocomplete.js +1 -1
  46. package/dist/hooks/useDynamicAutocomplete.js.map +1 -1
  47. package/dist/hooks/useFiltersSearchParams.d.ts +2 -1
  48. package/dist/hooks/useFiltersSearchParams.js +2 -2
  49. package/dist/hooks/useFiltersSearchParams.js.map +1 -1
  50. package/dist/hooks/useInfiniteScroll.d.ts +1 -0
  51. package/dist/hooks/useInfiniteScroll.js +2 -2
  52. package/dist/hooks/useInfiniteScroll.js.map +1 -1
  53. package/dist/hooks/useLocalStorage.d.ts +6 -5
  54. package/dist/hooks/useLocalStorage.js +1 -1
  55. package/dist/hooks/useOnClickOutside.d.ts +1 -0
  56. package/dist/hooks/useOnClickOutside.js +2 -2
  57. package/dist/hooks/useOnClickOutside.js.map +1 -1
  58. package/dist/hooks/usePagination.d.ts +1 -0
  59. package/dist/hooks/usePagination.js +2 -2
  60. package/dist/hooks/usePagination.js.map +1 -1
  61. package/dist/hooks/useReconciliation.d.ts +1 -0
  62. package/dist/hooks/useReconciliation.js +2 -2
  63. package/dist/hooks/useReconciliation.js.map +1 -1
  64. package/dist/hooks/useResponsive.d.ts +1 -0
  65. package/dist/hooks/useResponsive.js +1 -1
  66. package/dist/hooks/useScrollOffSetTop.d.ts +1 -0
  67. package/dist/hooks/useScrollOffSetTop.js +1 -1
  68. package/dist/hooks/useScrollOffSetTop.js.map +1 -1
  69. package/dist/hooks/useSnackbar.d.ts +1 -1
  70. package/dist/hooks/useThemeToggle.d.ts +1 -0
  71. package/dist/hooks/useThemeToggle.js +1 -1
  72. package/dist/hooks/useUploadImage.d.ts +1 -0
  73. package/dist/hooks/useUploadImage.js +2 -2
  74. package/dist/hooks/useUploadImage.js.map +1 -1
  75. package/dist/index.d.ts +2 -2
  76. package/dist/index.js +1 -1
  77. package/dist/theme/core/index.d.ts +1 -1
  78. package/dist/theme/styles/index.d.ts +13 -13
  79. package/package.json +1 -1
  80. package/dist/chunk-2HAPOY5M.js +0 -8
  81. package/dist/chunk-2HAPOY5M.js.map +0 -1
  82. package/dist/chunk-2ZJUGM2S.js +0 -7
  83. package/dist/chunk-2ZJUGM2S.js.map +0 -1
  84. package/dist/chunk-CFNATBO2.js +0 -6
  85. package/dist/chunk-CFNATBO2.js.map +0 -1
  86. package/dist/chunk-RMYYQLRJ.js +0 -7
  87. package/dist/chunk-RMYYQLRJ.js.map +0 -1
  88. package/dist/chunk-U4I7JPER.js +0 -7
  89. package/dist/chunk-U4I7JPER.js.map +0 -1
  90. package/dist/{chunk-XO2DW5UL.js.map → chunk-6L44C7QM.js.map} +0 -0
  91. package/dist/{chunk-Y5W727NP.js.map → chunk-7IE367Y6.js.map} +0 -0
  92. package/dist/{chunk-UJMWTYPH.js.map → chunk-A7AOWJKX.js.map} +0 -0
  93. package/dist/{chunk-WLRSUL67.js.map → chunk-E5SBGF5G.js.map} +0 -0
  94. package/dist/{chunk-I3B772WD.js.map → chunk-HW6M33F3.js.map} +0 -0
  95. package/dist/{chunk-TGDOTL22.js.map → chunk-IF6OSFZ7.js.map} +0 -0
  96. package/dist/{chunk-F7RZH6OK.js.map → chunk-RU3QT4Q3.js.map} +0 -0
  97. package/dist/{chunk-HJPMWQB2.js.map → chunk-ULVPJ2DF.js.map} +0 -0
  98. package/dist/{chunk-BVPBGV4Y.js.map → chunk-ZMXVWURR.js.map} +0 -0
  99. package/dist/{index-5a5e5dc8.d.ts → index-c8f1e6e7.d.ts} +12 -12
@@ -1,9 +1,9 @@
1
1
  export { a as FilterOperator, b as SortType } from '../../chunk-P64QBDAO.js';
2
2
  import '../../chunk-4P2L7UJA.js';
3
- import { a as a$4 } from '../../chunk-WLRSUL67.js';
3
+ import { a as a$4 } from '../../chunk-E5SBGF5G.js';
4
4
  import { d, c } from '../../chunk-A7QSCOUE.js';
5
5
  import { h, a as a$6 } from '../../chunk-OF6623HG.js';
6
- import { d as d$1 } from '../../chunk-TGDOTL22.js';
6
+ import { d as d$1 } from '../../chunk-IF6OSFZ7.js';
7
7
  import '../../chunk-3753JOQM.js';
8
8
  import '../../chunk-4F2NKGF6.js';
9
9
  import '../../chunk-T3RP2QXG.js';
@@ -11,7 +11,7 @@ import '../../chunk-LZQ7OFKO.js';
11
11
  import '../../chunk-NIQW2J3M.js';
12
12
  import '../../chunk-6U5LS7MP.js';
13
13
  import '../../chunk-PRWQQJDL.js';
14
- import { a as a$5 } from '../../chunk-Y5W727NP.js';
14
+ import { a as a$5 } from '../../chunk-7IE367Y6.js';
15
15
  import '../../chunk-5J35UAV6.js';
16
16
  import { e } from '../../chunk-XUDTPZHF.js';
17
17
  import '../../chunk-UVPQR2Q2.js';
@@ -25,14 +25,14 @@ import { a } from '../../chunk-JGASCDBR.js';
25
25
  import '../../chunk-TPOL2YXC.js';
26
26
  import '../../chunk-IAOMC4C4.js';
27
27
  import { a as a$1 } from '../../chunk-E3R7W7GK.js';
28
- import { a as a$7 } from '../../chunk-2HAPOY5M.js';
28
+ import { a as a$7 } from '../../chunk-GTPEQ3CM.js';
29
29
  import '../../chunk-LQRRMVFN.js';
30
- import { b } from '../../chunk-2ZJUGM2S.js';
30
+ import { b } from '../../chunk-TXJ45CNA.js';
31
31
  import '../../chunk-FJBC6QA5.js';
32
32
  import '../../chunk-POTVACYB.js';
33
33
  import '../../chunk-ET3WPQIO.js';
34
34
  import '../../chunk-GLRLKFPS.js';
35
- import '../../chunk-CFNATBO2.js';
35
+ import '../../chunk-SV2GIIMQ.js';
36
36
  import { a as a$2 } from '../../chunk-GNNZB7DN.js';
37
37
  import { memo, useState, useMemo, useCallback, useEffect, useRef } from 'react';
38
38
  import Yo from 'react-fast-compare';
@@ -1,7 +1,7 @@
1
- export { a as default } from '../../chunk-XO2DW5UL.js';
1
+ export { a as default } from '../../chunk-6L44C7QM.js';
2
2
  import '../../chunk-KWHHEUVE.js';
3
3
  import '../../chunk-KGLU4CR2.js';
4
4
  import '../../chunk-JGASCDBR.js';
5
5
  import '../../chunk-TPOL2YXC.js';
6
- import '../../chunk-2ZJUGM2S.js';
6
+ import '../../chunk-TXJ45CNA.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1,16 +1,16 @@
1
- export { r as ContentType, s as FileContentType, k as FileThumbnail, a as HelperText, b as MultiFilePreview, u as MultipleFileUpload, v as MultipleImageUpload, c as SingleFilePreview, w as SingleFileUpload, x as SingleImageUpload, y as UploadAvatar, z as UploadSimpleBox, n as compressImageWithoutCrop, m as convertToWebP, p as encodeFilenameForHeader, f as fileFormat, d as fileFormatByMimeType, e as fileFormatByName, i as fileNameByUrl, g as fileThumb, j as fileThumbnailClasses, h as fileTypeByUrl, o as getFileNameFromContentDisposition, l as isImageFile, q as useDropzoneUploader, t as useFileUploadService } from '../../chunk-HJPMWQB2.js';
1
+ export { r as ContentType, s as FileContentType, k as FileThumbnail, a as HelperText, b as MultiFilePreview, u as MultipleFileUpload, v as MultipleImageUpload, c as SingleFilePreview, w as SingleFileUpload, x as SingleImageUpload, y as UploadAvatar, z as UploadSimpleBox, n as compressImageWithoutCrop, m as convertToWebP, p as encodeFilenameForHeader, f as fileFormat, d as fileFormatByMimeType, e as fileFormatByName, i as fileNameByUrl, g as fileThumb, j as fileThumbnailClasses, h as fileTypeByUrl, o as getFileNameFromContentDisposition, l as isImageFile, q as useDropzoneUploader, t as useFileUploadService } from '../../chunk-ULVPJ2DF.js';
2
2
  import '../../chunk-7VHRKBKI.js';
3
- import '../../chunk-XO2DW5UL.js';
3
+ import '../../chunk-6L44C7QM.js';
4
4
  import '../../chunk-KWHHEUVE.js';
5
5
  import '../../chunk-KGLU4CR2.js';
6
6
  import '../../chunk-OF6623HG.js';
7
7
  import '../../chunk-3KHPM6SJ.js';
8
8
  import '../../chunk-6U5LS7MP.js';
9
9
  import '../../chunk-5J35UAV6.js';
10
- import '../../chunk-I3B772WD.js';
10
+ import '../../chunk-HW6M33F3.js';
11
11
  import '../../chunk-JGASCDBR.js';
12
12
  import '../../chunk-TPOL2YXC.js';
13
13
  import '../../chunk-XNKYJHNL.js';
14
- import '../../chunk-2ZJUGM2S.js';
14
+ import '../../chunk-TXJ45CNA.js';
15
15
  import '../../chunk-SVX7EWV4.js';
16
16
  //# sourceMappingURL=index.js.map
@@ -8,7 +8,7 @@ import { a as a$4 } from '../../chunk-BT6L5NSF.js';
8
8
  import { a as a$6 } from '../../chunk-JGASCDBR.js';
9
9
  import '../../chunk-TPOL2YXC.js';
10
10
  import { a as a$8 } from '../../chunk-LQRRMVFN.js';
11
- import { b } from '../../chunk-2ZJUGM2S.js';
11
+ import { b } from '../../chunk-TXJ45CNA.js';
12
12
  import { b as b$1, a as a$1, d, f, j as j$1, i } from '../../chunk-CG6F55WN.js';
13
13
  import '../../chunk-VFDADOF2.js';
14
14
  import { memo, useState, useMemo, useEffect, useCallback, useRef } from 'react';
@@ -1,3 +1,3 @@
1
- export { a as default } from '../../chunk-WLRSUL67.js';
2
- import '../../chunk-2ZJUGM2S.js';
1
+ export { a as default } from '../../chunk-E5SBGF5G.js';
2
+ import '../../chunk-TXJ45CNA.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- import { a as a$1 } from '../../chunk-F7RZH6OK.js';
1
+ import { a as a$1 } from '../../chunk-RU3QT4Q3.js';
2
2
  import { a } from '../../chunk-JGASCDBR.js';
3
3
  import '../../chunk-TPOL2YXC.js';
4
- import '../../chunk-2ZJUGM2S.js';
4
+ import '../../chunk-TXJ45CNA.js';
5
5
  import p from '@mui/material/Box';
6
6
  import o from '@mui/material/Stack';
7
7
  import r from '@mui/material/Typography';
@@ -1,3 +1,3 @@
1
- export { a as default } from '../../chunk-F7RZH6OK.js';
2
- import '../../chunk-2ZJUGM2S.js';
1
+ export { a as default } from '../../chunk-RU3QT4Q3.js';
2
+ import '../../chunk-TXJ45CNA.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- export { a as default } from '../../chunk-UJMWTYPH.js';
2
- import '../../chunk-U4I7JPER.js';
1
+ export { a as default } from '../../chunk-A7AOWJKX.js';
2
+ import '../../chunk-5KEVIB7P.js';
3
3
  import '../../chunk-JM3SE72J.js';
4
4
  import '../../chunk-373WGZZL.js';
5
5
  import '../../chunk-WUFEPE2G.js';
@@ -1,3 +1,3 @@
1
- export { t as AnimatePresence, r as MotionContainer, s as MotionViewport, l as TRANSITION, u as m, v as useMotionValueEvent, w as useScroll, b as varBgColor, c as varBgKenburns, d as varBgPan, h as varBounce, i as varContainer, j as varFade, k as varFlip, a as varHover, m as varPath, n as varRotate, o as varScale, p as varSlide, f as varTranEnter, g as varTranExit, e as varTranHover, q as varZoom } from '../../chunk-I3B772WD.js';
2
- import '../../chunk-2ZJUGM2S.js';
1
+ export { t as AnimatePresence, r as MotionContainer, s as MotionViewport, l as TRANSITION, u as m, v as useMotionValueEvent, w as useScroll, b as varBgColor, c as varBgKenburns, d as varBgPan, h as varBounce, i as varContainer, j as varFade, k as varFlip, a as varHover, m as varPath, n as varRotate, o as varScale, p as varSlide, f as varTranEnter, g as varTranExit, e as varTranHover, q as varZoom } from '../../chunk-HW6M33F3.js';
2
+ import '../../chunk-TXJ45CNA.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- import { a } from '../../../chunk-BVPBGV4Y.js';
1
+ import { a } from '../../../chunk-ZMXVWURR.js';
2
2
  import '../../../chunk-VR3K2Y2C.js';
3
- import '../../../chunk-2ZJUGM2S.js';
3
+ import '../../../chunk-TXJ45CNA.js';
4
4
  import { useFormContext, Controller } from 'react-hook-form';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,17 +1,17 @@
1
- import { x, u, v, w } from '../../../chunk-HJPMWQB2.js';
1
+ import { x, u, v, w } from '../../../chunk-ULVPJ2DF.js';
2
2
  import '../../../chunk-7VHRKBKI.js';
3
- import '../../../chunk-XO2DW5UL.js';
3
+ import '../../../chunk-6L44C7QM.js';
4
4
  import '../../../chunk-KWHHEUVE.js';
5
5
  import '../../../chunk-KGLU4CR2.js';
6
6
  import '../../../chunk-OF6623HG.js';
7
7
  import '../../../chunk-3KHPM6SJ.js';
8
8
  import '../../../chunk-6U5LS7MP.js';
9
9
  import '../../../chunk-5J35UAV6.js';
10
- import '../../../chunk-I3B772WD.js';
10
+ import '../../../chunk-HW6M33F3.js';
11
11
  import '../../../chunk-JGASCDBR.js';
12
12
  import '../../../chunk-TPOL2YXC.js';
13
13
  import '../../../chunk-XNKYJHNL.js';
14
- import '../../../chunk-2ZJUGM2S.js';
14
+ import '../../../chunk-TXJ45CNA.js';
15
15
  import '../../../chunk-SVX7EWV4.js';
16
16
  import { useFormContext, Controller } from 'react-hook-form';
17
17
  import { useState, useEffect, useMemo, useRef } from 'react';
@@ -4,6 +4,7 @@ type ReturnType = {
4
4
  copy: CopyFn;
5
5
  copiedText: CopiedValue;
6
6
  };
7
+
7
8
  declare const useCopyToClipboard: () => ReturnType;
8
9
 
9
10
  export { useCopyToClipboard as default };
@@ -1,2 +1,2 @@
1
- export { a as default } from '../chunk-CFNATBO2.js';
1
+ export { a as default } from '../chunk-SV2GIIMQ.js';
2
2
  //# sourceMappingURL=useCopyToClipboard.js.map
@@ -9,6 +9,7 @@ interface State {
9
9
  sort?: string;
10
10
  dir?: 'asc' | 'desc';
11
11
  }
12
+
12
13
  declare const useDatagrid: ({ page, perPage, dir, search, searchValue, sort }?: State) => {
13
14
  apiRef: MutableRefObject<GridApiPremium>;
14
15
  page: number;
@@ -1,2 +1,2 @@
1
- export { a as default } from '../chunk-RMYYQLRJ.js';
1
+ export { a as default } from '../chunk-HFDGIEZC.js';
2
2
  //# sourceMappingURL=useDatagrid.js.map
@@ -18,6 +18,7 @@ interface UseDynamicAutocompleteConfig<TItem> {
18
18
  mapOption?: ((item: TItem) => Option) | MapOptionConfig;
19
19
  onSelect?: (value: string, item?: TItem) => void;
20
20
  }
21
+
21
22
  declare const useDynamicAutocomplete: <TItem>({ fieldPath, useQuery, queryParams, mapOption, onSelect, }: UseDynamicAutocompleteConfig<TItem>) => {
22
23
  data: {
23
24
  items: TItem[];
@@ -2,7 +2,7 @@ import { a } from '../chunk-GNNZB7DN.js';
2
2
  import { useMemo, useState, useRef, useCallback, useEffect } from 'react';
3
3
  import { useFormContext, useWatch } from 'react-hook-form';
4
4
 
5
- var X=n=>n,Y={value:"id",label:"name"},Z=n=>{if(typeof n=="function")return n;let u=n??Y;return s=>({label:String(s[u.label]??""),value:String(s[u.value]??"")})},_=({fieldPath:n,useQuery:u,queryParams:s={},mapOption:i,onSelect:p})=>{let g=useMemo(()=>Z(i),[i]),U=typeof i=="object"&&i!==null?i.label:"name",{control:w,setValue:x}=useFormContext(),[h,F]=useState(!1),[I,S]=useState(0),[m,b]=useState([]),[A,y]=useState(!0),T=useRef(!1),D=s.perPage||25,j=`${n}.id`,C=`${n}.${U}`,f=useWatch({control:w,name:j}),O=useWatch({control:w,name:C}),[P,V]=useState(),v=a(P,400),q=P!==v,H=useCallback(e=>{V(e||void 0);},[]),E=useCallback(()=>{V(void 0);},[]),{data:M,isLoading:N,isFetching:r}=u({...s,search:v,page:I},{skip:!h}),d=useMemo(()=>M?.items||[],[M]);useEffect(()=>{S(0),b([]),y(!0);},[v]),useEffect(()=>{r||!h||(b(e=>{if(I===0)return d;let t=new Set(e.map(l=>String(l.id??""))),a=d.filter(l=>!t.has(String(l.id??"")));return [...e,...a]}),y(d.length>=D),T.current=!1);},[d,r,I,D,h]);let k=useMemo(()=>{let e=m.map(g);return f&&O&&!e.some(t=>String(t.value)===String(f))&&e.unshift({label:O,value:f}),e.filter(t=>t.value!==null&&t.value!==void 0)},[m,f,O,g]),Q=useCallback(e=>{let t=k.find(a=>String(a.value)===String(e))?.label;if(x(C,t),p){let a=m.find(l=>String(g(l).value)===String(e));p(e,a);}},[k,x,C,p,m,g]),W=useCallback(()=>{F(!0);},[]),z=useCallback(()=>{F(!1),S(0),b([]),y(!0),E();},[E]),B=useCallback(()=>{!r&&!T.current&&A&&(T.current=!0,S(e=>e+1));},[r,A]);return {data:M,options:k,loading:N||r,onSearch:H,onSelectOption:Q,onOpen:W,onClose:z,onScrollEnd:B,filterOptions:X,noOptionsText:q?"Carregando...":void 0}},oe=_;
5
+ var X=n=>n,Y={value:"id",label:"name"},Z=n=>{if(typeof n=="function")return n;let u=n??Y;return s=>({label:String(s[u.label]??""),value:String(s[u.value]??"")})},_=({fieldPath:n,useQuery:u,queryParams:s={},mapOption:i,onSelect:d})=>{let m=useMemo(()=>Z(i),[i]),j=typeof i=="object"&&i!==null?i.label:"name",{control:D,setValue:R}=useFormContext(),[h,w]=useState(!1),[y,S]=useState(0),[f,I]=useState([]),[x,b]=useState(!0),C=useRef(!1),F=s.perPage||25,H=`${n}.id`,M=`${n}.${j}`,p=useWatch({control:D,name:H}),O=useWatch({control:D,name:M}),[V,E]=useState(),T=a(V,400),L=V!==T,N=useCallback(e=>{E(e||void 0);},[]),U=useCallback(()=>{E(void 0);},[]),{data:k,isLoading:W,isFetching:r}=u({...s,search:T,page:y},{skip:!h}),g=useMemo(()=>k?.items||[],[k]);useEffect(()=>{S(0),I([]),b(!0);},[T]),useEffect(()=>{r||!h||(I(e=>{if(y===0)return g;let t=new Set(e.map(c=>String(c.id??""))),a=g.filter(c=>!t.has(String(c.id??"")));return [...e,...a]}),b(g.length>=F),C.current=!1);},[g,r,y,F,h]);let v=useMemo(()=>{let e=f.map(m);return p&&O&&!e.some(t=>String(t.value)===String(p))&&e.unshift({label:O,value:p}),e.filter(t=>t.value!==null&&t.value!==void 0)},[f,p,O,m]),q=useCallback(e=>{let t=v.find(a=>String(a.value)===String(e))?.label;if(R(M,t),d){let a=f.find(c=>String(m(c).value)===String(e));d(e,a);}},[v,R,M,d,f,m]),z=useCallback(()=>{w(!0);},[]),B=useCallback(()=>{w(!1),S(0),I([]),b(!0),U();},[U]),G=useCallback(()=>{!r&&!C.current&&x&&(C.current=!0,S(e=>e+1));},[r,x]);return {data:k,options:v,loading:W||r,onSearch:N,onSelectOption:q,onOpen:z,onClose:B,onScrollEnd:G,filterOptions:X,noOptionsText:L?"Carregando...":void 0}},oe=_;
6
6
 
7
7
  export { oe as default };
8
8
  //# sourceMappingURL=useDynamicAutocomplete.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useDynamicAutocomplete.ts"],"names":["useCallback","useEffect","useMemo","useRef","useState","useFormContext","useWatch","passthrough","o","defaultMapKeys","resolveMapper","mapOption","keys","item","useDynamicAutocomplete","fieldPath","useQuery","queryParams","onSelect","mapper","labelKey","control","setValue","open","setOpen","page","setPage","allItems","setAllItems","hasMore","setHasMore","loadingMoreRef","perPage","idField","nameField","entityId","entityName","inputValue","setInputValue","search","useDebounceValue_default","searching","onSearch","term","finishSearch","data","isLoading","isFetching","currentPageItems","prev","existingIds","i","unique","options","list","opt","handleSelectOption","value","label","option","handleOpen","handleClose","handleScrollEnd","p","useDynamicAutocomplete_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\n\nimport { Option } from 'types/option';\n\nimport useDebounceValue from './useDebounceValue';\n\nconst passthrough = (o: Option[]) => o;\n\ntype MapOptionConfig = { value: string; label: string };\n\nconst defaultMapKeys: MapOptionConfig = { value: 'id', label: 'name' };\n\nconst resolveMapper = <TItem>(\n mapOption?: ((item: TItem) => Option) | MapOptionConfig,\n): ((item: TItem) => Option) => {\n if (typeof mapOption === 'function') return mapOption;\n const keys = mapOption ?? defaultMapKeys;\n return (item: TItem) => ({\n label: String((item as Record<string, unknown>)[keys.label] ?? ''),\n value: String((item as Record<string, unknown>)[keys.value] ?? ''),\n });\n};\n\nexport interface UseDynamicAutocompleteConfig<TItem> {\n /** Form field path — watches `${fieldPath}.id` and `${fieldPath}.{mapOption.label}` */\n fieldPath: string;\n /** RTK Query hook (e.g. useGetCategoriesQuery) */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery: (...args: any[]) => {\n data?: { items: TItem[] };\n isLoading: boolean;\n isFetching: boolean;\n };\n /** Static query params merged with { search } on each call */\n queryParams?: Record<string, unknown>;\n /**\n * Map an API entity to an Option { label, value }.\n * Also determines the form field name: `${fieldPath}.${mapOption.label}`.\n * - Config: `{ value: 'code', label: 'description' }`\n * - Function: falls back to `${fieldPath}.name`\n * - Omit: defaults to `{ value: 'id', label: 'name' }`\n */\n mapOption?: ((item: TItem) => Option) | MapOptionConfig;\n /** Called after an option is selected, with the raw item if found. */\n onSelect?: (value: string, item?: TItem) => void;\n}\n\nconst useDynamicAutocomplete = <TItem>({\n fieldPath,\n useQuery,\n queryParams = {},\n mapOption,\n onSelect,\n}: UseDynamicAutocompleteConfig<TItem>) => {\n const mapper = useMemo(() => resolveMapper(mapOption), [mapOption]);\n const labelKey =\n typeof mapOption === 'object' && mapOption !== null\n ? mapOption.label\n : 'name';\n const { control, setValue } = useFormContext();\n const [open, setOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [allItems, setAllItems] = useState<TItem[]>([]);\n const [hasMore, setHasMore] = useState(true);\n const loadingMoreRef = useRef(false);\n\n const perPage = (queryParams.perPage as number) || 25;\n\n const idField = `${fieldPath}.id`;\n const nameField = `${fieldPath}.${labelKey}`;\n\n const entityId = useWatch({ control, name: idField });\n const entityName = useWatch({ control, name: nameField });\n\n // Simple debounced search\n const [inputValue, setInputValue] = useState<string>();\n const search = useDebounceValue(inputValue, 400);\n const searching = inputValue !== search;\n\n const onSearch = useCallback((term?: string) => {\n setInputValue(term || undefined);\n }, []);\n\n const finishSearch = useCallback(() => {\n setInputValue(undefined);\n }, []);\n\n const { data, isLoading, isFetching } = useQuery(\n { ...queryParams, search, page },\n { skip: !open },\n );\n\n const currentPageItems = useMemo(() => data?.items || [], [data]);\n\n useEffect(() => {\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n }, [search]);\n\n useEffect(() => {\n if (isFetching || !open) return;\n\n setAllItems(prev => {\n if (page === 0) return currentPageItems;\n const existingIds = new Set(\n prev.map(i => String((i as Record<string, unknown>).id ?? '')),\n );\n const unique = currentPageItems.filter(\n i => !existingIds.has(String((i as Record<string, unknown>).id ?? '')),\n );\n return [...prev, ...unique];\n });\n\n setHasMore(currentPageItems.length >= perPage);\n loadingMoreRef.current = false;\n }, [currentPageItems, isFetching, page, perPage, open]);\n\n const options = useMemo(() => {\n const list = allItems.map(mapper);\n\n if (\n entityId &&\n entityName &&\n !list.some(item => String(item.value) === String(entityId))\n ) {\n list.unshift({ label: entityName, value: entityId });\n }\n\n return list.filter(opt => opt.value !== null && opt.value !== undefined);\n }, [allItems, entityId, entityName, mapper]);\n\n const handleSelectOption = useCallback(\n (value: string) => {\n const label = options.find(\n option => String(option.value) === String(value),\n )?.label;\n setValue(nameField, label);\n\n if (onSelect) {\n const item = allItems.find(\n i => String(mapper(i).value) === String(value),\n );\n onSelect(value, item);\n }\n },\n [options, setValue, nameField, onSelect, allItems, mapper],\n );\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n finishSearch();\n }, [finishSearch]);\n\n const handleScrollEnd = useCallback(() => {\n if (!isFetching && !loadingMoreRef.current && hasMore) {\n loadingMoreRef.current = true;\n setPage(p => p + 1);\n }\n }, [isFetching, hasMore]);\n\n return {\n data,\n options,\n loading: isLoading || isFetching,\n onSearch,\n onSelectOption: handleSelectOption,\n onOpen: handleOpen,\n onClose: handleClose,\n onScrollEnd: handleScrollEnd,\n filterOptions: passthrough,\n noOptionsText: searching ? 'Carregando...' : undefined,\n };\n};\n\nexport default useDynamicAutocomplete;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useDynamicAutocomplete.ts"],"names":["useCallback","useEffect","useMemo","useRef","useState","useFormContext","useWatch","passthrough","o","defaultMapKeys","resolveMapper","mapOption","keys","item","useDynamicAutocomplete","fieldPath","useQuery","queryParams","onSelect","mapper","labelKey","control","setValue","open","setOpen","page","setPage","allItems","setAllItems","hasMore","setHasMore","loadingMoreRef","perPage","idField","nameField","entityId","entityName","inputValue","setInputValue","search","useDebounceValue_default","searching","onSearch","term","finishSearch","data","isLoading","isFetching","currentPageItems","prev","existingIds","i","unique","options","list","opt","handleSelectOption","value","label","option","handleOpen","handleClose","handleScrollEnd","p","useDynamicAutocomplete_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\n\nimport { Option } from 'types/option';\n\nimport useDebounceValue from './useDebounceValue';\nimport type {\n MapOptionConfig,\n UseDynamicAutocompleteConfig,\n} from './useDynamicAutocomplete.types';\n\nconst passthrough = (o: Option[]) => o;\n\nconst defaultMapKeys: MapOptionConfig = { value: 'id', label: 'name' };\n\nconst resolveMapper = <TItem>(\n mapOption?: ((item: TItem) => Option) | MapOptionConfig,\n): ((item: TItem) => Option) => {\n if (typeof mapOption === 'function') return mapOption;\n const keys = mapOption ?? defaultMapKeys;\n return (item: TItem) => ({\n label: String((item as Record<string, unknown>)[keys.label] ?? ''),\n value: String((item as Record<string, unknown>)[keys.value] ?? ''),\n });\n};\n\nconst useDynamicAutocomplete = <TItem>({\n fieldPath,\n useQuery,\n queryParams = {},\n mapOption,\n onSelect,\n}: UseDynamicAutocompleteConfig<TItem>) => {\n const mapper = useMemo(() => resolveMapper(mapOption), [mapOption]);\n const labelKey =\n typeof mapOption === 'object' && mapOption !== null\n ? mapOption.label\n : 'name';\n const { control, setValue } = useFormContext();\n const [open, setOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [allItems, setAllItems] = useState<TItem[]>([]);\n const [hasMore, setHasMore] = useState(true);\n const loadingMoreRef = useRef(false);\n\n const perPage = (queryParams.perPage as number) || 25;\n\n const idField = `${fieldPath}.id`;\n const nameField = `${fieldPath}.${labelKey}`;\n\n const entityId = useWatch({ control, name: idField });\n const entityName = useWatch({ control, name: nameField });\n\n // Simple debounced search\n const [inputValue, setInputValue] = useState<string>();\n const search = useDebounceValue(inputValue, 400);\n const searching = inputValue !== search;\n\n const onSearch = useCallback((term?: string) => {\n setInputValue(term || undefined);\n }, []);\n\n const finishSearch = useCallback(() => {\n setInputValue(undefined);\n }, []);\n\n const { data, isLoading, isFetching } = useQuery(\n { ...queryParams, search, page },\n { skip: !open },\n );\n\n const currentPageItems = useMemo(() => data?.items || [], [data]);\n\n useEffect(() => {\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n }, [search]);\n\n useEffect(() => {\n if (isFetching || !open) return;\n\n setAllItems(prev => {\n if (page === 0) return currentPageItems;\n const existingIds = new Set(\n prev.map(i => String((i as Record<string, unknown>).id ?? '')),\n );\n const unique = currentPageItems.filter(\n i => !existingIds.has(String((i as Record<string, unknown>).id ?? '')),\n );\n return [...prev, ...unique];\n });\n\n setHasMore(currentPageItems.length >= perPage);\n loadingMoreRef.current = false;\n }, [currentPageItems, isFetching, page, perPage, open]);\n\n const options = useMemo(() => {\n const list = allItems.map(mapper);\n\n if (\n entityId &&\n entityName &&\n !list.some(item => String(item.value) === String(entityId))\n ) {\n list.unshift({ label: entityName, value: entityId });\n }\n\n return list.filter(opt => opt.value !== null && opt.value !== undefined);\n }, [allItems, entityId, entityName, mapper]);\n\n const handleSelectOption = useCallback(\n (value: string) => {\n const label = options.find(\n option => String(option.value) === String(value),\n )?.label;\n setValue(nameField, label);\n\n if (onSelect) {\n const item = allItems.find(\n i => String(mapper(i).value) === String(value),\n );\n onSelect(value, item);\n }\n },\n [options, setValue, nameField, onSelect, allItems, mapper],\n );\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n finishSearch();\n }, [finishSearch]);\n\n const handleScrollEnd = useCallback(() => {\n if (!isFetching && !loadingMoreRef.current && hasMore) {\n loadingMoreRef.current = true;\n setPage(p => p + 1);\n }\n }, [isFetching, hasMore]);\n\n return {\n data,\n options,\n loading: isLoading || isFetching,\n onSearch,\n onSelectOption: handleSelectOption,\n onOpen: handleOpen,\n onClose: handleClose,\n onScrollEnd: handleScrollEnd,\n filterOptions: passthrough,\n noOptionsText: searching ? 'Carregando...' : undefined,\n };\n};\n\nexport default useDynamicAutocomplete;\nexport type {\n UseDynamicAutocompleteConfig,\n} from './useDynamicAutocomplete.types';\n"]}
@@ -1,4 +1,4 @@
1
- import { FilterValue, Type, Period, ThisYearMode } from '../types/period.js';
1
+ import { Type, FilterValue, Period, ThisYearMode } from '../types/period.js';
2
2
 
3
3
  interface UseFiltersSearchParamsOptions {
4
4
  type?: keyof typeof Type;
@@ -8,6 +8,7 @@ interface UseFiltersSearchParamsOptions {
8
8
  defaultPeriod?: keyof typeof Period;
9
9
  thisYearMode?: keyof typeof ThisYearMode;
10
10
  }
11
+
11
12
  declare const useFiltersSearchParams: ({ type, paramKey, dataKey, defaultValue, defaultPeriod, thisYearMode, }?: UseFiltersSearchParamsOptions) => [FilterValue, (value: FilterValue) => void];
12
13
 
13
14
  export { useFiltersSearchParams as default };
@@ -2,7 +2,7 @@ import { e, j, i, h } from '../chunk-CG6F55WN.js';
2
2
  import '../chunk-VFDADOF2.js';
3
3
  import { useState, useRef, useEffect, useCallback } from 'react';
4
4
 
5
- var u=typeof window>"u",T=({type:t="FREE",paramKey:o=h.paramKey,dataKey:n=h.dataKey,defaultValue:F,defaultPeriod:S,thisYearMode:a}={})=>{let[P,f]=useState(()=>{let e$1=F??e(t,S,a);if(u)return e$1;let r=new URLSearchParams(window.location.search);return j(r,{paramKey:o,dataKey:n},{type:t,thisYearMode:a})??e$1}),s=useRef({paramKey:o,dataKey:n});s.current={paramKey:o,dataKey:n};let d=useRef({type:t,thisYearMode:a});d.current={type:t,thisYearMode:a},useEffect(()=>{if(u)return;let e=()=>{let r=new URLSearchParams(window.location.search),i=j(r,s.current,d.current);i&&f(i);};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[]);let y=useCallback(e=>{if(f(e),u)return;let r=new URLSearchParams(window.location.search),w=i(e,s.current,r).toString(),E=`${window.location.pathname}${w?`?${w}`:""}${window.location.hash}`;window.history.replaceState(window.history.state,"",E);},[]);return [P,y]},U=T;
5
+ var u=typeof window>"u",U=({type:t="FREE",paramKey:n=h.paramKey,dataKey:s=h.dataKey,defaultValue:F,defaultPeriod:S,thisYearMode:a}={})=>{let[E,m]=useState(()=>{let e$1=F??e(t,S,a);if(u)return e$1;let r=new URLSearchParams(window.location.search);return j(r,{paramKey:n,dataKey:s},{type:t,thisYearMode:a})??e$1}),o=useRef({paramKey:n,dataKey:s});o.current={paramKey:n,dataKey:s};let w=useRef({type:t,thisYearMode:a});w.current={type:t,thisYearMode:a},useEffect(()=>{if(u)return;let e=()=>{let r=new URLSearchParams(window.location.search),i=j(r,o.current,w.current);i&&m(i);};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[]);let R=useCallback(e=>{if(m(e),u)return;let r=new URLSearchParams(window.location.search),f=i(e,o.current,r).toString(),P=`${window.location.pathname}${f?`?${f}`:""}${window.location.hash}`;window.history.replaceState(window.history.state,"",P);},[]);return [E,R]},k=U;
6
6
 
7
- export { U as default };
7
+ export { k as default };
8
8
  //# sourceMappingURL=useFiltersSearchParams.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useFiltersSearchParams.ts"],"names":["useCallback","useEffect","useRef","useState","IS_SERVER","useFiltersSearchParams","type","paramKey","DEFAULT_FILTER_KEYS","dataKey","defaultValue","defaultPeriod","thisYearMode","value","setValue","fallback","buildDefaultFilter","params","deserializeFilterFromSearchParams","keysRef","resolutionRef","handler","next","update","current","search","serializeFilterToSearchParams","url","useFiltersSearchParams_default"],"mappings":"2FAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAmBzD,IAAMC,EAAY,OAAO,OAAW,IAE9BC,EAAyB,CAAC,CAC9B,KAAAC,EAAO,OACP,SAAAC,EAAWC,EAAoB,SAC/B,QAAAC,EAAUD,EAAoB,QAC9B,aAAAE,EACA,cAAAC,EACA,aAAAC,CACF,EAAmC,CAAC,IAG/B,CACH,GAAM,CAACC,EAAOC,CAAQ,EAAIX,EAAsB,IAAM,CACpD,IAAMY,EACJL,GAAgBM,EAAmBV,EAAMK,EAAeC,CAAY,EAEtE,GAAIR,EAAW,OAAOW,EAEtB,IAAME,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAEzD,OACEC,EACED,EACA,CAAE,SAAAV,EAAU,QAAAE,CAAQ,EACpB,CAAE,KAAAH,EAAM,aAAAM,CAAa,CACvB,GAAKG,CAET,CAAC,EAEKI,EAAUjB,EAAO,CAAE,SAAAK,EAAU,QAAAE,CAAQ,CAAC,EAC5CU,EAAQ,QAAU,CAAE,SAAAZ,EAAU,QAAAE,CAAQ,EAEtC,IAAMW,EAAgBlB,EAAO,CAAE,KAAAI,EAAM,aAAAM,CAAa,CAAC,EACnDQ,EAAc,QAAU,CAAE,KAAAd,EAAM,aAAAM,CAAa,EAE7CX,EAAU,IAAM,CACd,GAAIG,EAAW,OAEf,IAAMiB,EAAU,IAAM,CACpB,IAAMJ,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACnDK,EAAOJ,EACXD,EACAE,EAAQ,QACRC,EAAc,OAChB,EAEIE,GAAMR,EAASQ,CAAI,CACzB,EAEA,cAAO,iBAAiB,WAAYD,CAAO,EAEpC,IAAM,OAAO,oBAAoB,WAAYA,CAAO,CAC7D,EAAG,CAAC,CAAC,EAEL,IAAME,EAASvB,EAAasB,GAAsB,CAGhD,GAFAR,EAASQ,CAAI,EAETlB,EAAW,OAEf,IAAMoB,EAAU,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAMpDC,EALSC,EACbJ,EACAH,EAAQ,QACRK,CACF,EACsB,SAAS,EACzBG,EAAM,GAAG,OAAO,SAAS,WAC7BF,EAAS,IAAIA,IAAW,KACvB,OAAO,SAAS,OAEnB,OAAO,QAAQ,aAAa,OAAO,QAAQ,MAAO,GAAIE,CAAG,CAC3D,EAAG,CAAC,CAAC,EAEL,MAAO,CAACd,EAAOU,CAAM,CACvB,EAEOK,EAAQvB","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { FilterValue, Period, ThisYearMode, Type } from 'types/period';\nimport {\n buildDefaultFilter,\n DEFAULT_FILTER_KEYS,\n deserializeFilterFromSearchParams,\n serializeFilterToSearchParams,\n} from 'utils/filters';\n\ninterface UseFiltersSearchParamsOptions {\n type?: keyof typeof Type;\n paramKey?: string;\n dataKey?: string;\n defaultValue?: FilterValue;\n defaultPeriod?: keyof typeof Period;\n thisYearMode?: keyof typeof ThisYearMode;\n}\n\nconst IS_SERVER = typeof window === 'undefined';\n\nconst useFiltersSearchParams = ({\n type = 'FREE',\n paramKey = DEFAULT_FILTER_KEYS.paramKey,\n dataKey = DEFAULT_FILTER_KEYS.dataKey,\n defaultValue,\n defaultPeriod,\n thisYearMode,\n}: UseFiltersSearchParamsOptions = {}): [\n FilterValue,\n (value: FilterValue) => void,\n] => {\n const [value, setValue] = useState<FilterValue>(() => {\n const fallback =\n defaultValue ?? buildDefaultFilter(type, defaultPeriod, thisYearMode);\n\n if (IS_SERVER) return fallback;\n\n const params = new URLSearchParams(window.location.search);\n\n return (\n deserializeFilterFromSearchParams(\n params,\n { paramKey, dataKey },\n { type, thisYearMode },\n ) ?? fallback\n );\n });\n\n const keysRef = useRef({ paramKey, dataKey });\n keysRef.current = { paramKey, dataKey };\n\n const resolutionRef = useRef({ type, thisYearMode });\n resolutionRef.current = { type, thisYearMode };\n\n useEffect(() => {\n if (IS_SERVER) return;\n\n const handler = () => {\n const params = new URLSearchParams(window.location.search);\n const next = deserializeFilterFromSearchParams(\n params,\n keysRef.current,\n resolutionRef.current,\n );\n\n if (next) setValue(next);\n };\n\n window.addEventListener('popstate', handler);\n\n return () => window.removeEventListener('popstate', handler);\n }, []);\n\n const update = useCallback((next: FilterValue) => {\n setValue(next);\n\n if (IS_SERVER) return;\n\n const current = new URLSearchParams(window.location.search);\n const params = serializeFilterToSearchParams(\n next,\n keysRef.current,\n current,\n );\n const search = params.toString();\n const url = `${window.location.pathname}${\n search ? `?${search}` : ''\n }${window.location.hash}`;\n\n window.history.replaceState(window.history.state, '', url);\n }, []);\n\n return [value, update];\n};\n\nexport default useFiltersSearchParams;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useFiltersSearchParams.ts"],"names":["useCallback","useEffect","useRef","useState","IS_SERVER","useFiltersSearchParams","type","paramKey","DEFAULT_FILTER_KEYS","dataKey","defaultValue","defaultPeriod","thisYearMode","value","setValue","fallback","buildDefaultFilter","params","deserializeFilterFromSearchParams","keysRef","resolutionRef","handler","next","update","current","search","serializeFilterToSearchParams","url","useFiltersSearchParams_default"],"mappings":"2FAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAczD,IAAMC,EAAY,OAAO,OAAW,IAE9BC,EAAyB,CAAC,CAC9B,KAAAC,EAAO,OACP,SAAAC,EAAWC,EAAoB,SAC/B,QAAAC,EAAUD,EAAoB,QAC9B,aAAAE,EACA,cAAAC,EACA,aAAAC,CACF,EAAmC,CAAC,IAG/B,CACH,GAAM,CAACC,EAAOC,CAAQ,EAAIX,EAAsB,IAAM,CACpD,IAAMY,EACJL,GAAgBM,EAAmBV,EAAMK,EAAeC,CAAY,EAEtE,GAAIR,EAAW,OAAOW,EAEtB,IAAME,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAEzD,OACEC,EACED,EACA,CAAE,SAAAV,EAAU,QAAAE,CAAQ,EACpB,CAAE,KAAAH,EAAM,aAAAM,CAAa,CACvB,GAAKG,CAET,CAAC,EAEKI,EAAUjB,EAAO,CAAE,SAAAK,EAAU,QAAAE,CAAQ,CAAC,EAC5CU,EAAQ,QAAU,CAAE,SAAAZ,EAAU,QAAAE,CAAQ,EAEtC,IAAMW,EAAgBlB,EAAO,CAAE,KAAAI,EAAM,aAAAM,CAAa,CAAC,EACnDQ,EAAc,QAAU,CAAE,KAAAd,EAAM,aAAAM,CAAa,EAE7CX,EAAU,IAAM,CACd,GAAIG,EAAW,OAEf,IAAMiB,EAAU,IAAM,CACpB,IAAMJ,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACnDK,EAAOJ,EACXD,EACAE,EAAQ,QACRC,EAAc,OAChB,EAEIE,GAAMR,EAASQ,CAAI,CACzB,EAEA,cAAO,iBAAiB,WAAYD,CAAO,EAEpC,IAAM,OAAO,oBAAoB,WAAYA,CAAO,CAC7D,EAAG,CAAC,CAAC,EAEL,IAAME,EAASvB,EAAasB,GAAsB,CAGhD,GAFAR,EAASQ,CAAI,EAETlB,EAAW,OAEf,IAAMoB,EAAU,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAMpDC,EALSC,EACbJ,EACAH,EAAQ,QACRK,CACF,EACsB,SAAS,EACzBG,EAAM,GAAG,OAAO,SAAS,WAC7BF,EAAS,IAAIA,IAAW,KACvB,OAAO,SAAS,OAEnB,OAAO,QAAQ,aAAa,OAAO,QAAQ,MAAO,GAAIE,CAAG,CAC3D,EAAG,CAAC,CAAC,EAEL,MAAO,CAACd,EAAOU,CAAM,CACvB,EAEOK,EAAQvB","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { FilterValue } from 'types/period';\nimport {\n buildDefaultFilter,\n DEFAULT_FILTER_KEYS,\n deserializeFilterFromSearchParams,\n serializeFilterToSearchParams,\n} from 'utils/filters';\n\nimport type {\n UseFiltersSearchParamsOptions,\n} from './useFiltersSearchParams.types';\n\nconst IS_SERVER = typeof window === 'undefined';\n\nconst useFiltersSearchParams = ({\n type = 'FREE',\n paramKey = DEFAULT_FILTER_KEYS.paramKey,\n dataKey = DEFAULT_FILTER_KEYS.dataKey,\n defaultValue,\n defaultPeriod,\n thisYearMode,\n}: UseFiltersSearchParamsOptions = {}): [\n FilterValue,\n (value: FilterValue) => void,\n] => {\n const [value, setValue] = useState<FilterValue>(() => {\n const fallback =\n defaultValue ?? buildDefaultFilter(type, defaultPeriod, thisYearMode);\n\n if (IS_SERVER) return fallback;\n\n const params = new URLSearchParams(window.location.search);\n\n return (\n deserializeFilterFromSearchParams(\n params,\n { paramKey, dataKey },\n { type, thisYearMode },\n ) ?? fallback\n );\n });\n\n const keysRef = useRef({ paramKey, dataKey });\n keysRef.current = { paramKey, dataKey };\n\n const resolutionRef = useRef({ type, thisYearMode });\n resolutionRef.current = { type, thisYearMode };\n\n useEffect(() => {\n if (IS_SERVER) return;\n\n const handler = () => {\n const params = new URLSearchParams(window.location.search);\n const next = deserializeFilterFromSearchParams(\n params,\n keysRef.current,\n resolutionRef.current,\n );\n\n if (next) setValue(next);\n };\n\n window.addEventListener('popstate', handler);\n\n return () => window.removeEventListener('popstate', handler);\n }, []);\n\n const update = useCallback((next: FilterValue) => {\n setValue(next);\n\n if (IS_SERVER) return;\n\n const current = new URLSearchParams(window.location.search);\n const params = serializeFilterToSearchParams(\n next,\n keysRef.current,\n current,\n );\n const search = params.toString();\n const url = `${window.location.pathname}${\n search ? `?${search}` : ''\n }${window.location.hash}`;\n\n window.history.replaceState(window.history.state, '', url);\n }, []);\n\n return [value, update];\n};\n\nexport default useFiltersSearchParams;\n"]}
@@ -9,6 +9,7 @@ interface UseInfiniteScrollOptions<TParams, TResponse, TRow, TPagination extends
9
9
  getPagination: (response: TResponse) => TPagination;
10
10
  getNextPageParams: (pagination: TPagination) => Partial<TParams>;
11
11
  }
12
+
12
13
  declare const useInfiniteScroll: <TParams, TResponse, TRow, TPagination extends {
13
14
  last_seek_id: string;
14
15
  has_next: boolean;
@@ -1,6 +1,6 @@
1
1
  import { useState, useRef, useCallback, useEffect } from 'react';
2
2
 
3
- var k=({fetchFn:r,params:o,getRows:w,getPagination:d,getNextPageParams:m})=>{let[S,i]=useState([]),[E,x]=useState(!0),[N,I]=useState(!1),[l,h]=useState(!1),[O,c]=useState(!1),t=useRef(void 0),f=useRef(w),g=useRef(d),y=useRef(m);f.current=w,g.current=d,y.current=m;let T=useRef(!1),P=useCallback(async()=>{T.current?I(!0):x(!0);try{let e=await r(o).unwrap();t.current=g.current(e),i(f.current(e)),c(!1);}catch{c(!0);}finally{T.current?I(!1):(T.current=!0,x(!1));}},[r,o]),U=useCallback(async()=>{if(!t.current?.has_next||l)return;let e=y.current(t.current);h(!0);try{let n=await r({...o,...e}).unwrap();t.current=g.current(n),i(R=>[...R,...f.current(n)]),c(!1);}catch{c(!0);}finally{h(!1);}},[r,o,l]);useEffect(()=>{P();},[P]);let b=useCallback(e=>{i(n=>[...e,...n]);},[]),F=useCallback((e,n)=>{i(R=>R.map(p=>e(p)?n(p):p));},[]);return {rows:S,isLoading:E,isFetching:N,isFetchingNextPage:l,isError:O,pagination:t.current,refetch:P,prependRows:b,updateRow:F,handleRowsScrollEnd:U}},C=k;
3
+ var z=({fetchFn:o,params:i,getRows:d,getPagination:P,getNextPageParams:I})=>{let[x,a]=useState([]),[E,y]=useState(!0),[O,m]=useState(!1),[l,S]=useState(!1),[U,c]=useState(!1),n=useRef(void 0),f=useRef(d),p=useRef(P),h=useRef(I);f.current=d,p.current=P,h.current=I;let R=useRef(!1),g=useCallback(async()=>{R.current?m(!0):y(!0);try{let e=await o(i).unwrap();n.current=p.current(e),a(f.current(e)),c(!1);}catch{c(!0);}finally{R.current?m(!1):(R.current=!0,y(!1));}},[o,i]),b=useCallback(async()=>{if(!n.current?.has_next||l)return;let e=h.current(n.current);S(!0);try{let t=await o({...i,...e}).unwrap();n.current=p.current(t),a(w=>[...w,...f.current(t)]),c(!1);}catch{c(!0);}finally{S(!1);}},[o,i,l]);useEffect(()=>{g();},[g]);let L=useCallback(e=>{a(t=>[...e,...t]);},[]),N=useCallback((e,t)=>{a(w=>w.map(T=>e(T)?t(T):T));},[]);return {rows:x,isLoading:E,isFetching:O,isFetchingNextPage:l,isError:U,pagination:n.current,refetch:g,prependRows:L,updateRow:N,handleRowsScrollEnd:b}},F=z;
4
4
 
5
- export { C as default };
5
+ export { F as default };
6
6
  //# sourceMappingURL=useInfiniteScroll.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useInfiniteScroll.ts"],"names":["useCallback","useEffect","useRef","useState","useInfiniteScroll","fetchFn","params","getRows","getPagination","getNextPageParams","rows","setRows","isLoading","setIsLoading","isFetching","setIsFetching","isFetchingNextPage","setIsFetchingNextPage","isError","setIsError","paginationRef","getRowsRef","getPaginationRef","getNextPageParamsRef","initializedRef","fetchInitial","result","handleRowsScrollEnd","nextPageParams","prev","prependRows","newRows","updateRow","predicate","updater","row","useInfiniteScroll_default"],"mappings":"AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAiBzD,IAAMC,EAAoB,CAKxB,CACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,cAAAC,EACA,kBAAAC,CACF,IAAuE,CACrE,GAAM,CAACC,EAAMC,CAAO,EAAIR,EAAiB,CAAC,CAAC,EAErC,CAACS,EAAWC,CAAY,EAAIV,EAAS,EAAI,EACzC,CAACW,EAAYC,CAAa,EAAIZ,EAAS,EAAK,EAC5C,CAACa,EAAoBC,CAAqB,EAAId,EAAS,EAAK,EAE5D,CAACe,EAASC,CAAU,EAAIhB,EAAS,EAAK,EAEtCiB,EAAgBlB,EAAgC,MAAS,EAEzDmB,EAAanB,EAAOK,CAAO,EAC3Be,EAAmBpB,EAAOM,CAAa,EACvCe,EAAuBrB,EAAOO,CAAiB,EAErDY,EAAW,QAAUd,EACrBe,EAAiB,QAAUd,EAC3Be,EAAqB,QAAUd,EAE/B,IAAMe,EAAiBtB,EAAO,EAAK,EAE7BuB,EAAezB,EAAY,SAAY,CACtCwB,EAAe,QAGlBT,EAAc,EAAI,EAFlBF,EAAa,EAAI,EAKnB,GAAI,CACF,IAAMa,EAAS,MAAMrB,EAAQC,CAAM,EAAE,OAAO,EAE5Cc,EAAc,QAAUE,EAAiB,QAAQI,CAAM,EACvDf,EAAQU,EAAW,QAAQK,CAAM,CAAC,EAClCP,EAAW,EAAK,CAClB,MAAE,CACAA,EAAW,EAAI,CACjB,QAAE,CACKK,EAAe,QAIlBT,EAAc,EAAK,GAHnBS,EAAe,QAAU,GACzBX,EAAa,EAAK,EAItB,CACF,EAAG,CAACR,EAASC,CAAM,CAAC,EAEdqB,EAAsB3B,EAAY,SAAY,CAClD,GAAI,CAACoB,EAAc,SAAS,UAAYJ,EAAoB,OAE5D,IAAMY,EAAiBL,EAAqB,QAAQH,EAAc,OAAO,EAEzEH,EAAsB,EAAI,EAE1B,GAAI,CACF,IAAMS,EAAS,MAAMrB,EAAQ,CAC3B,GAAGC,EACH,GAAGsB,CACL,CAAC,EAAE,OAAO,EAEVR,EAAc,QAAUE,EAAiB,QAAQI,CAAM,EACvDf,EAAQkB,GAAQ,CAAC,GAAGA,EAAM,GAAGR,EAAW,QAAQK,CAAM,CAAC,CAAC,EACxDP,EAAW,EAAK,CAClB,MAAE,CACAA,EAAW,EAAI,CACjB,QAAE,CACAF,EAAsB,EAAK,CAC7B,CACF,EAAG,CAACZ,EAASC,EAAQU,CAAkB,CAAC,EAExCf,EAAU,IAAM,CACdwB,EAAa,CACf,EAAG,CAACA,CAAY,CAAC,EAEjB,IAAMK,EAAc9B,EAAa+B,GAAoB,CACnDpB,EAAQkB,GAAQ,CAAC,GAAGE,EAAS,GAAGF,CAAI,CAAC,CACvC,EAAG,CAAC,CAAC,EAECG,EAAYhC,EAChB,CAACiC,EAAmCC,IAAiC,CACnEvB,EAAQkB,GAAQA,EAAK,IAAIM,GAAQF,EAAUE,CAAG,EAAID,EAAQC,CAAG,EAAIA,CAAI,CAAC,CACxE,EACA,CAAC,CACH,EAEA,MAAO,CACL,KAAAzB,EAEA,UAAAE,EACA,WAAAE,EACA,mBAAAE,EAEA,QAAAE,EAEA,WAAYE,EAAc,QAC1B,QAASK,EAET,YAAAK,EACA,UAAAE,EAEA,oBAAAL,CACF,CACF,EAEOS,EAAQhC","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Pagination } from 'types/pagination';\n\ninterface UseInfiniteScrollOptions<\n TParams,\n TResponse,\n TRow,\n TPagination extends Pagination = Pagination,\n> {\n fetchFn: (params: TParams) => { unwrap: () => Promise<TResponse> };\n params: TParams;\n getRows: (response: TResponse) => TRow[];\n getPagination: (response: TResponse) => TPagination;\n getNextPageParams: (pagination: TPagination) => Partial<TParams>;\n}\n\nconst useInfiniteScroll = <\n TParams,\n TResponse,\n TRow,\n TPagination extends Pagination = Pagination,\n>({\n fetchFn,\n params,\n getRows,\n getPagination,\n getNextPageParams,\n}: UseInfiniteScrollOptions<TParams, TResponse, TRow, TPagination>) => {\n const [rows, setRows] = useState<TRow[]>([]);\n\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n const [isFetchingNextPage, setIsFetchingNextPage] = useState(false);\n\n const [isError, setIsError] = useState(false);\n\n const paginationRef = useRef<TPagination | undefined>(undefined);\n\n const getRowsRef = useRef(getRows);\n const getPaginationRef = useRef(getPagination);\n const getNextPageParamsRef = useRef(getNextPageParams);\n\n getRowsRef.current = getRows;\n getPaginationRef.current = getPagination;\n getNextPageParamsRef.current = getNextPageParams;\n\n const initializedRef = useRef(false);\n\n const fetchInitial = useCallback(async () => {\n if (!initializedRef.current) {\n setIsLoading(true);\n } else {\n setIsFetching(true);\n }\n\n try {\n const result = await fetchFn(params).unwrap();\n\n paginationRef.current = getPaginationRef.current(result);\n setRows(getRowsRef.current(result));\n setIsError(false);\n } catch {\n setIsError(true);\n } finally {\n if (!initializedRef.current) {\n initializedRef.current = true;\n setIsLoading(false);\n } else {\n setIsFetching(false);\n }\n }\n }, [fetchFn, params]);\n\n const handleRowsScrollEnd = useCallback(async () => {\n if (!paginationRef.current?.has_next || isFetchingNextPage) return;\n\n const nextPageParams = getNextPageParamsRef.current(paginationRef.current);\n\n setIsFetchingNextPage(true);\n\n try {\n const result = await fetchFn({\n ...params,\n ...nextPageParams,\n }).unwrap();\n\n paginationRef.current = getPaginationRef.current(result);\n setRows(prev => [...prev, ...getRowsRef.current(result)]);\n setIsError(false);\n } catch {\n setIsError(true);\n } finally {\n setIsFetchingNextPage(false);\n }\n }, [fetchFn, params, isFetchingNextPage]);\n\n useEffect(() => {\n fetchInitial();\n }, [fetchInitial]);\n\n const prependRows = useCallback((newRows: TRow[]) => {\n setRows(prev => [...newRows, ...prev]);\n }, []);\n\n const updateRow = useCallback(\n (predicate: (row: TRow) => boolean, updater: (row: TRow) => TRow) => {\n setRows(prev => prev.map(row => (predicate(row) ? updater(row) : row)));\n },\n [],\n );\n\n return {\n rows,\n\n isLoading,\n isFetching,\n isFetchingNextPage,\n\n isError,\n\n pagination: paginationRef.current,\n refetch: fetchInitial,\n\n prependRows,\n updateRow,\n\n handleRowsScrollEnd,\n };\n};\n\nexport default useInfiniteScroll;\nexport type { UseInfiniteScrollOptions };\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useInfiniteScroll.ts"],"names":["useCallback","useEffect","useRef","useState","useInfiniteScroll","fetchFn","params","getRows","getPagination","getNextPageParams","rows","setRows","isLoading","setIsLoading","isFetching","setIsFetching","isFetchingNextPage","setIsFetchingNextPage","isError","setIsError","paginationRef","getRowsRef","getPaginationRef","getNextPageParamsRef","initializedRef","fetchInitial","result","handleRowsScrollEnd","nextPageParams","prev","prependRows","newRows","updateRow","predicate","updater","row","useInfiniteScroll_default"],"mappings":"AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAMzD,IAAMC,EAAoB,CAKxB,CACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,cAAAC,EACA,kBAAAC,CACF,IAAuE,CACrE,GAAM,CAACC,EAAMC,CAAO,EAAIR,EAAiB,CAAC,CAAC,EAErC,CAACS,EAAWC,CAAY,EAAIV,EAAS,EAAI,EACzC,CAACW,EAAYC,CAAa,EAAIZ,EAAS,EAAK,EAC5C,CAACa,EAAoBC,CAAqB,EAAId,EAAS,EAAK,EAE5D,CAACe,EAASC,CAAU,EAAIhB,EAAS,EAAK,EAEtCiB,EAAgBlB,EAAgC,MAAS,EAEzDmB,EAAanB,EAAOK,CAAO,EAC3Be,EAAmBpB,EAAOM,CAAa,EACvCe,EAAuBrB,EAAOO,CAAiB,EAErDY,EAAW,QAAUd,EACrBe,EAAiB,QAAUd,EAC3Be,EAAqB,QAAUd,EAE/B,IAAMe,EAAiBtB,EAAO,EAAK,EAE7BuB,EAAezB,EAAY,SAAY,CACtCwB,EAAe,QAGlBT,EAAc,EAAI,EAFlBF,EAAa,EAAI,EAKnB,GAAI,CACF,IAAMa,EAAS,MAAMrB,EAAQC,CAAM,EAAE,OAAO,EAE5Cc,EAAc,QAAUE,EAAiB,QAAQI,CAAM,EACvDf,EAAQU,EAAW,QAAQK,CAAM,CAAC,EAClCP,EAAW,EAAK,CAClB,MAAE,CACAA,EAAW,EAAI,CACjB,QAAE,CACKK,EAAe,QAIlBT,EAAc,EAAK,GAHnBS,EAAe,QAAU,GACzBX,EAAa,EAAK,EAItB,CACF,EAAG,CAACR,EAASC,CAAM,CAAC,EAEdqB,EAAsB3B,EAAY,SAAY,CAClD,GAAI,CAACoB,EAAc,SAAS,UAAYJ,EAAoB,OAE5D,IAAMY,EAAiBL,EAAqB,QAAQH,EAAc,OAAO,EAEzEH,EAAsB,EAAI,EAE1B,GAAI,CACF,IAAMS,EAAS,MAAMrB,EAAQ,CAC3B,GAAGC,EACH,GAAGsB,CACL,CAAC,EAAE,OAAO,EAEVR,EAAc,QAAUE,EAAiB,QAAQI,CAAM,EACvDf,EAAQkB,GAAQ,CAAC,GAAGA,EAAM,GAAGR,EAAW,QAAQK,CAAM,CAAC,CAAC,EACxDP,EAAW,EAAK,CAClB,MAAE,CACAA,EAAW,EAAI,CACjB,QAAE,CACAF,EAAsB,EAAK,CAC7B,CACF,EAAG,CAACZ,EAASC,EAAQU,CAAkB,CAAC,EAExCf,EAAU,IAAM,CACdwB,EAAa,CACf,EAAG,CAACA,CAAY,CAAC,EAEjB,IAAMK,EAAc9B,EAAa+B,GAAoB,CACnDpB,EAAQkB,GAAQ,CAAC,GAAGE,EAAS,GAAGF,CAAI,CAAC,CACvC,EAAG,CAAC,CAAC,EAECG,EAAYhC,EAChB,CAACiC,EAAmCC,IAAiC,CACnEvB,EAAQkB,GAAQA,EAAK,IAAIM,GAAQF,EAAUE,CAAG,EAAID,EAAQC,CAAG,EAAIA,CAAI,CAAC,CACxE,EACA,CAAC,CACH,EAEA,MAAO,CACL,KAAAzB,EAEA,UAAAE,EACA,WAAAE,EACA,mBAAAE,EAEA,QAAAE,EAEA,WAAYE,EAAc,QAC1B,QAASK,EAET,YAAAK,EACA,UAAAE,EAEA,oBAAAL,CACF,CACF,EAEOS,EAAQhC","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Pagination } from 'types/pagination';\n\nimport type { UseInfiniteScrollOptions } from './useInfiniteScroll.types';\n\nconst useInfiniteScroll = <\n TParams,\n TResponse,\n TRow,\n TPagination extends Pagination = Pagination,\n>({\n fetchFn,\n params,\n getRows,\n getPagination,\n getNextPageParams,\n}: UseInfiniteScrollOptions<TParams, TResponse, TRow, TPagination>) => {\n const [rows, setRows] = useState<TRow[]>([]);\n\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n const [isFetchingNextPage, setIsFetchingNextPage] = useState(false);\n\n const [isError, setIsError] = useState(false);\n\n const paginationRef = useRef<TPagination | undefined>(undefined);\n\n const getRowsRef = useRef(getRows);\n const getPaginationRef = useRef(getPagination);\n const getNextPageParamsRef = useRef(getNextPageParams);\n\n getRowsRef.current = getRows;\n getPaginationRef.current = getPagination;\n getNextPageParamsRef.current = getNextPageParams;\n\n const initializedRef = useRef(false);\n\n const fetchInitial = useCallback(async () => {\n if (!initializedRef.current) {\n setIsLoading(true);\n } else {\n setIsFetching(true);\n }\n\n try {\n const result = await fetchFn(params).unwrap();\n\n paginationRef.current = getPaginationRef.current(result);\n setRows(getRowsRef.current(result));\n setIsError(false);\n } catch {\n setIsError(true);\n } finally {\n if (!initializedRef.current) {\n initializedRef.current = true;\n setIsLoading(false);\n } else {\n setIsFetching(false);\n }\n }\n }, [fetchFn, params]);\n\n const handleRowsScrollEnd = useCallback(async () => {\n if (!paginationRef.current?.has_next || isFetchingNextPage) return;\n\n const nextPageParams = getNextPageParamsRef.current(paginationRef.current);\n\n setIsFetchingNextPage(true);\n\n try {\n const result = await fetchFn({\n ...params,\n ...nextPageParams,\n }).unwrap();\n\n paginationRef.current = getPaginationRef.current(result);\n setRows(prev => [...prev, ...getRowsRef.current(result)]);\n setIsError(false);\n } catch {\n setIsError(true);\n } finally {\n setIsFetchingNextPage(false);\n }\n }, [fetchFn, params, isFetchingNextPage]);\n\n useEffect(() => {\n fetchInitial();\n }, [fetchInitial]);\n\n const prependRows = useCallback((newRows: TRow[]) => {\n setRows(prev => [...newRows, ...prev]);\n }, []);\n\n const updateRow = useCallback(\n (predicate: (row: TRow) => boolean, updater: (row: TRow) => TRow) => {\n setRows(prev => prev.map(row => (predicate(row) ? updater(row) : row)));\n },\n [],\n );\n\n return {\n rows,\n\n isLoading,\n isFetching,\n isFetchingNextPage,\n\n isError,\n\n pagination: paginationRef.current,\n refetch: fetchInitial,\n\n prependRows,\n updateRow,\n\n handleRowsScrollEnd,\n };\n};\n\nexport default useInfiniteScroll;\nexport type { UseInfiniteScrollOptions } from './useInfiniteScroll.types';\n"]}
@@ -1,15 +1,16 @@
1
1
  import { Dispatch, SetStateAction } from 'react';
2
2
 
3
- declare global {
4
- interface WindowEventMap {
5
- 'local-storage': CustomEvent;
6
- }
7
- }
8
3
  type UseLocalStorageOptions<T> = {
9
4
  serializer?: (value: T) => string;
10
5
  deserializer?: (value: string) => T;
11
6
  initializeWithValue?: boolean;
12
7
  };
8
+
9
+ declare global {
10
+ interface WindowEventMap {
11
+ 'local-storage': CustomEvent;
12
+ }
13
+ }
13
14
  declare const useLocalStorage: <T>(key: string, initialValue: T | (() => T), options?: UseLocalStorageOptions<T>) => [T, Dispatch<SetStateAction<T>>, () => void];
14
15
 
15
16
  export { useLocalStorage as default };
@@ -1,4 +1,4 @@
1
- export { a as default } from '../chunk-2HAPOY5M.js';
1
+ export { a as default } from '../chunk-GTPEQ3CM.js';
2
2
  import '../chunk-FJBC6QA5.js';
3
3
  import '../chunk-POTVACYB.js';
4
4
  import '../chunk-ET3WPQIO.js';
@@ -1,6 +1,7 @@
1
1
  import { RefObject } from 'react';
2
2
 
3
3
  type Handler = (event: MouseEvent) => void;
4
+
4
5
  declare const useOnClickOutside: <T extends HTMLElement = HTMLElement>(ref: RefObject<T>, handler: Handler, mouseEvent?: 'mousedown' | 'mouseup') => void;
5
6
 
6
7
  export { useOnClickOutside as default };
@@ -2,7 +2,7 @@ import { a } from '../chunk-FJBC6QA5.js';
2
2
  import '../chunk-POTVACYB.js';
3
3
  import '../chunk-ET3WPQIO.js';
4
4
 
5
- var u=(o,r,s="mousedown")=>{a(s,e=>{let t=o?.current;!t||t.contains(e.target)||r(e);});},m=u;
5
+ var u=(o,r,s="mousedown")=>{a(s,e=>{let t=o?.current;!t||t.contains(e.target)||r(e);});},i=u;
6
6
 
7
- export { m as default };
7
+ export { i as default };
8
8
  //# sourceMappingURL=useOnClickOutside.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useOnClickOutside.ts"],"names":["useOnClickOutside","ref","handler","mouseEvent","useEventListener_default","event","el","useOnClickOutside_default"],"mappings":"mGAMA,IAAMA,EAAoB,CACxBC,EACAC,EACAC,EAAsC,cACnC,CACHC,EAAiBD,EAAYE,GAAS,CACpC,IAAMC,EAAKL,GAAK,QAGZ,CAACK,GAAMA,EAAG,SAASD,EAAM,MAAc,GAI3CH,EAAQG,CAAK,CACf,CAAC,CACH,EAEOE,EAAQP","sourcesContent":["import { RefObject } from 'react';\n\nimport useEventListener from './useEventListener';\n\ntype Handler = (event: MouseEvent) => void;\n\nconst useOnClickOutside = <T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler,\n mouseEvent: 'mousedown' | 'mouseup' = 'mousedown',\n) => {\n useEventListener(mouseEvent, event => {\n const el = ref?.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n });\n};\n\nexport default useOnClickOutside;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useOnClickOutside.ts"],"names":["useOnClickOutside","ref","handler","mouseEvent","useEventListener_default","event","el","useOnClickOutside_default"],"mappings":"mGAKA,IAAMA,EAAoB,CACxBC,EACAC,EACAC,EAAsC,cACnC,CACHC,EAAiBD,EAAYE,GAAS,CACpC,IAAMC,EAAKL,GAAK,QAGZ,CAACK,GAAMA,EAAG,SAASD,EAAM,MAAc,GAI3CH,EAAQG,CAAK,CACf,CAAC,CACH,EAEOE,EAAQP","sourcesContent":["import { RefObject } from 'react';\n\nimport useEventListener from './useEventListener';\nimport type { Handler } from './useOnClickOutside.types';\n\nconst useOnClickOutside = <T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler,\n mouseEvent: 'mousedown' | 'mouseup' = 'mousedown',\n) => {\n useEventListener(mouseEvent, event => {\n const el = ref?.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n });\n};\n\nexport default useOnClickOutside;\n"]}
@@ -10,6 +10,7 @@ interface UsePaginationResult<T> {
10
10
  nextPage: () => void;
11
11
  prevPage: () => void;
12
12
  }
13
+
13
14
  declare function usePagination<T>({ items, itemsPerPage, }: UsePaginationProps<T>): UsePaginationResult<T>;
14
15
 
15
16
  export { usePagination as default };
@@ -1,6 +1,6 @@
1
1
  import { useState } from 'react';
2
2
 
3
- function s({items:r,itemsPerPage:n}){let[t,a]=useState(1),o=Math.ceil(r.length/n),g=r.slice((t-1)*n,t*n);return {currentPage:t,totalPages:o,currentItems:g,goToPage:e=>{e>0&&e<=o&&a(e);},nextPage:()=>{t<o&&a(e=>e+1);},prevPage:()=>{t>1&&a(e=>e-1);}}}var f=s;
3
+ function g({items:s,itemsPerPage:n}){let[e,o]=useState(1),a=Math.ceil(s.length/n),i=s.slice((e-1)*n,e*n);return {currentPage:e,totalPages:a,currentItems:i,goToPage:t=>{t>0&&t<=a&&o(t);},nextPage:()=>{e<a&&o(t=>t+1);},prevPage:()=>{e>1&&o(t=>t-1);}}}var l=g;
4
4
 
5
- export { f as default };
5
+ export { l as default };
6
6
  //# sourceMappingURL=usePagination.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/usePagination.ts"],"names":["useState","usePagination","items","itemsPerPage","currentPage","setCurrentPage","totalPages","currentItems","page","prevPage","usePagination_default"],"mappings":"AAAA,OAAS,YAAAA,MAAgB,QAgBzB,SAASC,EAAiB,CACxB,MAAAC,EACA,aAAAC,CACF,EAAkD,CAChD,GAAM,CAACC,EAAaC,CAAc,EAAIL,EAAS,CAAC,EAE1CM,EAAa,KAAK,KAAKJ,EAAM,OAASC,CAAY,EAElDI,EAAeL,EAAM,OACxBE,EAAc,GAAKD,EACpBC,EAAcD,CAChB,EAoBA,MAAO,CACL,YAAAC,EACA,WAAAE,EACA,aAAAC,EACA,SAtBgBC,GAAiB,CAC7BA,EAAO,GAAKA,GAAQF,GACtBD,EAAeG,CAAI,CAEvB,EAmBE,SAjBe,IAAM,CACjBJ,EAAcE,GAChBD,EAAeI,GAAYA,EAAW,CAAC,CAE3C,EAcE,SAZe,IAAM,CACjBL,EAAc,GAChBC,EAAeI,GAAYA,EAAW,CAAC,CAE3C,CASA,CACF,CAEA,IAAOC,EAAQT","sourcesContent":["import { useState } from 'react';\n\ninterface UsePaginationProps<T> {\n items: T[];\n itemsPerPage: number;\n}\n\ninterface UsePaginationResult<T> {\n currentPage: number;\n totalPages: number;\n currentItems: T[];\n goToPage: (page: number) => void;\n nextPage: () => void;\n prevPage: () => void;\n}\n\nfunction usePagination<T>({\n items,\n itemsPerPage,\n}: UsePaginationProps<T>): UsePaginationResult<T> {\n const [currentPage, setCurrentPage] = useState(1);\n\n const totalPages = Math.ceil(items.length / itemsPerPage);\n\n const currentItems = items.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage,\n );\n\n const goToPage = (page: number) => {\n if (page > 0 && page <= totalPages) {\n setCurrentPage(page);\n }\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(prevPage => prevPage + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(prevPage => prevPage - 1);\n }\n };\n\n return {\n currentPage,\n totalPages,\n currentItems,\n goToPage,\n nextPage,\n prevPage,\n };\n}\n\nexport default usePagination;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/usePagination.ts"],"names":["useState","usePagination","items","itemsPerPage","currentPage","setCurrentPage","totalPages","currentItems","page","prevPage","usePagination_default"],"mappings":"AAAA,OAAS,YAAAA,MAAgB,QAOzB,SAASC,EAAiB,CACxB,MAAAC,EACA,aAAAC,CACF,EAAkD,CAChD,GAAM,CAACC,EAAaC,CAAc,EAAIL,EAAS,CAAC,EAE1CM,EAAa,KAAK,KAAKJ,EAAM,OAASC,CAAY,EAElDI,EAAeL,EAAM,OACxBE,EAAc,GAAKD,EACpBC,EAAcD,CAChB,EAoBA,MAAO,CACL,YAAAC,EACA,WAAAE,EACA,aAAAC,EACA,SAtBgBC,GAAiB,CAC7BA,EAAO,GAAKA,GAAQF,GACtBD,EAAeG,CAAI,CAEvB,EAmBE,SAjBe,IAAM,CACjBJ,EAAcE,GAChBD,EAAeI,GAAYA,EAAW,CAAC,CAE3C,EAcE,SAZe,IAAM,CACjBL,EAAc,GAChBC,EAAeI,GAAYA,EAAW,CAAC,CAE3C,CASA,CACF,CAEA,IAAOC,EAAQT","sourcesContent":["import { useState } from 'react';\n\nimport type {\n UsePaginationProps,\n UsePaginationResult,\n} from './usePagination.types';\n\nfunction usePagination<T>({\n items,\n itemsPerPage,\n}: UsePaginationProps<T>): UsePaginationResult<T> {\n const [currentPage, setCurrentPage] = useState(1);\n\n const totalPages = Math.ceil(items.length / itemsPerPage);\n\n const currentItems = items.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage,\n );\n\n const goToPage = (page: number) => {\n if (page > 0 && page <= totalPages) {\n setCurrentPage(page);\n }\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(prevPage => prevPage + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(prevPage => prevPage - 1);\n }\n };\n\n return {\n currentPage,\n totalPages,\n currentItems,\n goToPage,\n nextPage,\n prevPage,\n };\n}\n\nexport default usePagination;\n"]}
@@ -6,6 +6,7 @@ interface UseReconciliationParams {
6
6
  interface UseReconciliationResult {
7
7
  notifyActivity: () => void;
8
8
  }
9
+
9
10
  declare function useReconciliation({ reconcile, isActive, intervalMs, }: UseReconciliationParams): UseReconciliationResult;
10
11
 
11
12
  export { useReconciliation };
@@ -1,6 +1,6 @@
1
1
  import { useRef, useCallback, useEffect } from 'react';
2
2
 
3
- var s=1e4;function v({reconcile:c,isActive:n,intervalMs:o=s}){let l=useRef(c);l.current=c;let t=useRef(null),e=useCallback(()=>{t.current&&(clearInterval(t.current),t.current=null);},[]),r=useCallback(()=>{e(),t.current=setInterval(()=>{l.current();},o);},[e,o]);return useEffect(()=>{if(!n){e();return}return r(),e},[e,n,r]),{notifyActivity:useCallback(()=>{n&&r();},[n,r])}}
3
+ var a=1e4;function y({reconcile:o,isActive:t,intervalMs:i=a}){let u=useRef(o);u.current=o;let n=useRef(null),e=useCallback(()=>{n.current&&(clearInterval(n.current),n.current=null);},[]),r=useCallback(()=>{e(),n.current=setInterval(()=>{u.current();},i);},[e,i]);return useEffect(()=>{if(!t){e();return}return r(),e},[e,t,r]),{notifyActivity:useCallback(()=>{t&&r();},[t,r])}}
4
4
 
5
- export { v as useReconciliation };
5
+ export { y as useReconciliation };
6
6
  //# sourceMappingURL=useReconciliation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useReconciliation.ts"],"names":["useCallback","useEffect","useRef","DEFAULT_INTERVAL_MS","useReconciliation","reconcile","isActive","intervalMs","reconcileRef","intervalRef","clear","start"],"mappings":"AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAY/C,IAAMC,EAAsB,IAErB,SAASC,EAAkB,CAChC,UAAAC,EACA,SAAAC,EACA,WAAAC,EAAaJ,CACf,EAAqD,CACnD,IAAMK,EAAeN,EAAOG,CAAS,EACrCG,EAAa,QAAUH,EAEvB,IAAMI,EAAcP,EAA8C,IAAI,EAEhEQ,EAAQV,EAAY,IAAM,CAC1BS,EAAY,UACd,cAAcA,EAAY,OAAO,EACjCA,EAAY,QAAU,KAE1B,EAAG,CAAC,CAAC,EAECE,EAAQX,EAAY,IAAM,CAC9BU,EAAM,EAEND,EAAY,QAAU,YAAY,IAAM,CACjCD,EAAa,QAAQ,CAC5B,EAAGD,CAAU,CACf,EAAG,CAACG,EAAOH,CAAU,CAAC,EAEtB,OAAAN,EAAU,IAAM,CACd,GAAI,CAACK,EAAU,CACbI,EAAM,EAEN,OAGF,OAAAC,EAAM,EAECD,CACT,EAAG,CAACA,EAAOJ,EAAUK,CAAK,CAAC,EAQpB,CAAE,eANcX,EAAY,IAAM,CACnCM,GACFK,EAAM,CAEV,EAAG,CAACL,EAAUK,CAAK,CAAC,CAEI,CAC1B","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\ninterface UseReconciliationParams {\n reconcile: () => void | Promise<void>;\n isActive: boolean;\n intervalMs?: number;\n}\n\ninterface UseReconciliationResult {\n notifyActivity: () => void;\n}\n\nconst DEFAULT_INTERVAL_MS = 10000;\n\nexport function useReconciliation({\n reconcile,\n isActive,\n intervalMs = DEFAULT_INTERVAL_MS,\n}: UseReconciliationParams): UseReconciliationResult {\n const reconcileRef = useRef(reconcile);\n reconcileRef.current = reconcile;\n\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n const clear = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n\n const start = useCallback(() => {\n clear();\n\n intervalRef.current = setInterval(() => {\n void reconcileRef.current();\n }, intervalMs);\n }, [clear, intervalMs]);\n\n useEffect(() => {\n if (!isActive) {\n clear();\n\n return undefined;\n }\n\n start();\n\n return clear;\n }, [clear, isActive, start]);\n\n const notifyActivity = useCallback(() => {\n if (isActive) {\n start();\n }\n }, [isActive, start]);\n\n return { notifyActivity };\n}\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useReconciliation.ts"],"names":["useCallback","useEffect","useRef","DEFAULT_INTERVAL_MS","useReconciliation","reconcile","isActive","intervalMs","reconcileRef","intervalRef","clear","start"],"mappings":"AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAO/C,IAAMC,EAAsB,IAErB,SAASC,EAAkB,CAChC,UAAAC,EACA,SAAAC,EACA,WAAAC,EAAaJ,CACf,EAAqD,CACnD,IAAMK,EAAeN,EAAOG,CAAS,EACrCG,EAAa,QAAUH,EAEvB,IAAMI,EAAcP,EAA8C,IAAI,EAEhEQ,EAAQV,EAAY,IAAM,CAC1BS,EAAY,UACd,cAAcA,EAAY,OAAO,EACjCA,EAAY,QAAU,KAE1B,EAAG,CAAC,CAAC,EAECE,EAAQX,EAAY,IAAM,CAC9BU,EAAM,EAEND,EAAY,QAAU,YAAY,IAAM,CACjCD,EAAa,QAAQ,CAC5B,EAAGD,CAAU,CACf,EAAG,CAACG,EAAOH,CAAU,CAAC,EAEtB,OAAAN,EAAU,IAAM,CACd,GAAI,CAACK,EAAU,CACbI,EAAM,EAEN,OAGF,OAAAC,EAAM,EAECD,CACT,EAAG,CAACA,EAAOJ,EAAUK,CAAK,CAAC,EAQpB,CAAE,eANcX,EAAY,IAAM,CACnCM,GACFK,EAAM,CAEV,EAAG,CAACL,EAAUK,CAAK,CAAC,CAEI,CAC1B","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n UseReconciliationParams,\n UseReconciliationResult,\n} from './useReconciliation.types';\n\nconst DEFAULT_INTERVAL_MS = 10000;\n\nexport function useReconciliation({\n reconcile,\n isActive,\n intervalMs = DEFAULT_INTERVAL_MS,\n}: UseReconciliationParams): UseReconciliationResult {\n const reconcileRef = useRef(reconcile);\n reconcileRef.current = reconcile;\n\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n const clear = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n\n const start = useCallback(() => {\n clear();\n\n intervalRef.current = setInterval(() => {\n void reconcileRef.current();\n }, intervalMs);\n }, [clear, intervalMs]);\n\n useEffect(() => {\n if (!isActive) {\n clear();\n\n return undefined;\n }\n\n start();\n\n return clear;\n }, [clear, isActive, start]);\n\n const notifyActivity = useCallback(() => {\n if (isActive) {\n start();\n }\n }, [isActive, start]);\n\n return { notifyActivity };\n}\n"]}
@@ -3,6 +3,7 @@ import { Breakpoint } from '@mui/material/styles';
3
3
  type ReturnType = boolean;
4
4
  type Query = 'up' | 'down' | 'between' | 'only';
5
5
  type Value = Breakpoint | number;
6
+
6
7
  declare const useResponsive: (query: Query, start?: Value, end?: Value) => ReturnType;
7
8
  declare function useWidth(): "xs" | "sm" | "md" | "lg" | "xl";
8
9
 
@@ -1,2 +1,2 @@
1
- export { b as default, a as useWidth } from '../chunk-2ZJUGM2S.js';
1
+ export { b as default, a as useWidth } from '../chunk-TXJ45CNA.js';
2
2
  //# sourceMappingURL=useResponsive.js.map
@@ -2,6 +2,7 @@ type UseScrollOffSetTopReturn = {
2
2
  offsetTop: boolean;
3
3
  elementRef: React.RefObject<HTMLDivElement | null>;
4
4
  };
5
+
5
6
  declare const useScrollOffSetTop: (top?: number) => UseScrollOffSetTopReturn;
6
7
 
7
8
  export { UseScrollOffSetTopReturn, useScrollOffSetTop as default };
@@ -1,7 +1,7 @@
1
1
  import { useRef, useState, useCallback, useMemo } from 'react';
2
2
  import { useScroll, useMotionValueEvent } from 'framer-motion';
3
3
 
4
- var R=(t=0)=>{let e=useRef(null),{scrollY:r}=useScroll(),[o,l]=useState(!1),n=useCallback(c=>{let u=Math.round(c);if(e?.current){let f=e.current.getBoundingClientRect(),a=Math.round(f.top);l(a<t);}else l(u>t);},[e,t]);return useMotionValueEvent(r,"change",useMemo(()=>n,[n])),useMemo(()=>({elementRef:e,offsetTop:o}),[o])},g=R;
4
+ var d=(t=0)=>{let e=useRef(null),{scrollY:s}=useScroll(),[o,l]=useState(!1),r=useCallback(c=>{let f=Math.round(c);if(e?.current){let u=e.current.getBoundingClientRect(),p=Math.round(u.top);l(p<t);}else l(f>t);},[e,t]);return useMotionValueEvent(s,"change",useMemo(()=>r,[r])),useMemo(()=>({elementRef:e,offsetTop:o}),[o])},g=d;
5
5
 
6
6
  export { g as default };
7
7
  //# sourceMappingURL=useScrollOffSetTop.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useScrollOffSetTop.ts"],"names":["useCallback","useMemo","useRef","useState","useMotionValueEvent","useScroll","useScrollOffSetTop","top","elementRef","scrollY","offsetTop","setOffsetTop","handleScrollChange","val","scrollHeight","rect","elementTop","useScrollOffSetTop_default"],"mappings":"AAAA,OAAS,eAAAA,EAAa,WAAAC,EAAS,UAAAC,EAAQ,YAAAC,MAAgB,QACvD,OAAS,uBAAAC,EAAqB,aAAAC,MAAiB,gBAS/C,IAAMC,EAAqB,CAACC,EAAM,IAAgC,CAChE,IAAMC,EAAaN,EAAuB,IAAI,EAExC,CAAE,QAAAO,CAAQ,EAAIJ,EAAU,EAExB,CAACK,EAAWC,CAAY,EAAIR,EAAS,EAAK,EAE1CS,EAAqBZ,EACxBa,GAAgB,CACf,IAAMC,EAAe,KAAK,MAAMD,CAAG,EAEnC,GAAIL,GAAY,QAAS,CACvB,IAAMO,EAAOP,EAAW,QAAQ,sBAAsB,EAChDQ,EAAa,KAAK,MAAMD,EAAK,GAAG,EAEtCJ,EAAaK,EAAaT,CAAG,OAE7BI,EAAaG,EAAeP,CAAG,CAEnC,EACA,CAACC,EAAYD,CAAG,CAClB,EAEA,OAAAH,EACEK,EACA,SACAR,EAAQ,IAAMW,EAAoB,CAACA,CAAkB,CAAC,CACxD,EAEsBX,EAAQ,KAAO,CAAE,WAAAO,EAAY,UAAAE,CAAU,GAAI,CAACA,CAAS,CAAC,CAG9E,EAEOO,EAAQX","sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useMotionValueEvent, useScroll } from 'framer-motion';\n\n// ----------------------------------------------------------------------\n\nexport type UseScrollOffSetTopReturn = {\n offsetTop: boolean;\n elementRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst useScrollOffSetTop = (top = 0): UseScrollOffSetTopReturn => {\n const elementRef = useRef<HTMLDivElement>(null);\n\n const { scrollY } = useScroll();\n\n const [offsetTop, setOffsetTop] = useState(false);\n\n const handleScrollChange = useCallback(\n (val: number) => {\n const scrollHeight = Math.round(val);\n\n if (elementRef?.current) {\n const rect = elementRef.current.getBoundingClientRect();\n const elementTop = Math.round(rect.top);\n\n setOffsetTop(elementTop < top);\n } else {\n setOffsetTop(scrollHeight > top);\n }\n },\n [elementRef, top],\n );\n\n useMotionValueEvent(\n scrollY,\n 'change',\n useMemo(() => handleScrollChange, [handleScrollChange]),\n );\n\n const memoizedValue = useMemo(() => ({ elementRef, offsetTop }), [offsetTop]);\n\n return memoizedValue;\n};\n\nexport default useScrollOffSetTop;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useScrollOffSetTop.ts"],"names":["useCallback","useMemo","useRef","useState","useMotionValueEvent","useScroll","useScrollOffSetTop","top","elementRef","scrollY","offsetTop","setOffsetTop","handleScrollChange","val","scrollHeight","rect","elementTop","useScrollOffSetTop_default"],"mappings":"AAAA,OAAS,eAAAA,EAAa,WAAAC,EAAS,UAAAC,EAAQ,YAAAC,MAAgB,QACvD,OAAS,uBAAAC,EAAqB,aAAAC,MAAiB,gBAQ/C,IAAMC,EAAqB,CAACC,EAAM,IAAgC,CAChE,IAAMC,EAAaN,EAAuB,IAAI,EAExC,CAAE,QAAAO,CAAQ,EAAIJ,EAAU,EAExB,CAACK,EAAWC,CAAY,EAAIR,EAAS,EAAK,EAE1CS,EAAqBZ,EACxBa,GAAgB,CACf,IAAMC,EAAe,KAAK,MAAMD,CAAG,EAEnC,GAAIL,GAAY,QAAS,CACvB,IAAMO,EAAOP,EAAW,QAAQ,sBAAsB,EAChDQ,EAAa,KAAK,MAAMD,EAAK,GAAG,EAEtCJ,EAAaK,EAAaT,CAAG,OAE7BI,EAAaG,EAAeP,CAAG,CAEnC,EACA,CAACC,EAAYD,CAAG,CAClB,EAEA,OAAAH,EACEK,EACA,SACAR,EAAQ,IAAMW,EAAoB,CAACA,CAAkB,CAAC,CACxD,EAEsBX,EAAQ,KAAO,CAAE,WAAAO,EAAY,UAAAE,CAAU,GAAI,CAACA,CAAS,CAAC,CAG9E,EAEOO,EAAQX","sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useMotionValueEvent, useScroll } from 'framer-motion';\n\nimport type { UseScrollOffSetTopReturn } from './useScrollOffSetTop.types';\n\n// ----------------------------------------------------------------------\n\nexport type { UseScrollOffSetTopReturn } from './useScrollOffSetTop.types';\n\nconst useScrollOffSetTop = (top = 0): UseScrollOffSetTopReturn => {\n const elementRef = useRef<HTMLDivElement>(null);\n\n const { scrollY } = useScroll();\n\n const [offsetTop, setOffsetTop] = useState(false);\n\n const handleScrollChange = useCallback(\n (val: number) => {\n const scrollHeight = Math.round(val);\n\n if (elementRef?.current) {\n const rect = elementRef.current.getBoundingClientRect();\n const elementTop = Math.round(rect.top);\n\n setOffsetTop(elementTop < top);\n } else {\n setOffsetTop(scrollHeight > top);\n }\n },\n [elementRef, top],\n );\n\n useMotionValueEvent(\n scrollY,\n 'change',\n useMemo(() => handleScrollChange, [handleScrollChange]),\n );\n\n const memoizedValue = useMemo(() => ({ elementRef, offsetTop }), [offsetTop]);\n\n return memoizedValue;\n};\n\nexport default useScrollOffSetTop;\n"]}
@@ -12,6 +12,7 @@ declare const useSnackbar: () => {
12
12
  custom: (jsx: (id: string | number) => react.ReactElement<any, string | react.JSXElementConstructor<any>>, data?: ExternalToast | undefined) => string | number;
13
13
  message: (message: string | number | boolean | react.ReactElement<any, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | react.ReactPortal | (() => ReactNode) | null | undefined, data?: ExternalToast | undefined) => string | number;
14
14
  promise: <ToastData>(promise: Promise<ToastData> | (() => Promise<ToastData>), data?: ({
15
+ cancel?: ReactNode | sonner.Action;
15
16
  className?: string | undefined;
16
17
  style?: react.CSSProperties | undefined;
17
18
  position?: ("top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right") | undefined;
@@ -20,7 +21,6 @@ declare const useSnackbar: () => {
20
21
  icon?: ReactNode;
21
22
  duration?: number | undefined;
22
23
  onDismiss?: ((toast: sonner.ToastT) => void) | undefined;
23
- cancel?: ReactNode | sonner.Action;
24
24
  richColors?: boolean | undefined;
25
25
  invert?: boolean | undefined;
26
26
  closeButton?: boolean | undefined;
@@ -7,6 +7,7 @@ interface UseThemeToggleReturn {
7
7
  toggleTheme: () => void;
8
8
  setColorScheme: (scheme: ColorScheme) => void;
9
9
  }
10
+
10
11
  declare const useThemeToggle: () => UseThemeToggleReturn;
11
12
 
12
13
  export { UseThemeToggleReturn, useThemeToggle };