@zydon/common 2.7.52 → 2.7.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-67G3SU45.js → chunk-AQV2PEBQ.js} +3 -3
- package/dist/{chunk-MH47LABH.js → chunk-BLMNSRNS.js} +2 -2
- package/dist/chunk-CFNATBO2.js +7 -0
- package/dist/chunk-CFNATBO2.js.map +1 -0
- package/dist/{chunk-BPJ7GVOR.js → chunk-CU7PKEY2.js} +2 -2
- package/dist/{chunk-BPJ7GVOR.js.map → chunk-CU7PKEY2.js.map} +1 -1
- package/dist/{chunk-YSXPBMQX.js → chunk-ESUU2GHD.js} +2 -2
- package/dist/{chunk-SBFNQNWD.js → chunk-GC7GAEFE.js} +2 -2
- package/dist/chunk-GC7GAEFE.js.map +1 -0
- package/dist/{chunk-GG2QI35C.js → chunk-GPWECRTP.js} +4 -4
- package/dist/chunk-GTMH7NKR.js +13 -0
- package/dist/chunk-GTMH7NKR.js.map +1 -0
- package/dist/{chunk-57TAXCGA.js → chunk-I2JQIMEJ.js} +2 -2
- package/dist/{chunk-NJJWOJLT.js → chunk-JBPWWO5D.js} +2 -2
- package/dist/{chunk-TNVKQPKP.js → chunk-K5EVTJEW.js} +2 -2
- package/dist/{chunk-JD3H2MXN.js → chunk-LOF5K56U.js} +2 -2
- package/dist/{chunk-UBAQSPT5.js → chunk-LVRSRXV2.js} +3 -3
- package/dist/{chunk-JK273LN4.js → chunk-QN4YPUG7.js} +3 -3
- package/dist/{chunk-6KDIPK6I.js → chunk-QXEYILV5.js} +2 -2
- package/dist/chunk-RFYCSLP5.js +11 -0
- package/dist/chunk-RFYCSLP5.js.map +1 -0
- package/dist/{chunk-V76B4HM6.js → chunk-TBUIZEOJ.js} +2 -2
- package/dist/{chunk-LKPDHISO.js → chunk-TVJ5V5AM.js} +2 -2
- package/dist/{chunk-BXHP4CYE.js → chunk-U653Z4YN.js} +2 -2
- package/dist/{chunk-VJIUU4C3.js → chunk-UNG4CL25.js} +6 -6
- package/dist/{chunk-HDBCZZRX.js → chunk-VYANDAEH.js} +2 -2
- package/dist/{chunk-JHNJP4OO.js → chunk-WJK6CE54.js} +2 -2
- package/dist/chunk-YBFLHTQK.js +27 -0
- package/dist/chunk-YBFLHTQK.js.map +1 -0
- package/dist/components/ActionButton/index.js +2 -3
- package/dist/components/Autocomplete/index.js +2 -3
- package/dist/components/AvatarButton/index.js +3 -4
- package/dist/components/AvatarButton/index.js.map +1 -1
- package/dist/components/BuilderLayout/index.js +2 -3
- package/dist/components/BuilderLayout/index.js.map +1 -1
- package/dist/components/BuilderSidebar/index.js +1 -2
- package/dist/components/BuilderSidebar/index.js.map +1 -1
- package/dist/components/CardBrand/index.js +1 -2
- package/dist/components/CardBrand/index.js.map +1 -1
- package/dist/components/Common/index.js +3 -4
- package/dist/components/Common/index.js.map +1 -1
- package/dist/components/CopyButton/index.d.ts +12 -0
- package/dist/components/CopyButton/index.js +8 -0
- package/dist/components/DataCards/index.js +1 -1
- package/dist/components/DataGrid/index.js +2 -2
- package/dist/components/DataView/index.d.ts +11 -4
- package/dist/components/DataView/index.js +12 -26
- package/dist/components/DataView/index.js.map +1 -1
- package/dist/components/DragButton/index.js +2 -3
- package/dist/components/Drawer/index.js +1 -2
- package/dist/components/Drawer/index.js.map +1 -1
- package/dist/components/DynamicDataView/index.d.ts +116 -0
- package/dist/components/DynamicDataView/index.js +34 -0
- package/dist/components/DynamicDataView/index.js.map +1 -0
- package/dist/components/EasyCropModal/index.js +3 -4
- package/dist/components/Error/index.js +1 -2
- package/dist/components/Error/index.js.map +1 -1
- package/dist/components/ExpandableGroup/index.js +1 -2
- package/dist/components/ExpandableGroup/index.js.map +1 -1
- package/dist/components/FileUpload/index.js +8 -9
- package/dist/components/FrameSkeleton/index.js +1 -2
- package/dist/components/FrameSkeleton/index.js.map +1 -1
- package/dist/components/HelpButton/index.js +2 -3
- package/dist/components/Icon/index.js +1 -2
- package/dist/components/IconButton/index.js +2 -3
- package/dist/components/ImageCropModal/index.js +3 -4
- package/dist/components/Incrementer/index.js +2 -3
- package/dist/components/InfoCircle/index.js +1 -2
- package/dist/components/InfoCircle/index.js.map +1 -1
- package/dist/components/ListBundles/index.js +2 -3
- package/dist/components/ListBundles/index.js.map +1 -1
- package/dist/components/MenuItem/index.js +1 -2
- package/dist/components/MenuItem/index.js.map +1 -1
- package/dist/components/Modal/index.js +2 -3
- package/dist/components/MoreMenu/index.d.ts +4 -1
- package/dist/components/MoreMenu/index.js +7 -8
- package/dist/components/MoreMenu/index.js.map +1 -1
- package/dist/components/PageHeader/index.d.ts +13 -0
- package/dist/components/PageHeader/index.js +10 -0
- package/dist/components/PageHeader/index.js.map +1 -0
- package/dist/components/PasswordRules/index.js +1 -2
- package/dist/components/PasswordRules/index.js.map +1 -1
- package/dist/components/PopoverSelect/index.js +1 -2
- package/dist/components/PopoverSelect/index.js.map +1 -1
- package/dist/components/SearchInput/index.js +2 -3
- package/dist/components/SelectableCards/index.js +3 -4
- package/dist/components/SeoPreview/index.js +1 -2
- package/dist/components/SeoPreview/index.js.map +1 -1
- package/dist/components/StateDisplay/index.js +2 -3
- package/dist/components/Steps/index.js +1 -2
- package/dist/components/Steps/index.js.map +1 -1
- package/dist/components/StyledTab/index.js +1 -2
- package/dist/components/StyledTab/index.js.map +1 -1
- package/dist/components/SwapList/index.js +2 -3
- package/dist/components/SwapList/index.js.map +1 -1
- package/dist/components/ToggleTheme/index.js +2 -2
- package/dist/components/WebhookCard/index.js +1 -2
- package/dist/components/WebhookCard/index.js.map +1 -1
- package/dist/components/carousel/index.js +2 -3
- package/dist/components/form/Address/index.js +3 -4
- package/dist/components/form/Address/index.js.map +1 -1
- package/dist/components/form/Autocomplete/index.js +3 -4
- package/dist/components/form/FileUpload/index.js +8 -9
- package/dist/components/form/FileUpload/index.js.map +1 -1
- package/dist/components/form/Incrementer/index.js +2 -3
- package/dist/components/form/Incrementer/index.js.map +1 -1
- package/dist/components/form/Password/index.js +1 -2
- package/dist/components/form/Password/index.js.map +1 -1
- package/dist/components/form/SelectableCards/index.js +3 -4
- package/dist/components/form/SelectableCards/index.js.map +1 -1
- package/dist/components/form/UploadAvatarWithCrop/index.js +4 -5
- package/dist/components/form/UploadAvatarWithCrop/index.js.map +1 -1
- package/dist/components/form/UploadWithCrop/index.js +6 -7
- package/dist/components/form/UploadWithCrop/index.js.map +1 -1
- package/dist/components/form/Webhook/index.js +4 -5
- package/dist/components/form/Webhook/index.js.map +1 -1
- package/dist/components/lightbox/index.js +1 -2
- package/dist/components/lightbox/index.js.map +1 -1
- package/dist/components/table/index.js +2 -3
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/upload/index.js +7 -8
- package/dist/components/upload/index.js.map +1 -1
- package/dist/contexts/PushNotifications/index.js +1 -1
- package/dist/contexts/PushNotifications/index.js.map +1 -1
- package/dist/hooks/useCopyToClipboard.js +1 -5
- package/dist/hooks/useCopyToClipboard.js.map +1 -1
- package/dist/hooks/useThemeToggle.js +2 -2
- package/dist/index.js +2 -2
- package/dist/theme/theme-provider.js +2 -2
- package/dist/types/entityMetadata.d.ts +30 -0
- package/dist/types/entityMetadata.js +3 -0
- package/dist/types/entityMetadata.js.map +1 -0
- package/dist/types/iconProps.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-DJ22BFQ5.js +0 -3
- package/dist/chunk-KTME4D5T.js +0 -11
- package/dist/chunk-KTME4D5T.js.map +0 -1
- package/dist/chunk-SBFNQNWD.js.map +0 -1
- /package/dist/{chunk-67G3SU45.js.map → chunk-AQV2PEBQ.js.map} +0 -0
- /package/dist/{chunk-MH47LABH.js.map → chunk-BLMNSRNS.js.map} +0 -0
- /package/dist/{chunk-YSXPBMQX.js.map → chunk-ESUU2GHD.js.map} +0 -0
- /package/dist/{chunk-GG2QI35C.js.map → chunk-GPWECRTP.js.map} +0 -0
- /package/dist/{chunk-57TAXCGA.js.map → chunk-I2JQIMEJ.js.map} +0 -0
- /package/dist/{chunk-NJJWOJLT.js.map → chunk-JBPWWO5D.js.map} +0 -0
- /package/dist/{chunk-TNVKQPKP.js.map → chunk-K5EVTJEW.js.map} +0 -0
- /package/dist/{chunk-JD3H2MXN.js.map → chunk-LOF5K56U.js.map} +0 -0
- /package/dist/{chunk-UBAQSPT5.js.map → chunk-LVRSRXV2.js.map} +0 -0
- /package/dist/{chunk-JK273LN4.js.map → chunk-QN4YPUG7.js.map} +0 -0
- /package/dist/{chunk-6KDIPK6I.js.map → chunk-QXEYILV5.js.map} +0 -0
- /package/dist/{chunk-V76B4HM6.js.map → chunk-TBUIZEOJ.js.map} +0 -0
- /package/dist/{chunk-LKPDHISO.js.map → chunk-TVJ5V5AM.js.map} +0 -0
- /package/dist/{chunk-BXHP4CYE.js.map → chunk-U653Z4YN.js.map} +0 -0
- /package/dist/{chunk-VJIUU4C3.js.map → chunk-UNG4CL25.js.map} +0 -0
- /package/dist/{chunk-HDBCZZRX.js.map → chunk-VYANDAEH.js.map} +0 -0
- /package/dist/{chunk-JHNJP4OO.js.map → chunk-WJK6CE54.js.map} +0 -0
- /package/dist/{chunk-DJ22BFQ5.js.map → components/CopyButton/index.js.map} +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { a } from '../../../chunk-YXRL4O4H.js';
|
|
2
2
|
import { d } from '../../../chunk-ZMB2HEJV.js';
|
|
3
|
-
import { a as a$1 } from '../../../chunk-
|
|
3
|
+
import { a as a$1 } from '../../../chunk-GC7GAEFE.js';
|
|
4
4
|
import '../../../chunk-TC4DDJSR.js';
|
|
5
|
-
import '../../../chunk-DJ22BFQ5.js';
|
|
6
5
|
import { useState } from 'react';
|
|
7
6
|
import { useFormContext } from 'react-hook-form';
|
|
8
7
|
import y from '@mui/material/IconButton';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/form/Password/index.tsx"],"names":["useState","useFormContext","IconButton","InputAdornment","jsx","jsxs","Password","name","sx","rules","passwordSize","specialCharacter","upperCaseChar","numberChar","showErrorMessage","match","helperText","InputProps","showButtonViewPassword","other","watch","password","showPassword","setShowPassword","hasNumberChar","hasSpecialCharacter","hasUpperCaseChar","isLengthValid","validatePassword","display","Field_default","Icon_default","v","validation","Password_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/form/Password/index.tsx"],"names":["useState","useFormContext","IconButton","InputAdornment","jsx","jsxs","Password","name","sx","rules","passwordSize","specialCharacter","upperCaseChar","numberChar","showErrorMessage","match","helperText","InputProps","showButtonViewPassword","other","watch","password","showPassword","setShowPassword","hasNumberChar","hasSpecialCharacter","hasUpperCaseChar","isLengthValid","validatePassword","display","Field_default","Icon_default","v","validation","Password_default"],"mappings":"gLAAA,OAAS,YAAAA,MAAgB,QACzB,OAAS,kBAAAC,MAAsB,kBAC/B,OAAOC,MAAgB,2BACvB,OAAOC,MAAoB,+BAwDjB,OAUM,OAAAC,EAVN,QAAAC,MAAA,oBAhDV,IAAMC,EAAW,CAAC,CAChB,KAAAC,EACA,GAAAC,EACA,MAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,MAAAC,EACA,WAAAC,EACA,WAAAC,EACA,uBAAAC,EAAyB,GACzB,GAAGC,CACL,IAAqB,CACnB,GAAM,CAAE,MAAAC,CAAM,EAAInB,EAAe,EAC3BoB,EAAWD,EAAMb,CAAI,EACrB,CAACe,EAAcC,CAAe,EAAIvB,EAAS,EAAK,EAChD,CACJ,cAAAwB,EACA,oBAAAC,EACA,iBAAAC,EACA,cAAAC,CACF,EAAIC,EACFP,EACAX,EACAG,EACAF,EACAC,CACF,EAQMiB,GALH,CAACJ,GACA,CAACC,GACD,CAACC,GACD,CAACH,IACH,CAACV,EAC8B,OAAS,OAE1C,OACEV,EAAC0B,EAAA,CACC,uBAAsBvB,EACrB,GAAGY,EACJ,KAAMZ,EACN,KAAMe,EAAe,OAAS,WAC9B,WAAY,CACV,GAAGL,EACH,aACEZ,EAACF,EAAA,CAAe,SAAS,MACtB,UAAAc,GAAY,aAEZC,GACCd,EAACF,EAAA,CACC,QAAS,IAAMqB,EAAgB,CAACD,CAAY,EAC5C,KAAK,MACL,aAAW,wBACX,SAAU,GAEV,SAAAlB,EAAC2B,EAAA,CAAK,KAAMT,EAAe,UAAY,WAAY,EACrD,GAEJ,CAEJ,EACA,MAAO,CACL,GAAGb,EACH,SAAU,CACR,GAAGA,GAAO,SACV,mBAAqBuB,GAAc,CACjC,IAAMC,EAAaL,EACjBI,EACAtB,EACAG,EACAF,EACAC,CACF,EAEA,MACE,CAACqB,EAAW,eACZ,CAACA,EAAW,qBACZ,CAACA,EAAW,kBACZ,CAACA,EAAW,cAEL,oBAELlB,GAASA,EAAM,eACKK,EAAML,EAAM,aAAa,IAEzBiB,EAAU,6BAG3B,EACT,CACF,CACF,EACA,GAAI,CACF,GAAGxB,EACH,4BAA6B,CAC3B,QAASQ,EAAa,OAAYa,CACpC,CACF,EACA,oBAAmB,GACnB,WAAYb,EACd,CAEJ,EAEOkB,EAAQ5B","sourcesContent":["import { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\n\nimport Field from 'components/form/Field';\nimport Icon from 'components/Icon';\nimport { validatePassword } from 'utils/validators';\n\nimport { PasswordProps } from './props';\n\nconst Password = ({\n name,\n sx,\n rules,\n passwordSize,\n specialCharacter,\n upperCaseChar,\n numberChar,\n showErrorMessage,\n match,\n helperText,\n InputProps,\n showButtonViewPassword = true,\n ...other\n}: PasswordProps) => {\n const { watch } = useFormContext();\n const password = watch(name);\n const [showPassword, setShowPassword] = useState(false);\n const {\n hasNumberChar,\n hasSpecialCharacter,\n hasUpperCaseChar,\n isLengthValid,\n } = validatePassword(\n password,\n passwordSize,\n numberChar,\n specialCharacter,\n upperCaseChar,\n );\n\n const hideHelperText =\n (!hasSpecialCharacter ||\n !hasUpperCaseChar ||\n !isLengthValid ||\n !hasNumberChar) &&\n !showErrorMessage;\n const display = hideHelperText ? 'none' : undefined;\n\n return (\n <Field\n data-intercom-target={name}\n {...other}\n name={name}\n type={showPassword ? 'text' : 'password'}\n InputProps={{\n ...InputProps,\n endAdornment: (\n <InputAdornment position=\"end\">\n {InputProps?.endAdornment}\n\n {showButtonViewPassword && (\n <IconButton\n onClick={() => setShowPassword(!showPassword)}\n edge=\"end\"\n aria-label=\"Mostrar/Ocultar senha\"\n tabIndex={-1}\n >\n <Icon icon={showPassword ? 'VIEW_ON' : 'VIEW_OFF'} />\n </IconButton>\n )}\n </InputAdornment>\n ),\n }}\n rules={{\n ...rules,\n validate: {\n ...rules?.validate,\n validationPassword: (v: string) => {\n const validation = validatePassword(\n v,\n passwordSize,\n numberChar,\n specialCharacter,\n upperCaseChar,\n );\n\n if (\n !validation.hasNumberChar ||\n !validation.hasSpecialCharacter ||\n !validation.hasUpperCaseChar ||\n !validation.isLengthValid\n )\n return 'Senha inválida';\n\n if (match && match.fieldPassword) {\n const passwordValue = watch(match.fieldPassword);\n\n if (passwordValue !== v) return 'As senhas devem ser iguais';\n }\n\n return true;\n },\n },\n }}\n sx={{\n ...sx,\n '& .MuiFormHelperText-root': {\n display: helperText ? undefined : display,\n },\n }}\n forceShowHelperText\n helperText={helperText}\n />\n );\n};\n\nexport default Password;\n"]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { a } from '../../../chunk-
|
|
1
|
+
import { a } from '../../../chunk-LVRSRXV2.js';
|
|
2
2
|
import '../../../chunk-6ZSTKYGL.js';
|
|
3
|
-
import '../../../chunk-
|
|
3
|
+
import '../../../chunk-LOF5K56U.js';
|
|
4
4
|
import '../../../chunk-IJZCVZ32.js';
|
|
5
5
|
import '../../../chunk-NIQW2J3M.js';
|
|
6
|
-
import '../../../chunk-
|
|
6
|
+
import '../../../chunk-GC7GAEFE.js';
|
|
7
7
|
import '../../../chunk-TC4DDJSR.js';
|
|
8
|
-
import '../../../chunk-DJ22BFQ5.js';
|
|
9
8
|
import '../../../chunk-XWUVJ22J.js';
|
|
10
9
|
import { useFormContext, Controller } from 'react-hook-form';
|
|
11
10
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/form/SelectableCards/index.tsx"],"names":["Controller","useFormContext","jsx","SelectableCards","name","rules","other","control","field","SelectableCards_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/form/SelectableCards/index.tsx"],"names":["Controller","useFormContext","jsx","SelectableCards","name","rules","other","control","field","SelectableCards_default"],"mappings":"oSAAA,OAAS,cAAAA,EAAY,kBAAAC,MAAsB,kBAe5B,cAAAC,MAAA,oBATf,IAAMC,EAAkB,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,GAAGC,CAAM,IAA4B,CAC3E,GAAM,CAAE,QAAAC,CAAQ,EAAIN,EAAe,EAEnC,OACEC,EAACF,EAAA,CACC,KAAMI,EACN,QAASG,EACT,MAAOF,EACP,OAAQ,CAAC,CAAE,MAAAG,CAAM,IACRN,EAACO,EAAA,CAA0B,GAAGD,EAAQ,GAAGF,EAAO,EAE3D,CAEJ,EAEOG,EAAQN","sourcesContent":["import { Controller, useFormContext } from 'react-hook-form';\n\nimport SelectableCardsComponent from 'components/SelectableCards';\n\nimport { SelectableCardsProps } from './props';\n\nconst SelectableCards = ({ name, rules, ...other }: SelectableCardsProps) => {\n const { control } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field }) => {\n return <SelectableCardsComponent {...field} {...other} />;\n }}\n />\n );\n};\n\nexport default SelectableCards;\n"]}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { b } from '../../../chunk-
|
|
1
|
+
import { b } from '../../../chunk-AQV2PEBQ.js';
|
|
2
2
|
import '../../../chunk-SA2BESEB.js';
|
|
3
|
-
import '../../../chunk-
|
|
3
|
+
import '../../../chunk-QN4YPUG7.js';
|
|
4
|
+
import '../../../chunk-TBUIZEOJ.js';
|
|
4
5
|
import '../../../chunk-ESFOFEVL.js';
|
|
5
6
|
import '../../../chunk-OF6623HG.js';
|
|
6
|
-
import '../../../chunk-
|
|
7
|
-
import '../../../chunk-SBFNQNWD.js';
|
|
7
|
+
import '../../../chunk-GC7GAEFE.js';
|
|
8
8
|
import '../../../chunk-TC4DDJSR.js';
|
|
9
|
-
import '../../../chunk-DJ22BFQ5.js';
|
|
10
9
|
import { a } from '../../../chunk-YCEQDXLR.js';
|
|
11
10
|
import '../../../chunk-SBMEL2IJ.js';
|
|
12
11
|
import '../../../chunk-E3R7W7GK.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/form/UploadAvatarWithCrop/index.tsx"],"names":["Controller","useFormContext","FormHelperText","jsx","UploadAvatarWithCrop","name","rules","helperText","aspect","label","image","onFileCropped","onImageUploaded","onCancel","other","control","uploadFile","file","setFileValue","useUpload_default","value","error","upload_avatar_with_crop_default","v","UploadAvatarWithCrop_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/form/UploadAvatarWithCrop/index.tsx"],"names":["Controller","useFormContext","FormHelperText","jsx","UploadAvatarWithCrop","name","rules","helperText","aspect","label","image","onFileCropped","onImageUploaded","onCancel","other","control","uploadFile","file","setFileValue","useUpload_default","value","error","upload_avatar_with_crop_default","v","UploadAvatarWithCrop_default"],"mappings":"+dAAA,OAAS,cAAAA,EAAY,kBAAAC,MAAsB,kBAC3C,OAAOC,MAAoB,+BA6Cb,cAAAC,MAAA,oBAtCd,IAAMC,EAAuB,CAAC,CAC5B,KAAAC,EACA,MAAAC,EACA,WAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAAiC,CAC/B,GAAM,CAAE,QAAAC,CAAQ,EAAId,EAAe,EAC7B,CAAE,WAAAe,EAAY,KAAAC,EAAM,aAAAC,CAAa,EAAIC,EAAUd,CAAI,EAEzD,OACEF,EAACH,EAAA,CACC,KAAMK,EACN,QAASU,EACT,MAAOT,EACP,OAAQ,CAAC,CAAE,MAAO,CAAE,MAAAc,CAAM,EAAG,WAAY,CAAE,MAAAC,CAAM,CAAE,IACjDlB,EAACmB,EAAA,CACC,OAAQ,CAAE,UAAW,CAAC,CAAE,EACxB,KAAMF,EAAQH,EAAO,OACrB,cAAeM,GAAK,CAClBP,EAAWO,CAAC,EACRZ,GAAeA,EAAcY,CAAC,CACpC,EACA,gBAAiBX,EACjB,SAAU,IAAM,CACdM,EAAa,MAAS,EAElBL,GAAUA,EAAS,CACzB,EACA,MAAO,CAAC,CAACQ,EACT,gBAAe,GACf,YACG,CAAC,CAACA,GAASd,IACVJ,EAACD,EAAA,CAAe,MAAO,CAAC,CAACmB,EAAO,GAAI,CAAE,GAAI,CAAE,EACzC,SAAAA,EAAQA,GAAO,QAAUd,EAC5B,EAGJ,OAAQC,EACR,MAAOC,EACP,MAAOC,EACP,uBAAsBL,EACrB,GAAGS,EACN,EAEJ,CAEJ,EAEOU,EAAQpB","sourcesContent":["import { Controller, useFormContext } from 'react-hook-form';\nimport FormHelperText from '@mui/material/FormHelperText';\n\nimport UploadAvatarWithCropComponent from 'components/upload/upload-avatar-with-crop';\nimport useUpload from 'hooks/useUpload';\n\nimport { UploadAvatarWithCropProps } from './props';\n\nconst UploadAvatarWithCrop = ({\n name,\n rules,\n helperText,\n aspect,\n label,\n image,\n onFileCropped,\n onImageUploaded,\n onCancel,\n ...other\n}: UploadAvatarWithCropProps) => {\n const { control } = useFormContext();\n const { uploadFile, file, setFileValue } = useUpload(name);\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field: { value }, fieldState: { error } }) => (\n <UploadAvatarWithCropComponent\n accept={{ 'image/*': [] }}\n file={value ? file : undefined}\n onFileCropped={v => {\n uploadFile(v);\n if (onFileCropped) onFileCropped(v);\n }}\n onImageUploaded={onImageUploaded}\n onCancel={() => {\n setFileValue(undefined);\n\n if (onCancel) onCancel();\n }}\n error={!!error}\n disableMultiple\n helperText={\n (!!error || helperText) && (\n <FormHelperText error={!!error} sx={{ px: 2 }}>\n {error ? error?.message : helperText}\n </FormHelperText>\n )\n }\n aspect={aspect}\n label={label}\n image={image}\n data-intercom-target={name}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default UploadAvatarWithCrop;\n"]}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { e } from '../../../chunk-
|
|
1
|
+
import { e } from '../../../chunk-GPWECRTP.js';
|
|
2
2
|
import '../../../chunk-SA2BESEB.js';
|
|
3
|
-
import '../../../chunk-
|
|
4
|
-
import '../../../chunk-ESFOFEVL.js';
|
|
3
|
+
import '../../../chunk-QN4YPUG7.js';
|
|
5
4
|
import '../../../chunk-DTIGB5NW.js';
|
|
5
|
+
import '../../../chunk-TBUIZEOJ.js';
|
|
6
|
+
import '../../../chunk-ESFOFEVL.js';
|
|
6
7
|
import '../../../chunk-OF6623HG.js';
|
|
7
|
-
import '../../../chunk-
|
|
8
|
-
import '../../../chunk-KTME4D5T.js';
|
|
8
|
+
import '../../../chunk-RFYCSLP5.js';
|
|
9
9
|
import '../../../chunk-33C6UWPV.js';
|
|
10
10
|
import '../../../chunk-6U5LS7MP.js';
|
|
11
|
-
import '../../../chunk-
|
|
11
|
+
import '../../../chunk-GC7GAEFE.js';
|
|
12
12
|
import '../../../chunk-TC4DDJSR.js';
|
|
13
|
-
import '../../../chunk-DJ22BFQ5.js';
|
|
14
13
|
import { a } from '../../../chunk-YCEQDXLR.js';
|
|
15
14
|
import '../../../chunk-SBMEL2IJ.js';
|
|
16
15
|
import '../../../chunk-E3R7W7GK.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/form/UploadWithCrop/index.tsx"],"names":["Controller","useFormContext","FormHelperText","jsx","UploadWithCrop","name","rules","helperText","aspect","label","image","onFileCropped","onImageUploaded","onCancel","other","control","uploadFile","file","setFileValue","useUpload_default","value","error","upload_with_crop_default","v","UploadWithCrop_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/form/UploadWithCrop/index.tsx"],"names":["Controller","useFormContext","FormHelperText","jsx","UploadWithCrop","name","rules","helperText","aspect","label","image","onFileCropped","onImageUploaded","onCancel","other","control","uploadFile","file","setFileValue","useUpload_default","value","error","upload_with_crop_default","v","UploadWithCrop_default"],"mappings":"4qBAAA,OAAS,cAAAA,EAAY,kBAAAC,MAAsB,kBAC3C,OAAOC,MAAoB,+BA6Cb,cAAAC,MAAA,oBAtCd,IAAMC,EAAiB,CAAC,CACtB,KAAAC,EACA,MAAAC,EACA,WAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAA2B,CACzB,GAAM,CAAE,QAAAC,CAAQ,EAAId,EAAe,EAC7B,CAAE,WAAAe,EAAY,KAAAC,EAAM,aAAAC,CAAa,EAAIC,EAAUd,CAAI,EAEzD,OACEF,EAACH,EAAA,CACC,KAAMK,EACN,QAASU,EACT,MAAOT,EACP,OAAQ,CAAC,CAAE,MAAO,CAAE,MAAAc,CAAM,EAAG,WAAY,CAAE,MAAAC,CAAM,CAAE,IACjDlB,EAACmB,EAAA,CACC,OAAQ,CAAE,UAAW,CAAC,CAAE,EACxB,KAAMF,EAAQH,EAAO,OACrB,cAAeM,GAAK,CAClBP,EAAWO,CAAC,EACRZ,GAAeA,EAAcY,CAAC,CACpC,EACA,gBAAiBX,EACjB,SAAU,IAAM,CACdM,EAAa,MAAS,EAElBL,GAAUA,EAAS,CACzB,EACA,MAAO,CAAC,CAACQ,EACT,gBAAe,GACf,YACG,CAAC,CAACA,GAASd,IACVJ,EAACD,EAAA,CAAe,MAAO,CAAC,CAACmB,EAAO,GAAI,CAAE,GAAI,CAAE,EACzC,SAAAA,EAAQA,GAAO,QAAUd,EAC5B,EAGJ,OAAQC,EACR,MAAOC,EACP,MAAOC,EACP,uBAAsBL,EACrB,GAAGS,EACN,EAEJ,CAEJ,EAEOU,EAAQpB","sourcesContent":["import { Controller, useFormContext } from 'react-hook-form';\nimport FormHelperText from '@mui/material/FormHelperText';\n\nimport UploadWithCropComponent from 'components/upload/upload-with-crop';\nimport useUpload from 'hooks/useUpload';\n\nimport { UploadWithCropProps } from './props';\n\nconst UploadWithCrop = ({\n name,\n rules,\n helperText,\n aspect,\n label,\n image,\n onFileCropped,\n onImageUploaded,\n onCancel,\n ...other\n}: UploadWithCropProps) => {\n const { control } = useFormContext();\n const { uploadFile, file, setFileValue } = useUpload(name);\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field: { value }, fieldState: { error } }) => (\n <UploadWithCropComponent\n accept={{ 'image/*': [] }}\n file={value ? file : undefined}\n onFileCropped={v => {\n uploadFile(v);\n if (onFileCropped) onFileCropped(v);\n }}\n onImageUploaded={onImageUploaded}\n onCancel={() => {\n setFileValue(undefined);\n\n if (onCancel) onCancel();\n }}\n error={!!error}\n disableMultiple\n helperText={\n (!!error || helperText) && (\n <FormHelperText error={!!error} sx={{ px: 2 }}>\n {error ? error?.message : helperText}\n </FormHelperText>\n )\n }\n aspect={aspect}\n label={label}\n image={image}\n data-intercom-target={name}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default UploadWithCrop;\n"]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { a } from '../../../chunk-YXRL4O4H.js';
|
|
2
|
-
import { a as a$2 } from '../../../chunk-
|
|
3
|
-
import { a as a$3 } from '../../../chunk-
|
|
4
|
-
import '../../../chunk-
|
|
5
|
-
import { a as a$1 } from '../../../chunk-
|
|
2
|
+
import { a as a$2 } from '../../../chunk-I2JQIMEJ.js';
|
|
3
|
+
import { a as a$3 } from '../../../chunk-BLMNSRNS.js';
|
|
4
|
+
import '../../../chunk-QXEYILV5.js';
|
|
5
|
+
import { a as a$1 } from '../../../chunk-GC7GAEFE.js';
|
|
6
6
|
import '../../../chunk-TC4DDJSR.js';
|
|
7
|
-
import '../../../chunk-DJ22BFQ5.js';
|
|
8
7
|
import { useFormContext, useFieldArray } from 'react-hook-form';
|
|
9
8
|
import D from '@mui/material/Divider';
|
|
10
9
|
import T from '@mui/material/IconButton';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","SyledDeleteIcon","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","Webhook","webhookData","isEditing","haveTip","control","headers","append","remove","handleCreateField","Field_default","Icon_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = () => {\n append({\n value: '',\n name: '',\n });\n };\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field\n name=\"url\"\n label=\"URL de endpoint\"\n rules={{ required: { value: true, message: 'Url é obrigatório' } }}\n />\n <Field name=\"filter\" label=\"Filtro\" />\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n onClick={() =>\n navigator.clipboard.writeText(webhookData.resource_id)\n }\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Tipo de conteúdo é obrigatório',\n },\n }}\n />\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Método HTTP é obrigatório',\n },\n }}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={{\n required: {\n value: true,\n message: '',\n },\n }}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton color=\"error\" onClick={() => remove(index)}>\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={() => handleCreateField()}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const SyledDeleteIcon = styled(IconButton)(() => ({\n height: '38px',\n alignSelf: 'center',\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","SyledDeleteIcon","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","Webhook","webhookData","isEditing","haveTip","control","headers","append","remove","handleCreateField","Field_default","Icon_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = () => {\n append({\n value: '',\n name: '',\n });\n };\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field\n name=\"url\"\n label=\"URL de endpoint\"\n rules={{ required: { value: true, message: 'Url é obrigatório' } }}\n />\n <Field name=\"filter\" label=\"Filtro\" />\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n onClick={() =>\n navigator.clipboard.writeText(webhookData.resource_id)\n }\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Tipo de conteúdo é obrigatório',\n },\n }}\n />\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Método HTTP é obrigatório',\n },\n }}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={{\n required: {\n value: true,\n message: '',\n },\n }}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton color=\"error\" onClick={() => remove(index)}>\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={() => handleCreateField()}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const SyledDeleteIcon = styled(IconButton)(() => ({\n height: '38px',\n alignSelf: 'center',\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { a } from '../../chunk-
|
|
1
|
+
import { a } from '../../chunk-GC7GAEFE.js';
|
|
2
2
|
import '../../chunk-TC4DDJSR.js';
|
|
3
|
-
import '../../chunk-DJ22BFQ5.js';
|
|
4
3
|
import w from '@mui/material/Box';
|
|
5
4
|
import C, { useLightboxState } from 'yet-another-react-lightbox';
|
|
6
5
|
import d from 'yet-another-react-lightbox/plugins/captions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/lightbox/lightbox.tsx","../../../src/components/lightbox/classes.ts","../../../src/components/lightbox/use-light-box.ts"],"names":["Box","ReactLightbox","useLightboxState","Captions","Fullscreen","Slideshow","Thumbnails","Video","Zoom","lightboxClasses","jsx","jsxs","Lightbox","slides","disableZoom","disableVideo","disableTotal","disableCaptions","disableSlideshow","disableThumbnails","disableFullscreen","onGetCurrentIndex","render","other","totalItems","getPlugins","index","DisplayTotal","Icon_default","plugins","plugin","currentIndex","useCallback","useState","useLightBox","selected","setSelected","handleOpen","slideUrl","slideIndex","slide","handleClose"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/lightbox/lightbox.tsx","../../../src/components/lightbox/classes.ts","../../../src/components/lightbox/use-light-box.ts"],"names":["Box","ReactLightbox","useLightboxState","Captions","Fullscreen","Slideshow","Thumbnails","Video","Zoom","lightboxClasses","jsx","jsxs","Lightbox","slides","disableZoom","disableVideo","disableTotal","disableCaptions","disableSlideshow","disableThumbnails","disableFullscreen","onGetCurrentIndex","render","other","totalItems","getPlugins","index","DisplayTotal","Icon_default","plugins","plugin","currentIndex","useCallback","useState","useLightBox","selected","setSelected","handleOpen","slideUrl","slideIndex","slide","handleClose"],"mappings":"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","sourcesContent":["/* eslint-disable react/function-component-definition */\nimport Box from '@mui/material/Box';\nimport ReactLightbox, {\n Slide,\n useLightboxState,\n} from 'yet-another-react-lightbox';\nimport Captions from 'yet-another-react-lightbox/plugins/captions';\nimport Fullscreen from 'yet-another-react-lightbox/plugins/fullscreen';\nimport Slideshow from 'yet-another-react-lightbox/plugins/slideshow';\nimport Thumbnails from 'yet-another-react-lightbox/plugins/thumbnails';\nimport Video from 'yet-another-react-lightbox/plugins/video';\nimport Zoom from 'yet-another-react-lightbox/plugins/zoom';\n\nimport Icon from 'components/Icon';\n\nimport { lightboxClasses } from './classes';\nimport type { LightBoxProps } from './types';\n\nexport type { Slide };\n\nexport function Lightbox({\n slides,\n disableZoom,\n disableVideo,\n disableTotal,\n disableCaptions,\n disableSlideshow,\n disableThumbnails,\n disableFullscreen,\n onGetCurrentIndex,\n render,\n ...other\n}: LightBoxProps) {\n const totalItems = slides ? slides.length : 0;\n\n return (\n <ReactLightbox\n slides={slides}\n animation={{ swipe: 240 }}\n carousel={{ finite: totalItems < 5 }}\n controller={{ closeOnBackdropClick: true }}\n plugins={getPlugins({\n disableZoom,\n disableVideo,\n disableCaptions,\n disableSlideshow,\n disableThumbnails,\n disableFullscreen,\n })}\n on={{\n view: ({ index }: { index: number }) => {\n if (onGetCurrentIndex) {\n onGetCurrentIndex(index);\n }\n },\n }}\n toolbar={{\n buttons: [\n <DisplayTotal\n key={0}\n totalItems={totalItems}\n disableTotal={disableTotal}\n />,\n 'close',\n ],\n }}\n render={{\n iconClose: () => <Icon width={24} icon=\"CLOSE_MARK_BUTTON\" />,\n iconZoomIn: () => <Icon width={24} icon=\"ZOOM_IN\" />,\n iconZoomOut: () => <Icon width={24} icon=\"ZOOM_OUT\" />,\n iconSlideshowPlay: () => <Icon width={24} icon=\"PLAY_EXECUTE\" />,\n iconSlideshowPause: () => <Icon width={24} icon=\"PAUSE\" />,\n iconPrev: () => <Icon width={32} icon=\"CHEVRON_LEFT\" />,\n iconNext: () => <Icon width={32} icon=\"CHEVRON_RIGHT\" />,\n iconExitFullscreen: () => <Icon width={24} icon=\"MINIMIZE_SCREEN\" />,\n iconEnterFullscreen: () => <Icon width={24} icon=\"MAXIMIZE_SCREEN\" />,\n ...render,\n }}\n className={lightboxClasses.root}\n {...other}\n />\n );\n}\n\n// ----------------------------------------------------------------------\n\nexport function getPlugins({\n disableZoom,\n disableVideo,\n disableCaptions,\n disableSlideshow,\n disableThumbnails,\n disableFullscreen,\n}: Partial<LightBoxProps>) {\n let plugins = [Captions, Fullscreen, Slideshow, Thumbnails, Video, Zoom];\n\n if (disableThumbnails) {\n plugins = plugins.filter(plugin => plugin !== Thumbnails);\n }\n if (disableCaptions) {\n plugins = plugins.filter(plugin => plugin !== Captions);\n }\n if (disableFullscreen) {\n plugins = plugins.filter(plugin => plugin !== Fullscreen);\n }\n if (disableSlideshow) {\n plugins = plugins.filter(plugin => plugin !== Slideshow);\n }\n if (disableZoom) {\n plugins = plugins.filter(plugin => plugin !== Zoom);\n }\n if (disableVideo) {\n plugins = plugins.filter(plugin => plugin !== Video);\n }\n\n return plugins;\n}\n\n// ----------------------------------------------------------------------\n\ntype DisplayTotalProps = {\n totalItems: number;\n disableTotal?: boolean;\n};\n\nexport function DisplayTotal({ totalItems, disableTotal }: DisplayTotalProps) {\n const { currentIndex } = useLightboxState();\n\n if (disableTotal) {\n return null;\n }\n\n return (\n <Box\n component=\"span\"\n className=\"yarl__button\"\n sx={{\n typography: 'body2',\n alignItems: 'center',\n display: 'inline-flex',\n justifyContent: 'center',\n }}\n >\n <strong> {currentIndex + 1} </strong> / {totalItems}\n </Box>\n );\n}\n","export const lightboxClasses = { root: 'mnl__lightbox__root' };\n","import { useCallback, useState } from 'react';\nimport type { Slide, SlideImage, SlideVideo } from 'yet-another-react-lightbox';\n\nimport type { UseLightBoxReturn } from './types';\n\nexport function useLightBox(slides: Slide[]): UseLightBoxReturn {\n const [selected, setSelected] = useState(-1);\n\n const handleOpen = useCallback(\n (slideUrl: string) => {\n const slideIndex = slides.findIndex(slide =>\n slide.type === 'video'\n ? (slide as SlideVideo).poster === slideUrl\n : (slide as SlideImage).src === slideUrl,\n );\n\n setSelected(slideIndex);\n },\n [slides],\n );\n\n const handleClose = useCallback(() => {\n setSelected(-1);\n }, []);\n\n return {\n selected,\n open: selected >= 0,\n onOpen: handleOpen,\n onClose: handleClose,\n setSelected,\n };\n}\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { a } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
import { a } from '../../chunk-WJK6CE54.js';
|
|
2
|
+
import '../../chunk-GC7GAEFE.js';
|
|
3
3
|
import '../../chunk-TC4DDJSR.js';
|
|
4
|
-
import '../../chunk-DJ22BFQ5.js';
|
|
5
4
|
import S from '@mui/material/TableCell';
|
|
6
5
|
import F from '@mui/material/TableRow';
|
|
7
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/table/TableEmptyRows/index.tsx","../../../src/components/table/TableHeadCustom/index.tsx","../../../src/components/table/TableNoData/index.tsx","../../../src/components/table/TablePaginationCustom/index.tsx","../../../src/components/table/TableSelectedAction/index.tsx","../../../src/components/table/TableSkeleton/index.tsx","../../../src/components/table/useTable.ts","../../../src/components/table/utils.ts"],"names":["TableCell","TableRow","jsx","TableEmptyRows","emptyRows","height","TableEmptyRows_default","Box","Checkbox","TableHead","TableSortLabel","jsxs","visuallyHidden","TableHeadCustom","sx","order","onSort","orderBy","headLabel","rowCount","numSelected","onSelectAllRows","event","headCell","TableHeadCustom_default","TableNoData","notFound","StateDisplay_default","theme","TableNoData_default","FormControlLabel","Switch","TablePagination","TablePaginationCustom","dense","onChangeDense","rowsPerPageOptions","other","TablePaginationCustom_default","Stack","Typography","TableSelectedAction","action","TableSelectedAction_default","Skeleton","TableSkeleton","TableSkeleton_default","useCallback","useState","useTable","props","setDense","page","setPage","setOrderBy","rowsPerPage","setRowsPerPage","setOrder","selected","setSelected","id","onSelectRow","inputValue","newSelected","value","onChangeRowsPerPage","checked","onChangePage","newPage","onResetPage","onUpdatePageDeleteRow","totalRowsInPage","onUpdatePageDeleteRows","totalRowsFiltered","totalSelected","useTable_default","rowInPage","data","arrayLength","descendingComparator","a","b","getComparator"],"mappings":"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","sourcesContent":["import TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\n\nimport { TableEmptyRowsProps } from './props';\n\nconst TableEmptyRows = ({ emptyRows, height }: TableEmptyRowsProps) => {\n if (!emptyRows) {\n return null;\n }\n\n return (\n <TableRow sx={{ ...(height && { height: height * emptyRows }) }}>\n <TableCell colSpan={9} />\n </TableRow>\n );\n};\n\nexport default TableEmptyRows;\n","import Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\n\nimport { TableHeadCustomProps } from './props';\n\nconst visuallyHidden = {\n border: 0,\n margin: -1,\n padding: 0,\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n position: 'absolute',\n whiteSpace: 'nowrap',\n clip: 'rect(0 0 0 0)',\n} as const;\n\nconst TableHeadCustom = ({\n sx,\n order,\n onSort,\n orderBy,\n headLabel,\n rowCount = 0,\n numSelected = 0,\n onSelectAllRows,\n}: TableHeadCustomProps) => {\n return (\n <TableHead sx={sx}>\n <TableRow>\n {onSelectAllRows && (\n <TableCell padding=\"checkbox\">\n <Checkbox\n indeterminate={!!numSelected && numSelected < rowCount}\n checked={!!rowCount && numSelected === rowCount}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n onSelectAllRows(event.target.checked)\n }\n inputProps={{\n name: 'select-all-rows',\n 'aria-label': 'select all rows',\n }}\n />\n </TableCell>\n )}\n\n {headLabel.map(headCell => (\n <TableCell\n key={headCell.id}\n align={headCell.align || 'left'}\n sortDirection={orderBy === headCell.id ? order : false}\n sx={{ width: headCell.width, minWidth: headCell.minWidth }}\n >\n {onSort ? (\n <TableSortLabel\n hideSortIcon\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={() => onSort(headCell.id)}\n >\n {headCell.label}\n\n {orderBy === headCell.id ? (\n <Box sx={{ ...visuallyHidden }}>\n {order === 'desc'\n ? 'sorted descending'\n : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n headCell.label\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n\nexport default TableHeadCustom;\n","import TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\n\nimport StateDisplay from 'components/StateDisplay';\n\nimport { TableNoDataProps } from './props';\n\nconst TableNoData = ({ notFound, sx }: TableNoDataProps) => {\n return (\n <TableRow>\n {notFound ? (\n <TableCell colSpan={12}>\n <StateDisplay\n variant=\"empty\"\n title=\"Nenhum dado encontrado\"\n description=\"Não há registros para exibir\"\n sx={{\n py: 10,\n borderRadius: 2,\n bgcolor: theme => theme.palette.grey[50],\n border: theme => `dashed 1px ${theme.palette.grey[300]}`,\n ...sx,\n }}\n />\n </TableCell>\n ) : (\n <TableCell colSpan={12} sx={{ p: 0 }} />\n )}\n </TableRow>\n );\n};\n\nexport default TableNoData;\n","import Box from '@mui/material/Box';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport TablePagination from '@mui/material/TablePagination';\n\nimport { TablePaginationCustomProps } from './props';\n\nconst TablePaginationCustom = ({\n sx,\n dense,\n onChangeDense,\n rowsPerPageOptions = [5, 10, 25],\n ...other\n}: TablePaginationCustomProps) => {\n return (\n <Box sx={{ position: 'relative', ...sx }}>\n <TablePagination\n rowsPerPageOptions={rowsPerPageOptions}\n component=\"div\"\n {...other}\n sx={{ borderTopColor: 'transparent' }}\n />\n\n {onChangeDense && (\n <FormControlLabel\n label=\"Dense\"\n control={\n <Switch name=\"dense\" checked={dense} onChange={onChangeDense} />\n }\n sx={{\n pl: 2,\n py: 1.5,\n top: 0,\n position: { sm: 'absolute' },\n }}\n />\n )}\n </Box>\n );\n};\n\nexport default TablePaginationCustom;\n","import Checkbox from '@mui/material/Checkbox';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { TableSelectedActionProps } from './props';\n\nconst TableSelectedAction = ({\n dense,\n action,\n rowCount,\n numSelected,\n onSelectAllRows,\n sx,\n ...other\n}: TableSelectedActionProps) => {\n if (!numSelected) {\n return null;\n }\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n sx={{\n pl: 1,\n pr: 2,\n top: 0,\n left: 0,\n width: 1,\n zIndex: 9,\n height: 58,\n position: 'absolute',\n bgcolor: 'primary.lighter',\n ...(dense && { height: 38 }),\n ...sx,\n }}\n {...other}\n >\n <Checkbox\n indeterminate={!!numSelected && numSelected < rowCount}\n checked={!!rowCount && numSelected === rowCount}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n onSelectAllRows(event.target.checked)\n }\n />\n\n <Typography\n variant=\"subtitle2\"\n sx={{\n ml: 2,\n flexGrow: 1,\n color: 'primary.main',\n ...(dense && { ml: 3 }),\n }}\n >\n {numSelected} selected\n </Typography>\n\n {action && action}\n </Stack>\n );\n};\n\nexport default TableSelectedAction;\n","import Skeleton from '@mui/material/Skeleton';\nimport Stack from '@mui/material/Stack';\nimport TableCell from '@mui/material/TableCell';\nimport type { TableRowProps } from '@mui/material/TableRow';\nimport TableRow from '@mui/material/TableRow';\n\nconst TableSkeleton = ({ ...other }: TableRowProps) => {\n return (\n <TableRow {...other}>\n <TableCell colSpan={12}>\n <Stack spacing={3} direction=\"row\" alignItems=\"center\">\n <Skeleton\n sx={{\n borderRadius: 1.5,\n width: 48,\n height: 48,\n flexShrink: 0,\n }}\n />\n <Skeleton sx={{ width: 1, height: 12 }} />\n <Skeleton sx={{ width: 180, height: 12 }} />\n <Skeleton sx={{ width: 160, height: 12 }} />\n <Skeleton sx={{ width: 140, height: 12 }} />\n <Skeleton sx={{ width: 120, height: 12 }} />\n </Stack>\n </TableCell>\n </TableRow>\n );\n};\n\nexport default TableSkeleton;\n","import { useCallback, useState } from 'react';\n\nimport type { TableProps } from './types';\n\ntype UseTableReturn = TableProps;\n\nexport type UseTableProps = {\n defaultDense?: boolean;\n defaultOrder?: 'asc' | 'desc';\n defaultOrderBy?: string;\n defaultSelected?: string[];\n defaultRowsPerPage?: number;\n defaultCurrentPage?: number;\n};\n\nconst useTable = (props?: UseTableProps): UseTableReturn => {\n const [dense, setDense] = useState(!!props?.defaultDense);\n\n const [page, setPage] = useState(props?.defaultCurrentPage || 0);\n\n const [orderBy, setOrderBy] = useState(props?.defaultOrderBy || 'name');\n\n const [rowsPerPage, setRowsPerPage] = useState(\n props?.defaultRowsPerPage || 5,\n );\n\n const [order, setOrder] = useState<'asc' | 'desc'>(\n props?.defaultOrder || 'asc',\n );\n\n const [selected, setSelected] = useState<string[]>(\n props?.defaultSelected || [],\n );\n\n const onSort = useCallback(\n (id: string) => {\n const isAsc = orderBy === id && order === 'asc';\n if (id !== '') {\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(id);\n }\n },\n [order, orderBy],\n );\n\n const onSelectRow = useCallback(\n (inputValue: string) => {\n const newSelected = selected.includes(inputValue)\n ? selected.filter(value => value !== inputValue)\n : [...selected, inputValue];\n\n setSelected(newSelected);\n },\n [selected],\n );\n\n const onChangeRowsPerPage = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setPage(0);\n setRowsPerPage(parseInt(event.target.value, 10));\n },\n [],\n );\n\n const onChangeDense = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setDense(event.target.checked);\n },\n [],\n );\n\n const onSelectAllRows = useCallback(\n (checked: boolean, inputValue: string[]) => {\n if (checked) {\n setSelected(inputValue);\n return;\n }\n setSelected([]);\n },\n [],\n );\n\n const onChangePage = useCallback((event: unknown, newPage: number) => {\n setPage(newPage);\n }, []);\n\n const onResetPage = useCallback(() => {\n setPage(0);\n }, []);\n\n const onUpdatePageDeleteRow = useCallback(\n (totalRowsInPage: number) => {\n setSelected([]);\n if (page) {\n if (totalRowsInPage < 2) {\n setPage(page - 1);\n }\n }\n },\n [page],\n );\n\n const onUpdatePageDeleteRows = useCallback(\n ({\n totalRowsInPage,\n totalRowsFiltered,\n }: {\n totalRowsInPage: number;\n totalRowsFiltered: number;\n }) => {\n const totalSelected = selected.length;\n\n setSelected([]);\n\n if (page) {\n if (totalSelected === totalRowsInPage) {\n setPage(page - 1);\n } else if (totalSelected === totalRowsFiltered) {\n setPage(0);\n } else if (totalSelected > totalRowsInPage) {\n const newPage =\n Math.ceil((totalRowsFiltered - totalSelected) / rowsPerPage) - 1;\n\n setPage(newPage);\n }\n }\n },\n [page, rowsPerPage, selected.length],\n );\n\n return {\n dense,\n order,\n page,\n orderBy,\n rowsPerPage,\n //\n selected,\n onSelectRow,\n onSelectAllRows,\n //\n onSort,\n onChangePage,\n onChangeDense,\n onResetPage,\n onChangeRowsPerPage,\n onUpdatePageDeleteRow,\n onUpdatePageDeleteRows,\n //\n setPage,\n setDense,\n setOrder,\n setOrderBy,\n setSelected,\n setRowsPerPage,\n };\n};\n\nexport default useTable;\n","// ----------------------------------------------------------------------\n\nexport function rowInPage<T>(data: T[], page: number, rowsPerPage: number) {\n return data.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\n}\n\n// ----------------------------------------------------------------------\n\nexport function emptyRows(\n page: number,\n rowsPerPage: number,\n arrayLength: number,\n) {\n return page ? Math.max(0, (1 + page) * rowsPerPage - arrayLength) : 0;\n}\n\n// ----------------------------------------------------------------------\n\nfunction descendingComparator<T>(a: T, b: T, orderBy: keyof T) {\n if (!a[orderBy]) {\n return 1;\n }\n if (!b[orderBy]) {\n return -1;\n }\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getComparator<Key extends keyof any>(\n order: 'asc' | 'desc',\n orderBy: Key,\n): (\n a: {\n [key in Key]: number | string;\n },\n b: {\n [key in Key]: number | string;\n },\n) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/table/TableEmptyRows/index.tsx","../../../src/components/table/TableHeadCustom/index.tsx","../../../src/components/table/TableNoData/index.tsx","../../../src/components/table/TablePaginationCustom/index.tsx","../../../src/components/table/TableSelectedAction/index.tsx","../../../src/components/table/TableSkeleton/index.tsx","../../../src/components/table/useTable.ts","../../../src/components/table/utils.ts"],"names":["TableCell","TableRow","jsx","TableEmptyRows","emptyRows","height","TableEmptyRows_default","Box","Checkbox","TableHead","TableSortLabel","jsxs","visuallyHidden","TableHeadCustom","sx","order","onSort","orderBy","headLabel","rowCount","numSelected","onSelectAllRows","event","headCell","TableHeadCustom_default","TableNoData","notFound","StateDisplay_default","theme","TableNoData_default","FormControlLabel","Switch","TablePagination","TablePaginationCustom","dense","onChangeDense","rowsPerPageOptions","other","TablePaginationCustom_default","Stack","Typography","TableSelectedAction","action","TableSelectedAction_default","Skeleton","TableSkeleton","TableSkeleton_default","useCallback","useState","useTable","props","setDense","page","setPage","setOrderBy","rowsPerPage","setRowsPerPage","setOrder","selected","setSelected","id","onSelectRow","inputValue","newSelected","value","onChangeRowsPerPage","checked","onChangePage","newPage","onResetPage","onUpdatePageDeleteRow","totalRowsInPage","onUpdatePageDeleteRows","totalRowsFiltered","totalSelected","useTable_default","rowInPage","data","arrayLength","descendingComparator","a","b","getComparator"],"mappings":"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","sourcesContent":["import TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\n\nimport { TableEmptyRowsProps } from './props';\n\nconst TableEmptyRows = ({ emptyRows, height }: TableEmptyRowsProps) => {\n if (!emptyRows) {\n return null;\n }\n\n return (\n <TableRow sx={{ ...(height && { height: height * emptyRows }) }}>\n <TableCell colSpan={9} />\n </TableRow>\n );\n};\n\nexport default TableEmptyRows;\n","import Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\n\nimport { TableHeadCustomProps } from './props';\n\nconst visuallyHidden = {\n border: 0,\n margin: -1,\n padding: 0,\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n position: 'absolute',\n whiteSpace: 'nowrap',\n clip: 'rect(0 0 0 0)',\n} as const;\n\nconst TableHeadCustom = ({\n sx,\n order,\n onSort,\n orderBy,\n headLabel,\n rowCount = 0,\n numSelected = 0,\n onSelectAllRows,\n}: TableHeadCustomProps) => {\n return (\n <TableHead sx={sx}>\n <TableRow>\n {onSelectAllRows && (\n <TableCell padding=\"checkbox\">\n <Checkbox\n indeterminate={!!numSelected && numSelected < rowCount}\n checked={!!rowCount && numSelected === rowCount}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n onSelectAllRows(event.target.checked)\n }\n inputProps={{\n name: 'select-all-rows',\n 'aria-label': 'select all rows',\n }}\n />\n </TableCell>\n )}\n\n {headLabel.map(headCell => (\n <TableCell\n key={headCell.id}\n align={headCell.align || 'left'}\n sortDirection={orderBy === headCell.id ? order : false}\n sx={{ width: headCell.width, minWidth: headCell.minWidth }}\n >\n {onSort ? (\n <TableSortLabel\n hideSortIcon\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={() => onSort(headCell.id)}\n >\n {headCell.label}\n\n {orderBy === headCell.id ? (\n <Box sx={{ ...visuallyHidden }}>\n {order === 'desc'\n ? 'sorted descending'\n : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n headCell.label\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n\nexport default TableHeadCustom;\n","import TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\n\nimport StateDisplay from 'components/StateDisplay';\n\nimport { TableNoDataProps } from './props';\n\nconst TableNoData = ({ notFound, sx }: TableNoDataProps) => {\n return (\n <TableRow>\n {notFound ? (\n <TableCell colSpan={12}>\n <StateDisplay\n variant=\"empty\"\n title=\"Nenhum dado encontrado\"\n description=\"Não há registros para exibir\"\n sx={{\n py: 10,\n borderRadius: 2,\n bgcolor: theme => theme.palette.grey[50],\n border: theme => `dashed 1px ${theme.palette.grey[300]}`,\n ...sx,\n }}\n />\n </TableCell>\n ) : (\n <TableCell colSpan={12} sx={{ p: 0 }} />\n )}\n </TableRow>\n );\n};\n\nexport default TableNoData;\n","import Box from '@mui/material/Box';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport TablePagination from '@mui/material/TablePagination';\n\nimport { TablePaginationCustomProps } from './props';\n\nconst TablePaginationCustom = ({\n sx,\n dense,\n onChangeDense,\n rowsPerPageOptions = [5, 10, 25],\n ...other\n}: TablePaginationCustomProps) => {\n return (\n <Box sx={{ position: 'relative', ...sx }}>\n <TablePagination\n rowsPerPageOptions={rowsPerPageOptions}\n component=\"div\"\n {...other}\n sx={{ borderTopColor: 'transparent' }}\n />\n\n {onChangeDense && (\n <FormControlLabel\n label=\"Dense\"\n control={\n <Switch name=\"dense\" checked={dense} onChange={onChangeDense} />\n }\n sx={{\n pl: 2,\n py: 1.5,\n top: 0,\n position: { sm: 'absolute' },\n }}\n />\n )}\n </Box>\n );\n};\n\nexport default TablePaginationCustom;\n","import Checkbox from '@mui/material/Checkbox';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { TableSelectedActionProps } from './props';\n\nconst TableSelectedAction = ({\n dense,\n action,\n rowCount,\n numSelected,\n onSelectAllRows,\n sx,\n ...other\n}: TableSelectedActionProps) => {\n if (!numSelected) {\n return null;\n }\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n sx={{\n pl: 1,\n pr: 2,\n top: 0,\n left: 0,\n width: 1,\n zIndex: 9,\n height: 58,\n position: 'absolute',\n bgcolor: 'primary.lighter',\n ...(dense && { height: 38 }),\n ...sx,\n }}\n {...other}\n >\n <Checkbox\n indeterminate={!!numSelected && numSelected < rowCount}\n checked={!!rowCount && numSelected === rowCount}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n onSelectAllRows(event.target.checked)\n }\n />\n\n <Typography\n variant=\"subtitle2\"\n sx={{\n ml: 2,\n flexGrow: 1,\n color: 'primary.main',\n ...(dense && { ml: 3 }),\n }}\n >\n {numSelected} selected\n </Typography>\n\n {action && action}\n </Stack>\n );\n};\n\nexport default TableSelectedAction;\n","import Skeleton from '@mui/material/Skeleton';\nimport Stack from '@mui/material/Stack';\nimport TableCell from '@mui/material/TableCell';\nimport type { TableRowProps } from '@mui/material/TableRow';\nimport TableRow from '@mui/material/TableRow';\n\nconst TableSkeleton = ({ ...other }: TableRowProps) => {\n return (\n <TableRow {...other}>\n <TableCell colSpan={12}>\n <Stack spacing={3} direction=\"row\" alignItems=\"center\">\n <Skeleton\n sx={{\n borderRadius: 1.5,\n width: 48,\n height: 48,\n flexShrink: 0,\n }}\n />\n <Skeleton sx={{ width: 1, height: 12 }} />\n <Skeleton sx={{ width: 180, height: 12 }} />\n <Skeleton sx={{ width: 160, height: 12 }} />\n <Skeleton sx={{ width: 140, height: 12 }} />\n <Skeleton sx={{ width: 120, height: 12 }} />\n </Stack>\n </TableCell>\n </TableRow>\n );\n};\n\nexport default TableSkeleton;\n","import { useCallback, useState } from 'react';\n\nimport type { TableProps } from './types';\n\ntype UseTableReturn = TableProps;\n\nexport type UseTableProps = {\n defaultDense?: boolean;\n defaultOrder?: 'asc' | 'desc';\n defaultOrderBy?: string;\n defaultSelected?: string[];\n defaultRowsPerPage?: number;\n defaultCurrentPage?: number;\n};\n\nconst useTable = (props?: UseTableProps): UseTableReturn => {\n const [dense, setDense] = useState(!!props?.defaultDense);\n\n const [page, setPage] = useState(props?.defaultCurrentPage || 0);\n\n const [orderBy, setOrderBy] = useState(props?.defaultOrderBy || 'name');\n\n const [rowsPerPage, setRowsPerPage] = useState(\n props?.defaultRowsPerPage || 5,\n );\n\n const [order, setOrder] = useState<'asc' | 'desc'>(\n props?.defaultOrder || 'asc',\n );\n\n const [selected, setSelected] = useState<string[]>(\n props?.defaultSelected || [],\n );\n\n const onSort = useCallback(\n (id: string) => {\n const isAsc = orderBy === id && order === 'asc';\n if (id !== '') {\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(id);\n }\n },\n [order, orderBy],\n );\n\n const onSelectRow = useCallback(\n (inputValue: string) => {\n const newSelected = selected.includes(inputValue)\n ? selected.filter(value => value !== inputValue)\n : [...selected, inputValue];\n\n setSelected(newSelected);\n },\n [selected],\n );\n\n const onChangeRowsPerPage = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setPage(0);\n setRowsPerPage(parseInt(event.target.value, 10));\n },\n [],\n );\n\n const onChangeDense = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setDense(event.target.checked);\n },\n [],\n );\n\n const onSelectAllRows = useCallback(\n (checked: boolean, inputValue: string[]) => {\n if (checked) {\n setSelected(inputValue);\n return;\n }\n setSelected([]);\n },\n [],\n );\n\n const onChangePage = useCallback((event: unknown, newPage: number) => {\n setPage(newPage);\n }, []);\n\n const onResetPage = useCallback(() => {\n setPage(0);\n }, []);\n\n const onUpdatePageDeleteRow = useCallback(\n (totalRowsInPage: number) => {\n setSelected([]);\n if (page) {\n if (totalRowsInPage < 2) {\n setPage(page - 1);\n }\n }\n },\n [page],\n );\n\n const onUpdatePageDeleteRows = useCallback(\n ({\n totalRowsInPage,\n totalRowsFiltered,\n }: {\n totalRowsInPage: number;\n totalRowsFiltered: number;\n }) => {\n const totalSelected = selected.length;\n\n setSelected([]);\n\n if (page) {\n if (totalSelected === totalRowsInPage) {\n setPage(page - 1);\n } else if (totalSelected === totalRowsFiltered) {\n setPage(0);\n } else if (totalSelected > totalRowsInPage) {\n const newPage =\n Math.ceil((totalRowsFiltered - totalSelected) / rowsPerPage) - 1;\n\n setPage(newPage);\n }\n }\n },\n [page, rowsPerPage, selected.length],\n );\n\n return {\n dense,\n order,\n page,\n orderBy,\n rowsPerPage,\n //\n selected,\n onSelectRow,\n onSelectAllRows,\n //\n onSort,\n onChangePage,\n onChangeDense,\n onResetPage,\n onChangeRowsPerPage,\n onUpdatePageDeleteRow,\n onUpdatePageDeleteRows,\n //\n setPage,\n setDense,\n setOrder,\n setOrderBy,\n setSelected,\n setRowsPerPage,\n };\n};\n\nexport default useTable;\n","// ----------------------------------------------------------------------\n\nexport function rowInPage<T>(data: T[], page: number, rowsPerPage: number) {\n return data.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\n}\n\n// ----------------------------------------------------------------------\n\nexport function emptyRows(\n page: number,\n rowsPerPage: number,\n arrayLength: number,\n) {\n return page ? Math.max(0, (1 + page) * rowsPerPage - arrayLength) : 0;\n}\n\n// ----------------------------------------------------------------------\n\nfunction descendingComparator<T>(a: T, b: T, orderBy: keyof T) {\n if (!a[orderBy]) {\n return 1;\n }\n if (!b[orderBy]) {\n return -1;\n }\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getComparator<Key extends keyof any>(\n order: 'asc' | 'desc',\n orderBy: Key,\n): (\n a: {\n [key in Key]: number | string;\n },\n b: {\n [key in Key]: number | string;\n },\n) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n"]}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
export { a as UploadAvatar, b as UploadAvatarWithCrop } from '../../chunk-
|
|
2
|
-
export { c as DeleteButton, a as MultiFilePreview, b as SingleFilePreview, d as Upload, e as UploadWithCrop } from '../../chunk-
|
|
1
|
+
export { a as UploadAvatar, b as UploadAvatarWithCrop } from '../../chunk-AQV2PEBQ.js';
|
|
2
|
+
export { c as DeleteButton, a as MultiFilePreview, b as SingleFilePreview, d as Upload, e as UploadWithCrop } from '../../chunk-GPWECRTP.js';
|
|
3
3
|
import { o } from '../../chunk-SA2BESEB.js';
|
|
4
4
|
export { p as RejectionFiles } from '../../chunk-SA2BESEB.js';
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-ESFOFEVL.js';
|
|
5
|
+
import '../../chunk-QN4YPUG7.js';
|
|
7
6
|
import '../../chunk-DTIGB5NW.js';
|
|
7
|
+
import '../../chunk-TBUIZEOJ.js';
|
|
8
|
+
import '../../chunk-ESFOFEVL.js';
|
|
8
9
|
import '../../chunk-OF6623HG.js';
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-KTME4D5T.js';
|
|
10
|
+
import '../../chunk-RFYCSLP5.js';
|
|
11
11
|
import '../../chunk-33C6UWPV.js';
|
|
12
12
|
import '../../chunk-6U5LS7MP.js';
|
|
13
|
-
import '../../chunk-
|
|
13
|
+
import '../../chunk-GC7GAEFE.js';
|
|
14
14
|
import '../../chunk-TC4DDJSR.js';
|
|
15
|
-
import '../../chunk-DJ22BFQ5.js';
|
|
16
15
|
import '../../chunk-SBMEL2IJ.js';
|
|
17
16
|
import '../../chunk-E3R7W7GK.js';
|
|
18
17
|
import '../../chunk-VITOOMKK.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/upload/upload-box.tsx"],"names":["useDropzone","jsx","jsxs","UploadBox","error","disabled","sx","other","getRootProps","getInputProps","isDragActive","isDragReject","hasError","BoxUpload"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/upload/upload-box.tsx"],"names":["useDropzone","jsx","jsxs","UploadBox","error","disabled","sx","other","getRootProps","getInputProps","isDragActive","isDragReject","hasError","BoxUpload"],"mappings":"8qBAAA,OAAS,eAAAA,MAAmB,iBAyBxB,OAQE,OAAAC,EARF,QAAAC,MAAA,oBAnBA,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KACN;AAAA;AAAA,+EAGF,EAGK,IAAMC,EAAY,CAAC,CAAE,MAAAC,EAAO,SAAAC,EAAU,GAAAC,EAAI,GAAGC,CAAM,IAAmB,CAC3E,GAAM,CAAE,aAAAC,EAAc,cAAAC,EAAe,aAAAC,EAAc,aAAAC,CAAa,EAC9DX,EAAY,CACV,SAAAK,EACA,GAAGE,CACL,CAAC,EAEGK,EAAWD,GAAgBP,EAEjC,OACEF,EAACW,EAAA,CACE,GAAGL,EAAa,EACjB,aAAcE,EACd,SAAU,CAAC,CAACE,EACZ,SAAU,CAAC,CAACP,EACZ,GAAIC,EACJ,cAAY,aAEZ,UAAAL,EAAC,SAAO,GAAGQ,EAAc,EAAG,EAAE,sBAEhC,CAEJ","sourcesContent":["import { useDropzone } from 'react-dropzone';\n\nimport { UploadProps } from 'types/upload';\n\nimport { BoxUpload } from './styles';\n\nif (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n '⚠️ DEPRECATED: UploadBox está obsoleto. Use UploadSimpleBox do @zydon/common em seu lugar.\\n' +\n 'Migração: import { UploadSimpleBox } from \"@zydon/common/components/FileUpload\";\\n' +\n 'O UploadSimpleBox oferece melhor integração com o sistema de FileUpload.',\n );\n}\n\nexport const UploadBox = ({ error, disabled, sx, ...other }: UploadProps) => {\n const { getRootProps, getInputProps, isDragActive, isDragReject } =\n useDropzone({\n disabled,\n ...other,\n });\n\n const hasError = isDragReject || error;\n\n return (\n <BoxUpload\n {...getRootProps()}\n isDragActive={isDragActive}\n hasError={!!hasError}\n disabled={!!disabled}\n sx={sx}\n data-testid=\"upload-box\"\n >\n <input {...getInputProps()} />\n Selecionar arquivo\n </BoxUpload>\n );\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as a$1 } from '../../chunk-RP7PNTLJ.js';
|
|
2
|
-
import '../../chunk-E5ULJSWF.js';
|
|
3
2
|
import { a } from '../../chunk-GPFANUMT.js';
|
|
3
|
+
import '../../chunk-E5ULJSWF.js';
|
|
4
4
|
import '../../chunk-TVKBRJHF.js';
|
|
5
5
|
import { createContext, useState, useRef, useMemo, useEffect, useCallback, useContext } from 'react';
|
|
6
6
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -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","newMessageCount","setNewMessageCount","isRegisterError","setIsRegisterError","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","isPassiveClient","setIsPassiveClient","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","processedMessageIds","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 [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions,\n [clientId, isLoadingSubscriptions],\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 const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\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 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 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 topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\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 pollingEnabled,\n shouldPoll,\n clientId,\n pollingInterval,\n apiAdapters,\n onMessageReceived,\n processedMessageIds,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\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 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 setIsRegisterError(true);\n onError?.(error as Error);\n return null;\n }\n },\n [apiAdapters, originId, originType, onError],\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 bearerToken,\n performClientRegistration,\n apiAdapters,\n vapidKey,\n serviceWorkerPath,\n serviceWorkerFile,\n onMessageReceived,\n onError,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\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 onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [clientId, apiAdapters, 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 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 onError?.(error as Error);\n }\n },\n [\n clientId,\n apiAdapters,\n refetchSubscriptions,\n onError,\n pollingEnabled,\n shouldPoll,\n isPassiveClient,\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 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 onError?.(error as Error);\n }\n },\n [clientId, apiAdapters, refetchSubscriptions, onError],\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 onError?.(err as Error);\n }\n },\n [clientId, apiAdapters, refetchSubscriptions, onError, isPassiveClient],\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 onError?.(err as Error);\n }\n },\n [clientId, apiAdapters, refetchSubscriptions, onError],\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 subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\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","newMessageCount","setNewMessageCount","isRegisterError","setIsRegisterError","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","isPassiveClient","setIsPassiveClient","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","processedMessageIds","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":"wJAAA,OACE,iBAAAA,GACA,eAAAC,EACA,cAAAC,GACA,aAAAC,EACA,WAAAC,EACA,UAAAC,GACA,YAAAC,MACK,QA0hBH,cAAAC,OAAA,oBA5gBJ,IAAMC,EAA0BR,GAE9B,MAAS,EAEES,GAA2B,CAAsB,CAC5D,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,SAAAC,EACA,kBAAAC,EAAoB,IACpB,kBAAAC,EAAoB,oBACpB,gBAAAC,EAAkB,IAClB,YAAAC,EACA,kBAAAC,EACA,QAAAC,CACF,IAA+C,CAC7C,GAAM,CAACC,EAAUC,CAAW,EAAIhB,EAAwB,IAAI,EACtD,CAACiB,EAAiBC,CAAkB,EAAIlB,EAAiB,CAAC,EAC1D,CAACmB,EAAiBC,CAAkB,EAAIpB,EAAkB,EAAK,EAC/D,CAACqB,EAAgBC,CAAiB,EAAItB,EAAkB,EAAK,EAC7D,CAACuB,EAAYC,CAAa,EAAIxB,EAAkB,EAAK,EACrD,CAACyB,EAAiBC,EAAkB,EAAI1B,EAAkB,EAAK,EAC/D,CAAC2B,EAAkBC,EAAmB,EAAI5B,EAA4B,CAC1E,cAAe,CAAC,CAClB,CAAC,EACK,CAAC6B,EAAwBC,CAAyB,EACtD9B,EAAkB,EAAK,EACnB,CAAC+B,CAAmB,EAAI/B,EAAsB,IAAI,GAAK,EACvDgC,EAAkBjC,GACtB,IAAI,GACN,EAEMkC,EAAYnC,EAChB,IAAM,CAACiB,GAAYc,EACnB,CAACd,EAAUc,CAAsB,CACnC,EAEAhC,EAAU,IAAM,CACd,GACE,CAACwB,GACD,CAACE,GACD,CAACR,GACD,CAACH,EAAY,eACbe,EAAiB,cAAc,SAAW,EAE1C,OAEF,IAAMO,EAAW,YAAY,SAAY,CACvC,GAAI,CAGF,IAAMC,IAFS,MAAMvB,EAAY,cAAeG,CAAQ,IAC/B,UAAY,CAAC,GACR,OAAOqB,GAC/B,GAACA,GAAG,SACJL,EAAoB,IAAIK,EAAE,EAAE,EAEjC,EAED,GAAID,EAAa,SAAW,EAAG,OAE/BA,EAAa,QAAQC,GAAK,CACxBL,EAAoB,IAAIK,EAAE,EAAE,EAC5BvB,IAAoBuB,EAAE,QAASA,EAAE,KAAK,CACxC,CAAC,EACDlB,EAAmBmB,GAAQA,EAAOF,EAAa,MAAM,EAErD,GAAI,EACc,MAAM,QAAQ,WAC5BA,EAAa,IAAIC,GACfxB,EAAY,oBAAoBwB,EAAE,GAAI,CACpC,kBACF,CAAC,CACH,CACF,GACQ,QAAQ,GAAK,CACf,EAAE,SAAW,YACfE,EAAW,CACT,aACA,YAAa,6BAGb,EACA,QAAS,yCACT,KAAM,EAAE,MACV,CAAC,CAEL,CAAC,CACH,QAAE,CACwB,IAAI,IAC1BH,EAAa,IAAIC,GAAKA,EAAE,KAAK,EAAE,OAAO,OAAO,CAC/C,EACgB,QAAQG,GAAS,CACVP,EAAgB,QAAQ,IAAIO,CAAK,GACpC,2BAChBP,EAAgB,QAAQ,OAAOO,CAAK,CAExC,CAAC,EACwBZ,EAAiB,cAAc,OAAS,IAE/DL,EAAkB,EAAK,EACvBE,EAAc,EAAK,EAEvB,CACF,OAASgB,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,4BACT,KAAME,CACR,CAAC,CACH,CACF,EAAG7B,CAAe,EAElB,MAAO,IAAM,cAAcuB,CAAQ,CACrC,EAAG,CACDb,EACAE,EACAR,EACAJ,EACAC,EACAC,EACAkB,EACAJ,EAAiB,cAAc,MACjC,CAAC,EAED,IAAMc,EAA4B9C,EAChC,MAAO+C,EAAuCC,IAAuB,CACnE,GAAI,CACF,IAAMC,EAAOF,GAAc,OAAO,EAAE,KAC9BG,EAAqC,CACzC,YAAavC,EACb,UAAWD,EACX,GAAIsC,GAAaD,EACb,CACE,SAAUA,EAAa,SACvB,KAAME,GAAM,KACZ,OAAQA,GAAM,MAChB,EACA,CAAC,CACP,EAEME,EAAW,MAAMlC,EAAY,eAAeiC,CAAO,EACzD,OAAA7B,EAAY8B,EAAS,EAAE,EACvB1B,EAAmB,EAAK,EACxBM,GAAmBiB,CAAS,EAEvBA,GACHnB,EAAc,EAAI,EAGbsB,EAAS,EAClB,OAASN,EAAP,CACA,OAAAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,6BACT,KAAME,CACR,CAAC,EACDpB,EAAmB,EAAI,EACvBN,IAAU0B,CAAc,EACjB,IACT,CACF,EACA,CAAC5B,EAAaP,EAAUC,EAAYQ,CAAO,CAC7C,EAEAjB,EAAU,IAAM,CACd,IAAIkD,EAAU,GACVC,EAAqD,KAEzD,eAAeC,GAAoB,CACjC,GAAI,EAAE,kBAAmB,YAAc,EAAE,gBAAiB,QAAS,CACjEX,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QACE,yEACJ,CAAC,EAED,GAAI,CACF,IAAMY,EAAK,MAAMT,EAA0B,KAAM,EAAK,EAClDM,GAAWG,IACblC,EAAYkC,CAAE,EACd1B,EAAc,EAAI,EAEtB,OAAS2B,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,mCACT,KAAMa,CACR,CAAC,EACDrC,IAAUqC,CAAY,CACxB,CACA,OAGF,GAAI,CACF,IAAMC,EAAa,MAAM,aAAa,kBAAkB,EAEpDV,EAAwC,KACxCjB,EAAkB,GAEtB,GAAI2B,IAAe,UACjB,GAAI,CACF,IAAMC,EAAe,MAAM,UAAU,cAAc,SACjD,GAAG5C,IAAoBC,GACzB,EAMA,GAJI,CAACqC,IAEL,MAAM,UAAU,cAAc,MAE1B,CAACA,GAAS,OAEdL,EAAe,MAAMW,EAAa,YAAY,UAAU,CACtD,gBAAiB,GACjB,qBAAsBC,EACpB9C,CACF,CACF,CAAC,EAEDwC,EAAiB,MAAOO,GAAoB,CAC1C,IAAMC,EAAUD,EAAE,MAAM,QAClBE,EAAcF,EAAE,MAAM,GAO5B,GALIC,IACFtC,EAAmBmB,GAAQA,EAAO,CAAC,EACnCxB,IAAoB2C,EAASD,EAAE,MAAM,KAAK,GAGxCE,EACF,GAAI,CACF,MAAM7C,EAAY,oBAAoB6C,EAAa,CACjD,kBACF,CAAC,CACH,OAASN,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAGb,EACA,QAAS,wCACT,KAAMa,CACR,CAAC,EACD/B,EAAmB,EAAI,EACvBN,IAAUqC,CAAY,CACxB,CAEJ,EAEA,UAAU,cAAc,iBAAiB,UAAWH,CAAc,EAElEvB,EAAkB,GAClBa,EAAW,CACT,WACA,YAAa,6BAAkD,EAC/D,QACE,mEACJ,CAAC,CACH,OAASa,EAAP,CACAb,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QACE,gEACF,KAAMa,CACR,CAAC,EACD1B,EAAkB,EACpB,MAEAa,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QACE,6EACJ,CAAC,EACDb,EAAkB,GAGpB,IAAMyB,EAAK,MAAMT,EACfC,EACAjB,CACF,EACIsB,GAAWG,IACblC,EAAYkC,CAAE,EAETzB,GACHD,EAAc,EAAI,EAGxB,OAAS2B,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,0CACT,KAAMa,CACR,CAAC,EACDrC,IAAUqC,CAAY,EAEtB,GAAI,CACF,IAAMD,EAAK,MAAMT,EAA0B,KAAM,EAAK,EAClDM,GAAWG,IACblC,EAAYkC,CAAE,EACd1B,EAAc,EAAI,EAEtB,OAASkC,EAAP,CACApB,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,6CACT,KAAMoB,CACR,CAAC,CACH,CACF,CACF,CAEA,OAAInD,GACG0C,EAAkB,EAGlB,IAAM,CACXF,EAAU,GACNC,GAAkB,kBAAmB,WACvC,UAAU,cAAc,oBAAoB,UAAWA,CAAc,CAEzE,CACF,EAAG,CACDzC,EACAkC,EACA7B,EACAJ,EACAC,EACAC,EACAG,EACAC,CACF,CAAC,EAED,IAAM6C,EAAuBhE,EAAY,SAAY,CACnD,GAAKoB,EAEL,CAAAe,EAA0B,EAAI,EAC9B,GAAI,CACF,IAAM8B,EAAO,MAAMhD,EAAY,kBAAkBG,CAAQ,EACzDa,GAAoBgC,CAAI,CAC1B,OAASpB,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,mCACT,KAAME,CACR,CAAC,EACD1B,IAAU0B,CAAc,CAC1B,QAAE,CACAV,EAA0B,EAAK,CACjC,EACF,EAAG,CAACf,EAAUH,EAAaE,CAAO,CAAC,EAEnCjB,EAAU,IAAM,CACVkB,GACG4C,EAAqB,CAG9B,EAAG,CAAC5C,CAAQ,CAAC,EAEb,IAAM8C,EAAmBlE,EACvB,MAAO4C,EAAeuB,IAAuC,CAC3D,GAAI,CAAC/C,EAAU,CACbuB,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QAAS,2BACX,CAAC,EACD,OAGF,GAAI,CACEwB,GACF9B,EAAgB,QAAQ,IAAIO,EAAOuB,CAAO,EAG5C,MAAMlD,EAAY,eAAeG,EAAUwB,CAAK,EAChD,MAAMoB,EAAqB,EAEvB,CAAClC,IAAoB,CAACJ,GAAkB,CAACE,KAC3CD,EAAkB,EAAI,EACtBE,EAAc,EAAI,EAEtB,OAASgB,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,kCACT,KAAME,CACR,CAAC,EACD1B,IAAU0B,CAAc,CAC1B,CACF,EACA,CACEzB,EACAH,EACA+C,EACA7C,EACAO,EACAE,EACAE,CACF,CACF,EAEMsC,EAAuBpE,EAC3B,MAAO4C,GAAkB,CACvB,GAAI,CAACxB,EAAU,CACbuB,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QAAS,2BACX,CAAC,EACD,OAGF,GAAI,CACFN,EAAgB,QAAQ,OAAOO,CAAK,EAEpC,MAAM3B,EAAY,iBAAiBG,EAAUwB,CAAK,EAClD,MAAMoB,EAAqB,CAC7B,OAASnB,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,qCACT,KAAME,CACR,CAAC,EACD1B,IAAU0B,CAAc,CAC1B,CACF,EACA,CAACzB,EAAUH,EAAa+C,EAAsB7C,CAAO,CACvD,EAEMkD,EAAuBrE,EAC3B,MAAOsE,GAAoC,CACzC,GAAI,GAAClD,GAAYkD,EAAO,SAAW,GAEnC,GAAI,CACFA,EAAO,QAAQ1B,GAAS,CACjBP,EAAgB,QAAQ,IAAIO,CAAK,GACpCP,EAAgB,QAAQ,IAAIO,EAAO,CAAC,CAAC,CAEzC,CAAC,EAED,MAAM3B,EAAY,qBAAqBG,EAAUkD,CAAM,EACvD,MAAMN,EAAqB,EAEtBlC,IACHH,EAAkB,EAAI,EACtBE,EAAc,EAAI,EAEtB,OAAS2B,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,mCACT,KAAMa,CACR,CAAC,EACDrC,IAAUqC,CAAY,CACxB,CACF,EACA,CAACpC,EAAUH,EAAa+C,EAAsB7C,EAASW,CAAe,CACxE,EAEMyC,EAAyBvE,EAC7B,MAAOsE,GAAoC,CACzC,GAAI,GAAClD,GAAYkD,EAAO,SAAW,GAEnC,GAAI,CACFA,EAAO,QAAQ1B,GAASP,EAAgB,QAAQ,OAAOO,CAAK,CAAC,EAE7D,MAAM3B,EAAY,uBAAuBG,EAAUkD,CAAM,EACzD,MAAMN,EAAqB,CAC7B,OAASR,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,sCACT,KAAMa,CACR,CAAC,EACDrC,IAAUqC,CAAY,CACxB,CACF,EACA,CAACpC,EAAUH,EAAa+C,EAAsB7C,CAAO,CACvD,EAEMqD,EAAoBxE,EAAY,IAAM,CAC1CuB,EAAmB,CAAC,CACtB,EAAG,CAAC,CAAC,EAECkD,GAAqCtE,EACzC,KAAO,CACL,SAAAiB,EACA,iBAAAY,EACA,UAAAM,EACA,gBAAAhB,EACA,gBAAAE,EACA,iBAAA0C,EACA,qBAAAE,EACA,qBAAAC,EACA,uBAAAE,EACA,kBAAAC,CACF,GACA,CACEpD,EACAY,EACAM,EACAhB,EACAE,EACA0C,EACAE,EACAC,EACAE,EACAC,CACF,CACF,EAEA,OACElE,GAACC,EAAwB,SAAxB,CAAiC,MAAOkE,GACtC,SAAAhE,EACH,CAEJ,EAEO,SAASiE,IAAoD,CAClE,IAAMC,EAAU1E,GAAWM,CAAuB,EAElD,GAAI,CAACoE,EACH,MAAM,IAAI,MACR,uEACF,EAGF,OAAOA,CACT","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 [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions,\n [clientId, isLoadingSubscriptions],\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 const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\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 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 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 topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\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 pollingEnabled,\n shouldPoll,\n clientId,\n pollingInterval,\n apiAdapters,\n onMessageReceived,\n processedMessageIds,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\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 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 setIsRegisterError(true);\n onError?.(error as Error);\n return null;\n }\n },\n [apiAdapters, originId, originType, onError],\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 bearerToken,\n performClientRegistration,\n apiAdapters,\n vapidKey,\n serviceWorkerPath,\n serviceWorkerFile,\n onMessageReceived,\n onError,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\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 onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [clientId, apiAdapters, 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 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 onError?.(error as Error);\n }\n },\n [\n clientId,\n apiAdapters,\n refetchSubscriptions,\n onError,\n pollingEnabled,\n shouldPoll,\n isPassiveClient,\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 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 onError?.(error as Error);\n }\n },\n [clientId, apiAdapters, refetchSubscriptions, onError],\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 onError?.(err as Error);\n }\n },\n [clientId, apiAdapters, refetchSubscriptions, onError, isPassiveClient],\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 onError?.(err as Error);\n }\n },\n [clientId, apiAdapters, refetchSubscriptions, onError],\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 subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\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,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var p=()=>{let[o,e]=useState(null);return {copiedText:o,copy:async t=>{if(!navigator?.clipboard)return !1;try{return await navigator.clipboard.writeText(t),e(t),!0}catch{return e(null),!1}}}},l=p;
|
|
4
|
-
|
|
5
|
-
export { l as default };
|
|
1
|
+
export { a as default } from '../chunk-CFNATBO2.js';
|
|
6
2
|
//# sourceMappingURL=out.js.map
|
|
7
3
|
//# sourceMappingURL=useCopyToClipboard.js.map
|