@zydon/common 2.8.3 → 2.8.5

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 (97) hide show
  1. package/dist/{chunk-Y2CGW4IS.js → chunk-2TTQU7UK.js} +2 -2
  2. package/dist/{chunk-WJVKRXMX.js → chunk-5HC2GFAE.js} +2 -2
  3. package/dist/{chunk-YFAFK6TE.js → chunk-72XEQM2V.js} +5 -5
  4. package/dist/{chunk-5NOWYWUO.js → chunk-7LYUPUBQ.js} +2 -2
  5. package/dist/{chunk-PN2MOQNO.js → chunk-7WZKRHNZ.js} +2 -2
  6. package/dist/chunk-BID75C4Q.js +11 -0
  7. package/dist/chunk-BID75C4Q.js.map +1 -0
  8. package/dist/{chunk-UNT3BDLX.js → chunk-CNQHXWHD.js} +2 -2
  9. package/dist/{chunk-42MERCEK.js → chunk-DYZRIGQ4.js} +2 -2
  10. package/dist/{chunk-V4NMFEDD.js → chunk-FJBFY7Z6.js} +3 -3
  11. package/dist/{chunk-NDHZ6TDI.js → chunk-GAZVPIXW.js} +2 -2
  12. package/dist/{chunk-FQ35VCL6.js → chunk-GCBBYA3D.js} +3 -3
  13. package/dist/{chunk-NLOKYCVH.js → chunk-HHFB7CMQ.js} +3 -3
  14. package/dist/chunk-HMWIAZSO.js +5 -0
  15. package/dist/chunk-HMWIAZSO.js.map +1 -0
  16. package/dist/{chunk-CEMDKZJB.js → chunk-HYOWHA4W.js} +2 -2
  17. package/dist/{chunk-XJTXIFOV.js → chunk-ILEZ6M7O.js} +2 -2
  18. package/dist/{chunk-KBG2WCJD.js → chunk-LDO2EDU5.js} +2 -2
  19. package/dist/{chunk-OZLWBZQH.js → chunk-MRXT3AY4.js} +2 -2
  20. package/dist/{chunk-6YHBKADU.js → chunk-TK7ZS6SH.js} +2 -2
  21. package/dist/{chunk-TNHAEQBS.js → chunk-UIPIEROS.js} +2 -2
  22. package/dist/components/ActionButton/index.js +3 -3
  23. package/dist/components/Autocomplete/index.js +3 -3
  24. package/dist/components/AvatarButton/index.js +2 -2
  25. package/dist/components/BuilderLayout/index.js +3 -3
  26. package/dist/components/BuilderSidebar/index.js +2 -2
  27. package/dist/components/BulkEditModal/index.js +4 -4
  28. package/dist/components/CardBrand/index.js +2 -2
  29. package/dist/components/Common/index.js +2 -2
  30. package/dist/components/CopyButton/index.js +3 -3
  31. package/dist/components/DataView/index.js +4 -4
  32. package/dist/components/DragButton/index.js +3 -3
  33. package/dist/components/Drawer/index.js +2 -2
  34. package/dist/components/DynamicDataView/index.js +5 -5
  35. package/dist/components/EasyCropModal/index.js +4 -4
  36. package/dist/components/Error/index.js +2 -2
  37. package/dist/components/ExpandableGroup/index.js +2 -2
  38. package/dist/components/FileUpload/index.js +7 -7
  39. package/dist/components/FrameSkeleton/index.js +2 -2
  40. package/dist/components/HelpButton/index.js +3 -3
  41. package/dist/components/Icon/index.js +2 -2
  42. package/dist/components/IconButton/index.js +3 -3
  43. package/dist/components/ImageCropModal/index.js +3 -3
  44. package/dist/components/Incrementer/index.js +3 -3
  45. package/dist/components/InfoCircle/index.js +2 -2
  46. package/dist/components/ListBundles/index.js +3 -3
  47. package/dist/components/MenuItem/index.js +2 -2
  48. package/dist/components/Modal/index.js +3 -3
  49. package/dist/components/MoreMenu/index.js +2 -2
  50. package/dist/components/PasswordRules/index.js +2 -2
  51. package/dist/components/PopoverSelect/index.js +2 -2
  52. package/dist/components/SearchInput/index.js +3 -3
  53. package/dist/components/SelectList/index.js +5 -5
  54. package/dist/components/SelectableCards/index.js +4 -4
  55. package/dist/components/SeoPreview/index.js +2 -2
  56. package/dist/components/StateDisplay/index.js +3 -3
  57. package/dist/components/Steps/index.js +2 -2
  58. package/dist/components/StyledTab/index.js +2 -2
  59. package/dist/components/SwapList/index.js +3 -3
  60. package/dist/components/WebhookCard/index.js +2 -2
  61. package/dist/components/carousel/index.js +3 -3
  62. package/dist/components/form/Address/index.js +4 -4
  63. package/dist/components/form/Autocomplete/index.js +4 -4
  64. package/dist/components/form/FileUpload/index.js +7 -7
  65. package/dist/components/form/Incrementer/index.js +3 -3
  66. package/dist/components/form/Password/index.js +2 -2
  67. package/dist/components/form/SelectList/index.js +5 -5
  68. package/dist/components/form/SelectableCards/index.js +4 -4
  69. package/dist/components/form/Webhook/index.js +5 -5
  70. package/dist/components/lightbox/index.js +2 -2
  71. package/dist/components/table/index.js +3 -3
  72. package/dist/contexts/PushNotifications/index.js +1 -1
  73. package/dist/contexts/PushNotifications/index.js.map +1 -1
  74. package/dist/types/icon.d.ts +1 -0
  75. package/dist/types/icon.js +1 -1
  76. package/package.json +1 -1
  77. package/dist/chunk-QVOKZISA.js +0 -11
  78. package/dist/chunk-QVOKZISA.js.map +0 -1
  79. package/dist/chunk-S7KQI2WJ.js +0 -5
  80. package/dist/chunk-S7KQI2WJ.js.map +0 -1
  81. /package/dist/{chunk-Y2CGW4IS.js.map → chunk-2TTQU7UK.js.map} +0 -0
  82. /package/dist/{chunk-WJVKRXMX.js.map → chunk-5HC2GFAE.js.map} +0 -0
  83. /package/dist/{chunk-YFAFK6TE.js.map → chunk-72XEQM2V.js.map} +0 -0
  84. /package/dist/{chunk-5NOWYWUO.js.map → chunk-7LYUPUBQ.js.map} +0 -0
  85. /package/dist/{chunk-PN2MOQNO.js.map → chunk-7WZKRHNZ.js.map} +0 -0
  86. /package/dist/{chunk-UNT3BDLX.js.map → chunk-CNQHXWHD.js.map} +0 -0
  87. /package/dist/{chunk-42MERCEK.js.map → chunk-DYZRIGQ4.js.map} +0 -0
  88. /package/dist/{chunk-V4NMFEDD.js.map → chunk-FJBFY7Z6.js.map} +0 -0
  89. /package/dist/{chunk-NDHZ6TDI.js.map → chunk-GAZVPIXW.js.map} +0 -0
  90. /package/dist/{chunk-FQ35VCL6.js.map → chunk-GCBBYA3D.js.map} +0 -0
  91. /package/dist/{chunk-NLOKYCVH.js.map → chunk-HHFB7CMQ.js.map} +0 -0
  92. /package/dist/{chunk-CEMDKZJB.js.map → chunk-HYOWHA4W.js.map} +0 -0
  93. /package/dist/{chunk-XJTXIFOV.js.map → chunk-ILEZ6M7O.js.map} +0 -0
  94. /package/dist/{chunk-KBG2WCJD.js.map → chunk-LDO2EDU5.js.map} +0 -0
  95. /package/dist/{chunk-OZLWBZQH.js.map → chunk-MRXT3AY4.js.map} +0 -0
  96. /package/dist/{chunk-6YHBKADU.js.map → chunk-TK7ZS6SH.js.map} +0 -0
  97. /package/dist/{chunk-TNHAEQBS.js.map → chunk-UIPIEROS.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { a as a$2 } from '../../chunk-RUABKHIV.js';
2
2
  import { a as a$1 } from '../../chunk-IJZCVZ32.js';
3
- import { o, a, f, k as k$1 } from '../../chunk-42MERCEK.js';
4
- import '../../chunk-QVOKZISA.js';
5
- import '../../chunk-S7KQI2WJ.js';
3
+ import { o, a, f, k as k$1 } from '../../chunk-DYZRIGQ4.js';
4
+ import '../../chunk-BID75C4Q.js';
5
+ import '../../chunk-HMWIAZSO.js';
6
6
  import '../../chunk-GLRLKFPS.js';
7
7
  import { Fragment } from 'react';
8
8
  import k from '@mui/material/Stack';
@@ -1,5 +1,5 @@
1
- import { a } from '../../chunk-QVOKZISA.js';
2
- import '../../chunk-S7KQI2WJ.js';
1
+ import { a } from '../../chunk-BID75C4Q.js';
2
+ import '../../chunk-HMWIAZSO.js';
3
3
  import c from '@mui/material/CircularProgress';
4
4
  import d from '@mui/material/MenuItem';
5
5
  import p from '@mui/material/Stack';
@@ -1,5 +1,5 @@
1
- export { a as default } from '../../chunk-XJTXIFOV.js';
2
- import '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
1
+ export { a as default } from '../../chunk-ILEZ6M7O.js';
2
+ import '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  //# sourceMappingURL=out.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import { a as a$2 } from '../../chunk-CO2KQFUN.js';
2
- import { a as a$1 } from '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
2
+ import { a as a$1 } from '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  import { a } from '../../chunk-LQRRMVFN.js';
5
5
  import M from '@mui/material/IconButton';
6
6
  import s from '@mui/material/Stack';
@@ -1,6 +1,6 @@
1
1
  import { d } from '../../chunk-A3QLGMSB.js';
2
- import { a as a$1 } from '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
2
+ import { a as a$1 } from '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  import a from '@mui/material/Typography';
5
5
  import i from '@mui/material/Stack';
6
6
  import { styled, alpha } from '@mui/material/styles';
@@ -1,6 +1,6 @@
1
1
  import { a as a$3 } from '../../chunk-CO2KQFUN.js';
2
- import { a as a$1 } from '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
2
+ import { a as a$1 } from '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  import { a as a$2 } from '../../chunk-LQRRMVFN.js';
5
5
  import S from '@mui/material/MenuItem';
6
6
  import a from '@mui/material/Box';
@@ -1,5 +1,5 @@
1
- export { a as default } from '../../chunk-5NOWYWUO.js';
2
- import '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
1
+ export { a as default } from '../../chunk-7LYUPUBQ.js';
2
+ import '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  //# sourceMappingURL=out.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
- export { a as default } from '../../chunk-NLOKYCVH.js';
1
+ export { a as default } from '../../chunk-HHFB7CMQ.js';
2
2
  import '../../chunk-RUABKHIV.js';
3
- import '../../chunk-5NOWYWUO.js';
3
+ import '../../chunk-7LYUPUBQ.js';
4
4
  import '../../chunk-IJZCVZ32.js';
5
5
  import '../../chunk-6U5LS7MP.js';
6
- import '../../chunk-NDHZ6TDI.js';
7
- import '../../chunk-QVOKZISA.js';
8
- import '../../chunk-S7KQI2WJ.js';
6
+ import '../../chunk-GAZVPIXW.js';
7
+ import '../../chunk-BID75C4Q.js';
8
+ import '../../chunk-HMWIAZSO.js';
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
- export { a as default } from '../../chunk-FQ35VCL6.js';
1
+ export { a as default } from '../../chunk-GCBBYA3D.js';
2
2
  import '../../chunk-6ZSTKYGL.js';
3
- import '../../chunk-5NOWYWUO.js';
3
+ import '../../chunk-7LYUPUBQ.js';
4
4
  import '../../chunk-IJZCVZ32.js';
5
5
  import '../../chunk-NIQW2J3M.js';
6
- import '../../chunk-QVOKZISA.js';
7
- import '../../chunk-S7KQI2WJ.js';
6
+ import '../../chunk-BID75C4Q.js';
7
+ import '../../chunk-HMWIAZSO.js';
8
8
  import '../../chunk-F65ZXAGV.js';
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import { a as a$1 } from '../../chunk-VJZTUPZB.js';
2
- import { a } from '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
2
+ import { a } from '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  import '../../chunk-RPO7AI5K.js';
5
5
  import p from '@mui/material/Box';
6
6
  import o from '@mui/material/Stack';
@@ -1,5 +1,5 @@
1
- export { a as default } from '../../chunk-CEMDKZJB.js';
2
- import '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
1
+ export { a as default } from '../../chunk-HYOWHA4W.js';
2
+ import '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  //# sourceMappingURL=out.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- import { a } from '../../chunk-QVOKZISA.js';
2
- import '../../chunk-S7KQI2WJ.js';
1
+ import { a } from '../../chunk-BID75C4Q.js';
2
+ import '../../chunk-HMWIAZSO.js';
3
3
  import s from '@mui/material/Box';
4
4
  import S from '@mui/material/Stack';
5
5
  import d from '@mui/material/Step';
@@ -1,5 +1,5 @@
1
- import { a } from '../../chunk-QVOKZISA.js';
2
- import '../../chunk-S7KQI2WJ.js';
1
+ import { a } from '../../chunk-BID75C4Q.js';
2
+ import '../../chunk-HMWIAZSO.js';
3
3
  import n from '@mui/material/Stack';
4
4
  import { styled, alpha } from '@mui/material/styles';
5
5
  import b from '@mui/material/Tab';
@@ -1,9 +1,9 @@
1
1
  import { a as a$2 } from '../../chunk-6ZSTKYGL.js';
2
- import { a } from '../../chunk-5NOWYWUO.js';
2
+ import { a } from '../../chunk-7LYUPUBQ.js';
3
3
  import { a as a$1 } from '../../chunk-IJZCVZ32.js';
4
4
  import '../../chunk-NIQW2J3M.js';
5
- import { a as a$4 } from '../../chunk-QVOKZISA.js';
6
- import '../../chunk-S7KQI2WJ.js';
5
+ import { a as a$4 } from '../../chunk-BID75C4Q.js';
6
+ import '../../chunk-HMWIAZSO.js';
7
7
  import { a as a$3 } from '../../chunk-F65ZXAGV.js';
8
8
  import { useState } from 'react';
9
9
  import h from '@mui/material/Checkbox';
@@ -2,8 +2,8 @@ import { d } from '../../chunk-JNDZPNQJ.js';
2
2
  import { a as a$3 } from '../../chunk-AVPFUSEB.js';
3
3
  import { a as a$2 } from '../../chunk-UVPQR2Q2.js';
4
4
  import { a } from '../../chunk-CO2KQFUN.js';
5
- import { a as a$4 } from '../../chunk-QVOKZISA.js';
6
- import '../../chunk-S7KQI2WJ.js';
5
+ import { a as a$4 } from '../../chunk-BID75C4Q.js';
6
+ import '../../chunk-HMWIAZSO.js';
7
7
  import { a as a$1 } from '../../chunk-LQRRMVFN.js';
8
8
  import '../../chunk-GLRLKFPS.js';
9
9
  import E from '@mui/material/Button';
@@ -1,6 +1,6 @@
1
- export { j as ArrowButton, f as Carousel, g as CarouselArrowBasicButtons, i as CarouselArrowFloatButtons, h as CarouselArrowNumberButtons, k as CarouselDotButtons, l as CarouselProgressBar, c as CarouselSlide, n as CarouselThumb, m as CarouselThumbs, e as StyledContainer, d as StyledRoot, a as carouselBreakpoints, b as carouselClasses, o as useCarousel } from '../../chunk-42MERCEK.js';
2
- import '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
1
+ export { j as ArrowButton, f as Carousel, g as CarouselArrowBasicButtons, i as CarouselArrowFloatButtons, h as CarouselArrowNumberButtons, k as CarouselDotButtons, l as CarouselProgressBar, c as CarouselSlide, n as CarouselThumb, m as CarouselThumbs, e as StyledContainer, d as StyledRoot, a as carouselBreakpoints, b as carouselClasses, o as useCarousel } from '../../chunk-DYZRIGQ4.js';
2
+ import '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  import '../../chunk-GLRLKFPS.js';
5
5
  //# sourceMappingURL=out.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
1
  import { a as a$1 } from '../../../chunk-X64QHBVQ.js';
2
2
  import { a as a$2 } from '../../../chunk-YXRL4O4H.js';
3
3
  import '../../../chunk-RTC7H5E5.js';
4
- import { a as a$3 } from '../../../chunk-WJVKRXMX.js';
5
- import '../../../chunk-Y2CGW4IS.js';
6
- import '../../../chunk-QVOKZISA.js';
7
- import '../../../chunk-S7KQI2WJ.js';
4
+ import { a as a$3 } from '../../../chunk-5HC2GFAE.js';
5
+ import '../../../chunk-2TTQU7UK.js';
6
+ import '../../../chunk-BID75C4Q.js';
7
+ import '../../../chunk-HMWIAZSO.js';
8
8
  import E from '@mui/material/CircularProgress';
9
9
  import g from '@mui/material/InputAdornment';
10
10
  import a from '@mui/material/Stack';
@@ -1,6 +1,6 @@
1
- export { a as default } from '../../../chunk-WJVKRXMX.js';
2
- import '../../../chunk-Y2CGW4IS.js';
3
- import '../../../chunk-QVOKZISA.js';
4
- import '../../../chunk-S7KQI2WJ.js';
1
+ export { a as default } from '../../../chunk-5HC2GFAE.js';
2
+ import '../../../chunk-2TTQU7UK.js';
3
+ import '../../../chunk-BID75C4Q.js';
4
+ import '../../../chunk-HMWIAZSO.js';
5
5
  //# sourceMappingURL=out.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,15 @@
1
- import { x, u, v, w } from '../../../chunk-YFAFK6TE.js';
2
- import '../../../chunk-UNT3BDLX.js';
3
- import '../../../chunk-6YHBKADU.js';
4
- import '../../../chunk-XJTXIFOV.js';
1
+ import { x, u, v, w } from '../../../chunk-72XEQM2V.js';
2
+ import '../../../chunk-CNQHXWHD.js';
3
+ import '../../../chunk-TK7ZS6SH.js';
4
+ import '../../../chunk-ILEZ6M7O.js';
5
5
  import '../../../chunk-KGLU4CR2.js';
6
- import '../../../chunk-OZLWBZQH.js';
6
+ import '../../../chunk-MRXT3AY4.js';
7
7
  import '../../../chunk-OF6623HG.js';
8
8
  import '../../../chunk-FBN7HCBY.js';
9
9
  import '../../../chunk-6U5LS7MP.js';
10
10
  import '../../../chunk-VITOOMKK.js';
11
- import '../../../chunk-QVOKZISA.js';
12
- import '../../../chunk-S7KQI2WJ.js';
11
+ import '../../../chunk-BID75C4Q.js';
12
+ import '../../../chunk-HMWIAZSO.js';
13
13
  import '../../../chunk-RPO7AI5K.js';
14
14
  import '../../../chunk-SVX7EWV4.js';
15
15
  import '../../../chunk-XNKYJHNL.js';
@@ -1,8 +1,8 @@
1
- import { a } from '../../../chunk-PN2MOQNO.js';
1
+ import { a } from '../../../chunk-7WZKRHNZ.js';
2
2
  import '../../../chunk-W3CK33IH.js';
3
3
  import '../../../chunk-OF6623HG.js';
4
- import '../../../chunk-QVOKZISA.js';
5
- import '../../../chunk-S7KQI2WJ.js';
4
+ import '../../../chunk-BID75C4Q.js';
5
+ import '../../../chunk-HMWIAZSO.js';
6
6
  import { useFormContext, Controller } from 'react-hook-form';
7
7
  import { jsx } from 'react/jsx-runtime';
8
8
 
@@ -1,7 +1,7 @@
1
1
  import { a } from '../../../chunk-YXRL4O4H.js';
2
2
  import { d } from '../../../chunk-A3QLGMSB.js';
3
- import { a as a$1 } from '../../../chunk-QVOKZISA.js';
4
- import '../../../chunk-S7KQI2WJ.js';
3
+ import { a as a$1 } from '../../../chunk-BID75C4Q.js';
4
+ import '../../../chunk-HMWIAZSO.js';
5
5
  import { useState } from 'react';
6
6
  import { useFormContext } from 'react-hook-form';
7
7
  import y from '@mui/material/IconButton';
@@ -1,11 +1,11 @@
1
- import { a } from '../../../chunk-NLOKYCVH.js';
1
+ import { a } from '../../../chunk-HHFB7CMQ.js';
2
2
  import '../../../chunk-RUABKHIV.js';
3
- import '../../../chunk-5NOWYWUO.js';
3
+ import '../../../chunk-7LYUPUBQ.js';
4
4
  import '../../../chunk-IJZCVZ32.js';
5
5
  import '../../../chunk-6U5LS7MP.js';
6
- import '../../../chunk-NDHZ6TDI.js';
7
- import '../../../chunk-QVOKZISA.js';
8
- import '../../../chunk-S7KQI2WJ.js';
6
+ import '../../../chunk-GAZVPIXW.js';
7
+ import '../../../chunk-BID75C4Q.js';
8
+ import '../../../chunk-HMWIAZSO.js';
9
9
  import { useFormContext, Controller } from 'react-hook-form';
10
10
  import { jsx } from 'react/jsx-runtime';
11
11
 
@@ -1,10 +1,10 @@
1
- import { a } from '../../../chunk-FQ35VCL6.js';
1
+ import { a } from '../../../chunk-GCBBYA3D.js';
2
2
  import '../../../chunk-6ZSTKYGL.js';
3
- import '../../../chunk-5NOWYWUO.js';
3
+ import '../../../chunk-7LYUPUBQ.js';
4
4
  import '../../../chunk-IJZCVZ32.js';
5
5
  import '../../../chunk-NIQW2J3M.js';
6
- import '../../../chunk-QVOKZISA.js';
7
- import '../../../chunk-S7KQI2WJ.js';
6
+ import '../../../chunk-BID75C4Q.js';
7
+ import '../../../chunk-HMWIAZSO.js';
8
8
  import '../../../chunk-F65ZXAGV.js';
9
9
  import { useFormContext, Controller } from 'react-hook-form';
10
10
  import { jsx } from 'react/jsx-runtime';
@@ -1,9 +1,9 @@
1
1
  import { a } from '../../../chunk-YXRL4O4H.js';
2
- import { a as a$2 } from '../../../chunk-WJVKRXMX.js';
3
- import { a as a$3 } from '../../../chunk-NDHZ6TDI.js';
4
- import '../../../chunk-Y2CGW4IS.js';
5
- import { a as a$1 } from '../../../chunk-QVOKZISA.js';
6
- import '../../../chunk-S7KQI2WJ.js';
2
+ import { a as a$2 } from '../../../chunk-5HC2GFAE.js';
3
+ import { a as a$3 } from '../../../chunk-GAZVPIXW.js';
4
+ import '../../../chunk-2TTQU7UK.js';
5
+ import { a as a$1 } from '../../../chunk-BID75C4Q.js';
6
+ import '../../../chunk-HMWIAZSO.js';
7
7
  import { useFormContext, useFieldArray } from 'react-hook-form';
8
8
  import N from '@mui/material/Divider';
9
9
  import B from '@mui/material/IconButton';
@@ -1,5 +1,5 @@
1
- import { a } from '../../chunk-QVOKZISA.js';
2
- import '../../chunk-S7KQI2WJ.js';
1
+ import { a } from '../../chunk-BID75C4Q.js';
2
+ import '../../chunk-HMWIAZSO.js';
3
3
  import w from '@mui/material/Box';
4
4
  import C, { useLightboxState } from 'yet-another-react-lightbox';
5
5
  import d from 'yet-another-react-lightbox/plugins/captions';
@@ -1,6 +1,6 @@
1
- import { a } from '../../chunk-CEMDKZJB.js';
2
- import '../../chunk-QVOKZISA.js';
3
- import '../../chunk-S7KQI2WJ.js';
1
+ import { a } from '../../chunk-HYOWHA4W.js';
2
+ import '../../chunk-BID75C4Q.js';
3
+ import '../../chunk-HMWIAZSO.js';
4
4
  import S from '@mui/material/TableCell';
5
5
  import F from '@mui/material/TableRow';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -5,7 +5,7 @@ import '../../chunk-TVKBRJHF.js';
5
5
  import { createContext, useState, useRef, useMemo, useEffect, useCallback, useContext } from 'react';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
 
8
- var te=createContext(void 0),fe=({children:p,originId:C,originType:V,bearerToken:G,vapidKey:H,serviceWorkerPath:k="/",serviceWorkerFile:x="service-worker.js",pollingInterval:W=1e3,apiAdapters:r,onMessageReceived:h,onError:o})=>{let[s,v]=useState(null),[A,B]=useState(!1),[z,R]=useState(!1),[y,se]=useState(!1),[F,L]=useState(0),[w]=useState(new Set),[m,ie]=useState({subscriptions:[]}),[_,$]=useState(!1),[N,D]=useState(!1),[P,f]=useState(!1),E=useRef(new Map),j=useMemo(()=>!s||_||A,[s,_,A]);useEffect(()=>{if(!N||!P||!s||!r.fetchMessages||m.subscriptions.length===0)return;let e=setInterval(async()=>{try{let a$1=((await r.fetchMessages(s))?.messages??[]).filter(i=>!(!i?.payload||w.has(i.id)));if(a$1.length===0)return;a$1.forEach(i=>{w.add(i.id),h?.(i.payload,i.topic);}),L(i=>i+a$1.length);try{(await Promise.allSettled(a$1.map(u=>r.updateMessageStatus(u.id,{status:"DELIVERED"})))).forEach(u=>{u.status==="rejected"&&a({type:"ERROR",environment:["development","homologation"],message:"Erro ao marcar mensagem como entregue:",data:u.reason});});}finally{new Set(a$1.map(g=>g.topic).filter(Boolean)).forEach(g=>{E.current.get(g)?.stopPollingOnFirstMessage&&E.current.delete(g);}),m.subscriptions.length>0||(D(!1),f(!1));}}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao buscar mensagens:",data:t});}},W);return ()=>clearInterval(e)},[r,s,h,N,W,w,P,m.subscriptions.length]);let b=useCallback(async(e,t)=>{B(!0);try{let c=e?.toJSON().keys,a={origin_type:V,origin_id:C,...t&&e?{endpoint:e.endpoint,auth:c?.auth,p256dh:c?.p256dh}:{}},i=await r.registerClient(a);return v(i.id),R(!1),se(t),t||f(!0),i.id}catch(c){return a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente:",data:c}),R(!0),o?.(c),null}finally{B(!1);}},[r,o,C,V]);useEffect(()=>{let e=!0,t=null;async function c(){if(!("serviceWorker"in navigator)||!("PushManager"in window)){a({type:"WARN",environment:["development","homologation"],message:"Push notifications n\xE3o suportadas, criando cliente ativo com polling"});try{let a=await b(null,!1);e&&a&&(v(a),f(!0));}catch(a$1){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente ativo:",data:a$1}),o?.(a$1);}return}try{let a$2=await Notification.requestPermission(),i=null,u=!1;if(a$2==="granted")try{let M=await navigator.serviceWorker.register(`${k}${x}`);if(!e||(await navigator.serviceWorker.ready,!e))return;i=await M.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:a$1(H)}),t=async I=>{let X=I.data?.payload,Y=I.data?.id;if(X&&(L(T=>T+1),h?.(X,I.data?.topic)),Y)try{await r.updateMessageStatus(Y,{status:"DELIVERED"});}catch(T){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao atualizar status da mensagem:",data:T}),R(!0),o?.(T);}},navigator.serviceWorker.addEventListener("message",t),u=!0,a({type:"LOG",environment:["development","homologation"],message:"Permiss\xE3o concedida, criando cliente passivo (aguarda webpush)"});}catch(M){a({type:"WARN",environment:["development","homologation"],message:"Falha ao configurar push subscription, criando cliente ativo:",data:M}),u=!1;}else a({type:"WARN",environment:["development","homologation"],message:"Permiss\xE3o de notifica\xE7\xE3o negada, criando cliente ativo com polling"}),u=!1;let g=await b(i,u);e&&g&&(v(g),u||f(!0));}catch(a$1){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inicializar notifica\xE7\xF5es:",data:a$1}),o?.(a$1);try{let i=await b(null,!1);e&&i&&(v(i),f(!0));}catch(i){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao criar cliente ativo como fallback:",data:i});}}}return G&&c(),()=>{e=!1,t&&"serviceWorker"in navigator&&navigator.serviceWorker.removeEventListener("message",t);}},[r,G,o,h,b,x,k,H]);let O=useCallback(async()=>{if(s){$(!0);try{let e=await r.listSubscriptions(s);ie(e);}catch(e){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao listar inscri\xE7\xF5es:",data:e}),o?.(e);}finally{$(!1);}}},[r,s,o]);useEffect(()=>{s&&O();},[s]);let q=useCallback(async(e,t)=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{t&&E.current.set(e,t),await r.subscribeTopic(s,e),await O(),!y&&(!N||!P)&&(D(!0),f(!0));}catch(c){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever no t\xF3pico:",data:c}),o?.(c);}},[r,s,y,o,N,O,P]),J=useCallback(async e=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{E.current.delete(e),await r.unsubscribeTopic(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever do t\xF3pico:",data:t}),o?.(t);}},[r,s,o,O]),U=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>{E.current.has(t)||E.current.set(t,{});}),await r.subscribeTopicsBatch(s,e),await O(),y||(D(!0),f(!0));}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever em t\xF3picos:",data:t}),o?.(t);}},[r,s,y,o,O]),K=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>E.current.delete(t)),await r.unsubscribeTopicsBatch(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever de t\xF3picos:",data:t}),o?.(t);}},[r,s,o,O]),Q=useCallback(()=>{L(0);},[]),ne=useMemo(()=>({clientId:s,subscribedTopics:m,isLoading:j,newMessageCount:F,isRegisterError:z,subscribeToTopic:q,unsubscribeFromTopic:J,subscribeTopicsBatch:U,unsubscribeTopicsBatch:K,resetMessageCount:Q}),[s,j,z,F,Q,m,q,U,J,K]);return jsx(te.Provider,{value:ne,children:p})};function Ee(){let p=useContext(te);if(!p)throw new Error("usePushNotifications precisa estar dentro de PushNotificationProvider");return p}
8
+ var te=createContext(void 0),fe=({children:y,originId:V,originType:G,bearerToken:H,vapidKey:k,serviceWorkerPath:x="/",serviceWorkerFile:W="service-worker.js",pollingInterval:A=1e3,apiAdapters:a$2,onMessageReceived:h,onError:o})=>{let[s,v]=useState(null),[B,m]=useState(!1),[z,L]=useState(!1),[N,se]=useState(!1),[F,w]=useState(0),[D]=useState(new Set),[p,ie]=useState({subscriptions:[]}),[_,$]=useState(!1),[P,I]=useState(!1),[b,f]=useState(!1),E=useRef(new Map),j=useMemo(()=>!s||_||B,[s,_,B]);useEffect(()=>{if(!P||!b||!s||!a$2.fetchMessages||p.subscriptions.length===0)return;let e=setInterval(async()=>{try{let r=((await a$2.fetchMessages(s))?.messages??[]).filter(i=>!(!i?.payload||D.has(i.id)));if(r.length===0)return;r.forEach(i=>{D.add(i.id),h?.(i.payload,i.topic);}),w(i=>i+r.length);try{(await Promise.allSettled(r.map(u=>a$2.updateMessageStatus(u.id,{status:"DELIVERED"})))).forEach(u=>{u.status==="rejected"&&a({type:"ERROR",environment:["development","homologation"],message:"Erro ao marcar mensagem como entregue:",data:u.reason});});}finally{new Set(r.map(g=>g.topic).filter(Boolean)).forEach(g=>{E.current.get(g)?.stopPollingOnFirstMessage&&E.current.delete(g);}),p.subscriptions.length>0||(I(!1),f(!1));}}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao buscar mensagens:",data:t});}},A);return ()=>clearInterval(e)},[a$2,s,h,P,A,D,b,p.subscriptions.length]);let M=useCallback(async(e,t)=>{m(!0);try{let c=e?.toJSON().keys,r={origin_type:G,origin_id:V,...t&&e?{endpoint:e.endpoint,auth:c?.auth,p256dh:c?.p256dh}:{}},i=await a$2.registerClient(r);return v(i.id),L(!1),se(t),t||f(!0),i.id}catch(c){return a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente:",data:c}),L(!0),o?.(c),null}finally{m(!1);}},[a$2,o,V,G]);useEffect(()=>{let e=!0,t=null;async function c(){if(m(!0),!("serviceWorker"in navigator)||!("PushManager"in window)){a({type:"WARN",environment:["development","homologation"],message:"Push notifications n\xE3o suportadas, criando cliente ativo com polling"});try{let r=await M(null,!1);e&&r&&(v(r),f(!0));}catch(r){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente ativo:",data:r}),o?.(r);}finally{m(!1);}return}try{let r=await Notification.requestPermission(),i=null,u=!1;if(r==="granted")try{let T=await navigator.serviceWorker.register(`${x}${W}`);if(!e||(await navigator.serviceWorker.ready,!e))return;i=await T.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:a$1(k)}),t=async S=>{let X=S.data?.payload,Y=S.data?.id;if(X&&(w(R=>R+1),h?.(X,S.data?.topic)),Y)try{await a$2.updateMessageStatus(Y,{status:"DELIVERED"});}catch(R){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao atualizar status da mensagem:",data:R}),L(!0),o?.(R);}},navigator.serviceWorker.addEventListener("message",t),u=!0,a({type:"LOG",environment:["development","homologation"],message:"Permiss\xE3o concedida, criando cliente passivo (aguarda webpush)"});}catch(T){a({type:"WARN",environment:["development","homologation"],message:"Falha ao configurar push subscription, criando cliente ativo:",data:T}),u=!1;}else a({type:"WARN",environment:["development","homologation"],message:"Permiss\xE3o de notifica\xE7\xE3o negada, criando cliente ativo com polling"}),u=!1;let g=await M(i,u);e&&g&&(v(g),u||f(!0));}catch(r){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inicializar notifica\xE7\xF5es:",data:r}),o?.(r);try{let i=await M(null,!1);e&&i&&(v(i),f(!0));}catch(i){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao criar cliente ativo como fallback:",data:i});}}finally{m(!1);}}return H&&c(),()=>{e=!1,t&&"serviceWorker"in navigator&&navigator.serviceWorker.removeEventListener("message",t);}},[a$2,H,o,h,M,W,x,k]);let O=useCallback(async()=>{if(s){$(!0);try{let e=await a$2.listSubscriptions(s);ie(e);}catch(e){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao listar inscri\xE7\xF5es:",data:e}),o?.(e);}finally{$(!1);}}},[a$2,s,o]);useEffect(()=>{s&&O();},[s]);let q=useCallback(async(e,t)=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{t&&E.current.set(e,t),await a$2.subscribeTopic(s,e),await O(),!N&&(!P||!b)&&(I(!0),f(!0));}catch(c){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever no t\xF3pico:",data:c}),o?.(c);}},[a$2,s,N,o,P,O,b]),J=useCallback(async e=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{E.current.delete(e),await a$2.unsubscribeTopic(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever do t\xF3pico:",data:t}),o?.(t);}},[a$2,s,o,O]),U=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>{E.current.has(t)||E.current.set(t,{});}),await a$2.subscribeTopicsBatch(s,e),await O(),N||(I(!0),f(!0));}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever em t\xF3picos:",data:t}),o?.(t);}},[a$2,s,N,o,O]),K=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>E.current.delete(t)),await a$2.unsubscribeTopicsBatch(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever de t\xF3picos:",data:t}),o?.(t);}},[a$2,s,o,O]),Q=useCallback(()=>{w(0);},[]),ne=useMemo(()=>({clientId:s,subscribedTopics:p,isLoading:j,newMessageCount:F,isRegisterError:z,subscribeToTopic:q,unsubscribeFromTopic:J,subscribeTopicsBatch:U,unsubscribeTopicsBatch:K,resetMessageCount:Q}),[s,j,z,F,Q,p,q,U,J,K]);return jsx(te.Provider,{value:ne,children:y})};function Ee(){let y=useContext(te);if(!y)throw new Error("usePushNotifications precisa estar dentro de PushNotificationProvider");return y}
9
9
 
10
10
  export { fe as PushNotificationProvider, Ee as usePushNotifications };
11
11
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/contexts/PushNotifications/index.tsx"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","jsx","PushNotificationContext","PushNotificationProvider","children","originId","originType","bearerToken","vapidKey","serviceWorkerPath","serviceWorkerFile","pollingInterval","apiAdapters","onMessageReceived","onError","clientId","setClientId","isRegistering","setIsRegistering","isRegisterError","setIsRegisterError","isPassiveClient","setIsPassiveClient","newMessageCount","setNewMessageCount","processedMessageIds","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","topicOptionsRef","isLoading","interval","deliverables","m","prev","consoleLog","topic","error","performClientRegistration","subscription","isPassive","keys","payload","response","mounted","messageHandler","initSwAndRegister","id","err","permission","registration","urlBase64ToUint8Array","e","message","deliveredId","fallbackErr","refetchSubscriptions","data","subscribeToTopic","options","unsubscribeFromTopic","subscribeTopicsBatch","topics","unsubscribeTopicsBatch","resetMessageCount","value","usePushNotifications","context"],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { ConsoleType, Environment } from 'types/consoleLog';\nimport {\n type ClientRegistrationPayload,\n MessageStatus,\n type PushNotificationContextData,\n type PushNotificationProviderProps,\n type SubscriptionsData,\n type TopicSubscriptionOptions,\n} from 'types/pushNotifications';\nimport { consoleLog } from 'utils/consoleLog';\nimport { urlBase64ToUint8Array } from 'utils/urlBase64ToUint8Array';\n\nconst PushNotificationContext = createContext<\n PushNotificationContextData | undefined\n>(undefined);\n\nexport const PushNotificationProvider = <TMessage = unknown,>({\n children,\n originId,\n originType,\n bearerToken,\n vapidKey,\n serviceWorkerPath = '/',\n serviceWorkerFile = 'service-worker.js',\n pollingInterval = 1000,\n apiAdapters,\n onMessageReceived,\n onError,\n}: PushNotificationProviderProps<TMessage>) => {\n const [clientId, setClientId] = useState<string | null>(null);\n const [isRegistering, setIsRegistering] = useState<boolean>(false);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions || isRegistering,\n [clientId, isLoadingSubscriptions, isRegistering],\n );\n\n useEffect(() => {\n if (\n !pollingEnabled ||\n !shouldPoll ||\n !clientId ||\n !apiAdapters.fetchMessages ||\n subscribedTopics.subscriptions.length === 0\n )\n return;\n\n const interval = setInterval(async () => {\n try {\n const result = await apiAdapters.fetchMessages!(clientId);\n const messages = result?.messages ?? [];\n\n const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\n\n return true;\n });\n\n if (deliverables.length === 0) return;\n\n deliverables.forEach(m => {\n processedMessageIds.add(m.id);\n onMessageReceived?.(m.payload, m.topic);\n });\n\n setNewMessageCount(prev => prev + deliverables.length);\n\n try {\n const updates = await Promise.allSettled(\n deliverables.map(m =>\n apiAdapters.updateMessageStatus(m.id, {\n status: MessageStatus.DELIVERED,\n }),\n ),\n );\n\n updates.forEach(u => {\n if (u.status === 'rejected') {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao marcar mensagem como entregue:',\n data: u.reason,\n });\n }\n });\n } finally {\n const topicsProcessed = new Set(\n deliverables.map(m => m.topic).filter(Boolean) as string[],\n );\n\n topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\n\n if (!hasSubscriptions) {\n setPollingEnabled(false);\n setShouldPoll(false);\n }\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao buscar mensagens:',\n data: error,\n });\n }\n }, pollingInterval);\n\n return () => clearInterval(interval);\n }, [\n apiAdapters,\n clientId,\n onMessageReceived,\n pollingEnabled,\n pollingInterval,\n processedMessageIds,\n shouldPoll,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\n setIsRegistering(true);\n\n try {\n const keys = subscription?.toJSON().keys;\n const payload: ClientRegistrationPayload = {\n origin_type: originType,\n origin_id: originId,\n ...(isPassive && subscription\n ? {\n endpoint: subscription.endpoint,\n auth: keys?.auth,\n p256dh: keys?.p256dh,\n }\n : {}),\n };\n\n const response = await apiAdapters.registerClient(payload);\n\n setClientId(response.id);\n setIsRegisterError(false);\n setIsPassiveClient(isPassive);\n\n if (!isPassive) {\n setShouldPoll(true);\n }\n\n return response.id;\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n setIsRegisterError(true);\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n },\n [apiAdapters, onError, originId, originType],\n );\n\n useEffect(() => {\n let mounted = true;\n let messageHandler: ((e: MessageEvent) => void) | null = null;\n\n async function initSwAndRegister() {\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Push notifications não suportadas, criando cliente ativo com polling',\n });\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente ativo:',\n data: err,\n });\n onError?.(err as Error);\n }\n return;\n }\n\n try {\n const permission = await Notification.requestPermission();\n\n let subscription: PushSubscription | null = null;\n let isPassiveClient = false;\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n if (!mounted) return;\n\n await navigator.serviceWorker.ready;\n\n if (!mounted) return;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n messageHandler = async (e: MessageEvent) => {\n const message = e.data?.payload;\n const deliveredId = e.data?.id;\n\n if (message) {\n setNewMessageCount(prev => prev + 1);\n onMessageReceived?.(message, e.data?.topic);\n }\n\n if (deliveredId) {\n try {\n await apiAdapters.updateMessageStatus(deliveredId, {\n status: MessageStatus.DELIVERED,\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao atualizar status da mensagem:',\n data: err,\n });\n setIsRegisterError(true);\n onError?.(err as Error);\n }\n }\n };\n\n navigator.serviceWorker.addEventListener('message', messageHandler);\n\n isPassiveClient = true;\n consoleLog({\n type: ConsoleType.LOG,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão concedida, criando cliente passivo (aguarda webpush)',\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Falha ao configurar push subscription, criando cliente ativo:',\n data: err,\n });\n isPassiveClient = false;\n }\n } else {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão de notificação negada, criando cliente ativo com polling',\n });\n isPassiveClient = false;\n }\n\n const id = await performClientRegistration(\n subscription,\n isPassiveClient,\n );\n if (mounted && id) {\n setClientId(id);\n\n if (!isPassiveClient) {\n setShouldPoll(true);\n }\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inicializar notificações:',\n data: err,\n });\n onError?.(err as Error);\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (fallbackErr) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao criar cliente ativo como fallback:',\n data: fallbackErr,\n });\n }\n }\n }\n\n if (bearerToken) {\n void initSwAndRegister();\n }\n\n return () => {\n mounted = false;\n if (messageHandler && 'serviceWorker' in navigator) {\n navigator.serviceWorker.removeEventListener('message', messageHandler);\n }\n };\n }, [\n apiAdapters,\n bearerToken,\n onError,\n onMessageReceived,\n performClientRegistration,\n serviceWorkerFile,\n serviceWorkerPath,\n vapidKey,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\n\n setSubscribedTopics(data);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao listar inscrições:',\n data: error,\n });\n\n onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [apiAdapters, clientId, onError]);\n\n useEffect(() => {\n if (clientId) {\n void refetchSubscriptions();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clientId]);\n\n const subscribeToTopic = useCallback(\n async (topic: string, options?: TopicSubscriptionOptions) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n if (options) {\n topicOptionsRef.current.set(topic, options);\n }\n\n await apiAdapters.subscribeTopic(clientId, topic);\n await refetchSubscriptions();\n\n if (!isPassiveClient && (!pollingEnabled || !shouldPoll)) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever no tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [\n apiAdapters,\n clientId,\n isPassiveClient,\n onError,\n pollingEnabled,\n refetchSubscriptions,\n shouldPoll,\n ],\n );\n\n const unsubscribeFromTopic = useCallback(\n async (topic: string) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n topicOptionsRef.current.delete(topic);\n\n await apiAdapters.unsubscribeTopic(clientId, topic);\n await refetchSubscriptions();\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever do tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const subscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => {\n if (!topicOptionsRef.current.has(topic)) {\n topicOptionsRef.current.set(topic, {});\n }\n });\n\n await apiAdapters.subscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n\n if (!isPassiveClient) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever em tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, isPassiveClient, onError, refetchSubscriptions],\n );\n\n const unsubscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => topicOptionsRef.current.delete(topic));\n\n await apiAdapters.unsubscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever de tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const resetMessageCount = useCallback(() => {\n setNewMessageCount(0);\n }, []);\n\n const value: PushNotificationContextData = useMemo(\n () => ({\n clientId,\n subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\n }),\n [\n clientId,\n isLoading,\n isRegisterError,\n newMessageCount,\n resetMessageCount,\n subscribedTopics,\n subscribeToTopic,\n subscribeTopicsBatch,\n unsubscribeFromTopic,\n unsubscribeTopicsBatch,\n ],\n );\n\n return (\n <PushNotificationContext.Provider value={value}>\n {children}\n </PushNotificationContext.Provider>\n );\n};\n\nexport function usePushNotifications(): PushNotificationContextData {\n const context = useContext(PushNotificationContext);\n\n if (!context) {\n throw new Error(\n 'usePushNotifications precisa estar dentro de PushNotificationProvider',\n );\n }\n\n return context;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/contexts/PushNotifications/index.tsx"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","jsx","PushNotificationContext","PushNotificationProvider","children","originId","originType","bearerToken","vapidKey","serviceWorkerPath","serviceWorkerFile","pollingInterval","apiAdapters","onMessageReceived","onError","clientId","setClientId","isRegistering","setIsRegistering","isRegisterError","setIsRegisterError","isPassiveClient","setIsPassiveClient","newMessageCount","setNewMessageCount","processedMessageIds","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","topicOptionsRef","isLoading","interval","deliverables","m","prev","consoleLog","topic","error","performClientRegistration","subscription","isPassive","keys","payload","response","mounted","messageHandler","initSwAndRegister","id","err","permission","registration","urlBase64ToUint8Array","e","message","deliveredId","fallbackErr","refetchSubscriptions","data","subscribeToTopic","options","unsubscribeFromTopic","subscribeTopicsBatch","topics","unsubscribeTopicsBatch","resetMessageCount","value","usePushNotifications","context"],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { ConsoleType, Environment } from 'types/consoleLog';\nimport {\n type ClientRegistrationPayload,\n MessageStatus,\n type PushNotificationContextData,\n type PushNotificationProviderProps,\n type SubscriptionsData,\n type TopicSubscriptionOptions,\n} from 'types/pushNotifications';\nimport { consoleLog } from 'utils/consoleLog';\nimport { urlBase64ToUint8Array } from 'utils/urlBase64ToUint8Array';\n\nconst PushNotificationContext = createContext<\n PushNotificationContextData | undefined\n>(undefined);\n\nexport const PushNotificationProvider = <TMessage = unknown,>({\n children,\n originId,\n originType,\n bearerToken,\n vapidKey,\n serviceWorkerPath = '/',\n serviceWorkerFile = 'service-worker.js',\n pollingInterval = 1000,\n apiAdapters,\n onMessageReceived,\n onError,\n}: PushNotificationProviderProps<TMessage>) => {\n const [clientId, setClientId] = useState<string | null>(null);\n const [isRegistering, setIsRegistering] = useState<boolean>(false);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions || isRegistering,\n [clientId, isLoadingSubscriptions, isRegistering],\n );\n\n useEffect(() => {\n if (\n !pollingEnabled ||\n !shouldPoll ||\n !clientId ||\n !apiAdapters.fetchMessages ||\n subscribedTopics.subscriptions.length === 0\n )\n return;\n\n const interval = setInterval(async () => {\n try {\n const result = await apiAdapters.fetchMessages!(clientId);\n const messages = result?.messages ?? [];\n\n const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\n\n return true;\n });\n\n if (deliverables.length === 0) return;\n\n deliverables.forEach(m => {\n processedMessageIds.add(m.id);\n onMessageReceived?.(m.payload, m.topic);\n });\n\n setNewMessageCount(prev => prev + deliverables.length);\n\n try {\n const updates = await Promise.allSettled(\n deliverables.map(m =>\n apiAdapters.updateMessageStatus(m.id, {\n status: MessageStatus.DELIVERED,\n }),\n ),\n );\n\n updates.forEach(u => {\n if (u.status === 'rejected') {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao marcar mensagem como entregue:',\n data: u.reason,\n });\n }\n });\n } finally {\n const topicsProcessed = new Set(\n deliverables.map(m => m.topic).filter(Boolean) as string[],\n );\n\n topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\n\n if (!hasSubscriptions) {\n setPollingEnabled(false);\n setShouldPoll(false);\n }\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao buscar mensagens:',\n data: error,\n });\n }\n }, pollingInterval);\n\n return () => clearInterval(interval);\n }, [\n apiAdapters,\n clientId,\n onMessageReceived,\n pollingEnabled,\n pollingInterval,\n processedMessageIds,\n shouldPoll,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\n setIsRegistering(true);\n\n try {\n const keys = subscription?.toJSON().keys;\n const payload: ClientRegistrationPayload = {\n origin_type: originType,\n origin_id: originId,\n ...(isPassive && subscription\n ? {\n endpoint: subscription.endpoint,\n auth: keys?.auth,\n p256dh: keys?.p256dh,\n }\n : {}),\n };\n\n const response = await apiAdapters.registerClient(payload);\n\n setClientId(response.id);\n setIsRegisterError(false);\n setIsPassiveClient(isPassive);\n\n if (!isPassive) {\n setShouldPoll(true);\n }\n\n return response.id;\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n setIsRegisterError(true);\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n },\n [apiAdapters, onError, originId, originType],\n );\n\n useEffect(() => {\n let mounted = true;\n let messageHandler: ((e: MessageEvent) => void) | null = null;\n\n async function initSwAndRegister() {\n setIsRegistering(true);\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Push notifications não suportadas, criando cliente ativo com polling',\n });\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente ativo:',\n data: err,\n });\n onError?.(err as Error);\n } finally {\n setIsRegistering(false);\n }\n return;\n }\n\n try {\n const permission = await Notification.requestPermission();\n\n let subscription: PushSubscription | null = null;\n let isPassiveClient = false;\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n if (!mounted) return;\n\n await navigator.serviceWorker.ready;\n\n if (!mounted) return;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n messageHandler = async (e: MessageEvent) => {\n const message = e.data?.payload;\n const deliveredId = e.data?.id;\n\n if (message) {\n setNewMessageCount(prev => prev + 1);\n onMessageReceived?.(message, e.data?.topic);\n }\n\n if (deliveredId) {\n try {\n await apiAdapters.updateMessageStatus(deliveredId, {\n status: MessageStatus.DELIVERED,\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao atualizar status da mensagem:',\n data: err,\n });\n setIsRegisterError(true);\n onError?.(err as Error);\n }\n }\n };\n\n navigator.serviceWorker.addEventListener('message', messageHandler);\n\n isPassiveClient = true;\n consoleLog({\n type: ConsoleType.LOG,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão concedida, criando cliente passivo (aguarda webpush)',\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Falha ao configurar push subscription, criando cliente ativo:',\n data: err,\n });\n isPassiveClient = false;\n }\n } else {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão de notificação negada, criando cliente ativo com polling',\n });\n isPassiveClient = false;\n }\n\n const id = await performClientRegistration(\n subscription,\n isPassiveClient,\n );\n if (mounted && id) {\n setClientId(id);\n\n if (!isPassiveClient) {\n setShouldPoll(true);\n }\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inicializar notificações:',\n data: err,\n });\n onError?.(err as Error);\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (fallbackErr) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao criar cliente ativo como fallback:',\n data: fallbackErr,\n });\n }\n } finally {\n setIsRegistering(false);\n }\n }\n\n if (bearerToken) {\n void initSwAndRegister();\n }\n\n return () => {\n mounted = false;\n if (messageHandler && 'serviceWorker' in navigator) {\n navigator.serviceWorker.removeEventListener('message', messageHandler);\n }\n };\n }, [\n apiAdapters,\n bearerToken,\n onError,\n onMessageReceived,\n performClientRegistration,\n serviceWorkerFile,\n serviceWorkerPath,\n vapidKey,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\n\n setSubscribedTopics(data);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao listar inscrições:',\n data: error,\n });\n\n onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [apiAdapters, clientId, onError]);\n\n useEffect(() => {\n if (clientId) {\n void refetchSubscriptions();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clientId]);\n\n const subscribeToTopic = useCallback(\n async (topic: string, options?: TopicSubscriptionOptions) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n if (options) {\n topicOptionsRef.current.set(topic, options);\n }\n\n await apiAdapters.subscribeTopic(clientId, topic);\n await refetchSubscriptions();\n\n if (!isPassiveClient && (!pollingEnabled || !shouldPoll)) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever no tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [\n apiAdapters,\n clientId,\n isPassiveClient,\n onError,\n pollingEnabled,\n refetchSubscriptions,\n shouldPoll,\n ],\n );\n\n const unsubscribeFromTopic = useCallback(\n async (topic: string) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n topicOptionsRef.current.delete(topic);\n\n await apiAdapters.unsubscribeTopic(clientId, topic);\n await refetchSubscriptions();\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever do tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const subscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => {\n if (!topicOptionsRef.current.has(topic)) {\n topicOptionsRef.current.set(topic, {});\n }\n });\n\n await apiAdapters.subscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n\n if (!isPassiveClient) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever em tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, isPassiveClient, onError, refetchSubscriptions],\n );\n\n const unsubscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => topicOptionsRef.current.delete(topic));\n\n await apiAdapters.unsubscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever de tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const resetMessageCount = useCallback(() => {\n setNewMessageCount(0);\n }, []);\n\n const value: PushNotificationContextData = useMemo(\n () => ({\n clientId,\n subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\n }),\n [\n clientId,\n isLoading,\n isRegisterError,\n newMessageCount,\n resetMessageCount,\n subscribedTopics,\n subscribeToTopic,\n subscribeTopicsBatch,\n unsubscribeFromTopic,\n unsubscribeTopicsBatch,\n ],\n );\n\n return (\n <PushNotificationContext.Provider value={value}>\n {children}\n </PushNotificationContext.Provider>\n );\n};\n\nexport function usePushNotifications(): PushNotificationContextData {\n const context = useContext(PushNotificationContext);\n\n if (!context) {\n throw new Error(\n 'usePushNotifications precisa estar dentro de PushNotificationProvider',\n );\n }\n\n return context;\n}\n"]}
@@ -84,6 +84,7 @@ declare enum Icon {
84
84
  ARROW_RIGHT_SIMPLE = "ARROW_RIGHT_SIMPLE",
85
85
  ARROW_LEFT_SIMPLE = "ARROW_LEFT_SIMPLE",
86
86
  DRAG_DROP_VERTICAL = "DRAG_DROP_VERTICAL",
87
+ ARROW_IOS_DOWNWARD_FILL = "ARROW_IOS_DOWNWARD_FILL",
87
88
  COMPUTER = "COMPUTER",
88
89
  SMART_PHONE_01 = "SMART_PHONE_01",
89
90
  PLAY_SIMPLE = "PLAY_SIMPLE",
@@ -1,3 +1,3 @@
1
- export { a as Icon } from '../chunk-S7KQI2WJ.js';
1
+ export { a as Icon } from '../chunk-HMWIAZSO.js';
2
2
  //# sourceMappingURL=out.js.map
3
3
  //# sourceMappingURL=icon.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zydon/common",
3
- "version": "2.8.3",
3
+ "version": "2.8.5",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",