@zydon/common 2.8.19 → 2.8.21
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-BJ5IDN65.js → chunk-AWTVGCA6.js} +3 -3
- package/dist/chunk-BVYRIEPW.js +9 -0
- package/dist/chunk-BVYRIEPW.js.map +1 -0
- package/dist/chunk-ON5OQYWL.js +5 -0
- package/dist/chunk-ON5OQYWL.js.map +1 -0
- package/dist/chunk-QNU6ZCPL.js +5 -0
- package/dist/chunk-QNU6ZCPL.js.map +1 -0
- package/dist/components/ActionButton/index.js +1 -0
- package/dist/components/Actions/index.js +1 -0
- package/dist/components/Autocomplete/index.js +1 -0
- package/dist/components/AutocompleteDetailed/index.js +1 -0
- package/dist/components/Avatar/index.js +1 -0
- package/dist/components/Avatar/index.js.map +1 -1
- package/dist/components/AvatarButton/index.js +5 -3
- package/dist/components/AvatarButton/index.js.map +1 -1
- package/dist/components/BuilderLayout/index.js +1 -0
- package/dist/components/BuilderLayout/index.js.map +1 -1
- package/dist/components/BuilderSidebar/index.js +1 -0
- package/dist/components/BuilderSidebar/index.js.map +1 -1
- package/dist/components/BulkEditModal/index.js +1 -0
- package/dist/components/BulkEditModal/index.js.map +1 -1
- package/dist/components/CardBrand/index.js +1 -0
- package/dist/components/CardBrand/index.js.map +1 -1
- package/dist/components/CardBrandText/index.js +1 -0
- package/dist/components/CardBrandText/index.js.map +1 -1
- package/dist/components/CardFlag/index.js +1 -0
- package/dist/components/CardFlag/index.js.map +1 -1
- package/dist/components/CardWithHeader/index.js +1 -0
- package/dist/components/CardWithHeader/index.js.map +1 -1
- package/dist/components/ColorPickerInput/index.js +1 -0
- package/dist/components/ColoredLabel/index.js +1 -0
- package/dist/components/ColoredLabel/index.js.map +1 -1
- package/dist/components/Common/index.js +5 -3
- package/dist/components/Common/index.js.map +1 -1
- package/dist/components/Confirm/index.js +1 -0
- package/dist/components/Confirm/index.js.map +1 -1
- package/dist/components/CopyButton/index.js +1 -0
- package/dist/components/CustomAvatar/index.js +1 -0
- package/dist/components/CustomAvatarGroup/index.js +1 -0
- package/dist/components/CustomAvatarGroup/index.js.map +1 -1
- package/dist/components/DashedDivider/index.js +1 -0
- package/dist/components/DataCards/index.js +1 -0
- package/dist/components/DataCards/index.js.map +1 -1
- package/dist/components/DataGrid/index.js +1 -0
- package/dist/components/DataView/index.js +1 -0
- package/dist/components/DateCalendar/index.d.ts +12 -0
- package/dist/components/DateCalendar/index.js +62 -0
- package/dist/components/DateCalendar/index.js.map +1 -0
- package/dist/components/DatePicker/index.js +1 -0
- package/dist/components/DatePicker/index.js.map +1 -1
- package/dist/components/DateRangeCalendar/index.js +1 -0
- package/dist/components/DateRangeCalendar/index.js.map +1 -1
- package/dist/components/DateRangePicker/index.js +1 -0
- package/dist/components/DateRangePicker/index.js.map +1 -1
- package/dist/components/DateTimePicker/index.js +1 -0
- package/dist/components/DateTimePicker/index.js.map +1 -1
- package/dist/components/Delayed/index.js +1 -0
- package/dist/components/Delayed/index.js.map +1 -1
- package/dist/components/DisplayMode/index.js +1 -0
- package/dist/components/DisplayMode/index.js.map +1 -1
- package/dist/components/DragButton/index.js +1 -0
- package/dist/components/DragContainer/index.js +1 -0
- package/dist/components/DragContainer/index.js.map +1 -1
- package/dist/components/Drawer/index.js +1 -0
- package/dist/components/Drawer/index.js.map +1 -1
- package/dist/components/DrawerActions/index.js +1 -0
- package/dist/components/DynamicDataView/index.js +1 -0
- package/dist/components/DynamicDataView/index.js.map +1 -1
- package/dist/components/EasyCrop/index.js +1 -0
- package/dist/components/EasyCropModal/index.js +1 -0
- package/dist/components/EmptyContent/index.js +1 -0
- package/dist/components/EmptyView/index.js +1 -0
- package/dist/components/Error/index.js +1 -0
- package/dist/components/Error/index.js.map +1 -1
- package/dist/components/ExpandableGroup/index.js +1 -0
- package/dist/components/ExpandableGroup/index.js.map +1 -1
- package/dist/components/FieldMentions/index.js +1 -0
- package/dist/components/FieldMentions/index.js.map +1 -1
- package/dist/components/FileUpload/index.js +1 -0
- package/dist/components/FixedProgressBar/index.js +1 -0
- package/dist/components/FrameSkeleton/index.js +1 -0
- package/dist/components/FrameSkeleton/index.js.map +1 -1
- package/dist/components/HelpButton/index.js +1 -0
- package/dist/components/Icon/index.js +1 -0
- package/dist/components/IconButton/index.js +1 -0
- package/dist/components/ImageCrop/index.js +1 -0
- package/dist/components/ImageCropModal/index.js +1 -0
- package/dist/components/ImageCropModal/index.js.map +1 -1
- package/dist/components/Incrementer/index.js +1 -0
- package/dist/components/InfoCircle/index.js +1 -0
- package/dist/components/InfoCircle/index.js.map +1 -1
- package/dist/components/Label/index.js +1 -0
- package/dist/components/ListBundles/index.js +1 -0
- package/dist/components/ListBundles/index.js.map +1 -1
- package/dist/components/LoadingScreen/index.js +1 -0
- package/dist/components/LoadingScreen/index.js.map +1 -1
- package/dist/components/MaskedInput/index.js +1 -0
- package/dist/components/MenuItem/index.js +1 -0
- package/dist/components/MenuItem/index.js.map +1 -1
- package/dist/components/MenuPopover/index.js +1 -0
- package/dist/components/Modal/index.js +1 -0
- package/dist/components/ModalActions/index.js +1 -0
- package/dist/components/MoreMenu/index.js +1 -0
- package/dist/components/MoreMenu/index.js.map +1 -1
- package/dist/components/NotFound/index.js +1 -0
- package/dist/components/NotFound/index.js.map +1 -1
- package/dist/components/NumberInput/index.js +1 -0
- package/dist/components/Page/index.js +1 -0
- package/dist/components/Page/index.js.map +1 -1
- package/dist/components/PageHeader/index.js +1 -0
- package/dist/components/PageHeader/index.js.map +1 -1
- package/dist/components/Panel/index.js +1 -0
- package/dist/components/PasswordRules/index.js +1 -0
- package/dist/components/PasswordRules/index.js.map +1 -1
- package/dist/components/PopoverSelect/index.js +1 -0
- package/dist/components/PopoverSelect/index.js.map +1 -1
- package/dist/components/Portal/index.js +1 -0
- package/dist/components/ResponsivePopover/index.js +1 -0
- package/dist/components/Result/index.js +1 -0
- package/dist/components/SavedChanges/index.js +1 -0
- package/dist/components/SavedChanges/index.js.map +1 -1
- package/dist/components/Scrollbar/index.js +1 -0
- package/dist/components/SearchInput/index.js +1 -0
- package/dist/components/SelectList/index.js +1 -0
- package/dist/components/SelectableCards/index.js +1 -0
- package/dist/components/SeoPreview/index.js +1 -0
- package/dist/components/SeoPreview/index.js.map +1 -1
- package/dist/components/SimpleCard/index.js +1 -0
- package/dist/components/SimpleCard/index.js.map +1 -1
- package/dist/components/Skeleton/index.js +1 -0
- package/dist/components/SmartText/index.js +1 -0
- package/dist/components/SmartText/index.js.map +1 -1
- package/dist/components/SplashScreen/index.js +1 -0
- package/dist/components/SplashScreen/index.js.map +1 -1
- package/dist/components/StateDisplay/index.js +1 -0
- package/dist/components/Steps/index.js +1 -0
- package/dist/components/Steps/index.js.map +1 -1
- package/dist/components/StyledTab/index.js +1 -0
- package/dist/components/StyledTab/index.js.map +1 -1
- package/dist/components/StyledTabs/index.js +1 -0
- package/dist/components/StyledTabs/index.js.map +1 -1
- package/dist/components/Summary/index.js +1 -0
- package/dist/components/Summary/index.js.map +1 -1
- package/dist/components/SwapList/index.js +1 -0
- package/dist/components/SwapList/index.js.map +1 -1
- package/dist/components/TabPanel/index.js +1 -0
- package/dist/components/TabPanel/index.js.map +1 -1
- package/dist/components/TextMaxLine/index.js +1 -0
- package/dist/components/TimePicker/index.js +1 -0
- package/dist/components/TimePicker/index.js.map +1 -1
- package/dist/components/ToggleButtonGroup/index.js +1 -0
- package/dist/components/ToggleButtonGroup/index.js.map +1 -1
- package/dist/components/ToggleTheme/index.js +5 -3
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/WebhookCard/index.js +1 -0
- package/dist/components/WebhookCard/index.js.map +1 -1
- package/dist/components/WhiteBox/index.js +1 -0
- package/dist/components/WhiteBox/index.js.map +1 -1
- package/dist/components/animate/index.js +1 -0
- package/dist/components/carousel/index.js +1 -0
- package/dist/components/form/Address/index.js +1 -0
- package/dist/components/form/Address/index.js.map +1 -1
- package/dist/components/form/Autocomplete/index.js +1 -0
- package/dist/components/form/AutocompleteDetailed/index.js +1 -0
- package/dist/components/form/AutocompleteDetailed/index.js.map +1 -1
- package/dist/components/form/Checkbox/index.js +1 -0
- package/dist/components/form/Checkbox/index.js.map +1 -1
- package/dist/components/form/Codes/index.js +1 -0
- package/dist/components/form/Codes/index.js.map +1 -1
- package/dist/components/form/ColorPicker/index.js +1 -0
- package/dist/components/form/ColorPicker/index.js.map +1 -1
- package/dist/components/form/DateField/index.js +1 -0
- package/dist/components/form/DateField/index.js.map +1 -1
- package/dist/components/form/DatePicker/index.js +1 -0
- package/dist/components/form/DatePicker/index.js.map +1 -1
- package/dist/components/form/DateRangePicker/index.js +1 -0
- package/dist/components/form/DateRangePicker/index.js.map +1 -1
- package/dist/components/form/DateTimePicker/index.js +1 -0
- package/dist/components/form/DateTimePicker/index.js.map +1 -1
- package/dist/components/form/Field/index.js +1 -0
- package/dist/components/form/FileUpload/index.js +1 -0
- package/dist/components/form/FileUpload/index.js.map +1 -1
- package/dist/components/form/Form/index.js +1 -0
- package/dist/components/form/Form/index.js.map +1 -1
- package/dist/components/form/Incrementer/index.js +1 -0
- package/dist/components/form/Incrementer/index.js.map +1 -1
- package/dist/components/form/InputTags/index.js +1 -0
- package/dist/components/form/InputTags/index.js.map +1 -1
- package/dist/components/form/MaskedInput/index.js +1 -0
- package/dist/components/form/MultiCheckbox/index.js +1 -0
- package/dist/components/form/MultiCheckbox/index.js.map +1 -1
- package/dist/components/form/MultiChipField/index.js +1 -0
- package/dist/components/form/MultiChipField/index.js.map +1 -1
- package/dist/components/form/NumberInput/index.js +1 -0
- package/dist/components/form/NumberInput/index.js.map +1 -1
- package/dist/components/form/Password/index.js +1 -0
- package/dist/components/form/Password/index.js.map +1 -1
- package/dist/components/form/RadioGroup/index.js +1 -0
- package/dist/components/form/RadioGroup/index.js.map +1 -1
- package/dist/components/form/SelectList/index.js +1 -0
- package/dist/components/form/SelectList/index.js.map +1 -1
- package/dist/components/form/SelectableCards/index.js +1 -0
- package/dist/components/form/SelectableCards/index.js.map +1 -1
- package/dist/components/form/Switch/index.js +1 -0
- package/dist/components/form/Switch/index.js.map +1 -1
- package/dist/components/form/TimePicker/index.js +1 -0
- package/dist/components/form/TimePicker/index.js.map +1 -1
- package/dist/components/form/Webhook/index.js +1 -0
- package/dist/components/form/Webhook/index.js.map +1 -1
- package/dist/components/lightbox/index.js +1 -0
- package/dist/components/lightbox/index.js.map +1 -1
- package/dist/components/table/index.js +1 -0
- package/dist/components/table/index.js.map +1 -1
- package/dist/contexts/Messages/index.js +1 -0
- package/dist/contexts/Messages/index.js.map +1 -1
- package/dist/contexts/PushNotifications/index.js +1 -0
- package/dist/contexts/PushNotifications/index.js.map +1 -1
- package/dist/hooks/useActiveElement.js +1 -0
- package/dist/hooks/useActiveElement.js.map +1 -1
- package/dist/hooks/useApiMessage.js +1 -0
- package/dist/hooks/useAutocomplete.js +1 -0
- package/dist/hooks/useAutocomplete.js.map +1 -1
- package/dist/hooks/useCollapseSidebarOnMount.js +1 -0
- package/dist/hooks/useCopyToClipboard.js +1 -0
- package/dist/hooks/useDatagrid.js +1 -0
- package/dist/hooks/useDatagrid.js.map +1 -1
- package/dist/hooks/useDebounceValue.js +1 -0
- package/dist/hooks/useDebounceValue.js.map +1 -1
- package/dist/hooks/useDeepCompareEffect.js +1 -0
- package/dist/hooks/useDeepCompareEffect.js.map +1 -1
- package/dist/hooks/useEventCallback.js +1 -0
- package/dist/hooks/useEventListener.js +1 -0
- package/dist/hooks/useIsMounting.js +1 -0
- package/dist/hooks/useIsMounting.js.map +1 -1
- package/dist/hooks/useIsVisible.js +1 -0
- package/dist/hooks/useIsVisible.js.map +1 -1
- package/dist/hooks/useIsomorphicLayoutEffect.js +1 -0
- package/dist/hooks/useLocalStorage.js +1 -0
- package/dist/hooks/useMount.js +1 -0
- package/dist/hooks/useOnClickOutside.js +1 -0
- package/dist/hooks/useOnClickOutside.js.map +1 -1
- package/dist/hooks/usePagination.js +1 -0
- package/dist/hooks/usePagination.js.map +1 -1
- package/dist/hooks/usePopover.js +1 -0
- package/dist/hooks/useResponsive.js +1 -0
- package/dist/hooks/useScreenSize.js +1 -0
- package/dist/hooks/useScreenSize.js.map +1 -1
- package/dist/hooks/useScrollOffSetTop.js +1 -0
- package/dist/hooks/useScrollOffSetTop.js.map +1 -1
- package/dist/hooks/useSnackbar.js +1 -0
- package/dist/hooks/useTabs.js +1 -0
- package/dist/hooks/useTabs.js.map +1 -1
- package/dist/hooks/useThemeToggle.js +5 -3
- package/dist/hooks/useToggle.js +1 -0
- package/dist/hooks/useUpload.js +1 -0
- package/dist/hooks/useUpload.js.map +1 -1
- package/dist/hooks/useUploadImage.js +1 -0
- package/dist/hooks/useUploadImage.js.map +1 -1
- package/dist/hooks/useWindowFocus.js +1 -0
- package/dist/hooks/useWindowFocus.js.map +1 -1
- package/dist/index.js +5 -3
- package/dist/layouts/Admin/index.js +1 -0
- package/dist/layouts/Admin/index.js.map +1 -1
- package/dist/locales/all-langs.js +3 -1
- package/dist/theme/core/index.js +1 -0
- package/dist/theme/settings-provider.js +1 -0
- package/dist/theme/styles/index.js +1 -0
- package/dist/theme/theme-provider.js +5 -3
- package/dist/theme/with-settings/index.js +1 -0
- package/dist/types/cards.js +1 -0
- package/dist/types/consoleLog.js +1 -0
- package/dist/types/entityMetadata.js +1 -0
- package/dist/types/export.js +2 -0
- package/dist/types/export.js.map +1 -1
- package/dist/types/fieldMentions.js +1 -0
- package/dist/types/files.js +1 -0
- package/dist/types/filter.js +1 -0
- package/dist/types/icon.js +1 -0
- package/dist/types/pushNotifications.js +1 -0
- package/dist/types/webhook.js +1 -0
- package/dist/utils/buildExportPayload.js +1 -0
- package/dist/utils/buildExportPayload.js.map +1 -1
- package/dist/utils/cards.js +1 -0
- package/dist/utils/color.js +1 -0
- package/dist/utils/compare.js +1 -0
- package/dist/utils/consoleLog.js +1 -0
- package/dist/utils/date.js +1 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/diacritics.js +1 -0
- package/dist/utils/dnd.js +1 -0
- package/dist/utils/dnd.js.map +1 -1
- package/dist/utils/execution.js +1 -0
- package/dist/utils/execution.js.map +1 -1
- package/dist/utils/files.js +1 -0
- package/dist/utils/files.js.map +1 -1
- package/dist/utils/flagCard.js +1 -0
- package/dist/utils/formatNumber.js +1 -0
- package/dist/utils/formatTime.js +1 -0
- package/dist/utils/loadable.js +1 -0
- package/dist/utils/loadable.js.map +1 -1
- package/dist/utils/mask.js +2 -0
- package/dist/utils/mask.js.map +1 -1
- package/dist/utils/mobile.js +2 -0
- package/dist/utils/mobile.js.map +1 -1
- package/dist/utils/number.js +1 -0
- package/dist/utils/object.js +1 -0
- package/dist/utils/paymentValidators.js +2 -0
- package/dist/utils/paymentValidators.js.map +1 -1
- package/dist/utils/popup.js +2 -0
- package/dist/utils/popup.js.map +1 -1
- package/dist/utils/sort.js +2 -0
- package/dist/utils/sort.js.map +1 -1
- package/dist/utils/string.js +2 -0
- package/dist/utils/string.js.map +1 -1
- package/dist/utils/urlBase64ToUint8Array.js +1 -0
- package/dist/utils/user.js +1 -0
- package/dist/utils/uuidv4.js +1 -0
- package/dist/utils/validators.js +1 -0
- package/package.json +1 -1
- package/dist/chunk-WUFEPE2G.js +0 -8
- package/dist/chunk-WUFEPE2G.js.map +0 -1
- /package/dist/{chunk-BJ5IDN65.js.map → chunk-AWTVGCA6.js.map} +0 -0
|
@@ -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,6 +1,7 @@
|
|
|
1
1
|
import { a } from '../../chunk-MCRXKVSY.js';
|
|
2
2
|
import '../../chunk-ET6H3IRG.js';
|
|
3
3
|
import '../../chunk-ICEDOBLM.js';
|
|
4
|
+
import '../../chunk-ON5OQYWL.js';
|
|
4
5
|
import S from '@mui/material/TableCell';
|
|
5
6
|
import F from '@mui/material/TableRow';
|
|
6
7
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/contexts/Messages/index.tsx"],"names":["createContext","useCallback","useContext","useMemo","useState","jsx","MessagesContext","MessagesProvider","children","messages","setMessages","addMessage","payload","message","uuidv4","prev","markAsProcessed","id","msg","clearMessages","getMessagesByType","filter","unprocessedMessages","value","useMessages","context"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/contexts/Messages/index.tsx"],"names":["createContext","useCallback","useContext","useMemo","useState","jsx","MessagesContext","MessagesProvider","children","messages","setMessages","addMessage","payload","message","uuidv4","prev","markAsProcessed","id","msg","clearMessages","getMessagesByType","filter","unprocessedMessages","value","useMessages","context"],"mappings":"4EAAA,OACE,iBAAAA,EAEA,eAAAC,EACA,cAAAC,EACA,WAAAC,EACA,YAAAC,MACK,QAiEH,cAAAC,MAAA,oBA5DJ,IAAMC,EAAkBN,EACtB,MACF,EAEaO,EAAmB,CAAC,CAAE,SAAAC,CAAS,IAAyB,CACnE,GAAM,CAACC,EAAUC,CAAW,EAAIN,EAAoB,CAAC,CAAC,EAEhDO,EAAaV,EAAaW,GAAqB,CACnD,IAAMC,EAAmB,CACvB,GAAIC,EAAO,EACX,QAAAF,EACA,WAAY,KAAK,IAAI,EACrB,UAAW,EACb,EAEAF,EAAYK,GAAQ,CAAC,GAAGA,EAAMF,CAAO,CAAC,CACxC,EAAG,CAAC,CAAC,EAECG,EAAkBf,EAAagB,GAAe,CAClDP,EAAYK,GACVA,EAAK,IAAIG,GAAQA,EAAI,KAAOD,EAAK,CAAE,GAAGC,EAAK,UAAW,EAAK,EAAIA,CAAI,CACrE,CACF,EAAG,CAAC,CAAC,EAECC,EAAgBlB,EAAY,IAAM,CACtCS,EAAY,CAAC,CAAC,CAChB,EAAG,CAAC,CAAC,EAECU,EAAoBnB,EACnBoB,GACIZ,EAAS,OAAOY,CAAM,EAE/B,CAACZ,CAAQ,CACX,EAEMa,EAAsBnB,EAC1B,IAAMM,EAAS,OAAOS,GAAO,CAACA,EAAI,SAAS,EAC3C,CAACT,CAAQ,CACX,EAEMc,EAAQpB,EACZ,KAAO,CACL,SAAAM,EACA,oBAAAa,EACA,WAAAX,EACA,gBAAAK,EACA,cAAAG,EACA,kBAAAC,CACF,GACA,CACEX,EACAa,EACAX,EACAK,EACAG,EACAC,CACF,CACF,EAEA,OACEf,EAACC,EAAgB,SAAhB,CAAyB,MAAOiB,EAC9B,SAAAf,EACH,CAEJ,EAEagB,EAAc,IAAM,CAC/B,IAAMC,EAAUvB,EAAWI,CAAe,EAE1C,GAAI,CAACmB,EACH,MAAM,IAAI,MAAM,kDAAkD,EAGpE,OAAOA,CACT","sourcesContent":["import {\n createContext,\n type PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\n\nimport type { Message, MessagesContextData } from 'types/messages';\nimport uuidv4 from 'utils/uuidv4';\n\nconst MessagesContext = createContext<MessagesContextData | undefined>(\n undefined,\n);\n\nexport const MessagesProvider = ({ children }: PropsWithChildren) => {\n const [messages, setMessages] = useState<Message[]>([]);\n\n const addMessage = useCallback((payload: unknown) => {\n const message: Message = {\n id: uuidv4(),\n payload,\n receivedAt: Date.now(),\n processed: false,\n };\n\n setMessages(prev => [...prev, message]);\n }, []);\n\n const markAsProcessed = useCallback((id: string) => {\n setMessages(prev =>\n prev.map(msg => (msg.id === id ? { ...msg, processed: true } : msg)),\n );\n }, []);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n const getMessagesByType = useCallback(\n <T,>(filter: (msg: Message) => boolean): Message<T>[] => {\n return messages.filter(filter) as Message<T>[];\n },\n [messages],\n );\n\n const unprocessedMessages = useMemo(\n () => messages.filter(msg => !msg.processed),\n [messages],\n );\n\n const value = useMemo(\n () => ({\n messages,\n unprocessedMessages,\n addMessage,\n markAsProcessed,\n clearMessages,\n getMessagesByType,\n }),\n [\n messages,\n unprocessedMessages,\n addMessage,\n markAsProcessed,\n clearMessages,\n getMessagesByType,\n ],\n );\n\n return (\n <MessagesContext.Provider value={value}>\n {children}\n </MessagesContext.Provider>\n );\n};\n\nexport const useMessages = () => {\n const context = useContext(MessagesContext);\n\n if (!context) {\n throw new Error('useMessages must be used within MessagesProvider');\n }\n\n return context;\n};\n"]}
|
|
@@ -2,6 +2,7 @@ import { a as a$1 } from '../../chunk-RP7PNTLJ.js';
|
|
|
2
2
|
import { a } from '../../chunk-GPFANUMT.js';
|
|
3
3
|
import '../../chunk-E5ULJSWF.js';
|
|
4
4
|
import '../../chunk-TVKBRJHF.js';
|
|
5
|
+
import '../../chunk-ON5OQYWL.js';
|
|
5
6
|
import { createContext, useState, useRef, useMemo, useEffect, useCallback, useContext } from 'react';
|
|
6
7
|
import { jsx } from 'react/jsx-runtime';
|
|
7
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/contexts/PushNotifications/index.tsx"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","jsx","PushNotificationContext","PushNotificationProvider","children","originId","originType","bearerToken","vapidKey","serviceWorkerPath","serviceWorkerFile","pollingInterval","apiAdapters","onMessageReceived","onError","clientId","setClientId","isRegistering","setIsRegistering","isRegisterError","setIsRegisterError","isPassiveClient","setIsPassiveClient","newMessageCount","setNewMessageCount","processedMessageIds","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","topicOptionsRef","isLoading","interval","deliverables","m","prev","consoleLog","topic","error","performClientRegistration","subscription","isPassive","keys","payload","response","mounted","messageHandler","initSwAndRegister","id","err","permission","registration","urlBase64ToUint8Array","e","message","deliveredId","fallbackErr","refetchSubscriptions","data","subscribeToTopic","options","unsubscribeFromTopic","subscribeTopicsBatch","topics","unsubscribeTopicsBatch","resetMessageCount","value","usePushNotifications","context"],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { ConsoleType, Environment } from 'types/consoleLog';\nimport {\n type ClientRegistrationPayload,\n MessageStatus,\n type PushNotificationContextData,\n type PushNotificationProviderProps,\n type SubscriptionsData,\n type TopicSubscriptionOptions,\n} from 'types/pushNotifications';\nimport { consoleLog } from 'utils/consoleLog';\nimport { urlBase64ToUint8Array } from 'utils/urlBase64ToUint8Array';\n\nconst PushNotificationContext = createContext<\n PushNotificationContextData | undefined\n>(undefined);\n\nexport const PushNotificationProvider = <TMessage = unknown,>({\n children,\n originId,\n originType,\n bearerToken,\n vapidKey,\n serviceWorkerPath = '/',\n serviceWorkerFile = 'service-worker.js',\n pollingInterval = 1000,\n apiAdapters,\n onMessageReceived,\n onError,\n}: PushNotificationProviderProps<TMessage>) => {\n const [clientId, setClientId] = useState<string | null>(null);\n const [isRegistering, setIsRegistering] = useState<boolean>(false);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions || isRegistering,\n [clientId, isLoadingSubscriptions, isRegistering],\n );\n\n useEffect(() => {\n if (\n !pollingEnabled ||\n !shouldPoll ||\n !clientId ||\n !apiAdapters.fetchMessages ||\n subscribedTopics.subscriptions.length === 0\n )\n return;\n\n const interval = setInterval(async () => {\n try {\n const result = await apiAdapters.fetchMessages!(clientId);\n const messages = result?.messages ?? [];\n\n const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\n\n return true;\n });\n\n if (deliverables.length === 0) return;\n\n deliverables.forEach(m => {\n processedMessageIds.add(m.id);\n onMessageReceived?.(m.payload, m.topic);\n });\n\n setNewMessageCount(prev => prev + deliverables.length);\n\n try {\n const updates = await Promise.allSettled(\n deliverables.map(m =>\n apiAdapters.updateMessageStatus(m.id, {\n status: MessageStatus.DELIVERED,\n }),\n ),\n );\n\n updates.forEach(u => {\n if (u.status === 'rejected') {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao marcar mensagem como entregue:',\n data: u.reason,\n });\n }\n });\n } finally {\n const topicsProcessed = new Set(\n deliverables.map(m => m.topic).filter(Boolean) as string[],\n );\n\n topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\n\n if (!hasSubscriptions) {\n setPollingEnabled(false);\n setShouldPoll(false);\n }\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao buscar mensagens:',\n data: error,\n });\n }\n }, pollingInterval);\n\n return () => clearInterval(interval);\n }, [\n apiAdapters,\n clientId,\n onMessageReceived,\n pollingEnabled,\n pollingInterval,\n processedMessageIds,\n shouldPoll,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\n setIsRegistering(true);\n\n try {\n const keys = subscription?.toJSON().keys;\n const payload: ClientRegistrationPayload = {\n origin_type: originType,\n origin_id: originId,\n ...(isPassive && subscription\n ? {\n endpoint: subscription.endpoint,\n auth: keys?.auth,\n p256dh: keys?.p256dh,\n }\n : {}),\n };\n\n const response = await apiAdapters.registerClient(payload);\n\n setClientId(response.id);\n setIsRegisterError(false);\n setIsPassiveClient(isPassive);\n\n if (!isPassive) {\n setShouldPoll(true);\n }\n\n return response.id;\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n setIsRegisterError(true);\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n },\n [apiAdapters, onError, originId, originType],\n );\n\n useEffect(() => {\n let mounted = true;\n let messageHandler: ((e: MessageEvent) => void) | null = null;\n\n async function initSwAndRegister() {\n setIsRegistering(true);\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Push notifications não suportadas, criando cliente ativo com polling',\n });\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente ativo:',\n data: err,\n });\n onError?.(err as Error);\n } finally {\n setIsRegistering(false);\n }\n return;\n }\n\n try {\n const permission = await Notification.requestPermission();\n\n let subscription: PushSubscription | null = null;\n let isPassiveClient = false;\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n if (!mounted) return;\n\n await navigator.serviceWorker.ready;\n\n if (!mounted) return;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n messageHandler = async (e: MessageEvent) => {\n const message = e.data?.payload;\n const deliveredId = e.data?.id;\n\n if (message) {\n setNewMessageCount(prev => prev + 1);\n onMessageReceived?.(message, e.data?.topic);\n }\n\n if (deliveredId) {\n try {\n await apiAdapters.updateMessageStatus(deliveredId, {\n status: MessageStatus.DELIVERED,\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao atualizar status da mensagem:',\n data: err,\n });\n setIsRegisterError(true);\n onError?.(err as Error);\n }\n }\n };\n\n navigator.serviceWorker.addEventListener('message', messageHandler);\n\n isPassiveClient = true;\n consoleLog({\n type: ConsoleType.LOG,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão concedida, criando cliente passivo (aguarda webpush)',\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Falha ao configurar push subscription, criando cliente ativo:',\n data: err,\n });\n isPassiveClient = false;\n }\n } else {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão de notificação negada, criando cliente ativo com polling',\n });\n isPassiveClient = false;\n }\n\n const id = await performClientRegistration(\n subscription,\n isPassiveClient,\n );\n if (mounted && id) {\n setClientId(id);\n\n if (!isPassiveClient) {\n setShouldPoll(true);\n }\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inicializar notificações:',\n data: err,\n });\n onError?.(err as Error);\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (fallbackErr) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao criar cliente ativo como fallback:',\n data: fallbackErr,\n });\n }\n } finally {\n setIsRegistering(false);\n }\n }\n\n if (bearerToken) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'O parâmetro bearerToken está deprecated e não é mais necessário. Ele será removido em versões futuras.',\n });\n }\n\n void initSwAndRegister();\n\n return () => {\n mounted = false;\n if (messageHandler && 'serviceWorker' in navigator) {\n navigator.serviceWorker.removeEventListener('message', messageHandler);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiAdapters,\n onError,\n onMessageReceived,\n performClientRegistration,\n serviceWorkerFile,\n serviceWorkerPath,\n vapidKey,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\n\n setSubscribedTopics(data);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao listar inscrições:',\n data: error,\n });\n\n onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [apiAdapters, clientId, onError]);\n\n useEffect(() => {\n if (clientId) {\n void refetchSubscriptions();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clientId]);\n\n const subscribeToTopic = useCallback(\n async (topic: string, options?: TopicSubscriptionOptions) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n if (options) {\n topicOptionsRef.current.set(topic, options);\n }\n\n await apiAdapters.subscribeTopic(clientId, topic);\n await refetchSubscriptions();\n\n if (!isPassiveClient && (!pollingEnabled || !shouldPoll)) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever no tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [\n apiAdapters,\n clientId,\n isPassiveClient,\n onError,\n pollingEnabled,\n refetchSubscriptions,\n shouldPoll,\n ],\n );\n\n const unsubscribeFromTopic = useCallback(\n async (topic: string) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n topicOptionsRef.current.delete(topic);\n\n await apiAdapters.unsubscribeTopic(clientId, topic);\n await refetchSubscriptions();\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever do tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const subscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => {\n if (!topicOptionsRef.current.has(topic)) {\n topicOptionsRef.current.set(topic, {});\n }\n });\n\n await apiAdapters.subscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n\n if (!isPassiveClient) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever em tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, isPassiveClient, onError, refetchSubscriptions],\n );\n\n const unsubscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => topicOptionsRef.current.delete(topic));\n\n await apiAdapters.unsubscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever de tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const resetMessageCount = useCallback(() => {\n setNewMessageCount(0);\n }, []);\n\n const value: PushNotificationContextData = useMemo(\n () => ({\n clientId,\n subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\n }),\n [\n clientId,\n isLoading,\n isRegisterError,\n newMessageCount,\n resetMessageCount,\n subscribedTopics,\n subscribeToTopic,\n subscribeTopicsBatch,\n unsubscribeFromTopic,\n unsubscribeTopicsBatch,\n ],\n );\n\n return (\n <PushNotificationContext.Provider value={value}>\n {children}\n </PushNotificationContext.Provider>\n );\n};\n\nexport function usePushNotifications(): PushNotificationContextData {\n const context = useContext(PushNotificationContext);\n\n if (!context) {\n throw new Error(\n 'usePushNotifications precisa estar dentro de PushNotificationProvider',\n );\n }\n\n return context;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/contexts/PushNotifications/index.tsx"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","jsx","PushNotificationContext","PushNotificationProvider","children","originId","originType","bearerToken","vapidKey","serviceWorkerPath","serviceWorkerFile","pollingInterval","apiAdapters","onMessageReceived","onError","clientId","setClientId","isRegistering","setIsRegistering","isRegisterError","setIsRegisterError","isPassiveClient","setIsPassiveClient","newMessageCount","setNewMessageCount","processedMessageIds","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","topicOptionsRef","isLoading","interval","deliverables","m","prev","consoleLog","topic","error","performClientRegistration","subscription","isPassive","keys","payload","response","mounted","messageHandler","initSwAndRegister","id","err","permission","registration","urlBase64ToUint8Array","e","message","deliveredId","fallbackErr","refetchSubscriptions","data","subscribeToTopic","options","unsubscribeFromTopic","subscribeTopicsBatch","topics","unsubscribeTopicsBatch","resetMessageCount","value","usePushNotifications","context"],"mappings":"wLAAA,OACE,iBAAAA,GACA,eAAAC,EACA,cAAAC,GACA,aAAAC,EACA,WAAAC,EACA,UAAAC,GACA,YAAAC,MACK,QAmkBH,cAAAC,OAAA,oBArjBJ,IAAMC,GAA0BR,GAE9B,MAAS,EAEES,GAA2B,CAAsB,CAC5D,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,GACA,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,EAAeC,CAAgB,EAAIlB,EAAkB,EAAK,EAC3D,CAACmB,EAAiBC,CAAkB,EAAIpB,EAAkB,EAAK,EAC/D,CAACqB,EAAiBC,EAAkB,EAAItB,EAAkB,EAAK,EAC/D,CAACuB,EAAiBC,CAAkB,EAAIxB,EAAiB,CAAC,EAC1D,CAACyB,CAAmB,EAAIzB,EAAsB,IAAI,GAAK,EAEvD,CAAC0B,EAAkBC,EAAmB,EAAI3B,EAA4B,CAC1E,cAAe,CAAC,CAClB,CAAC,EACK,CAAC4B,EAAwBC,CAAyB,EACtD7B,EAAkB,EAAK,EAEnB,CAAC8B,EAAgBC,CAAiB,EAAI/B,EAAkB,EAAK,EAC7D,CAACgC,EAAYC,CAAa,EAAIjC,EAAkB,EAAK,EAErDkC,EAAkBnC,GACtB,IAAI,GACN,EAEMoC,EAAYrC,EAChB,IAAM,CAACiB,GAAYa,GAA0BX,EAC7C,CAACF,EAAUa,EAAwBX,CAAa,CAClD,EAEApB,EAAU,IAAM,CACd,GACE,CAACiC,GACD,CAACE,GACD,CAACjB,GACD,CAACH,EAAY,eACbc,EAAiB,cAAc,SAAW,EAE1C,OAEF,IAAMU,EAAW,YAAY,SAAY,CACvC,GAAI,CAIF,IAAMC,IAHS,MAAMzB,EAAY,cAAeG,CAAQ,IAC/B,UAAY,CAAC,GAER,OAAOuB,GAC/B,GAACA,GAAG,SACJb,EAAoB,IAAIa,EAAE,EAAE,EAGjC,EAED,GAAID,EAAa,SAAW,EAAG,OAE/BA,EAAa,QAAQC,GAAK,CACxBb,EAAoB,IAAIa,EAAE,EAAE,EAC5BzB,IAAoByB,EAAE,QAASA,EAAE,KAAK,CACxC,CAAC,EAEDd,EAAmBe,GAAQA,EAAOF,EAAa,MAAM,EAErD,GAAI,EACc,MAAM,QAAQ,WAC5BA,EAAa,IAAIC,GACf1B,EAAY,oBAAoB0B,EAAE,GAAI,CACpC,kBACF,CAAC,CACH,CACF,GAEQ,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,EAEgB,QAAQG,GAAS,CACVP,EAAgB,QAAQ,IAAIO,CAAK,GAEpC,2BAChBP,EAAgB,QAAQ,OAAOO,CAAK,CAExC,CAAC,EAEwBf,EAAiB,cAAc,OAAS,IAG/DK,EAAkB,EAAK,EACvBE,EAAc,EAAK,EAEvB,CACF,OAASS,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,4BACT,KAAME,CACR,CAAC,CACH,CACF,EAAG/B,CAAe,EAElB,MAAO,IAAM,cAAcyB,CAAQ,CACrC,EAAG,CACDxB,EACAG,EACAF,EACAiB,EACAnB,EACAc,EACAO,EACAN,EAAiB,cAAc,MACjC,CAAC,EAED,IAAMiB,EAA4BhD,EAChC,MAAOiD,EAAuCC,IAAuB,CACnE3B,EAAiB,EAAI,EAErB,GAAI,CACF,IAAM4B,EAAOF,GAAc,OAAO,EAAE,KAC9BG,EAAqC,CACzC,YAAazC,EACb,UAAWD,EACX,GAAIwC,GAAaD,EACb,CACE,SAAUA,EAAa,SACvB,KAAME,GAAM,KACZ,OAAQA,GAAM,MAChB,EACA,CAAC,CACP,EAEME,EAAW,MAAMpC,EAAY,eAAemC,CAAO,EAEzD,OAAA/B,EAAYgC,EAAS,EAAE,EACvB5B,EAAmB,EAAK,EACxBE,GAAmBuB,CAAS,EAEvBA,GACHZ,EAAc,EAAI,EAGbe,EAAS,EAClB,OAASN,EAAP,CACA,OAAAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,6BACT,KAAME,CACR,CAAC,EAEDtB,EAAmB,EAAI,EACvBN,IAAU4B,CAAc,EAEjB,IACT,QAAE,CACAxB,EAAiB,EAAK,CACxB,CACF,EACA,CAACN,EAAaE,EAAST,EAAUC,CAAU,CAC7C,EAEAT,EAAU,IAAM,CACd,IAAIoD,EAAU,GACVC,EAAqD,KAEzD,eAAeC,GAAoB,CAGjC,GAFAjC,EAAiB,EAAI,EAEjB,EAAE,kBAAmB,YAAc,EAAE,gBAAiB,QAAS,CACjEsB,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QACE,yEACJ,CAAC,EAED,GAAI,CACF,IAAMY,EAAK,MAAMT,EAA0B,KAAM,EAAK,EAClDM,GAAWG,IACbpC,EAAYoC,CAAE,EACdnB,EAAc,EAAI,EAEtB,OAASoB,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,mCACT,KAAMa,CACR,CAAC,EACDvC,IAAUuC,CAAY,CACxB,QAAE,CACAnC,EAAiB,EAAK,CACxB,CACA,OAGF,GAAI,CACF,IAAMoC,EAAa,MAAM,aAAa,kBAAkB,EAEpDV,EAAwC,KACxCvB,EAAkB,GAEtB,GAAIiC,IAAe,UACjB,GAAI,CACF,IAAMC,EAAe,MAAM,UAAU,cAAc,SACjD,GAAG9C,IAAoBC,GACzB,EAMA,GAJI,CAACuC,IAEL,MAAM,UAAU,cAAc,MAE1B,CAACA,GAAS,OAEdL,EAAe,MAAMW,EAAa,YAAY,UAAU,CACtD,gBAAiB,GACjB,qBAAsBC,EACpBhD,CACF,CACF,CAAC,EAED0C,EAAiB,MAAOO,GAAoB,CAC1C,IAAMC,EAAUD,EAAE,MAAM,QAClBE,EAAcF,EAAE,MAAM,GAO5B,GALIC,IACFlC,EAAmBe,GAAQA,EAAO,CAAC,EACnC1B,IAAoB6C,EAASD,EAAE,MAAM,KAAK,GAGxCE,EACF,GAAI,CACF,MAAM/C,EAAY,oBAAoB+C,EAAa,CACjD,kBACF,CAAC,CACH,OAASN,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAGb,EACA,QAAS,wCACT,KAAMa,CACR,CAAC,EACDjC,EAAmB,EAAI,EACvBN,IAAUuC,CAAY,CACxB,CAEJ,EAEA,UAAU,cAAc,iBAAiB,UAAWH,CAAc,EAElE7B,EAAkB,GAClBmB,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,EACDhC,EAAkB,EACpB,MAEAmB,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QACE,6EACJ,CAAC,EACDnB,EAAkB,GAGpB,IAAM+B,EAAK,MAAMT,EACfC,EACAvB,CACF,EACI4B,GAAWG,IACbpC,EAAYoC,CAAE,EAET/B,GACHY,EAAc,EAAI,EAGxB,OAASoB,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,0CACT,KAAMa,CACR,CAAC,EACDvC,IAAUuC,CAAY,EAEtB,GAAI,CACF,IAAMD,EAAK,MAAMT,EAA0B,KAAM,EAAK,EAClDM,GAAWG,IACbpC,EAAYoC,CAAE,EACdnB,EAAc,EAAI,EAEtB,OAAS2B,EAAP,CACApB,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,6CACT,KAAMoB,CACR,CAAC,CACH,CACF,QAAE,CACA1C,EAAiB,EAAK,CACxB,CACF,CAEA,OAAIX,IACFiC,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QACE,6HACJ,CAAC,EAGEW,EAAkB,EAEhB,IAAM,CACXF,EAAU,GACNC,GAAkB,kBAAmB,WACvC,UAAU,cAAc,oBAAoB,UAAWA,CAAc,CAEzE,CAEF,EAAG,CACDtC,EACAE,EACAD,EACA8B,EACAjC,EACAD,EACAD,CACF,CAAC,EAED,IAAMqD,EAAuBlE,EAAY,SAAY,CACnD,GAAKoB,EAEL,CAAAc,EAA0B,EAAI,EAE9B,GAAI,CACF,IAAMiC,EAAO,MAAMlD,EAAY,kBAAkBG,CAAQ,EAEzDY,GAAoBmC,CAAI,CAC1B,OAASpB,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,mCACT,KAAME,CACR,CAAC,EAED5B,IAAU4B,CAAc,CAC1B,QAAE,CACAb,EAA0B,EAAK,CACjC,EACF,EAAG,CAACjB,EAAaG,EAAUD,CAAO,CAAC,EAEnCjB,EAAU,IAAM,CACVkB,GACG8C,EAAqB,CAG9B,EAAG,CAAC9C,CAAQ,CAAC,EAEb,IAAMgD,EAAmBpE,EACvB,MAAO8C,EAAeuB,IAAuC,CAC3D,GAAI,CAACjD,EAAU,CACbyB,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QAAS,2BACX,CAAC,EAED,OAGF,GAAI,CACEwB,GACF9B,EAAgB,QAAQ,IAAIO,EAAOuB,CAAO,EAG5C,MAAMpD,EAAY,eAAeG,EAAU0B,CAAK,EAChD,MAAMoB,EAAqB,EAEvB,CAACxC,IAAoB,CAACS,GAAkB,CAACE,KAC3CD,EAAkB,EAAI,EACtBE,EAAc,EAAI,EAEtB,OAASS,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,kCACT,KAAME,CACR,CAAC,EAED5B,IAAU4B,CAAc,CAC1B,CACF,EACA,CACE9B,EACAG,EACAM,EACAP,EACAgB,EACA+B,EACA7B,CACF,CACF,EAEMiC,EAAuBtE,EAC3B,MAAO8C,GAAkB,CACvB,GAAI,CAAC1B,EAAU,CACbyB,EAAW,CACT,YACA,YAAa,6BAAkD,EAC/D,QAAS,2BACX,CAAC,EAED,OAGF,GAAI,CACFN,EAAgB,QAAQ,OAAOO,CAAK,EAEpC,MAAM7B,EAAY,iBAAiBG,EAAU0B,CAAK,EAClD,MAAMoB,EAAqB,CAC7B,OAASnB,EAAP,CACAF,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,qCACT,KAAME,CACR,CAAC,EAED5B,IAAU4B,CAAc,CAC1B,CACF,EACA,CAAC9B,EAAaG,EAAUD,EAAS+C,CAAoB,CACvD,EAEMK,EAAuBvE,EAC3B,MAAOwE,GAAoC,CACzC,GAAI,GAACpD,GAAYoD,EAAO,SAAW,GAEnC,GAAI,CACFA,EAAO,QAAQ1B,GAAS,CACjBP,EAAgB,QAAQ,IAAIO,CAAK,GACpCP,EAAgB,QAAQ,IAAIO,EAAO,CAAC,CAAC,CAEzC,CAAC,EAED,MAAM7B,EAAY,qBAAqBG,EAAUoD,CAAM,EACvD,MAAMN,EAAqB,EAEtBxC,IACHU,EAAkB,EAAI,EACtBE,EAAc,EAAI,EAEtB,OAASoB,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,mCACT,KAAMa,CACR,CAAC,EAEDvC,IAAUuC,CAAY,CACxB,CACF,EACA,CAACzC,EAAaG,EAAUM,EAAiBP,EAAS+C,CAAoB,CACxE,EAEMO,EAAyBzE,EAC7B,MAAOwE,GAAoC,CACzC,GAAI,GAACpD,GAAYoD,EAAO,SAAW,GAEnC,GAAI,CACFA,EAAO,QAAQ1B,GAASP,EAAgB,QAAQ,OAAOO,CAAK,CAAC,EAE7D,MAAM7B,EAAY,uBAAuBG,EAAUoD,CAAM,EACzD,MAAMN,EAAqB,CAC7B,OAASR,EAAP,CACAb,EAAW,CACT,aACA,YAAa,6BAAkD,EAC/D,QAAS,sCACT,KAAMa,CACR,CAAC,EAEDvC,IAAUuC,CAAY,CACxB,CACF,EACA,CAACzC,EAAaG,EAAUD,EAAS+C,CAAoB,CACvD,EAEMQ,EAAoB1E,EAAY,IAAM,CAC1C6B,EAAmB,CAAC,CACtB,EAAG,CAAC,CAAC,EAEC8C,GAAqCxE,EACzC,KAAO,CACL,SAAAiB,EACA,iBAAAW,EACA,UAAAS,EACA,gBAAAZ,EACA,gBAAAJ,EACA,iBAAA4C,EACA,qBAAAE,EACA,qBAAAC,EACA,uBAAAE,EACA,kBAAAC,CACF,GACA,CACEtD,EACAoB,EACAhB,EACAI,EACA8C,EACA3C,EACAqC,EACAG,EACAD,EACAG,CACF,CACF,EAEA,OACEnE,GAACC,GAAwB,SAAxB,CAAiC,MAAOoE,GACtC,SAAAlE,EACH,CAEJ,EAEO,SAASmE,IAAoD,CAClE,IAAMC,EAAU5E,GAAWM,EAAuB,EAElD,GAAI,CAACsE,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 [isRegistering, setIsRegistering] = useState<boolean>(false);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions || isRegistering,\n [clientId, isLoadingSubscriptions, isRegistering],\n );\n\n useEffect(() => {\n if (\n !pollingEnabled ||\n !shouldPoll ||\n !clientId ||\n !apiAdapters.fetchMessages ||\n subscribedTopics.subscriptions.length === 0\n )\n return;\n\n const interval = setInterval(async () => {\n try {\n const result = await apiAdapters.fetchMessages!(clientId);\n const messages = result?.messages ?? [];\n\n const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\n\n return true;\n });\n\n if (deliverables.length === 0) return;\n\n deliverables.forEach(m => {\n processedMessageIds.add(m.id);\n onMessageReceived?.(m.payload, m.topic);\n });\n\n setNewMessageCount(prev => prev + deliverables.length);\n\n try {\n const updates = await Promise.allSettled(\n deliverables.map(m =>\n apiAdapters.updateMessageStatus(m.id, {\n status: MessageStatus.DELIVERED,\n }),\n ),\n );\n\n updates.forEach(u => {\n if (u.status === 'rejected') {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao marcar mensagem como entregue:',\n data: u.reason,\n });\n }\n });\n } finally {\n const topicsProcessed = new Set(\n deliverables.map(m => m.topic).filter(Boolean) as string[],\n );\n\n topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\n\n if (!hasSubscriptions) {\n setPollingEnabled(false);\n setShouldPoll(false);\n }\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao buscar mensagens:',\n data: error,\n });\n }\n }, pollingInterval);\n\n return () => clearInterval(interval);\n }, [\n apiAdapters,\n clientId,\n onMessageReceived,\n pollingEnabled,\n pollingInterval,\n processedMessageIds,\n shouldPoll,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\n setIsRegistering(true);\n\n try {\n const keys = subscription?.toJSON().keys;\n const payload: ClientRegistrationPayload = {\n origin_type: originType,\n origin_id: originId,\n ...(isPassive && subscription\n ? {\n endpoint: subscription.endpoint,\n auth: keys?.auth,\n p256dh: keys?.p256dh,\n }\n : {}),\n };\n\n const response = await apiAdapters.registerClient(payload);\n\n setClientId(response.id);\n setIsRegisterError(false);\n setIsPassiveClient(isPassive);\n\n if (!isPassive) {\n setShouldPoll(true);\n }\n\n return response.id;\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n setIsRegisterError(true);\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n },\n [apiAdapters, onError, originId, originType],\n );\n\n useEffect(() => {\n let mounted = true;\n let messageHandler: ((e: MessageEvent) => void) | null = null;\n\n async function initSwAndRegister() {\n setIsRegistering(true);\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Push notifications não suportadas, criando cliente ativo com polling',\n });\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente ativo:',\n data: err,\n });\n onError?.(err as Error);\n } finally {\n setIsRegistering(false);\n }\n return;\n }\n\n try {\n const permission = await Notification.requestPermission();\n\n let subscription: PushSubscription | null = null;\n let isPassiveClient = false;\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n if (!mounted) return;\n\n await navigator.serviceWorker.ready;\n\n if (!mounted) return;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n messageHandler = async (e: MessageEvent) => {\n const message = e.data?.payload;\n const deliveredId = e.data?.id;\n\n if (message) {\n setNewMessageCount(prev => prev + 1);\n onMessageReceived?.(message, e.data?.topic);\n }\n\n if (deliveredId) {\n try {\n await apiAdapters.updateMessageStatus(deliveredId, {\n status: MessageStatus.DELIVERED,\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao atualizar status da mensagem:',\n data: err,\n });\n setIsRegisterError(true);\n onError?.(err as Error);\n }\n }\n };\n\n navigator.serviceWorker.addEventListener('message', messageHandler);\n\n isPassiveClient = true;\n consoleLog({\n type: ConsoleType.LOG,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão concedida, criando cliente passivo (aguarda webpush)',\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Falha ao configurar push subscription, criando cliente ativo:',\n data: err,\n });\n isPassiveClient = false;\n }\n } else {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão de notificação negada, criando cliente ativo com polling',\n });\n isPassiveClient = false;\n }\n\n const id = await performClientRegistration(\n subscription,\n isPassiveClient,\n );\n if (mounted && id) {\n setClientId(id);\n\n if (!isPassiveClient) {\n setShouldPoll(true);\n }\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inicializar notificações:',\n data: err,\n });\n onError?.(err as Error);\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (fallbackErr) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao criar cliente ativo como fallback:',\n data: fallbackErr,\n });\n }\n } finally {\n setIsRegistering(false);\n }\n }\n\n if (bearerToken) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'O parâmetro bearerToken está deprecated e não é mais necessário. Ele será removido em versões futuras.',\n });\n }\n\n void initSwAndRegister();\n\n return () => {\n mounted = false;\n if (messageHandler && 'serviceWorker' in navigator) {\n navigator.serviceWorker.removeEventListener('message', messageHandler);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiAdapters,\n onError,\n onMessageReceived,\n performClientRegistration,\n serviceWorkerFile,\n serviceWorkerPath,\n vapidKey,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\n\n setSubscribedTopics(data);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao listar inscrições:',\n data: error,\n });\n\n onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [apiAdapters, clientId, onError]);\n\n useEffect(() => {\n if (clientId) {\n void refetchSubscriptions();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clientId]);\n\n const subscribeToTopic = useCallback(\n async (topic: string, options?: TopicSubscriptionOptions) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n if (options) {\n topicOptionsRef.current.set(topic, options);\n }\n\n await apiAdapters.subscribeTopic(clientId, topic);\n await refetchSubscriptions();\n\n if (!isPassiveClient && (!pollingEnabled || !shouldPoll)) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever no tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [\n apiAdapters,\n clientId,\n isPassiveClient,\n onError,\n pollingEnabled,\n refetchSubscriptions,\n shouldPoll,\n ],\n );\n\n const unsubscribeFromTopic = useCallback(\n async (topic: string) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n topicOptionsRef.current.delete(topic);\n\n await apiAdapters.unsubscribeTopic(clientId, topic);\n await refetchSubscriptions();\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever do tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const subscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => {\n if (!topicOptionsRef.current.has(topic)) {\n topicOptionsRef.current.set(topic, {});\n }\n });\n\n await apiAdapters.subscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n\n if (!isPassiveClient) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever em tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, isPassiveClient, onError, refetchSubscriptions],\n );\n\n const unsubscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => topicOptionsRef.current.delete(topic));\n\n await apiAdapters.unsubscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever de tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const resetMessageCount = useCallback(() => {\n setNewMessageCount(0);\n }, []);\n\n const value: PushNotificationContextData = useMemo(\n () => ({\n clientId,\n subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\n }),\n [\n clientId,\n isLoading,\n isRegisterError,\n newMessageCount,\n resetMessageCount,\n subscribedTopics,\n subscribeToTopic,\n subscribeTopicsBatch,\n unsubscribeFromTopic,\n unsubscribeTopicsBatch,\n ],\n );\n\n return (\n <PushNotificationContext.Provider value={value}>\n {children}\n </PushNotificationContext.Provider>\n );\n};\n\nexport function usePushNotifications(): PushNotificationContextData {\n const context = useContext(PushNotificationContext);\n\n if (!context) {\n throw new Error(\n 'usePushNotifications precisa estar dentro de PushNotificationProvider',\n );\n }\n\n return context;\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '../chunk-ON5OQYWL.js';
|
|
1
2
|
import { useState, useEffect } from 'react';
|
|
2
3
|
|
|
3
4
|
var i=()=>{let[o,r]=useState(!1),[u,e]=useState(document.activeElement);return useEffect(()=>{let t=l=>e(l.target),n=()=>e(null);return window.addEventListener("focus",t,!0),window.addEventListener("blur",n,!0),r(!0),()=>{window.removeEventListener("focus",t),window.removeEventListener("blur",n);}},[]),{activeElement:u,listenersReady:o}},d=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useActiveElement.ts"],"names":["useEffect","useState","useActiveElement","listenersReady","setListenersReady","activeElement","setActiveElement","onFocus","event","onBlur","useActiveElement_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useActiveElement.ts"],"names":["useEffect","useState","useActiveElement","listenersReady","setListenersReady","activeElement","setActiveElement","onFocus","event","onBlur","useActiveElement_default"],"mappings":"6BAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,IAAMC,EAAmB,IAAM,CAC7B,GAAM,CAACC,EAAgBC,CAAiB,EAAIH,EAAkB,EAAK,EAC7D,CAACI,EAAeC,CAAgB,EAAIL,EACxC,SAAS,aACX,EAEA,OAAAD,EAAU,IAAM,CACd,IAAMO,EAAWC,GACfF,EAAiBE,EAAM,MAAiB,EACpCC,EAAS,IAAMH,EAAiB,IAAI,EAE1C,cAAO,iBAAiB,QAASC,EAAS,EAAI,EAC9C,OAAO,iBAAiB,OAAQE,EAAQ,EAAI,EAE5CL,EAAkB,EAAI,EAEf,IAAM,CACX,OAAO,oBAAoB,QAASG,CAAO,EAC3C,OAAO,oBAAoB,OAAQE,CAAM,CAC3C,CACF,EAAG,CAAC,CAAC,EAEE,CACL,cAAAJ,EACA,eAAAF,CACF,CACF,EAEOO,EAAQR","sourcesContent":["import { useEffect, useState } from 'react';\n\nconst useActiveElement = () => {\n const [listenersReady, setListenersReady] = useState<boolean>(false);\n const [activeElement, setActiveElement] = useState<Element | null>(\n document.activeElement,\n );\n\n useEffect(() => {\n const onFocus = (event: FocusEvent) =>\n setActiveElement(event.target as Element);\n const onBlur = () => setActiveElement(null);\n\n window.addEventListener('focus', onFocus, true);\n window.addEventListener('blur', onBlur, true);\n\n setListenersReady(true);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n }, []);\n\n return {\n activeElement,\n listenersReady,\n };\n};\n\nexport default useActiveElement;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useAutocomplete.ts"],"names":["useCallback","useMemo","useState","debounce","useAutocomplete","initialValue","searching","setSearching","search","setSearch","selectedValue","setSelectedValue","debouncedSetSearch","searchTerm","onSearch","term","finishSearch","buildOptions","options","fetching","value","opt","combinedOptions","uniqueValue","onSelectValue","selected","useAutocomplete_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useAutocomplete.ts"],"names":["useCallback","useMemo","useState","debounce","useAutocomplete","initialValue","searching","setSearching","search","setSearch","selectedValue","setSelectedValue","debouncedSetSearch","searchTerm","onSearch","term","finishSearch","buildOptions","options","fetching","value","opt","combinedOptions","uniqueValue","onSelectValue","selected","useAutocomplete_default"],"mappings":"6BAAA,OAAS,eAAAA,EAAa,WAAAC,EAAS,YAAAC,MAAgB,QAC/C,OAAS,YAAAC,MAAgB,sBAIzB,IAAMC,EAAmBC,GAAqC,CAC5D,GAAM,CAACC,EAAWC,CAAY,EAAIL,EAAS,EAAK,EAC1C,CAACM,EAAQC,CAAS,EAAIP,EAAiB,EACvC,CAACQ,EAAeC,CAAgB,EAAIT,EAA4B,EAEhEU,EAAqBX,EACzB,IACEE,EAAUU,GAAwB,CAChCJ,EAAUI,CAAU,EACpBN,EAAa,EAAK,CACpB,EAAG,GAAG,EACR,CAAC,CACH,EAEMO,EAAWd,EACde,GAAkB,CACbA,GAAMR,EAAa,EAAI,EAC3BK,EAAmBG,CAAI,CACzB,EACA,CAACH,CAAkB,CACrB,EAEMI,EAAehB,EAAY,IAAM,CACrCO,EAAa,EAAK,EAClBE,EAAU,MAAS,CACrB,EAAG,CAAC,CAAC,EAECQ,EAAejB,EACnB,CAACkB,EAAoB,CAAC,EAAGC,EAAW,KAAU,CAC5C,IAAMC,EAAQV,GAAiBL,EAE/B,GAAI,CAACe,GAASZ,IAAW,OACvB,OAAOU,EAAQ,OACbG,GAAOA,EAAI,QAAU,MAAQA,EAAI,QAAU,MAC7C,EAEF,GAAIf,GAAaa,EAAU,MAAO,CAAC,EAGnC,IAAMG,EAAkB,CAAC,GADH,MAAM,QAAQF,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAChB,GAAGF,CAAO,EAErD,OACE,MAAM,KAAK,IAAI,IAAII,EAAgB,IAAID,GAAOA,EAAI,KAAK,CAAC,CAAC,EAAE,IACzDE,GAAeD,EAAgB,KAAKD,GAAOA,EAAI,QAAUE,CAAW,CACtE,EACA,OAAOF,GAAOA,EAAI,QAAU,MAAQA,EAAI,QAAU,MAAS,CAC/D,EACA,CAACX,EAAeL,EAAcG,EAAQF,CAAS,CACjD,EAEMkB,EAAgBxB,EACpB,CAACkB,EAAoB,CAAC,EAAGO,IAAsB,CAC7C,GAAI,CAACA,GAAa,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SAAW,EAAI,CACnEd,EAAiB,MAAS,EAC1B,OAGE,MAAM,QAAQc,CAAQ,EACxBd,EACEO,EAAQ,OAAOG,GAAOI,EAAS,SAASJ,EAAI,KAAe,CAAC,CAC9D,EAEAV,EAAiBO,EAAQ,KAAKG,GAAOA,EAAI,QAAUI,CAAQ,CAAC,EAG9DT,EAAa,CACf,EACA,CAACA,CAAY,CACf,EAEA,MAAO,CACL,OAAAR,EACA,UAAAF,EACA,aAAAW,EACA,SAAAH,EACA,cAAAU,EACA,aAAAR,CACF,CACF,EAEOU,EAAQtB","sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport { debounce } from '@mui/material/utils';\n\nimport { Option } from 'types/option';\n\nconst useAutocomplete = (initialValue?: Option | Option[]) => {\n const [searching, setSearching] = useState(false);\n const [search, setSearch] = useState<string>();\n const [selectedValue, setSelectedValue] = useState<Option | Option[]>();\n\n const debouncedSetSearch = useMemo(\n () =>\n debounce((searchTerm?: string) => {\n setSearch(searchTerm);\n setSearching(false);\n }, 500),\n [],\n );\n\n const onSearch = useCallback(\n (term?: string) => {\n if (term) setSearching(true);\n debouncedSetSearch(term);\n },\n [debouncedSetSearch],\n );\n\n const finishSearch = useCallback(() => {\n setSearching(false);\n setSearch(undefined);\n }, []);\n\n const buildOptions = useCallback(\n (options: Option[] = [], fetching = false) => {\n const value = selectedValue || initialValue;\n\n if (!value || search !== undefined)\n return options.filter(\n opt => opt.value !== null && opt.value !== undefined,\n );\n\n if (searching || fetching) return [];\n\n const selectedArray = Array.isArray(value) ? value : [value];\n const combinedOptions = [...selectedArray, ...options];\n\n return (\n Array.from(new Set(combinedOptions.map(opt => opt.value))).map(\n uniqueValue => combinedOptions.find(opt => opt.value === uniqueValue),\n ) as Option[]\n ).filter(opt => opt.value !== null && opt.value !== undefined);\n },\n [selectedValue, initialValue, search, searching],\n );\n\n const onSelectValue = useCallback(\n (options: Option[] = [], selected: unknown) => {\n if (!selected || (Array.isArray(selected) && selected.length === 0)) {\n setSelectedValue(undefined);\n return;\n }\n\n if (Array.isArray(selected)) {\n setSelectedValue(\n options.filter(opt => selected.includes(opt.value as string)),\n );\n } else {\n setSelectedValue(options.find(opt => opt.value === selected));\n }\n\n finishSearch();\n },\n [finishSearch],\n );\n\n return {\n search,\n searching,\n buildOptions,\n onSearch,\n onSelectValue,\n finishSearch,\n };\n};\n\nexport default useAutocomplete;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDatagrid.ts"],"names":["useState","useGridApiRef","useDatagrid","page","perPage","dir","search","searchValue","sort","apiRef","state","setState","handlePaginationModelChange","pageSize","handleSearch","handleSearchValue","applySearchValue","handleSort","field","goToPageFirstPage","useDatagrid_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDatagrid.ts"],"names":["useState","useGridApiRef","useDatagrid","page","perPage","dir","search","searchValue","sort","apiRef","state","setState","handlePaginationModelChange","pageSize","handleSearch","handleSearchValue","applySearchValue","handleSort","field","goToPageFirstPage","useDatagrid_default"],"mappings":"6BAAA,OAA2B,YAAAA,MAAgB,QAC3C,OAAS,iBAAAC,MAAqB,2BAY9B,IAAMC,EAAc,CAClB,CAAE,KAAAC,EAAM,QAAAC,EAAS,IAAAC,EAAK,OAAAC,EAAQ,YAAAC,EAAa,KAAAC,CAAK,EAAW,CACzD,KAAM,EACN,QAAS,EACX,IACG,CACH,IAAMC,EAASR,EAAc,EACvB,CAACS,EAAOC,CAAQ,EAAIX,EAAgB,CACxC,KAAAG,EACA,QAAAC,EACA,IAAAC,EACA,OAAAC,EACA,YAAAC,EACA,KAAAC,CACF,CAAC,EAEKI,EAA8B,CAAC,CAAE,SAAAC,EAAW,GAAI,KAAAV,EAAO,CAAE,IAAM,CACnEQ,EAASD,IAAU,CAAE,GAAGA,EAAO,KAAAP,EAAM,QAASU,CAAS,EAAE,CAC3D,EAEMC,EAAgBR,GACpBK,EAASD,IAAU,CAAE,GAAGA,EAAO,KAAM,EAAG,OAAAJ,CAAO,EAAE,EAE7CS,EAAqBT,GACzBK,EAASD,IAAU,CAAE,GAAGA,EAAO,YAAaJ,CAAO,EAAE,EAEjDU,EAAmB,IACvBL,EAASD,IAAU,CAAE,GAAGA,EAAO,KAAM,EAAG,OAAQA,EAAM,WAAY,EAAE,EAEhEO,EAAa,CAACC,EAAgBb,IAClCM,EAASD,IAAU,CAAE,GAAGA,EAAO,KAAMQ,EAAO,IAAAb,CAAI,EAAE,EAE9Cc,EAAoB,IAAM,CAC1BV,EAAO,SAASA,EAAO,QAAQ,QAAQ,CAAC,EAC5CG,EAA4B,CAAE,KAAM,CAAE,CAAC,CACzC,EAEA,MAAO,CACL,GAAGF,EACH,OAAQD,EACR,KAAMC,EAAM,MAAQ,EACpB,QAASA,EAAM,SAAW,GAC1B,4BAAAE,EACA,aAAAE,EACA,WAAAG,EACA,kBAAAF,EACA,iBAAAC,EACA,kBAAAG,CACF,CACF,EAEOC,EAAQlB","sourcesContent":["import { MutableRefObject, useState } from 'react';\nimport { useGridApiRef } from '@mui/x-data-grid-premium';\nimport { GridApiPremium } from '@mui/x-data-grid-premium/models/gridApiPremium';\n\ninterface State {\n page?: number;\n perPage?: number;\n search?: string;\n searchValue?: string;\n sort?: string;\n dir?: 'asc' | 'desc';\n}\n\nconst useDatagrid = (\n { page, perPage, dir, search, searchValue, sort }: State = {\n page: 0,\n perPage: 25,\n },\n) => {\n const apiRef = useGridApiRef();\n const [state, setState] = useState<State>({\n page,\n perPage,\n dir,\n search,\n searchValue,\n sort,\n });\n\n const handlePaginationModelChange = ({ pageSize = 25, page = 0 }) => {\n setState(state => ({ ...state, page, perPage: pageSize }));\n };\n\n const handleSearch = (search: string | undefined) =>\n setState(state => ({ ...state, page: 0, search }));\n\n const handleSearchValue = (search: string | undefined) =>\n setState(state => ({ ...state, searchValue: search }));\n\n const applySearchValue = () =>\n setState(state => ({ ...state, page: 0, search: state.searchValue }));\n\n const handleSort = (field?: string, dir?: 'asc' | 'desc') =>\n setState(state => ({ ...state, sort: field, dir }));\n\n const goToPageFirstPage = () => {\n if (apiRef.current) apiRef.current.setPage(0);\n handlePaginationModelChange({ page: 0 });\n };\n\n return {\n ...state,\n apiRef: apiRef as MutableRefObject<GridApiPremium>,\n page: state.page || 0,\n perPage: state.perPage || 25,\n handlePaginationModelChange,\n handleSearch,\n handleSort,\n handleSearchValue,\n applySearchValue,\n goToPageFirstPage,\n };\n};\n\nexport default useDatagrid;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDebounceValue.ts"],"names":["useEffect","useState","useDebounceValue","value","delay","debouncedValue","setDebouncedValue","handler","useDebounceValue_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDebounceValue.ts"],"names":["useEffect","useState","useDebounceValue","value","delay","debouncedValue","setDebouncedValue","handler","useDebounceValue_default"],"mappings":"6BAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,SAASC,EAAoBC,EAAUC,EAAkB,CACvD,GAAM,CAACC,EAAgBC,CAAiB,EAAIL,EAAYE,CAAK,EAE7D,OAAAH,EAAU,IAAM,CACd,IAAMO,EAAU,WAAW,IAAM,CAC/BD,EAAkBH,CAAK,CACzB,EAAGC,CAAK,EAER,MAAO,IAAM,CACX,aAAaG,CAAO,CACtB,CACF,EAAG,CAACJ,EAAOC,CAAK,CAAC,EAEVC,CACT,CAEA,IAAOG,EAAQN","sourcesContent":["import { useEffect, useState } from 'react';\n\nfunction useDebounceValue<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nexport default useDebounceValue;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDeepCompareEffect.ts"],"names":["useEffect","useRef","useDeepCompareMemoize","value","ref","deepCompareWithSets","useDeepCompareEffect","callback","dependencies","useDeepCompareEffect_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDeepCompareEffect.ts"],"names":["useEffect","useRef","useDeepCompareMemoize","value","ref","deepCompareWithSets","useDeepCompareEffect","callback","dependencies","useDeepCompareEffect_default"],"mappings":"sEAAA,OAAyC,aAAAA,EAAW,UAAAC,MAAc,QAIlE,IAAMC,EAA4BC,GAAgB,CAChD,IAAMC,EAAMH,EAAsB,MAAS,EAE3C,OAAKI,EAAoBF,EAAOC,EAAI,OAAO,IACzCA,EAAI,QAAUD,GAGTC,EAAI,OACb,EAEME,EAAuB,CAC3BC,EACAC,IACG,CAEHR,EAAUO,EAAUC,EAAa,IAAIN,CAAqB,CAAC,CAC7D,EAEOO,EAAQH","sourcesContent":["import { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\nimport { deepCompareWithSets } from 'utils/compare';\n\nconst useDeepCompareMemoize = <T>(value: T): T => {\n const ref = useRef<T | undefined>(undefined);\n\n if (!deepCompareWithSets(value, ref.current)) {\n ref.current = value;\n }\n\n return ref.current as T;\n};\n\nconst useDeepCompareEffect = (\n callback: EffectCallback,\n dependencies: DependencyList,\n) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(callback, dependencies.map(useDeepCompareMemoize));\n};\n\nexport default useDeepCompareEffect;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useIsMounting.ts"],"names":["useEffect","useRef","useIsMounting","isMounting","useIsMounting_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useIsMounting.ts"],"names":["useEffect","useRef","useIsMounting","isMounting","useIsMounting_default"],"mappings":"6BAAA,OAAS,aAAAA,EAAW,UAAAC,MAAc,QAElC,IAAMC,EAAgB,IAAM,CAC1B,IAAMC,EAAaF,EAAO,EAAI,EAE9B,OAAAD,EAAU,IAAM,CACdG,EAAW,QAAU,EACvB,EAAG,CAAC,CAAC,EAEEA,EAAW,OACpB,EAEOC,EAAQF","sourcesContent":["import { useEffect, useRef } from 'react';\n\nconst useIsMounting = () => {\n const isMounting = useRef(true);\n\n useEffect(() => {\n isMounting.current = false;\n }, []);\n\n return isMounting.current;\n};\n\nexport default useIsMounting;\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '../chunk-ON5OQYWL.js';
|
|
1
2
|
import { useRef, useState, useEffect } from 'react';
|
|
2
3
|
|
|
3
4
|
function d(t=0,s="50px",r=!1){let c=useRef(null),[l,f]=useState(!1),e=useRef(null);return useEffect(()=>{let i=c.current;if(!i||typeof IntersectionObserver>"u")return;e.current?.disconnect();let n=new IntersectionObserver(([u])=>{f(u.isIntersecting),r&&u.isIntersecting&&(n.disconnect(),e.current=null);},{threshold:t,rootMargin:s});return n.observe(i),e.current=n,()=>{e.current?.disconnect(),e.current=null;}},[t,s,r]),[c,l]}var m=d;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useIsVisible.ts"],"names":["useEffect","useRef","useState","useIsVisible","threshold","rootMargin","keepAlive","ref","isVisible","setIsVisible","observerRef","element","io","entry","useIsVisible_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useIsVisible.ts"],"names":["useEffect","useRef","useState","useIsVisible","threshold","rootMargin","keepAlive","ref","isVisible","setIsVisible","observerRef","element","io","entry","useIsVisible_default"],"mappings":"6BAAA,OAAS,aAAAA,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAyB5C,SAASC,EACPC,EAAY,EACZC,EAAa,OACbC,EAAY,GACmB,CAC/B,IAAMC,EAAMN,EAAU,IAAI,EACpB,CAACO,EAAWC,CAAY,EAAIP,EAAS,EAAK,EAC1CQ,EAAcT,EAAoC,IAAI,EAE5D,OAAAD,EAAU,IAAM,CACd,IAAMW,EAAUJ,EAAI,QACpB,GAAI,CAACI,GAAW,OAAO,qBAAyB,IAAa,OAE7DD,EAAY,SAAS,WAAW,EAEhC,IAAME,EAAK,IAAI,qBACb,CAAC,CAACC,CAAK,IAAM,CACXJ,EAAaI,EAAM,cAAc,EAC7BP,GAAaO,EAAM,iBACrBD,EAAG,WAAW,EACdF,EAAY,QAAU,KAE1B,EACA,CAAE,UAAAN,EAAW,WAAAC,CAAW,CAC1B,EAEA,OAAAO,EAAG,QAAQD,CAAO,EAClBD,EAAY,QAAUE,EAEf,IAAM,CACXF,EAAY,SAAS,WAAW,EAChCA,EAAY,QAAU,IACxB,CACF,EAAG,CAACN,EAAWC,EAAYC,CAAS,CAAC,EAE9B,CAACC,EAAKC,CAAS,CACxB,CAEA,IAAOM,EAAQX","sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Hook para detectar quando um elemento está visível na viewport usando Intersection Observer\n *\n * @template T - Tipo do elemento HTML a ser observado\n * @param {number} [threshold=0] - Porcentagem do elemento que deve estar visível (0-1)\n * @param {string} [rootMargin='50px'] - Margem ao redor da viewport para pré-carregamento\n * @param {boolean} [keepAlive=false] - Se true, mantém isVisible=true após primeira visualização e desconecta observer\n * @returns {[React.RefObject<T>, boolean]} Array com [ref para anexar ao elemento, estado de visibilidade]\n *\n * @example\n * // Lazy load básico\n * const [ref, isVisible] = useIsVisible<HTMLDivElement>();\n * <div ref={ref}>{isVisible && <HeavyComponent />}</div>\n *\n * @example\n * // Com keepAlive para carregar uma vez e manter\n * const [ref, isVisible] = useIsVisible<HTMLDivElement>(0, '50px', true);\n * <div ref={ref}>{isVisible && <HeavyComponent />}</div>\n *\n * @example\n * // Threshold customizado (50% visível)\n * const [ref, isVisible] = useIsVisible<HTMLDivElement>(0.5, '100px');\n */\nfunction useIsVisible<T extends Element>(\n threshold = 0,\n rootMargin = '50px',\n keepAlive = false,\n): [React.RefObject<T>, boolean] {\n const ref = useRef<T>(null);\n const [isVisible, setIsVisible] = useState(false);\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (!element || typeof IntersectionObserver === 'undefined') return;\n\n observerRef.current?.disconnect();\n\n const io = new IntersectionObserver(\n ([entry]) => {\n setIsVisible(entry.isIntersecting);\n if (keepAlive && entry.isIntersecting) {\n io.disconnect();\n observerRef.current = null;\n }\n },\n { threshold, rootMargin },\n );\n\n io.observe(element);\n observerRef.current = io;\n\n return () => {\n observerRef.current?.disconnect();\n observerRef.current = null;\n };\n }, [threshold, rootMargin, keepAlive]);\n\n return [ref, isVisible];\n}\n\nexport default useIsVisible;\n"]}
|
package/dist/hooks/useMount.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useOnClickOutside.ts"],"names":["useOnClickOutside","ref","handler","mouseEvent","useEventListener_default","event","el","useOnClickOutside_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useOnClickOutside.ts"],"names":["useOnClickOutside","ref","handler","mouseEvent","useEventListener_default","event","el","useOnClickOutside_default"],"mappings":"gIAMA,IAAMA,EAAoB,CACxBC,EACAC,EACAC,EAAsC,cACnC,CACHC,EAAiBD,EAAYE,GAAS,CACpC,IAAMC,EAAKL,GAAK,QAGZ,CAACK,GAAMA,EAAG,SAASD,EAAM,MAAc,GAI3CH,EAAQG,CAAK,CACf,CAAC,CACH,EAEOE,EAAQP","sourcesContent":["import { RefObject } from 'react';\n\nimport useEventListener from './useEventListener';\n\ntype Handler = (event: MouseEvent) => void;\n\nconst useOnClickOutside = <T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler,\n mouseEvent: 'mousedown' | 'mouseup' = 'mousedown',\n) => {\n useEventListener(mouseEvent, event => {\n const el = ref?.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n });\n};\n\nexport default useOnClickOutside;\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '../chunk-ON5OQYWL.js';
|
|
1
2
|
import { useState } from 'react';
|
|
2
3
|
|
|
3
4
|
function s({items:r,itemsPerPage:n}){let[t,a]=useState(1),o=Math.ceil(r.length/n),g=r.slice((t-1)*n,t*n);return {currentPage:t,totalPages:o,currentItems:g,goToPage:e=>{e>0&&e<=o&&a(e);},nextPage:()=>{t<o&&a(e=>e+1);},prevPage:()=>{t>1&&a(e=>e-1);}}}var f=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/usePagination.ts"],"names":["useState","usePagination","items","itemsPerPage","currentPage","setCurrentPage","totalPages","currentItems","page","prevPage","usePagination_default"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/usePagination.ts"],"names":["useState","usePagination","items","itemsPerPage","currentPage","setCurrentPage","totalPages","currentItems","page","prevPage","usePagination_default"],"mappings":"6BAAA,OAAS,YAAAA,MAAgB,QAgBzB,SAASC,EAAiB,CACxB,MAAAC,EACA,aAAAC,CACF,EAAkD,CAChD,GAAM,CAACC,EAAaC,CAAc,EAAIL,EAAS,CAAC,EAE1CM,EAAa,KAAK,KAAKJ,EAAM,OAASC,CAAY,EAElDI,EAAeL,EAAM,OACxBE,EAAc,GAAKD,EACpBC,EAAcD,CAChB,EAoBA,MAAO,CACL,YAAAC,EACA,WAAAE,EACA,aAAAC,EACA,SAtBgBC,GAAiB,CAC7BA,EAAO,GAAKA,GAAQF,GACtBD,EAAeG,CAAI,CAEvB,EAmBE,SAjBe,IAAM,CACjBJ,EAAcE,GAChBD,EAAeI,GAAYA,EAAW,CAAC,CAE3C,EAcE,SAZe,IAAM,CACjBL,EAAc,GAChBC,EAAeI,GAAYA,EAAW,CAAC,CAE3C,CASA,CACF,CAEA,IAAOC,EAAQT","sourcesContent":["import { useState } from 'react';\n\ninterface UsePaginationProps<T> {\n items: T[];\n itemsPerPage: number;\n}\n\ninterface UsePaginationResult<T> {\n currentPage: number;\n totalPages: number;\n currentItems: T[];\n goToPage: (page: number) => void;\n nextPage: () => void;\n prevPage: () => void;\n}\n\nfunction usePagination<T>({\n items,\n itemsPerPage,\n}: UsePaginationProps<T>): UsePaginationResult<T> {\n const [currentPage, setCurrentPage] = useState(1);\n\n const totalPages = Math.ceil(items.length / itemsPerPage);\n\n const currentItems = items.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage,\n );\n\n const goToPage = (page: number) => {\n if (page > 0 && page <= totalPages) {\n setCurrentPage(page);\n }\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(prevPage => prevPage + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(prevPage => prevPage - 1);\n }\n };\n\n return {\n currentPage,\n totalPages,\n currentItems,\n goToPage,\n nextPage,\n prevPage,\n };\n}\n\nexport default usePagination;\n"]}
|
package/dist/hooks/usePopover.js
CHANGED