@zydon/common 2.2.42 → 2.2.44
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/components/ActionButton/index.js +36 -3
- package/dist/components/ActionButton/index.js.map +1 -0
- package/dist/components/Autocomplete/index.js +142 -3
- package/dist/components/Autocomplete/index.js.map +1 -0
- package/dist/components/AutocompleteDetailed/index.js +139 -3
- package/dist/components/AutocompleteDetailed/index.js.map +1 -0
- package/dist/components/BuilderLayout/index.js +24 -9
- package/dist/components/BuilderLayout/index.js.map +1 -0
- package/dist/components/BuilderSidebar/index.js +18 -7
- package/dist/components/BuilderSidebar/index.js.map +1 -0
- package/dist/components/ColorPickerInput/index.js +102 -2
- package/dist/components/ColorPickerInput/index.js.map +1 -0
- package/dist/components/ColoredLabel/index.js +42 -4
- package/dist/components/ColoredLabel/index.js.map +1 -0
- package/dist/components/Common/index.js +29 -19
- package/dist/components/Common/index.js.map +1 -0
- package/dist/components/Confirm/index.js +49 -8
- package/dist/components/Confirm/index.js.map +1 -0
- package/dist/components/CustomAvatar/index.js +63 -1
- package/dist/components/CustomAvatar/index.js.map +1 -0
- package/dist/components/CustomAvatarGroup/index.js +74 -4
- package/dist/components/CustomAvatarGroup/index.js.map +1 -0
- package/dist/components/DashedDivider/index.js +11 -1
- package/dist/components/DashedDivider/index.js.map +1 -0
- package/dist/components/DataCards/index.js +58 -18
- package/dist/components/DataCards/index.js.map +1 -0
- package/dist/components/DataGrid/index.js +76 -12
- package/dist/components/DataGrid/index.js.map +1 -0
- package/dist/components/DatePicker/index.js +40 -4
- package/dist/components/DatePicker/index.js.map +1 -0
- package/dist/components/DateRangePicker/index.js +48 -4
- package/dist/components/DateRangePicker/index.js.map +1 -0
- package/dist/components/DateTimePicker/index.js +38 -4
- package/dist/components/DateTimePicker/index.js.map +1 -0
- package/dist/components/Delayed/index.js +15 -2
- package/dist/components/Delayed/index.js.map +1 -0
- package/dist/components/Drawer/index.js +37 -9
- package/dist/components/Drawer/index.js.map +1 -0
- package/dist/components/EmptyContent/index.js +81 -3
- package/dist/components/EmptyContent/index.js.map +1 -0
- package/dist/components/EmptyView/index.js +35 -2
- package/dist/components/EmptyView/index.js.map +1 -0
- package/dist/components/Error/index.js +44 -7
- package/dist/components/Error/index.js.map +1 -0
- package/dist/components/ExpandableGroup/index.js +31 -10
- package/dist/components/ExpandableGroup/index.js.map +1 -0
- package/dist/components/FixedProgressBar/index.js +23 -1
- package/dist/components/FixedProgressBar/index.js.map +1 -0
- package/dist/components/FrameSkeleton/index.js +96 -13
- package/dist/components/FrameSkeleton/index.js.map +1 -0
- package/dist/components/HelpButton/index.js +23 -3
- package/dist/components/HelpButton/index.js.map +1 -0
- package/dist/components/Icon/index.js +404 -2
- package/dist/components/Icon/index.js.map +1 -0
- package/dist/components/ImageCrop/index.js +52 -1
- package/dist/components/ImageCrop/index.js.map +1 -0
- package/dist/components/ImageCropModal/index.js +131 -5
- package/dist/components/ImageCropModal/index.js.map +1 -0
- package/dist/components/Incrementer/index.js +158 -5
- package/dist/components/Incrementer/index.js.map +1 -0
- package/dist/components/Label/index.js +72 -6
- package/dist/components/Label/index.js.map +1 -0
- package/dist/components/LoadingScreen/index.js +9 -5
- package/dist/components/LoadingScreen/index.js.map +1 -0
- package/dist/components/MaskedInput/index.js +56 -1
- package/dist/components/MaskedInput/index.js.map +1 -0
- package/dist/components/MenuItem/index.js +22 -8
- package/dist/components/MenuItem/index.js.map +1 -0
- package/dist/components/MenuPopover/index.js +49 -1
- package/dist/components/MenuPopover/index.js.map +1 -0
- package/dist/components/Modal/index.js +34 -3
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/ModalActions/index.js +9 -3
- package/dist/components/ModalActions/index.js.map +1 -0
- package/dist/components/MoreMenu/index.js +16 -8
- package/dist/components/MoreMenu/index.js.map +1 -0
- package/dist/components/NumberInput/index.js +108 -1
- package/dist/components/NumberInput/index.js.map +1 -0
- package/dist/components/PasswordRules/index.js +76 -8
- package/dist/components/PasswordRules/index.js.map +1 -0
- package/dist/components/PopoverSelect/index.js +44 -10
- package/dist/components/PopoverSelect/index.js.map +1 -0
- package/dist/components/Portal/index.js +29 -1
- package/dist/components/Portal/index.js.map +1 -0
- package/dist/components/Result/index.js +29 -1
- package/dist/components/Result/index.js.map +1 -0
- package/dist/components/SavedChanges/index.js +40 -4
- package/dist/components/SavedChanges/index.js.map +1 -0
- package/dist/components/Scrollbar/index.js +46 -1
- package/dist/components/Scrollbar/index.js.map +1 -0
- package/dist/components/SearchInput/index.js +74 -3
- package/dist/components/SearchInput/index.js.map +1 -0
- package/dist/components/SelectableCards/index.js +145 -8
- package/dist/components/SelectableCards/index.js.map +1 -0
- package/dist/components/SeoPreview/index.js +158 -10
- package/dist/components/SeoPreview/index.js.map +1 -0
- package/dist/components/SplashScreen/index.js +105 -5
- package/dist/components/SplashScreen/index.js.map +1 -0
- package/dist/components/Steps/index.js +69 -11
- package/dist/components/Steps/index.js.map +1 -0
- package/dist/components/StyledTab/index.js +88 -7
- package/dist/components/StyledTab/index.js.map +1 -0
- package/dist/components/StyledTabs/index.js +25 -4
- package/dist/components/StyledTabs/index.js.map +1 -0
- package/dist/components/Summary/index.js +13 -5
- package/dist/components/Summary/index.js.map +1 -0
- package/dist/components/SwapList/index.js +246 -18
- package/dist/components/SwapList/index.js.map +1 -0
- package/dist/components/TabPanel/index.js +32 -3
- package/dist/components/TabPanel/index.js.map +1 -0
- package/dist/components/TextMaxLine/index.js +50 -2
- package/dist/components/TextMaxLine/index.js.map +1 -0
- package/dist/components/TimePicker/index.js +40 -4
- package/dist/components/TimePicker/index.js.map +1 -0
- package/dist/components/ToggleButtonGroup/index.js +8 -4
- package/dist/components/ToggleButtonGroup/index.js.map +1 -0
- package/dist/components/Tooltip/index.js +6 -3
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/WhiteBox/index.js +9 -1
- package/dist/components/WhiteBox/index.js.map +1 -0
- package/dist/components/animate/index.js +6 -2
- package/dist/components/animate/index.js.map +1 -0
- package/dist/components/carousel/index.js +11 -16
- package/dist/components/carousel/index.js.map +1 -0
- package/dist/components/form/Address/index.js +197 -12
- package/dist/components/form/Address/index.js.map +1 -0
- package/dist/components/form/Autocomplete/index.js +43 -4
- package/dist/components/form/Autocomplete/index.js.map +1 -0
- package/dist/components/form/AutocompleteDetailed/index.js +40 -6
- package/dist/components/form/AutocompleteDetailed/index.js.map +1 -0
- package/dist/components/form/Checkbox/index.js +49 -6
- package/dist/components/form/Checkbox/index.js.map +1 -0
- package/dist/components/form/Codes/index.js +84 -7
- package/dist/components/form/Codes/index.js.map +1 -0
- package/dist/components/form/ColorPicker/index.js +50 -5
- package/dist/components/form/ColorPicker/index.js.map +1 -0
- package/dist/components/form/DatePicker/index.js +61 -5
- package/dist/components/form/DatePicker/index.js.map +1 -0
- package/dist/components/form/DateRangePicker/index.js +75 -7
- package/dist/components/form/DateRangePicker/index.js.map +1 -0
- package/dist/components/form/DateTimePicker/index.js +59 -5
- package/dist/components/form/DateTimePicker/index.js.map +1 -0
- package/dist/components/form/Field/index.js +50 -1
- package/dist/components/form/Field/index.js.map +1 -0
- package/dist/components/form/Form/index.js +27 -4
- package/dist/components/form/Form/index.js.map +1 -0
- package/dist/components/form/Incrementer/index.js +36 -8
- package/dist/components/form/Incrementer/index.js.map +1 -0
- package/dist/components/form/InputTags/index.js +67 -6
- package/dist/components/form/InputTags/index.js.map +1 -0
- package/dist/components/form/MaskedInput/index.js +46 -2
- package/dist/components/form/MaskedInput/index.js.map +1 -0
- package/dist/components/form/MultiCheckbox/index.js +91 -9
- package/dist/components/form/MultiCheckbox/index.js.map +1 -0
- package/dist/components/form/MultiChipField/index.js +47 -5
- package/dist/components/form/MultiChipField/index.js.map +1 -0
- package/dist/components/form/NumberInput/index.js +41 -4
- package/dist/components/form/NumberInput/index.js.map +1 -0
- package/dist/components/form/Password/index.js +88 -9
- package/dist/components/form/Password/index.js.map +1 -0
- package/dist/components/form/RadioGroup/index.js +124 -9
- package/dist/components/form/RadioGroup/index.js.map +1 -0
- package/dist/components/form/SelectableCards/index.js +20 -11
- package/dist/components/form/SelectableCards/index.js.map +1 -0
- package/dist/components/form/Switch/index.js +66 -6
- package/dist/components/form/Switch/index.js.map +1 -0
- package/dist/components/form/TimePicker/index.js +62 -5
- package/dist/components/form/TimePicker/index.js.map +1 -0
- package/dist/components/form/UploadAvatarWithCrop/index.js +57 -17
- package/dist/components/form/UploadAvatarWithCrop/index.js.map +1 -0
- package/dist/components/form/UploadWithCrop/index.js +57 -20
- package/dist/components/form/UploadWithCrop/index.js.map +1 -0
- package/dist/components/form/Webhook/index.js +144 -16
- package/dist/components/form/Webhook/index.js.map +1 -0
- package/dist/components/lightbox/index.js +4 -16
- package/dist/components/lightbox/index.js.map +1 -0
- package/dist/components/table/index.js +11 -21
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/upload/index.js +10 -23
- package/dist/components/upload/index.js.map +1 -0
- package/dist/hooks/useActiveElement.js +25 -2
- package/dist/hooks/useActiveElement.js.map +1 -0
- package/dist/hooks/useApiMessage.js +31 -2
- package/dist/hooks/useApiMessage.js.map +1 -0
- package/dist/hooks/useAutocomplete.js +58 -2
- package/dist/hooks/useAutocomplete.js.map +1 -0
- package/dist/hooks/useCopyToClipboard.js +20 -2
- package/dist/hooks/useCopyToClipboard.js.map +1 -0
- package/dist/hooks/useDatagrid.js +41 -2
- package/dist/hooks/useDatagrid.js.map +1 -0
- package/dist/hooks/useDebounceValue.js +16 -2
- package/dist/hooks/useDebounceValue.js.map +1 -0
- package/dist/hooks/useDeepCompareEffect.js +14 -3
- package/dist/hooks/useDeepCompareEffect.js.map +1 -0
- package/dist/hooks/useEventCallback.js +17 -2
- package/dist/hooks/useEventCallback.js.map +1 -0
- package/dist/hooks/useEventListener.js +25 -1
- package/dist/hooks/useEventListener.js.map +1 -0
- package/dist/hooks/useIsMounting.js +11 -2
- package/dist/hooks/useIsMounting.js.map +1 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +7 -1
- package/dist/hooks/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist/hooks/useLocalStorage.js +86 -5
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/useMount.js +7 -2
- package/dist/hooks/useMount.js.map +1 -0
- package/dist/hooks/useOnClickOutside.js +14 -3
- package/dist/hooks/useOnClickOutside.js.map +1 -0
- package/dist/hooks/usePagination.js +38 -2
- package/dist/hooks/usePagination.js.map +1 -0
- package/dist/hooks/usePopover.js +22 -1
- package/dist/hooks/usePopover.js.map +1 -0
- package/dist/hooks/useResponsive.js +35 -1
- package/dist/hooks/useResponsive.js.map +1 -0
- package/dist/hooks/useScrollOffSetTop.js +29 -2
- package/dist/hooks/useScrollOffSetTop.js.map +1 -0
- package/dist/hooks/useSnackbar.js +14 -1
- package/dist/hooks/useSnackbar.js.map +1 -0
- package/dist/hooks/useTabs.js +14 -2
- package/dist/hooks/useTabs.js.map +1 -0
- package/dist/hooks/useToggle.js +12 -1
- package/dist/hooks/useToggle.js.map +1 -0
- package/dist/hooks/useUpload.js +58 -1
- package/dist/hooks/useUpload.js.map +1 -0
- package/dist/hooks/useUploadImage.js +80 -2
- package/dist/hooks/useUploadImage.js.map +1 -0
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -0
- package/dist/locales/all-langs.js +34 -1
- package/dist/locales/all-langs.js.map +1 -0
- package/dist/theme/core/index.js +7 -3
- package/dist/theme/core/index.js.map +1 -0
- package/dist/theme/styles/index.js +4 -1
- package/dist/theme/styles/index.js.map +1 -0
- package/dist/theme/theme-provider.js +46 -7
- package/dist/theme/theme-provider.js.map +1 -0
- package/dist/theme/with-settings/index.js +3 -4
- package/dist/theme/with-settings/index.js.map +1 -0
- package/dist/types/addressProps.js +2 -0
- package/dist/types/addressProps.js.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/autoComplete.js +2 -0
- package/dist/types/autoComplete.js.map +1 -0
- package/dist/types/autoCompleteProps.js +2 -0
- package/dist/types/autoCompleteProps.js.map +1 -0
- package/dist/types/baseField.js +2 -0
- package/dist/types/baseField.js.map +1 -0
- package/dist/types/dataGridProps.js +2 -0
- package/dist/types/dataGridProps.js.map +1 -0
- package/dist/types/datagrid.js +2 -0
- package/dist/types/datagrid.js.map +1 -0
- package/dist/types/datePickerProps.js +2 -0
- package/dist/types/datePickerProps.js.map +1 -0
- package/dist/types/dateRangePickerProps.js +2 -0
- package/dist/types/dateRangePickerProps.js.map +1 -0
- package/dist/types/dateTimePickerProps.js +2 -0
- package/dist/types/dateTimePickerProps.js.map +1 -0
- package/dist/types/fieldProps.js +2 -0
- package/dist/types/fieldProps.js.map +1 -0
- package/dist/types/icon.js +331 -1
- package/dist/types/icon.js.map +1 -0
- package/dist/types/iconProps.js +2 -0
- package/dist/types/iconProps.js.map +1 -0
- package/dist/types/incrementerProps.js +2 -0
- package/dist/types/incrementerProps.js.map +1 -0
- package/dist/types/item.js +2 -0
- package/dist/types/item.js.map +1 -0
- package/dist/types/multiCheckboxProps.js +2 -0
- package/dist/types/multiCheckboxProps.js.map +1 -0
- package/dist/types/numberInputProps.js +2 -0
- package/dist/types/numberInputProps.js.map +1 -0
- package/dist/types/option.js +2 -0
- package/dist/types/option.js.map +1 -0
- package/dist/types/radioGroupProps.js +2 -0
- package/dist/types/radioGroupProps.js.map +1 -0
- package/dist/types/searchInputProps.js +2 -0
- package/dist/types/searchInputProps.js.map +1 -0
- package/dist/types/sectionProps.js +2 -0
- package/dist/types/sectionProps.js.map +1 -0
- package/dist/types/switchProps.js +2 -0
- package/dist/types/switchProps.js.map +1 -0
- package/dist/types/timePickerProps.js +2 -0
- package/dist/types/timePickerProps.js.map +1 -0
- package/dist/types/upload.js +2 -0
- package/dist/types/upload.js.map +1 -0
- package/dist/types/webhook.js +35 -2
- package/dist/types/webhook.js.map +1 -0
- package/dist/utils/color.js +7 -1
- package/dist/utils/color.js.map +1 -0
- package/dist/utils/compare.js +7 -1
- package/dist/utils/compare.js.map +1 -0
- package/dist/utils/date.js +20 -4
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/formatNumber.js +87 -1
- package/dist/utils/formatNumber.js.map +1 -0
- package/dist/utils/formatTime.js +157 -1
- package/dist/utils/formatTime.js.map +1 -0
- package/dist/utils/loadable.js +12 -4
- package/dist/utils/loadable.js.map +1 -0
- package/dist/utils/mask.js +38 -2
- package/dist/utils/mask.js.map +1 -0
- package/dist/utils/number.js +13 -1
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/sort.js +22 -2
- package/dist/utils/sort.js.map +1 -0
- package/dist/utils/uuidv4.js +9 -2
- package/dist/utils/uuidv4.js.map +1 -0
- package/dist/utils/validators.js +83 -1
- package/dist/utils/validators.js.map +1 -0
- package/package.json +2 -1
- package/dist/chunk-2MVQI7NJ.js +0 -8
- package/dist/chunk-2MW433JI.js +0 -17
- package/dist/chunk-2Z4AFXGP.js +0 -10
- package/dist/chunk-3APKMSVD.js +0 -5
- package/dist/chunk-3E5A45HM.js +0 -3
- package/dist/chunk-3SFA4YEZ.js +0 -7
- package/dist/chunk-4INDXVIX.js +0 -5
- package/dist/chunk-4SHVMCT6.js +0 -7
- package/dist/chunk-5YJTSVA2.js +0 -6
- package/dist/chunk-7F56LFN2.js +0 -17
- package/dist/chunk-7KZ2UT76.js +0 -8
- package/dist/chunk-ANAHA3L6.js +0 -3
- package/dist/chunk-BUYQKDFG.js +0 -13
- package/dist/chunk-BYAPKKGB.js +0 -7
- package/dist/chunk-CFVUZ4S5.js +0 -5
- package/dist/chunk-CFYNJQGN.js +0 -43
- package/dist/chunk-CQDKXUUX.js +0 -3
- package/dist/chunk-D27ND54J.js +0 -16
- package/dist/chunk-E5MGOPPQ.js +0 -8
- package/dist/chunk-EFUFJKJD.js +0 -7
- package/dist/chunk-GA4A5P3S.js +0 -6
- package/dist/chunk-GOC7PC2S.js +0 -6
- package/dist/chunk-ILHUUK4X.js +0 -6
- package/dist/chunk-J76XIRCA.js +0 -18
- package/dist/chunk-JHCOHKLL.js +0 -7
- package/dist/chunk-KFZEM7KS.js +0 -5
- package/dist/chunk-M6QHAL4V.js +0 -7
- package/dist/chunk-MCT77MRN.js +0 -8
- package/dist/chunk-NF42ENKE.js +0 -9
- package/dist/chunk-OJKIWVED.js +0 -10
- package/dist/chunk-ORYAES3Q.js +0 -5
- package/dist/chunk-P4HPVV7B.js +0 -14
- package/dist/chunk-P5FKEHCD.js +0 -11
- package/dist/chunk-PIYBPQAC.js +0 -17
- package/dist/chunk-PPUFQMAW.js +0 -9
- package/dist/chunk-QCWALW56.js +0 -18
- package/dist/chunk-QNAXGE5H.js +0 -8
- package/dist/chunk-QQB3DGHT.js +0 -3
- package/dist/chunk-R6FUU7Z7.js +0 -7
- package/dist/chunk-REM462FC.js +0 -26
- package/dist/chunk-RLMWIJKJ.js +0 -10
- package/dist/chunk-SEVJABAI.js +0 -7
- package/dist/chunk-T7I256S6.js +0 -8
- package/dist/chunk-TRI6XGH4.js +0 -7
- package/dist/chunk-TWGGHTU5.js +0 -5
- package/dist/chunk-UGH5FWZQ.js +0 -13
- package/dist/chunk-VTHBHXM2.js +0 -7
- package/dist/chunk-VVMQMROT.js +0 -5
- package/dist/chunk-W3MYAMTH.js +0 -5
- package/dist/chunk-WAAV5ZRR.js +0 -13
- package/dist/chunk-WKD3OXUA.js +0 -6
- package/dist/chunk-YWEB6IAI.js +0 -6
- package/dist/chunk-Z2TDWMRU.js +0 -6
- package/dist/chunk-ZDHXW74M.js +0 -5
- package/dist/chunk-ZODC2MGF.js +0 -10
- package/dist/index.css +0 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useApiMessage.ts"],"names":[],"mappings":"AACA,SAAS,aAAa;AAEtB,MAAM,gBAAgB,MAAM;AAC1B,QAAM,qBAAqB,CAAC,YAAoB;AAC9C,UAAM,QAAQ,OAAO;AAAA,EACvB;AAEA,QAAM,mBAAmB,CAAC,OAAY,YAAoB;AACxD,UAAM,MAAM,gBAAgB,OAAO,OAAO,CAAC;AAAA,EAC7C;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,wBAAQ;AAEf,MAAM,kBAAkB,CAAC,OAAY,mBAA2B;AAC9D,MAAI;AACF,QAAI,aAAa;AAAO,aAAO,MAAM,WAAW;AAEhD,QAAI,UAAU,OAAO;AACnB,UACE,MAAM,QACN,OAAO,MAAM,SAAS,YACtB,aAAa,MAAM,QACnB,OAAO,MAAM,KAAK,YAAY,UAC9B;AACA,eAAO,MAAM,KAAK;AAAA,MACpB;AAEA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,QAAE;AACA,WAAO;AAAA,EACT;AACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { toast } from 'sonner';\n\nconst useApiMessage = () => {\n const showSuccessMessage = (message: string) => {\n toast.success(message);\n };\n\n const showErrorMessage = (error: any, message: string) => {\n toast.error(apiErrorMessage(error, message));\n };\n\n return {\n showSuccessMessage,\n showErrorMessage,\n };\n};\n\nexport default useApiMessage;\n\nconst apiErrorMessage = (error: any, defaultMessage: string) => {\n try {\n if ('message' in error) return error.message || defaultMessage;\n\n if ('data' in error) {\n if (\n error.data &&\n typeof error.data === 'object' &&\n 'message' in error.data &&\n typeof error.data.message === 'string'\n ) {\n return error.data.message;\n }\n\n return defaultMessage;\n }\n\n return defaultMessage;\n } catch {\n return defaultMessage;\n }\n};\n"]}
|
|
@@ -1,6 +1,62 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import { debounce } from '@mui/material/utils';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const useAutocomplete = (initialValue) => {
|
|
5
|
+
const [searching, setSearching] = useState(false);
|
|
6
|
+
const [search, setSearch] = useState();
|
|
7
|
+
const [selectedValue, setSelectedValue] = useState();
|
|
8
|
+
const debouncedSetSearch = debounce((search2) => {
|
|
9
|
+
setSearch(search2);
|
|
10
|
+
setSearching(false);
|
|
11
|
+
}, 500);
|
|
12
|
+
const onSearch = (term) => {
|
|
13
|
+
if (term)
|
|
14
|
+
setSearching(true);
|
|
15
|
+
debouncedSetSearch(term);
|
|
16
|
+
};
|
|
17
|
+
const finishSearch = () => {
|
|
18
|
+
setSearching(false);
|
|
19
|
+
setSearch(void 0);
|
|
20
|
+
};
|
|
21
|
+
const buildOptions = (options = [], fetching = false) => {
|
|
22
|
+
const value = selectedValue || initialValue;
|
|
23
|
+
if (!value || search !== void 0)
|
|
24
|
+
return options.filter(
|
|
25
|
+
(opt) => opt.value !== null && opt.value !== void 0
|
|
26
|
+
);
|
|
27
|
+
if (searching || fetching)
|
|
28
|
+
return [];
|
|
29
|
+
const selectedArray = Array.isArray(value) ? value : [value];
|
|
30
|
+
const combinedOptions = [...selectedArray, ...options];
|
|
31
|
+
return Array.from(new Set(combinedOptions.map((opt) => opt.value))).map(
|
|
32
|
+
(uniqueValue) => combinedOptions.find((opt) => opt.value === uniqueValue)
|
|
33
|
+
).filter((opt) => opt.value !== null && opt.value !== void 0);
|
|
34
|
+
};
|
|
35
|
+
const onSelectValue = (options = [], selected) => {
|
|
36
|
+
if (!selected || Array.isArray(selected) && selected.length === 0) {
|
|
37
|
+
setSelectedValue(void 0);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(selected)) {
|
|
41
|
+
setSelectedValue(
|
|
42
|
+
options.filter((opt) => selected.includes(opt.value))
|
|
43
|
+
);
|
|
44
|
+
} else {
|
|
45
|
+
setSelectedValue(options.find((opt) => opt.value === selected));
|
|
46
|
+
}
|
|
47
|
+
finishSearch();
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
search,
|
|
51
|
+
searching,
|
|
52
|
+
buildOptions,
|
|
53
|
+
onSearch,
|
|
54
|
+
onSelectValue,
|
|
55
|
+
finishSearch
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
var useAutocomplete_default = useAutocomplete;
|
|
5
59
|
|
|
6
|
-
export {
|
|
60
|
+
export { useAutocomplete_default as default };
|
|
61
|
+
//# sourceMappingURL=out.js.map
|
|
62
|
+
//# sourceMappingURL=useAutocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useAutocomplete.ts"],"names":["search"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAIzB,MAAM,kBAAkB,CAAC,iBAAqC;AAC5D,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA4B;AAEtE,QAAM,qBAAqB,SAAS,CAACA,YAAoB;AACvD,cAAUA,OAAM;AAChB,iBAAa,KAAK;AAAA,EACpB,GAAG,GAAG;AAEN,QAAM,WAAW,CAAC,SAAkB;AAClC,QAAI;AAAM,mBAAa,IAAI;AAC3B,uBAAmB,IAAI;AAAA,EACzB;AAEA,QAAM,eAAe,MAAM;AACzB,iBAAa,KAAK;AAClB,cAAU,MAAS;AAAA,EACrB;AAEA,QAAM,eAAe,CAAC,UAAoB,CAAC,GAAG,WAAW,UAAU;AACjE,UAAM,QAAQ,iBAAiB;AAE/B,QAAI,CAAC,SAAS,WAAW;AACvB,aAAO,QAAQ;AAAA,QACb,SAAO,IAAI,UAAU,QAAQ,IAAI,UAAU;AAAA,MAC7C;AAEF,QAAI,aAAa;AAAU,aAAO,CAAC;AAEnC,UAAM,gBAAgB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC3D,UAAM,kBAAkB,CAAC,GAAG,eAAe,GAAG,OAAO;AAErD,WACE,MAAM,KAAK,IAAI,IAAI,gBAAgB,IAAI,SAAO,IAAI,KAAK,CAAC,CAAC,EAAE;AAAA,MACzD,iBAAe,gBAAgB,KAAK,SAAO,IAAI,UAAU,WAAW;AAAA,IACtE,EACA,OAAO,SAAO,IAAI,UAAU,QAAQ,IAAI,UAAU,MAAS;AAAA,EAC/D;AAEA,QAAM,gBAAgB,CAAC,UAAoB,CAAC,GAAG,aAAsB;AACnE,QAAI,CAAC,YAAa,MAAM,QAAQ,QAAQ,KAAK,SAAS,WAAW,GAAI;AACnE,uBAAiB,MAAS;AAC1B;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B;AAAA,QACE,QAAQ,OAAO,SAAO,SAAS,SAAS,IAAI,KAAe,CAAC;AAAA,MAC9D;AAAA,IACF,OAAO;AACL,uBAAiB,QAAQ,KAAK,SAAO,IAAI,UAAU,QAAQ,CAAC;AAAA,IAC9D;AAEA,iBAAa;AAAA,EACf;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,0BAAQ","sourcesContent":["import { 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 = debounce((search?: string) => {\n setSearch(search);\n setSearching(false);\n }, 500);\n\n const onSearch = (term?: string) => {\n if (term) setSearching(true);\n debouncedSetSearch(term);\n };\n\n const finishSearch = () => {\n setSearching(false);\n setSearch(undefined);\n };\n\n const buildOptions = (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\n const onSelectValue = (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\n return {\n search,\n searching,\n buildOptions,\n onSearch,\n onSelectValue,\n finishSearch,\n };\n};\n\nexport default useAutocomplete;\n"]}
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const useCopyToClipboard = () => {
|
|
4
|
+
const [copiedText, setCopiedText] = useState(null);
|
|
5
|
+
const copy = async (text) => {
|
|
6
|
+
if (!navigator?.clipboard)
|
|
7
|
+
return false;
|
|
8
|
+
try {
|
|
9
|
+
await navigator.clipboard.writeText(text);
|
|
10
|
+
setCopiedText(text);
|
|
11
|
+
return true;
|
|
12
|
+
} catch (error) {
|
|
13
|
+
setCopiedText(null);
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
return { copiedText, copy };
|
|
18
|
+
};
|
|
19
|
+
var useCopyToClipboard_default = useCopyToClipboard;
|
|
4
20
|
|
|
5
|
-
export {
|
|
21
|
+
export { useCopyToClipboard_default as default };
|
|
22
|
+
//# sourceMappingURL=out.js.map
|
|
23
|
+
//# sourceMappingURL=useCopyToClipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useCopyToClipboard.ts"],"names":[],"mappings":"AAAA,SAAS,gBAAgB;AAWzB,MAAM,qBAAqB,MAAkB;AAC3C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAsB,IAAI;AAE9D,QAAM,OAAe,OAAM,SAAQ;AACjC,QAAI,CAAC,WAAW;AAAW,aAAO;AAElC,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,IAAI;AACxC,oBAAc,IAAI;AAClB,aAAO;AAAA,IACT,SAAS,OAAP;AACA,oBAAc,IAAI;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,KAAK;AAC5B;AAEA,IAAO,6BAAQ","sourcesContent":["import { useState } from 'react';\n\ntype CopiedValue = string | null;\n\ntype CopyFn = (text: string) => Promise<boolean>;\n\ntype ReturnType = {\n copy: CopyFn;\n copiedText: CopiedValue;\n};\n\nconst useCopyToClipboard = (): ReturnType => {\n const [copiedText, setCopiedText] = useState<CopiedValue>(null);\n\n const copy: CopyFn = async text => {\n if (!navigator?.clipboard) return false;\n\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n setCopiedText(null);\n return false;\n }\n };\n\n return { copiedText, copy };\n};\n\nexport default useCopyToClipboard;\n"]}
|
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import { useGridApiRef } from '@mui/x-data-grid-premium';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const useDatagrid = ({ page, perPage, dir, search, searchValue, sort } = {
|
|
5
|
+
page: 0,
|
|
6
|
+
perPage: 25
|
|
7
|
+
}) => {
|
|
8
|
+
const apiRef = useGridApiRef();
|
|
9
|
+
const [state, setState] = useState({
|
|
10
|
+
page,
|
|
11
|
+
perPage,
|
|
12
|
+
dir,
|
|
13
|
+
search,
|
|
14
|
+
searchValue,
|
|
15
|
+
sort
|
|
16
|
+
});
|
|
17
|
+
const handlePaginationModelChange = ({ pageSize = 25, page: page2 = 0 }) => {
|
|
18
|
+
setState((state2) => ({ ...state2, page: page2, perPage: pageSize }));
|
|
19
|
+
};
|
|
20
|
+
const handleSearch = (search2) => setState((state2) => ({ ...state2, page: 0, search: search2 }));
|
|
21
|
+
const handleSearchValue = (search2) => setState((state2) => ({ ...state2, searchValue: search2 }));
|
|
22
|
+
const applySearchValue = () => setState((state2) => ({ ...state2, page: 0, search: state2.searchValue }));
|
|
23
|
+
const handleSort = (field, dir2) => setState((state2) => ({ ...state2, sort: field, dir: dir2 }));
|
|
24
|
+
const goToPageFirstPage = () => {
|
|
25
|
+
apiRef.current.setPage(0);
|
|
26
|
+
handlePaginationModelChange({ page: 0 });
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
...state,
|
|
30
|
+
apiRef,
|
|
31
|
+
page: state.page || 0,
|
|
32
|
+
perPage: state.perPage || 25,
|
|
33
|
+
handlePaginationModelChange,
|
|
34
|
+
handleSearch,
|
|
35
|
+
handleSort,
|
|
36
|
+
handleSearchValue,
|
|
37
|
+
applySearchValue,
|
|
38
|
+
goToPageFirstPage
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var useDatagrid_default = useDatagrid;
|
|
5
42
|
|
|
6
|
-
export {
|
|
43
|
+
export { useDatagrid_default as default };
|
|
44
|
+
//# sourceMappingURL=out.js.map
|
|
45
|
+
//# sourceMappingURL=useDatagrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDatagrid.ts"],"names":["page","state","search","dir"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAW9B,MAAM,cAAc,CAClB,EAAE,MAAM,SAAS,KAAK,QAAQ,aAAa,KAAK,IAAW;AAAA,EACzD,MAAM;AAAA,EACN,SAAS;AACX,MACG;AACH,QAAM,SAAS,cAAc;AAC7B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgB;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,8BAA8B,CAAC,EAAE,WAAW,IAAI,MAAAA,QAAO,EAAE,MAAM;AACnE,aAAS,CAAAC,YAAU,EAAE,GAAGA,QAAO,MAAAD,OAAM,SAAS,SAAS,EAAE;AAAA,EAC3D;AAEA,QAAM,eAAe,CAACE,YACpB,SAAS,CAAAD,YAAU,EAAE,GAAGA,QAAO,MAAM,GAAG,QAAAC,QAAO,EAAE;AAEnD,QAAM,oBAAoB,CAACA,YACzB,SAAS,CAAAD,YAAU,EAAE,GAAGA,QAAO,aAAaC,QAAO,EAAE;AAEvD,QAAM,mBAAmB,MACvB,SAAS,CAAAD,YAAU,EAAE,GAAGA,QAAO,MAAM,GAAG,QAAQA,OAAM,YAAY,EAAE;AAEtE,QAAM,aAAa,CAAC,OAAgBE,SAClC,SAAS,CAAAF,YAAU,EAAE,GAAGA,QAAO,MAAM,OAAO,KAAAE,KAAI,EAAE;AAEpD,QAAM,oBAAoB,MAAM;AAC9B,WAAO,QAAQ,QAAQ,CAAC;AACxB,gCAA4B,EAAE,MAAM,EAAE,CAAC;AAAA,EACzC;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA,MAAM,MAAM,QAAQ;AAAA,IACpB,SAAS,MAAM,WAAW;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,sBAAQ","sourcesContent":["import { useState } from 'react';\nimport { useGridApiRef } from '@mui/x-data-grid-premium';\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 apiRef.current.setPage(0);\n handlePaginationModelChange({ page: 0 });\n };\n\n return {\n ...state,\n apiRef,\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,5 +1,19 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
2
|
|
|
3
|
-
function
|
|
3
|
+
function useDebounceValue(value, delay) {
|
|
4
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const handler = setTimeout(() => {
|
|
7
|
+
setDebouncedValue(value);
|
|
8
|
+
}, delay);
|
|
9
|
+
return () => {
|
|
10
|
+
clearTimeout(handler);
|
|
11
|
+
};
|
|
12
|
+
}, [value, delay]);
|
|
13
|
+
return debouncedValue;
|
|
14
|
+
}
|
|
15
|
+
var useDebounceValue_default = useDebounceValue;
|
|
4
16
|
|
|
5
|
-
export {
|
|
17
|
+
export { useDebounceValue_default as default };
|
|
18
|
+
//# sourceMappingURL=out.js.map
|
|
19
|
+
//# sourceMappingURL=useDebounceValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDebounceValue.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,gBAAgB;AAEpC,SAAS,iBAAoB,OAAU,OAAkB;AACvD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAY,KAAK;AAE7D,YAAU,MAAM;AACd,UAAM,UAAU,WAAW,MAAM;AAC/B,wBAAkB,KAAK;AAAA,IACzB,GAAG,KAAK;AAER,WAAO,MAAM;AACX,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,OAAO,KAAK,CAAC;AAEjB,SAAO;AACT;AAEA,IAAO,2BAAQ","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,6 +1,17 @@
|
|
|
1
|
-
import { a } from '../chunk-VVMQMROT.js';
|
|
2
1
|
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { isEqual } from 'utils/compare';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const useDeepCompareMemoize = (value) => {
|
|
5
|
+
const ref = useRef();
|
|
6
|
+
if (!isEqual(value, ref.current))
|
|
7
|
+
ref.current = value;
|
|
8
|
+
return ref.current;
|
|
9
|
+
};
|
|
10
|
+
const useDeepCompareEffect = (callback, dependencies) => {
|
|
11
|
+
useEffect(callback, dependencies.map(useDeepCompareMemoize));
|
|
12
|
+
};
|
|
13
|
+
var useDeepCompareEffect_default = useDeepCompareEffect;
|
|
5
14
|
|
|
6
|
-
export {
|
|
15
|
+
export { useDeepCompareEffect_default as default };
|
|
16
|
+
//# sourceMappingURL=out.js.map
|
|
17
|
+
//# sourceMappingURL=useDeepCompareEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDeepCompareEffect.ts"],"names":[],"mappings":"AAAA,SAAyC,WAAW,cAAc;AAElE,SAAS,eAAe;AAExB,MAAM,wBAAwB,CAAC,UAAoB;AACjD,QAAM,MAAM,OAAgB;AAE5B,MAAI,CAAC,QAAQ,OAAO,IAAI,OAAO;AAAG,QAAI,UAAU;AAEhD,SAAO,IAAI;AACb;AAEA,MAAM,uBAAuB,CAC3B,UACA,iBACG;AAEH,YAAU,UAAU,aAAa,IAAI,qBAAqB,CAAC;AAC7D;AAEA,IAAO,+BAAQ","sourcesContent":["import { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\nimport { isEqual } from 'utils/compare';\n\nconst useDeepCompareMemoize = (value?: unknown) => {\n const ref = useRef<unknown>();\n\n if (!isEqual(value, ref.current)) ref.current = value;\n\n return ref.current;\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,2 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
import '
|
|
1
|
+
import { useRef, useCallback } from 'react';
|
|
2
|
+
import useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';
|
|
3
|
+
|
|
4
|
+
function useEventCallback(fn) {
|
|
5
|
+
const ref = useRef(() => {
|
|
6
|
+
throw new Error("Cannot call an event handler while rendering.");
|
|
7
|
+
});
|
|
8
|
+
useIsomorphicLayoutEffect(() => {
|
|
9
|
+
ref.current = fn;
|
|
10
|
+
}, [fn]);
|
|
11
|
+
return useCallback((...args) => ref.current?.(...args), [ref]);
|
|
12
|
+
}
|
|
13
|
+
var useEventCallback_default = useEventCallback;
|
|
14
|
+
|
|
15
|
+
export { useEventCallback_default as default, useEventCallback };
|
|
16
|
+
//# sourceMappingURL=out.js.map
|
|
17
|
+
//# sourceMappingURL=useEventCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useEventCallback.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,cAAc;AAEpC,OAAO,+BAA+B;AAQ/B,SAAS,iBACd,IACoC;AACpC,QAAM,MAAM,OAAkB,MAAM;AAClC,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE,CAAC;AAED,4BAA0B,MAAM;AAC9B,QAAI,UAAU;AAAA,EAChB,GAAG,CAAC,EAAE,CAAC;AAEP,SAAO,YAAY,IAAI,SAAe,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAGrE;AAEA,IAAO,2BAAQ","sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\n\nexport function useEventCallback<Args extends unknown[], R>(\n fn: (...args: Args) => R,\n): (...args: Args) => R;\nexport function useEventCallback<Args extends unknown[], R>(\n fn: ((...args: Args) => R) | undefined,\n): ((...args: Args) => R) | undefined;\nexport function useEventCallback<Args extends unknown[], R>(\n fn: ((...args: Args) => R) | undefined,\n): ((...args: Args) => R) | undefined {\n const ref = useRef<typeof fn>(() => {\n throw new Error('Cannot call an event handler while rendering.');\n });\n\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n\n return useCallback((...args: Args) => ref.current?.(...args), [ref]) as (\n ...args: Args\n ) => R;\n}\n\nexport default useEventCallback;\n"]}
|
|
@@ -1 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import { useRef, useEffect, useLayoutEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
4
|
+
function useEventListener(eventName, handler, element, options) {
|
|
5
|
+
const savedHandler = useRef(handler);
|
|
6
|
+
useIsomorphicLayoutEffect(() => {
|
|
7
|
+
savedHandler.current = handler;
|
|
8
|
+
}, [handler]);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const targetElement = element?.current || window;
|
|
11
|
+
if (!(targetElement && targetElement.addEventListener)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const eventListener = (event) => savedHandler.current(event);
|
|
15
|
+
targetElement.addEventListener(eventName, eventListener, options);
|
|
16
|
+
return () => {
|
|
17
|
+
targetElement.removeEventListener(eventName, eventListener);
|
|
18
|
+
};
|
|
19
|
+
}, [eventName, element, options]);
|
|
20
|
+
}
|
|
21
|
+
var useEventListener_default = useEventListener;
|
|
22
|
+
|
|
23
|
+
export { useEventListener_default as default };
|
|
24
|
+
//# sourceMappingURL=out.js.map
|
|
25
|
+
//# sourceMappingURL=useEventListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useEventListener.ts"],"names":[],"mappings":"AAAA,SAAoB,WAAW,iBAAiB,cAAc;AAE9D,MAAM,4BACJ,OAAO,WAAW,cAAc,kBAAkB;AA6BpD,SAAS,iBAKP,WACA,SAGA,SACA,SACA;AAEA,QAAM,eAAe,OAAO,OAAO;AAEnC,4BAA0B,MAAM;AAC9B,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AAEd,UAAM,gBAA4B,SAAS,WAAW;AACtD,QAAI,EAAE,iBAAiB,cAAc,mBAAmB;AACtD;AAAA,IACF;AAGA,UAAM,gBAAgC,WAAS,aAAa,QAAQ,KAAK;AAEzE,kBAAc,iBAAiB,WAAW,eAAe,OAAO;AAGhE,WAAO,MAAM;AACX,oBAAc,oBAAoB,WAAW,aAAa;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,OAAO,CAAC;AAClC;AAEA,IAAO,2BAAQ","sourcesContent":["import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Window Event based useEventListener interface\nfunction useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\n// Element Event based useEventListener interface\nfunction useEventListener<\n K extends keyof HTMLElementEventMap,\n T extends HTMLElement = HTMLDivElement,\n>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n element: RefObject<T>,\n options?: boolean | AddEventListenerOptions,\n): void;\n\n// Document Event based useEventListener interface\nfunction useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n element: RefObject<Document>,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n KW extends keyof WindowEventMap,\n KH extends keyof HTMLElementEventMap,\n T extends HTMLElement | void = void,\n>(\n eventName: KW | KH,\n handler: (\n event: WindowEventMap[KW] | HTMLElementEventMap[KH] | Event,\n ) => void,\n element?: RefObject<T>,\n options?: boolean | AddEventListenerOptions,\n) {\n // Create a ref that stores handler\n const savedHandler = useRef(handler);\n\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Define the listening target\n const targetElement: T | Window = element?.current || window;\n if (!(targetElement && targetElement.addEventListener)) {\n return;\n }\n\n // Create event listener that calls handler function stored in ref\n const eventListener: typeof handler = event => savedHandler.current(event);\n\n targetElement.addEventListener(eventName, eventListener, options);\n\n // Remove event listener on cleanup\n return () => {\n targetElement.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element, options]);\n}\n\nexport default useEventListener;\n"]}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { useRef, useEffect } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const useIsMounting = () => {
|
|
4
|
+
const isMounting = useRef(true);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
isMounting.current = false;
|
|
7
|
+
}, []);
|
|
8
|
+
return isMounting.current;
|
|
9
|
+
};
|
|
10
|
+
var useIsMounting_default = useIsMounting;
|
|
4
11
|
|
|
5
|
-
export {
|
|
12
|
+
export { useIsMounting_default as default };
|
|
13
|
+
//# sourceMappingURL=out.js.map
|
|
14
|
+
//# sourceMappingURL=useIsMounting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useIsMounting.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,cAAc;AAElC,MAAM,gBAAgB,MAAM;AAC1B,QAAM,aAAa,OAAO,IAAI;AAE9B,YAAU,MAAM;AACd,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,CAAC;AAEL,SAAO,WAAW;AACpB;AAEA,IAAO,wBAAQ","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 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { useLayoutEffect, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
var useIsomorphicLayoutEffect_default = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
4
|
+
|
|
5
|
+
export { useIsomorphicLayoutEffect_default as default };
|
|
6
|
+
//# sourceMappingURL=out.js.map
|
|
7
|
+
//# sourceMappingURL=useIsomorphicLayoutEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useIsomorphicLayoutEffect.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,uBAAuB;AAE3C,IAAO,oCAAQ,OAAO,WAAW,cAAc,kBAAkB","sourcesContent":["import { useEffect, useLayoutEffect } from 'react';\n\nexport default typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n"]}
|
|
@@ -1,8 +1,89 @@
|
|
|
1
|
-
import { a } from '../chunk-Z2TDWMRU.js';
|
|
2
|
-
import '../chunk-3APKMSVD.js';
|
|
3
|
-
import { a as a$1 } from '../chunk-4INDXVIX.js';
|
|
4
1
|
import { useCallback, useState, useEffect } from 'react';
|
|
2
|
+
import { useEventCallback } from './useEventCallback';
|
|
3
|
+
import useEventListener from './useEventListener';
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
const IS_SERVER = typeof window === "undefined";
|
|
6
|
+
const useLocalStorage = (key, initialValue, options = {}) => {
|
|
7
|
+
const { initializeWithValue = true } = options;
|
|
8
|
+
const serializer = useCallback(
|
|
9
|
+
(value) => {
|
|
10
|
+
if (options.serializer) {
|
|
11
|
+
return options.serializer(value);
|
|
12
|
+
}
|
|
13
|
+
return JSON.stringify(value);
|
|
14
|
+
},
|
|
15
|
+
[options]
|
|
16
|
+
);
|
|
17
|
+
const deserializer = useCallback(
|
|
18
|
+
(value) => {
|
|
19
|
+
if (options.deserializer) {
|
|
20
|
+
return options.deserializer(value);
|
|
21
|
+
}
|
|
22
|
+
if (value === "undefined") {
|
|
23
|
+
return void 0;
|
|
24
|
+
}
|
|
25
|
+
const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;
|
|
26
|
+
let parsed;
|
|
27
|
+
try {
|
|
28
|
+
parsed = JSON.parse(value);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
return defaultValue;
|
|
31
|
+
}
|
|
32
|
+
return parsed;
|
|
33
|
+
},
|
|
34
|
+
[options, initialValue]
|
|
35
|
+
);
|
|
36
|
+
const readValue = useCallback(() => {
|
|
37
|
+
const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;
|
|
38
|
+
if (IS_SERVER) {
|
|
39
|
+
return initialValueToUse;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const raw = window.localStorage.getItem(key);
|
|
43
|
+
return raw ? deserializer(raw) : initialValueToUse;
|
|
44
|
+
} catch (error) {
|
|
45
|
+
return initialValueToUse;
|
|
46
|
+
}
|
|
47
|
+
}, [initialValue, key, deserializer]);
|
|
48
|
+
const [storedValue, setStoredValue] = useState(() => {
|
|
49
|
+
if (initializeWithValue) {
|
|
50
|
+
return readValue();
|
|
51
|
+
}
|
|
52
|
+
return initialValue instanceof Function ? initialValue() : initialValue;
|
|
53
|
+
});
|
|
54
|
+
const setValue = useEventCallback((value) => {
|
|
55
|
+
try {
|
|
56
|
+
const newValue = value instanceof Function ? value(readValue()) : value;
|
|
57
|
+
window.localStorage.setItem(key, serializer(newValue));
|
|
58
|
+
setStoredValue(newValue);
|
|
59
|
+
window.dispatchEvent(new StorageEvent("local-storage", { key }));
|
|
60
|
+
} catch {
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const removeValue = useEventCallback(() => {
|
|
64
|
+
const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;
|
|
65
|
+
window.localStorage.removeItem(key);
|
|
66
|
+
setStoredValue(defaultValue);
|
|
67
|
+
window.dispatchEvent(new StorageEvent("local-storage", { key }));
|
|
68
|
+
});
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
setStoredValue(readValue());
|
|
71
|
+
}, [key]);
|
|
72
|
+
const handleStorageChange = useCallback(
|
|
73
|
+
(event) => {
|
|
74
|
+
if (event.key && event.key !== key) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
setStoredValue(readValue());
|
|
78
|
+
},
|
|
79
|
+
[key, readValue]
|
|
80
|
+
);
|
|
81
|
+
useEventListener("storage", handleStorageChange);
|
|
82
|
+
useEventListener("local-storage", handleStorageChange);
|
|
83
|
+
return [storedValue, setValue, removeValue];
|
|
84
|
+
};
|
|
85
|
+
var useLocalStorage_default = useLocalStorage;
|
|
7
86
|
|
|
8
|
-
export {
|
|
87
|
+
export { useLocalStorage_default as default };
|
|
88
|
+
//# sourceMappingURL=out.js.map
|
|
89
|
+
//# sourceMappingURL=useLocalStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":"AACA,SAAS,aAAa,WAAW,gBAAgB;AAEjD,SAAS,wBAAwB;AACjC,OAAO,sBAAsB;AAc7B,MAAM,YAAY,OAAO,WAAW;AAEpC,MAAM,kBAAkB,CACtB,KACA,cACA,UAAqC,CAAC,MACW;AACjD,QAAM,EAAE,sBAAsB,KAAK,IAAI;AAEvC,QAAM,aAAa;AAAA,IACjB,WAAS;AACP,UAAI,QAAQ,YAAY;AACtB,eAAO,QAAQ,WAAW,KAAK;AAAA,MACjC;AACA,aAAO,KAAK,UAAU,KAAK;AAAA,IAC7B;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAe;AAAA,IACnB,WAAS;AACP,UAAI,QAAQ,cAAc;AACxB,eAAO,QAAQ,aAAa,KAAK;AAAA,MACnC;AACA,UAAI,UAAU,aAAa;AACzB,eAAO;AAAA,MACT;AAEA,YAAM,eACJ,wBAAwB,WAAW,aAAa,IAAI;AAEtD,UAAI;AACJ,UAAI;AACF,iBAAS,KAAK,MAAM,KAAK;AAAA,MAC3B,SAAS,OAAP;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,SAAS,YAAY;AAAA,EACxB;AAEA,QAAM,YAAY,YAAY,MAAS;AACrC,UAAM,oBACJ,wBAAwB,WAAW,aAAa,IAAI;AAEtD,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,MAAM,OAAO,aAAa,QAAQ,GAAG;AAC3C,aAAO,MAAM,aAAa,GAAG,IAAI;AAAA,IACnC,SAAS,OAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,cAAc,KAAK,YAAY,CAAC;AAEpC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,MAAM;AACnD,QAAI,qBAAqB;AACvB,aAAO,UAAU;AAAA,IACnB;AACA,WAAO,wBAAwB,WAAW,aAAa,IAAI;AAAA,EAC7D,CAAC;AAED,QAAM,WAAwC,iBAAiB,WAAS;AACtE,QAAI;AACF,YAAM,WAAW,iBAAiB,WAAW,MAAM,UAAU,CAAC,IAAI;AAClE,aAAO,aAAa,QAAQ,KAAK,WAAW,QAAQ,CAAC;AACrD,qBAAe,QAAQ;AACvB,aAAO,cAAc,IAAI,aAAa,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAAA,IACjE,QAAE;AAAA,IAEF;AAAA,EACF,CAAC;AAED,QAAM,cAAc,iBAAiB,MAAM;AACzC,UAAM,eACJ,wBAAwB,WAAW,aAAa,IAAI;AACtD,WAAO,aAAa,WAAW,GAAG;AAClC,mBAAe,YAAY;AAC3B,WAAO,cAAc,IAAI,aAAa,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAAA,EACjE,CAAC;AAED,YAAU,MAAM;AACd,mBAAe,UAAU,CAAC;AAAA,EAE5B,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAAsC;AACrC,UAAK,MAAuB,OAAQ,MAAuB,QAAQ,KAAK;AACtE;AAAA,MACF;AACA,qBAAe,UAAU,CAAC;AAAA,IAC5B;AAAA,IACA,CAAC,KAAK,SAAS;AAAA,EACjB;AAEA,mBAAiB,WAAW,mBAAmB;AAC/C,mBAAiB,iBAAiB,mBAAmB;AAErD,SAAO,CAAC,aAAa,UAAU,WAAW;AAC5C;AAEA,IAAO,0BAAQ","sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useEventCallback } from './useEventCallback';\nimport useEventListener from './useEventListener';\n\ndeclare global {\n interface WindowEventMap {\n 'local-storage': CustomEvent;\n }\n}\n\ntype UseLocalStorageOptions<T> = {\n serializer?: (value: T) => string;\n deserializer?: (value: string) => T;\n initializeWithValue?: boolean;\n};\n\nconst IS_SERVER = typeof window === 'undefined';\n\nconst useLocalStorage = <T>(\n key: string,\n initialValue: T | (() => T),\n options: UseLocalStorageOptions<T> = {},\n): [T, Dispatch<SetStateAction<T>>, () => void] => {\n const { initializeWithValue = true } = options;\n\n const serializer = useCallback<(value: T) => string>(\n value => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options],\n );\n\n const deserializer = useCallback<(value: string) => T>(\n value => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === 'undefined') {\n return undefined as unknown as T;\n }\n\n const defaultValue =\n initialValue instanceof Function ? initialValue() : initialValue;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n return defaultValue;\n }\n\n return parsed as T;\n },\n [options, initialValue],\n );\n\n const readValue = useCallback((): T => {\n const initialValueToUse =\n initialValue instanceof Function ? initialValue() : initialValue;\n\n if (IS_SERVER) {\n return initialValueToUse;\n }\n\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n\n const setValue: Dispatch<SetStateAction<T>> = useEventCallback(value => {\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent('local-storage', { key }));\n } catch {\n /* empty */\n }\n });\n\n const removeValue = useEventCallback(() => {\n const defaultValue =\n initialValue instanceof Function ? initialValue() : initialValue;\n window.localStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent('local-storage', { key }));\n });\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [key]);\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent).key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue],\n );\n\n useEventListener('storage', handleStorageChange);\n useEventListener('local-storage', handleStorageChange);\n\n return [storedValue, setValue, removeValue];\n};\n\nexport default useLocalStorage;\n"]}
|
package/dist/hooks/useMount.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const useMount = (callback) => {
|
|
4
|
+
useEffect(callback, []);
|
|
5
|
+
};
|
|
6
|
+
var useMount_default = useMount;
|
|
4
7
|
|
|
5
|
-
export {
|
|
8
|
+
export { useMount_default as default };
|
|
9
|
+
//# sourceMappingURL=out.js.map
|
|
10
|
+
//# sourceMappingURL=useMount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useMount.ts"],"names":[],"mappings":"AAAA,SAAS,iBAAiB;AAsB1B,MAAM,WAAW,CAAC,aAAwC;AAExD,YAAU,UAAU,CAAC,CAAC;AACxB;AAEA,IAAO,mBAAQ","sourcesContent":["import { useEffect } from 'react';\n\n/**\n * UseMount hook runs the callback only once when the component is mounted.\n *\n * @param callback - The callback to run when the component is mounted. Returns a cleanup function to run at the end of the component lifecycle.\n * @example\n * Here's an example with negative numbers:\n * ```\n * useMount(() => {\n * document.addEventListener('resize', () => {\n * // do something\n * });\n *\n * return () => {\n * document.removeEventListener('resize', () => {\n * // cleanup event listener\n * });\n * };\n * });\n * ```\n */\nconst useMount = (callback: () => void | (() => void)) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(callback, []);\n};\n\nexport default useMount;\n"]}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import useEventListener from './useEventListener';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const useOnClickOutside = (ref, handler, mouseEvent = "mousedown") => {
|
|
4
|
+
useEventListener(mouseEvent, (event) => {
|
|
5
|
+
const el = ref?.current;
|
|
6
|
+
if (!el || el.contains(event.target)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
handler(event);
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var useOnClickOutside_default = useOnClickOutside;
|
|
4
13
|
|
|
5
|
-
export {
|
|
14
|
+
export { useOnClickOutside_default as default };
|
|
15
|
+
//# sourceMappingURL=out.js.map
|
|
16
|
+
//# sourceMappingURL=useOnClickOutside.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useOnClickOutside.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB;AAI7B,MAAM,oBAAoB,CACxB,KACA,SACA,aAAsC,gBACnC;AACH,mBAAiB,YAAY,WAAS;AACpC,UAAM,KAAK,KAAK;AAGhB,QAAI,CAAC,MAAM,GAAG,SAAS,MAAM,MAAc,GAAG;AAC5C;AAAA,IACF;AAEA,YAAQ,KAAK;AAAA,EACf,CAAC;AACH;AAEA,IAAO,4BAAQ","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,5 +1,41 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
|
|
3
|
-
function
|
|
3
|
+
function usePagination({
|
|
4
|
+
items,
|
|
5
|
+
itemsPerPage
|
|
6
|
+
}) {
|
|
7
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
8
|
+
const totalPages = Math.ceil(items.length / itemsPerPage);
|
|
9
|
+
const currentItems = items.slice(
|
|
10
|
+
(currentPage - 1) * itemsPerPage,
|
|
11
|
+
currentPage * itemsPerPage
|
|
12
|
+
);
|
|
13
|
+
const goToPage = (page) => {
|
|
14
|
+
if (page > 0 && page <= totalPages) {
|
|
15
|
+
setCurrentPage(page);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const nextPage = () => {
|
|
19
|
+
if (currentPage < totalPages) {
|
|
20
|
+
setCurrentPage((prevPage2) => prevPage2 + 1);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const prevPage = () => {
|
|
24
|
+
if (currentPage > 1) {
|
|
25
|
+
setCurrentPage((prevPage2) => prevPage2 - 1);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
currentPage,
|
|
30
|
+
totalPages,
|
|
31
|
+
currentItems,
|
|
32
|
+
goToPage,
|
|
33
|
+
nextPage,
|
|
34
|
+
prevPage
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
var usePagination_default = usePagination;
|
|
4
38
|
|
|
5
|
-
export {
|
|
39
|
+
export { usePagination_default as default };
|
|
40
|
+
//# sourceMappingURL=out.js.map
|
|
41
|
+
//# sourceMappingURL=usePagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/usePagination.ts"],"names":["prevPage"],"mappings":"AAAA,SAAS,gBAAgB;AAgBzB,SAAS,cAAiB;AAAA,EACxB;AAAA,EACA;AACF,GAAkD;AAChD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,CAAC;AAEhD,QAAM,aAAa,KAAK,KAAK,MAAM,SAAS,YAAY;AAExD,QAAM,eAAe,MAAM;AAAA,KACxB,cAAc,KAAK;AAAA,IACpB,cAAc;AAAA,EAChB;AAEA,QAAM,WAAW,CAAC,SAAiB;AACjC,QAAI,OAAO,KAAK,QAAQ,YAAY;AAClC,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,WAAW,MAAM;AACrB,QAAI,cAAc,YAAY;AAC5B,qBAAe,CAAAA,cAAYA,YAAW,CAAC;AAAA,IACzC;AAAA,EACF;AAEA,QAAM,WAAW,MAAM;AACrB,QAAI,cAAc,GAAG;AACnB,qBAAe,CAAAA,cAAYA,YAAW,CAAC;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,wBAAQ","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
|
@@ -1 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
const usePopover = () => {
|
|
4
|
+
const [open, setOpen] = useState(null);
|
|
5
|
+
const onOpen = useCallback((event) => {
|
|
6
|
+
setOpen(event.currentTarget);
|
|
7
|
+
}, []);
|
|
8
|
+
const onClose = useCallback(() => {
|
|
9
|
+
setOpen(null);
|
|
10
|
+
}, []);
|
|
11
|
+
return {
|
|
12
|
+
open,
|
|
13
|
+
onOpen,
|
|
14
|
+
onClose,
|
|
15
|
+
setOpen
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
var usePopover_default = usePopover;
|
|
19
|
+
|
|
20
|
+
export { usePopover_default as default };
|
|
21
|
+
//# sourceMappingURL=out.js.map
|
|
22
|
+
//# sourceMappingURL=usePopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/usePopover.ts"],"names":[],"mappings":"AAAA;AAAA,EAIE;AAAA,EACA;AAAA,OACK;AASP,MAAM,aAAa,MAAuB;AACxC,QAAM,CAAC,MAAM,OAAO,IAAI,SAA6B,IAAI;AAEzD,QAAM,SAAS,YAAY,CAAC,UAAmC;AAC7D,YAAQ,MAAM,aAAa;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,UAAU,YAAY,MAAM;AAChC,YAAQ,IAAI;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,qBAAQ","sourcesContent":["import {\n Dispatch,\n MouseEvent,\n SetStateAction,\n useCallback,\n useState,\n} from 'react';\n\ninterface usePopoverProps {\n onClose: VoidFunction;\n open: HTMLElement | null;\n onOpen: (event: MouseEvent<HTMLElement>) => void;\n setOpen: Dispatch<SetStateAction<HTMLElement | null>>;\n}\n\nconst usePopover = (): usePopoverProps => {\n const [open, setOpen] = useState<HTMLElement | null>(null);\n\n const onOpen = useCallback((event: MouseEvent<HTMLElement>) => {\n setOpen(event.currentTarget);\n }, []);\n\n const onClose = useCallback(() => {\n setOpen(null);\n }, []);\n\n return {\n open,\n onOpen,\n onClose,\n setOpen,\n };\n};\n\nexport default usePopover;\n"]}
|
|
@@ -1 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
import { useTheme } from '@mui/material/styles';
|
|
2
|
+
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
3
|
+
|
|
4
|
+
const useResponsive = (query, start, end) => {
|
|
5
|
+
const theme = useTheme();
|
|
6
|
+
const mediaUp = useMediaQuery(theme.breakpoints.up(start));
|
|
7
|
+
const mediaDown = useMediaQuery(theme.breakpoints.down(start));
|
|
8
|
+
const mediaBetween = useMediaQuery(
|
|
9
|
+
theme.breakpoints.between(start, end)
|
|
10
|
+
);
|
|
11
|
+
const mediaOnly = useMediaQuery(theme.breakpoints.only(start));
|
|
12
|
+
if (query === "up") {
|
|
13
|
+
return mediaUp;
|
|
14
|
+
}
|
|
15
|
+
if (query === "down") {
|
|
16
|
+
return mediaDown;
|
|
17
|
+
}
|
|
18
|
+
if (query === "between") {
|
|
19
|
+
return mediaBetween;
|
|
20
|
+
}
|
|
21
|
+
return mediaOnly;
|
|
22
|
+
};
|
|
23
|
+
function useWidth() {
|
|
24
|
+
const theme = useTheme();
|
|
25
|
+
const keys = [...theme.breakpoints.keys].reverse();
|
|
26
|
+
return keys.reduce((output, key) => {
|
|
27
|
+
const matches = useMediaQuery(theme.breakpoints.up(key));
|
|
28
|
+
return !output && matches ? key : output;
|
|
29
|
+
}, null) || "xs";
|
|
30
|
+
}
|
|
31
|
+
var useResponsive_default = useResponsive;
|
|
32
|
+
|
|
33
|
+
export { useResponsive_default as default, useWidth };
|
|
34
|
+
//# sourceMappingURL=out.js.map
|
|
35
|
+
//# sourceMappingURL=useResponsive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useResponsive.ts"],"names":[],"mappings":"AAAA,SAAqB,gBAAgB;AACrC,OAAO,mBAAmB;AAQ1B,MAAM,gBAAgB,CACpB,OACA,OACA,QACe;AACf,QAAM,QAAQ,SAAS;AAEvB,QAAM,UAAU,cAAc,MAAM,YAAY,GAAG,KAAc,CAAC;AAElE,QAAM,YAAY,cAAc,MAAM,YAAY,KAAK,KAAc,CAAC;AAEtE,QAAM,eAAe;AAAA,IACnB,MAAM,YAAY,QAAQ,OAAgB,GAAY;AAAA,EACxD;AAEA,QAAM,YAAY,cAAc,MAAM,YAAY,KAAK,KAAmB,CAAC;AAE3E,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,QAAQ;AACpB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,WAAW;AACvB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAIO,SAAS,WAAW;AACzB,QAAM,QAAQ,SAAS;AAEvB,QAAM,OAAO,CAAC,GAAG,MAAM,YAAY,IAAI,EAAE,QAAQ;AAEjD,SACE,KAAK,OAAO,CAAC,QAA0B,QAAoB;AAEzD,UAAM,UAAU,cAAc,MAAM,YAAY,GAAG,GAAG,CAAC;AAEvD,WAAO,CAAC,UAAU,UAAU,MAAM;AAAA,EACpC,GAAG,IAAI,KAAK;AAEhB;AAEA,IAAO,wBAAQ","sourcesContent":["import { Breakpoint, useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\ntype ReturnType = boolean;\n\ntype Query = 'up' | 'down' | 'between' | 'only';\n\ntype Value = Breakpoint | number;\n\nconst useResponsive = (\n query: Query,\n start?: Value,\n end?: Value,\n): ReturnType => {\n const theme = useTheme();\n\n const mediaUp = useMediaQuery(theme.breakpoints.up(start as Value));\n\n const mediaDown = useMediaQuery(theme.breakpoints.down(start as Value));\n\n const mediaBetween = useMediaQuery(\n theme.breakpoints.between(start as Value, end as Value),\n );\n\n const mediaOnly = useMediaQuery(theme.breakpoints.only(start as Breakpoint));\n\n if (query === 'up') {\n return mediaUp;\n }\n\n if (query === 'down') {\n return mediaDown;\n }\n\n if (query === 'between') {\n return mediaBetween;\n }\n\n return mediaOnly;\n};\n\ntype BreakpointOrNull = Breakpoint | null;\n\nexport function useWidth() {\n const theme = useTheme();\n\n const keys = [...theme.breakpoints.keys].reverse();\n\n return (\n keys.reduce((output: BreakpointOrNull, key: Breakpoint) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const matches = useMediaQuery(theme.breakpoints.up(key));\n\n return !output && matches ? key : output;\n }, null) || 'xs'\n );\n}\n\nexport default useResponsive;\n"]}
|