@jenesei-software/jenesei-kit-react 2.1.0 → 2.2.1
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/build/{AnimatePresence-19yP-TCg.js → AnimatePresence-BWc2vFe-.js} +2 -2
- package/build/{AnimatePresence-19yP-TCg.js.map → AnimatePresence-BWc2vFe-.js.map} +1 -1
- package/build/{AnimatePresence-BdBJCJuf.cjs → AnimatePresence-DeKd4Eek.cjs} +2 -2
- package/build/{AnimatePresence-BdBJCJuf.cjs.map → AnimatePresence-DeKd4Eek.cjs.map} +1 -1
- package/build/area-outside.cjs.js +1 -1
- package/build/area-outside.es.js +1 -1
- package/build/area-preview.cjs.js +1 -1
- package/build/area-preview.es.js +1 -1
- package/build/area-skeleton.cjs.js +1 -1
- package/build/area-skeleton.es.js +1 -1
- package/build/build-info.txt +3 -3
- package/build/{button-BbGiFvok.js → button-C1w25-Hk.js} +4 -4
- package/build/{button-BbGiFvok.js.map → button-C1w25-Hk.js.map} +1 -1
- package/build/{button-BuPpgfL_.cjs → button-CHEeSypf.cjs} +2 -2
- package/build/{button-BuPpgfL_.cjs.map → button-CHEeSypf.cjs.map} +1 -1
- package/build/{checkbox-qgc_Ntc3.cjs → checkbox-Bxt8K0ZY.cjs} +2 -2
- package/build/{checkbox-qgc_Ntc3.cjs.map → checkbox-Bxt8K0ZY.cjs.map} +1 -1
- package/build/{checkbox-CXxWDklX.js → checkbox-DPkXe4_5.js} +5 -5
- package/build/{checkbox-CXxWDklX.js.map → checkbox-DPkXe4_5.js.map} +1 -1
- package/build/{component-jsn2T8Hu.cjs → component-CbJ_P8yq.cjs} +2 -2
- package/build/{component-jsn2T8Hu.cjs.map → component-CbJ_P8yq.cjs.map} +1 -1
- package/build/{component-BHyXT2-h.js → component-DGfyD5-u.js} +4 -4
- package/build/{component-BHyXT2-h.js.map → component-DGfyD5-u.js.map} +1 -1
- package/build/component-button.cjs.js +1 -1
- package/build/component-button.es.js +1 -1
- package/build/component-checkbox.cjs.js +1 -1
- package/build/component-checkbox.es.js +1 -1
- package/build/component-date-picker.cjs.js +1 -1
- package/build/component-date-picker.es.js +1 -1
- package/build/component-icon.cjs.js +1 -1
- package/build/component-icon.es.js +1 -1
- package/build/component-input-otp.cjs.js +1 -1
- package/build/component-input-otp.es.js +1 -1
- package/build/component-input.cjs.js +1 -1
- package/build/component-input.es.js +1 -1
- package/build/component-pagination.cjs.js +1 -1
- package/build/component-pagination.es.js +1 -1
- package/build/component-popover.cjs.js +1 -1
- package/build/component-popover.es.js +1 -1
- package/build/component-select.cjs.js +1 -1
- package/build/component-select.es.js +5 -6
- package/build/component-separator.cjs.js +1 -1
- package/build/component-separator.es.js +1 -1
- package/build/component-stack.cjs.js +1 -1
- package/build/component-stack.es.js +1 -1
- package/build/component-textarea.cjs.js +1 -1
- package/build/component-textarea.es.js +1 -1
- package/build/component-toggle.cjs.js +1 -1
- package/build/component-toggle.es.js +1 -1
- package/build/component-tooltip.cjs.js +1 -1
- package/build/component-tooltip.es.js +1 -1
- package/build/component-typography.cjs.js +1 -1
- package/build/component-typography.es.js +1 -1
- package/build/components/select/component.examples.d.ts +1 -2
- package/build/components/select/component.types.d.ts +1 -5
- package/build/components/select/index.d.ts +2 -2
- package/build/components-error.cjs.js +1 -1
- package/build/components-error.es.js +1 -1
- package/build/{context-app-CMK9g6MI.js → context-app-C9XoarPw.js} +6 -6
- package/build/{context-app-CMK9g6MI.js.map → context-app-C9XoarPw.js.map} +1 -1
- package/build/{context-app-HhFcx1wY.cjs → context-app-Dsa1tKlU.cjs} +2 -2
- package/build/{context-app-HhFcx1wY.cjs.map → context-app-Dsa1tKlU.cjs.map} +1 -1
- package/build/context-app.cjs.js +1 -1
- package/build/context-app.es.js +1 -1
- package/build/{context-browser-theme-Cb6siWO0.js → context-browser-theme-CRBCZ_y_.js} +2 -2
- package/build/{context-browser-theme-Cb6siWO0.js.map → context-browser-theme-CRBCZ_y_.js.map} +1 -1
- package/build/{context-browser-theme-Cso_rAT5.cjs → context-browser-theme-xixEbalV.cjs} +2 -2
- package/build/{context-browser-theme-Cso_rAT5.cjs.map → context-browser-theme-xixEbalV.cjs.map} +1 -1
- package/build/context-browser-theme.cjs.js +1 -1
- package/build/context-browser-theme.es.js +1 -1
- package/build/{context-cookie-Btkd2aXy.cjs → context-cookie-DFgWWGA9.cjs} +2 -2
- package/build/{context-cookie-Btkd2aXy.cjs.map → context-cookie-DFgWWGA9.cjs.map} +1 -1
- package/build/{context-cookie-5CBhf-gb.js → context-cookie-Daq2MZo3.js} +2 -2
- package/build/{context-cookie-5CBhf-gb.js.map → context-cookie-Daq2MZo3.js.map} +1 -1
- package/build/context-cookie.cjs.js +1 -1
- package/build/context-cookie.es.js +1 -1
- package/build/{context-dialog-B67-_jMH.cjs → context-dialog-B3khh4eN.cjs} +2 -2
- package/build/{context-dialog-B67-_jMH.cjs.map → context-dialog-B3khh4eN.cjs.map} +1 -1
- package/build/{context-dialog-CxGGmBqC.js → context-dialog-CeqpejDW.js} +13 -13
- package/build/{context-dialog-CxGGmBqC.js.map → context-dialog-CeqpejDW.js.map} +1 -1
- package/build/context-dialog.cjs.js +1 -1
- package/build/context-dialog.es.js +1 -1
- package/build/{context-geolocation-C7PYGQ2g.js → context-geolocation-B_KYGlfQ.js} +2 -2
- package/build/{context-geolocation-C7PYGQ2g.js.map → context-geolocation-B_KYGlfQ.js.map} +1 -1
- package/build/{context-geolocation-CV4hV0NX.cjs → context-geolocation-bP0_455H.cjs} +2 -2
- package/build/{context-geolocation-CV4hV0NX.cjs.map → context-geolocation-bP0_455H.cjs.map} +1 -1
- package/build/context-geolocation.cjs.js +1 -1
- package/build/context-geolocation.es.js +1 -1
- package/build/{context-local-storage-Bb_vktd8.js → context-local-storage-DA_whw_k.js} +2 -2
- package/build/{context-local-storage-Bb_vktd8.js.map → context-local-storage-DA_whw_k.js.map} +1 -1
- package/build/{context-local-storage-DUKHVPAA.cjs → context-local-storage-D_x8dwxM.cjs} +2 -2
- package/build/{context-local-storage-DUKHVPAA.cjs.map → context-local-storage-D_x8dwxM.cjs.map} +1 -1
- package/build/context-local-storage.cjs.js +1 -1
- package/build/context-local-storage.es.js +1 -1
- package/build/{context-permission-DrcIwK9y.cjs → context-permission-BP9hPUcR.cjs} +2 -2
- package/build/{context-permission-DrcIwK9y.cjs.map → context-permission-BP9hPUcR.cjs.map} +1 -1
- package/build/{context-permission-Co4BKDOu.js → context-permission-Cj70kL4A.js} +2 -2
- package/build/{context-permission-Co4BKDOu.js.map → context-permission-Cj70kL4A.js.map} +1 -1
- package/build/context-permission.cjs.js +1 -1
- package/build/context-permission.es.js +1 -1
- package/build/{context-screen-width-hcRkxzy7.cjs → context-screen-width-Cfe3atNC.cjs} +2 -2
- package/build/{context-screen-width-hcRkxzy7.cjs.map → context-screen-width-Cfe3atNC.cjs.map} +1 -1
- package/build/{context-screen-width-CFexCIzV.js → context-screen-width-Cq_B7IVp.js} +3 -3
- package/build/{context-screen-width-CFexCIzV.js.map → context-screen-width-Cq_B7IVp.js.map} +1 -1
- package/build/context-screen-width.cjs.js +1 -1
- package/build/context-screen-width.es.js +1 -1
- package/build/{context-sonner-4gBa1F7G.cjs → context-sonner-Dqw0jhwT.cjs} +2 -2
- package/build/{context-sonner-4gBa1F7G.cjs.map → context-sonner-Dqw0jhwT.cjs.map} +1 -1
- package/build/{context-sonner-qDPLFpD5.js → context-sonner-MO6uE8y0.js} +12 -12
- package/build/{context-sonner-qDPLFpD5.js.map → context-sonner-MO6uE8y0.js.map} +1 -1
- package/build/context-sonner.cjs.js +1 -1
- package/build/context-sonner.es.js +1 -1
- package/build/contexts/context-app/context.d.ts +2 -2
- package/build/cores/consts.d.ts +0 -24
- package/build/cores/types.d.ts +0 -14
- package/build/date-picker-ATktGA1c.cjs +3 -0
- package/build/date-picker-ATktGA1c.cjs.map +1 -0
- package/build/date-picker-D81n3KbO.js +813 -0
- package/build/date-picker-D81n3KbO.js.map +1 -0
- package/build/{dist-DswBAjW1.cjs → dist-SXTf0-_7.cjs} +1 -1
- package/build/{dist-DswBAjW1.cjs.map → dist-SXTf0-_7.cjs.map} +1 -1
- package/build/{dist-BV0C3tLK.js → dist-ck-7oUux.js} +1 -1
- package/build/{dist-BV0C3tLK.js.map → dist-ck-7oUux.js.map} +1 -1
- package/build/{error-L2fvWcNv.js → error-BFb2NCum.js} +7 -7
- package/build/{error-L2fvWcNv.js.map → error-BFb2NCum.js.map} +1 -1
- package/build/{error-DzkkNL2H.cjs → error-BdFba_yV.cjs} +2 -2
- package/build/{error-DzkkNL2H.cjs.map → error-BdFba_yV.cjs.map} +1 -1
- package/build/{functions-Dwo54amB.cjs → functions-CZrZU5U0.cjs} +1 -1
- package/build/{functions-Dwo54amB.cjs.map → functions-CZrZU5U0.cjs.map} +1 -1
- package/build/{functions-CLGf7hqw.js → functions-DzX-pTN8.js} +1 -1
- package/build/{functions-CLGf7hqw.js.map → functions-DzX-pTN8.js.map} +1 -1
- package/build/hooks-use-deep-compare-memoize.cjs.js +1 -1
- package/build/hooks-use-deep-compare-memoize.es.js +1 -1
- package/build/hooks-use-deep-memo.cjs.js +1 -1
- package/build/hooks-use-deep-memo.es.js +1 -1
- package/build/hooks-use-responsive-layout.cjs.js +1 -1
- package/build/hooks-use-responsive-layout.es.js +1 -1
- package/build/hooks-use-typography-styles.cjs.js +1 -1
- package/build/hooks-use-typography-styles.es.js +2 -2
- package/build/icon-D2w7GViT.js +245 -0
- package/build/icon-D2w7GViT.js.map +1 -0
- package/build/icon-Ddkbk3-m.cjs +3 -0
- package/build/icon-Ddkbk3-m.cjs.map +1 -0
- package/build/index.cjs.js +1 -1
- package/build/index.d.ts +5 -5
- package/build/index.es.js +97 -98
- package/build/{input-CV02F03L.js → input-B9ceeR9v.js} +4 -4
- package/build/{input-CV02F03L.js.map → input-B9ceeR9v.js.map} +1 -1
- package/build/{input-zXF5f99Z.cjs → input-CmdwwrV2.cjs} +2 -2
- package/build/{input-zXF5f99Z.cjs.map → input-CmdwwrV2.cjs.map} +1 -1
- package/build/{input-otp-BVRCfoRK.cjs → input-otp-CJfZoWd7.cjs} +2 -2
- package/build/{input-otp-BVRCfoRK.cjs.map → input-otp-CJfZoWd7.cjs.map} +1 -1
- package/build/{input-otp-B9cYxJ7X.js → input-otp-CeMGm5Xq.js} +4 -4
- package/build/{input-otp-B9cYxJ7X.js.map → input-otp-CeMGm5Xq.js.map} +1 -1
- package/build/{isEqual-Qb81B2zH.js → isEqual-0jZ23Bb6.js} +1 -1
- package/build/{isEqual-Qb81B2zH.js.map → isEqual-0jZ23Bb6.js.map} +1 -1
- package/build/{isEqual-DeC2HFe5.cjs → isEqual-BA0P9-C8.cjs} +1 -1
- package/build/{isEqual-DeC2HFe5.cjs.map → isEqual-BA0P9-C8.cjs.map} +1 -1
- package/build/{logger-DZFY33QY.cjs → logger-D3Xu5ef3.cjs} +1 -1
- package/build/{logger-DZFY33QY.cjs.map → logger-D3Xu5ef3.cjs.map} +1 -1
- package/build/{logger-BRWLzI5S.js → logger-QC3A33gh.js} +1 -1
- package/build/{logger-BRWLzI5S.js.map → logger-QC3A33gh.js.map} +1 -1
- package/build/{motion-CAPq8wSn.cjs → motion-BWBldnsY.cjs} +2 -2
- package/build/{motion-CAPq8wSn.cjs.map → motion-BWBldnsY.cjs.map} +1 -1
- package/build/{motion-Dt6TyEjN.js → motion-C1XU2d68.js} +3 -3
- package/build/{motion-Dt6TyEjN.js.map → motion-C1XU2d68.js.map} +1 -1
- package/build/{outside-B3nRnDGb.cjs → outside-CXyCk8h1.cjs} +2 -2
- package/build/{outside-B3nRnDGb.cjs.map → outside-CXyCk8h1.cjs.map} +1 -1
- package/build/{outside-DpK1pI8b.js → outside-DopxX0PZ.js} +2 -2
- package/build/{outside-DpK1pI8b.js.map → outside-DopxX0PZ.js.map} +1 -1
- package/build/{pagination-YXSjZsMZ.js → pagination-BluJtJl7.js} +5 -5
- package/build/{pagination-YXSjZsMZ.js.map → pagination-BluJtJl7.js.map} +1 -1
- package/build/pagination-VMAFNidU.cjs +3 -0
- package/build/{pagination-Dbs4Lrpt.cjs.map → pagination-VMAFNidU.cjs.map} +1 -1
- package/build/{popover-1k1MNFwv.js → popover-DHWcQVp1.js} +3 -3
- package/build/{popover-1k1MNFwv.js.map → popover-DHWcQVp1.js.map} +1 -1
- package/build/{popover-CgwGn-55.cjs → popover-DQkn4RWI.cjs} +2 -2
- package/build/{popover-CgwGn-55.cjs.map → popover-DQkn4RWI.cjs.map} +1 -1
- package/build/preview-BLu-NOv2.cjs +3 -0
- package/build/{preview-dT7fmxcc.cjs.map → preview-BLu-NOv2.cjs.map} +1 -1
- package/build/{preview-C_yFxoFH.js → preview-Bc2qdyd4.js} +5 -5
- package/build/{preview-C_yFxoFH.js.map → preview-Bc2qdyd4.js.map} +1 -1
- package/build/{proxy-_gZenxVU.cjs → proxy-BDese6Pb.cjs} +1 -1
- package/build/{proxy-_gZenxVU.cjs.map → proxy-BDese6Pb.cjs.map} +1 -1
- package/build/{proxy-wCWa57J3.js → proxy-BFHkqO7P.js} +1 -1
- package/build/{proxy-wCWa57J3.js.map → proxy-BFHkqO7P.js.map} +1 -1
- package/build/{select-D7EyxR2l.js → select-CCbtkj6f.js} +862 -876
- package/build/{select-D7EyxR2l.js.map → select-CCbtkj6f.js.map} +1 -1
- package/build/{select-B0adRX2_.cjs → select-CGXyVf57.cjs} +5 -5
- package/build/{select-B0adRX2_.cjs.map → select-CGXyVf57.cjs.map} +1 -1
- package/build/{separator-CbeH8Lug.cjs → separator-BGVU_LQb.cjs} +2 -2
- package/build/{separator-CbeH8Lug.cjs.map → separator-BGVU_LQb.cjs.map} +1 -1
- package/build/{separator-hWp-s54-.js → separator-DJEhOPUT.js} +3 -3
- package/build/{separator-hWp-s54-.js.map → separator-DJEhOPUT.js.map} +1 -1
- package/build/{skeleton-DNwTI6w0.js → skeleton-Bh6zA5iB.js} +4 -4
- package/build/{skeleton-DNwTI6w0.js.map → skeleton-Bh6zA5iB.js.map} +1 -1
- package/build/{skeleton-BoVFwt7y.cjs → skeleton-DmaXsm9C.cjs} +2 -2
- package/build/{skeleton-BoVFwt7y.cjs.map → skeleton-DmaXsm9C.cjs.map} +1 -1
- package/build/style-motion.cjs.js +1 -1
- package/build/style-motion.es.js +1 -1
- package/build/style-utils.cjs.js +1 -1
- package/build/style-utils.es.js +1 -1
- package/build/styles/utils/types.d.ts +1 -1
- package/build/{textarea-CbZSeqGR.cjs → textarea-DInJb6Lz.cjs} +2 -2
- package/build/{textarea-CbZSeqGR.cjs.map → textarea-DInJb6Lz.cjs.map} +1 -1
- package/build/{textarea-ChkjV_Ha.js → textarea-jIGZ0JdP.js} +4 -4
- package/build/{textarea-ChkjV_Ha.js.map → textarea-jIGZ0JdP.js.map} +1 -1
- package/build/{toggle-gYw5FUp-.cjs → toggle-BEmUm0of.cjs} +2 -2
- package/build/{toggle-gYw5FUp-.cjs.map → toggle-BEmUm0of.cjs.map} +1 -1
- package/build/{toggle-I6YvEX4w.js → toggle-D1nXs-LD.js} +4 -4
- package/build/{toggle-I6YvEX4w.js.map → toggle-D1nXs-LD.js.map} +1 -1
- package/build/{typography-B2KioMfq.js → typography-07KEDl9_.js} +4 -4
- package/build/{typography-B2KioMfq.js.map → typography-07KEDl9_.js.map} +1 -1
- package/build/{typography-DcxhX_9e.cjs → typography-BKp4OAQI.cjs} +2 -2
- package/build/{typography-DcxhX_9e.cjs.map → typography-BKp4OAQI.cjs.map} +1 -1
- package/build/{utils-Cona48dZ.js → utils-BRgi6734.js} +1 -1
- package/build/{utils-Cona48dZ.js.map → utils-BRgi6734.js.map} +1 -1
- package/build/{utils-DtinAjAU.cjs → utils-DCIq-5FL.cjs} +1 -1
- package/build/{utils-DtinAjAU.cjs.map → utils-DCIq-5FL.cjs.map} +1 -1
- package/package.json +3 -4
- package/build/date-picker-CPNNIEa-.cjs +0 -3
- package/build/date-picker-CPNNIEa-.cjs.map +0 -1
- package/build/date-picker-Uuce_InW.js +0 -689
- package/build/date-picker-Uuce_InW.js.map +0 -1
- package/build/icon-CoIQwke4.cjs +0 -3
- package/build/icon-CoIQwke4.cjs.map +0 -1
- package/build/icon-DzAWOQJg.js +0 -277
- package/build/icon-DzAWOQJg.js.map +0 -1
- package/build/pagination-Dbs4Lrpt.cjs +0 -3
- package/build/preview-dT7fmxcc.cjs +0 -3
package/build/{context-local-storage-Bb_vktd8.js.map → context-local-storage-DA_whw_k.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-local-storage-
|
|
1
|
+
{"version":3,"file":"context-local-storage-DA_whw_k.js","names":[],"sources":["../src/contexts/context-local-storage/context.tsx","../src/contexts/context-local-storage/context.hooks.ts"],"sourcesContent":["import { logger } from '@local/cores/logger';\n\nimport { createContext, FC, useCallback, useEffect, useState } from 'react';\n\nimport { ILocalStorageContext, ILocalStorageProvider, IValidLocalStorageObject } from './context.types';\n\nexport const LocalStorageContext = createContext<ILocalStorageContext | null>(null);\n\n/**\n * Provider component for managing local storage.\n *\n * @remarks\n * The local storage is typed using the `jenesei-kit-react.d.ts` file:\n *\n * ```typescript\n * import '@jenesei-software/jenesei-kit-react'\n *\n * declare module '@jenesei-software/jenesei-kit-react' {\n * export interface IValidLocalStorageObject {\n * access_token: string\n * refresh_token: string\n * }\n * }\n * ```\n */\nexport const ProviderLocalStorage: FC<ILocalStorageProvider> = (props) => {\n const {\n getLocalStorage,\n setLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n } = useProviderLocalStorage(props);\n\n return (\n <LocalStorageContext.Provider\n value={{\n getLocalStorage,\n setLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n }}\n >\n {props.children}\n </LocalStorageContext.Provider>\n );\n};\n\nconst useProviderLocalStorage = (props: ILocalStorageProvider) => {\n const [localStorageValues, setLocalStorageValues] = useState<IValidLocalStorageObject>();\n\n const getLocalStorage = useCallback(\n <K extends keyof IValidLocalStorageObject>(name: K): IValidLocalStorageObject[K] | undefined => {\n const localStorageValue = localStorage.getItem(name);\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [name]: localStorageValue ? JSON.parse(localStorageValue) : undefined,\n }));\n return localStorageValue ? JSON.parse(localStorageValue) : undefined;\n },\n [],\n );\n\n const changeLocalStorage = useCallback(\n <K extends keyof IValidLocalStorageObject>(name: K, value: IValidLocalStorageObject[K]) => {\n try {\n localStorage.setItem(String(name), JSON.stringify(value));\n setLocalStorageValues((prevState) => ({ ...prevState, [name]: value }));\n } catch {\n logger.info(`Provider LocalStorage. ChangeLocalStorage error - key:${name}, value:${value}.`);\n }\n },\n [],\n );\n\n const removeLocalStorageValue = useCallback(<K extends keyof IValidLocalStorageObject>(name: K) => {\n try {\n localStorage.removeItem(String(name));\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [name]: undefined,\n }));\n } catch {\n logger.info(`Provider LocalStorage. RemoveLocalStorageValue error - key:${name}.`);\n }\n }, []);\n\n const removeLocalStorageValues = useCallback(() => {\n if (props.validate?.validateKeys) {\n props.validate?.validateKeys.forEach((key) => {\n removeLocalStorageValue(String(key) as never);\n });\n } else {\n logger.info('Provider LocalStorage. RemoveLocalStorageValues - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n const checkLocalStorage = useCallback(() => {\n if (props.validate?.validateKeys && props.validate.getValidateLocalStorageValue) {\n props.validate?.validateKeys.forEach((key) => {\n const localStorageValue = localStorage.getItem(key);\n if (localStorageValue) {\n try {\n const parsedValue = JSON.parse(localStorageValue);\n if (!props.validate?.getValidateLocalStorageValue(String(key) as never, parsedValue as never)) {\n removeLocalStorageValue(String(key) as never);\n } else {\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [key]: parsedValue,\n }));\n }\n } catch {\n removeLocalStorageValue(String(key) as never);\n }\n } else {\n removeLocalStorageValue(String(key) as never);\n }\n });\n } else {\n logger.info('Provider LocalStorage. CheckLocalStorage - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n useEffect(() => {\n checkLocalStorage();\n }, [checkLocalStorage]);\n\n useEffect(() => {\n return () => {\n setLocalStorageValues(undefined);\n };\n }, []);\n\n return {\n getLocalStorage,\n setLocalStorage: changeLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n };\n};\n","import { useContext } from 'react';\n\nimport { LocalStorageContext } from './context';\nimport { ILocalStorageContext } from './context.types';\n\n/**\n * Custom hook to access the LocalStorageContext.\n */\nexport const useLocalStorage = (): ILocalStorageContext => {\n const context = useContext(LocalStorageContext);\n if (!context) {\n throw new Error('useLocalStorage must be used within an ProviderLocalStorage');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const P=require("./chunk-Dd8m0Ver.cjs"),g=require("./logger-
|
|
1
|
+
const P=require("./chunk-Dd8m0Ver.cjs"),g=require("./logger-D3Xu5ef3.cjs");let L=require("react/jsx-runtime"),r=require("react");var d=(0,r.createContext)(null),f=a=>{const{getLocalStorage:i,setLocalStorage:l,removeLocalStorageValue:n,removeLocalStorageValues:u,checkLocalStorage:o,localStorageValues:S}=V(a);return(0,L.jsx)(d.Provider,{value:{getLocalStorage:i,setLocalStorage:l,removeLocalStorageValue:n,removeLocalStorageValues:u,checkLocalStorage:o,localStorageValues:S},children:a.children})},V=a=>{const[i,l]=(0,r.useState)(),n=(0,r.useCallback)(e=>{const t=localStorage.getItem(e);return l(c=>({...c,[e]:t?JSON.parse(t):void 0})),t?JSON.parse(t):void 0},[]),u=(0,r.useCallback)((e,t)=>{try{localStorage.setItem(String(e),JSON.stringify(t)),l(c=>({...c,[e]:t}))}catch{g.logger.info(`Provider LocalStorage. ChangeLocalStorage error - key:${e}, value:${t}.`)}},[]),o=(0,r.useCallback)(e=>{try{localStorage.removeItem(String(e)),l(t=>({...t,[e]:void 0}))}catch{g.logger.info(`Provider LocalStorage. RemoveLocalStorageValue error - key:${e}.`)}},[]),S=(0,r.useCallback)(()=>{a.validate?.validateKeys?a.validate?.validateKeys.forEach(e=>{o(String(e))}):g.logger.info("Provider LocalStorage. RemoveLocalStorageValues - validate is not defined.")},[a.validate,o]),s=(0,r.useCallback)(()=>{a.validate?.validateKeys&&a.validate.getValidateLocalStorageValue?a.validate?.validateKeys.forEach(e=>{const t=localStorage.getItem(e);if(t)try{const c=JSON.parse(t);a.validate?.getValidateLocalStorageValue(String(e),c)?l(v=>({...v,[e]:c})):o(String(e))}catch{o(String(e))}else o(String(e))}):g.logger.info("Provider LocalStorage. CheckLocalStorage - validate is not defined.")},[a.validate,o]);return(0,r.useEffect)(()=>{s()},[s]),(0,r.useEffect)(()=>()=>{l(void 0)},[]),{getLocalStorage:n,setLocalStorage:u,removeLocalStorageValue:o,removeLocalStorageValues:S,checkLocalStorage:s,localStorageValues:i}},h=()=>{const a=(0,r.useContext)(d);if(!a)throw new Error("useLocalStorage must be used within an ProviderLocalStorage");return a};Object.defineProperty(exports,"ProviderLocalStorage",{enumerable:!0,get:function(){return f}});Object.defineProperty(exports,"useLocalStorage",{enumerable:!0,get:function(){return h}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=context-local-storage-
|
|
3
|
+
//# sourceMappingURL=context-local-storage-D_x8dwxM.cjs.map
|
package/build/{context-local-storage-DUKHVPAA.cjs.map → context-local-storage-D_x8dwxM.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-local-storage-
|
|
1
|
+
{"version":3,"file":"context-local-storage-D_x8dwxM.cjs","names":[],"sources":["../src/contexts/context-local-storage/context.tsx","../src/contexts/context-local-storage/context.hooks.ts"],"sourcesContent":["import { logger } from '@local/cores/logger';\n\nimport { createContext, FC, useCallback, useEffect, useState } from 'react';\n\nimport { ILocalStorageContext, ILocalStorageProvider, IValidLocalStorageObject } from './context.types';\n\nexport const LocalStorageContext = createContext<ILocalStorageContext | null>(null);\n\n/**\n * Provider component for managing local storage.\n *\n * @remarks\n * The local storage is typed using the `jenesei-kit-react.d.ts` file:\n *\n * ```typescript\n * import '@jenesei-software/jenesei-kit-react'\n *\n * declare module '@jenesei-software/jenesei-kit-react' {\n * export interface IValidLocalStorageObject {\n * access_token: string\n * refresh_token: string\n * }\n * }\n * ```\n */\nexport const ProviderLocalStorage: FC<ILocalStorageProvider> = (props) => {\n const {\n getLocalStorage,\n setLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n } = useProviderLocalStorage(props);\n\n return (\n <LocalStorageContext.Provider\n value={{\n getLocalStorage,\n setLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n }}\n >\n {props.children}\n </LocalStorageContext.Provider>\n );\n};\n\nconst useProviderLocalStorage = (props: ILocalStorageProvider) => {\n const [localStorageValues, setLocalStorageValues] = useState<IValidLocalStorageObject>();\n\n const getLocalStorage = useCallback(\n <K extends keyof IValidLocalStorageObject>(name: K): IValidLocalStorageObject[K] | undefined => {\n const localStorageValue = localStorage.getItem(name);\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [name]: localStorageValue ? JSON.parse(localStorageValue) : undefined,\n }));\n return localStorageValue ? JSON.parse(localStorageValue) : undefined;\n },\n [],\n );\n\n const changeLocalStorage = useCallback(\n <K extends keyof IValidLocalStorageObject>(name: K, value: IValidLocalStorageObject[K]) => {\n try {\n localStorage.setItem(String(name), JSON.stringify(value));\n setLocalStorageValues((prevState) => ({ ...prevState, [name]: value }));\n } catch {\n logger.info(`Provider LocalStorage. ChangeLocalStorage error - key:${name}, value:${value}.`);\n }\n },\n [],\n );\n\n const removeLocalStorageValue = useCallback(<K extends keyof IValidLocalStorageObject>(name: K) => {\n try {\n localStorage.removeItem(String(name));\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [name]: undefined,\n }));\n } catch {\n logger.info(`Provider LocalStorage. RemoveLocalStorageValue error - key:${name}.`);\n }\n }, []);\n\n const removeLocalStorageValues = useCallback(() => {\n if (props.validate?.validateKeys) {\n props.validate?.validateKeys.forEach((key) => {\n removeLocalStorageValue(String(key) as never);\n });\n } else {\n logger.info('Provider LocalStorage. RemoveLocalStorageValues - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n const checkLocalStorage = useCallback(() => {\n if (props.validate?.validateKeys && props.validate.getValidateLocalStorageValue) {\n props.validate?.validateKeys.forEach((key) => {\n const localStorageValue = localStorage.getItem(key);\n if (localStorageValue) {\n try {\n const parsedValue = JSON.parse(localStorageValue);\n if (!props.validate?.getValidateLocalStorageValue(String(key) as never, parsedValue as never)) {\n removeLocalStorageValue(String(key) as never);\n } else {\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [key]: parsedValue,\n }));\n }\n } catch {\n removeLocalStorageValue(String(key) as never);\n }\n } else {\n removeLocalStorageValue(String(key) as never);\n }\n });\n } else {\n logger.info('Provider LocalStorage. CheckLocalStorage - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n useEffect(() => {\n checkLocalStorage();\n }, [checkLocalStorage]);\n\n useEffect(() => {\n return () => {\n setLocalStorageValues(undefined);\n };\n }, []);\n\n return {\n getLocalStorage,\n setLocalStorage: changeLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n };\n};\n","import { useContext } from 'react';\n\nimport { LocalStorageContext } from './context';\nimport { ILocalStorageContext } from './context.types';\n\n/**\n * Custom hook to access the LocalStorageContext.\n */\nexport const useLocalStorage = (): ILocalStorageContext => {\n const context = useContext(LocalStorageContext);\n if (!context) {\n throw new Error('useLocalStorage must be used within an ProviderLocalStorage');\n }\n return context;\n};\n"],"mappings":"iIAMA,IAAa,KAAA,EAAA,eAAiE,IAAA,EAmBjE,EAAmD,GAAU,CACxE,KAAM,CACJ,gBAAA,EACA,gBAAA,EACA,wBAAA,EACA,yBAAA,EACA,kBAAA,EACA,mBAAA,CAAA,EACE,EAAwB,CAAA,EAE5B,SACE,EAAA,KAAC,EAAoB,SAArB,CACE,MAAO,CACL,gBAAA,EACA,gBAAA,EACA,wBAAA,EACA,yBAAA,EACA,kBAAA,EACA,mBAAA,YAGD,EAAM,SACsB,GAI7B,EAA2B,GAAiC,CAChE,KAAM,CAAC,EAAoB,CAAA,KAAA,EAAA,UAAA,EAErB,KAAA,EAAA,aACuC,GAAqD,CAC9F,MAAM,EAAoB,aAAa,QAAQ,CAAA,EAC/C,OAAA,EAAuB,IAAe,CACpC,GAAG,GACF,CAAA,EAAO,EAAoB,KAAK,MAAM,CAAA,EAAqB,QAC7D,EACM,EAAoB,KAAK,MAAM,CAAA,EAAqB,QAE7D,CAAA,CAAE,EAGE,KAAA,EAAA,aAAA,CACuC,EAAS,IAAuC,CACzF,GAAI,CACF,aAAa,QAAQ,OAAO,CAAA,EAAO,KAAK,UAAU,CAAA,CAAM,EACxD,EAAuB,IAAe,CAAE,GAAG,GAAY,CAAA,EAAO,GAAO,OAC/D,CACN,EAAA,OAAO,KAAK,yDAAyD,CAAA,WAAe,CAAA,GAAM,IAG9F,CAAA,CAAE,EAGE,KAAA,EAAA,aAAiF,GAAY,CACjG,GAAI,CACF,aAAa,WAAW,OAAO,CAAA,CAAK,EACpC,EAAuB,IAAe,CACpC,GAAG,GACF,CAAA,EAAO,QACT,OACK,CACN,EAAA,OAAO,KAAK,8DAA8D,CAAA,GAAK,IAEhF,CAAA,CAAE,EAEC,KAAA,EAAA,aAAA,IAA6C,CAC7C,EAAM,UAAU,aAClB,EAAM,UAAU,aAAa,QAAS,GAAQ,CAC5C,EAAwB,OAAO,CAAA,CAAI,IAGrC,EAAA,OAAO,KAAK,4EAAA,GAEb,CAAC,EAAM,SAAU,CAAA,CAAwB,EAEtC,KAAA,EAAA,aAAA,IAAsC,CACtC,EAAM,UAAU,cAAgB,EAAM,SAAS,6BACjD,EAAM,UAAU,aAAa,QAAS,GAAQ,CAC5C,MAAM,EAAoB,aAAa,QAAQ,CAAA,EAC/C,GAAI,EACF,GAAI,CACF,MAAM,EAAc,KAAK,MAAM,CAAA,EAC1B,EAAM,UAAU,6BAA6B,OAAO,CAAA,EAAe,CAAA,EAGtE,EAAuB,IAAe,CACpC,GAAG,GACF,CAAA,EAAM,GACR,EALD,EAAwB,OAAO,CAAA,CAAI,OAO/B,CACN,EAAwB,OAAO,CAAA,CAAI,OAGrC,EAAwB,OAAO,CAAA,CAAI,IAIvC,EAAA,OAAO,KAAK,qEAAA,GAEb,CAAC,EAAM,SAAU,CAAA,CAAwB,EAE5C,SAAA,EAAA,WAAA,IAAgB,CACd,EAAA,GACC,CAAC,CAAA,CAAkB,KAEtB,EAAA,WAAA,IACE,IAAa,CACX,EAAsB,MAAA,GAEvB,CAAA,CAAE,EAEE,CACL,gBAAA,EACA,gBAAiB,EACjB,wBAAA,EACA,yBAAA,EACA,kBAAA,EACA,mBAAA,ICvIS,EAAA,IAA8C,CACzD,MAAM,KAAA,EAAA,YAAqB,CAAA,EAC3B,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,6DAAA,EAElB,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-local-storage-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-local-storage-D_x8dwxM.cjs");exports.ProviderLocalStorage=e.ProviderLocalStorage;exports.useLocalStorage=e.useLocalStorage;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const v=require("./chunk-Dd8m0Ver.cjs"),s=require("./logger-
|
|
1
|
+
const v=require("./chunk-Dd8m0Ver.cjs"),s=require("./logger-D3Xu5ef3.cjs");let f=require("react/jsx-runtime"),e=require("react");var c=(0,e.createContext)(null),d=o=>{const{pushNotificationSupported:i}=g(),{isBiometricSupported:t}=P(),{notificationPermission:r,requestNotificationPermission:a,isNotificationPermissionLoading:n}=w(),{geolocationPermission:u,requestGeolocationPermission:l}=m();return(0,f.jsx)(c.Provider,{value:{isBiometricSupported:t,geolocationPermission:u,pushNotificationSupported:i,requestGeolocationPermission:l,notificationPermission:r,requestNotificationPermission:a,isNotificationPermissionLoading:n},children:o.children})},P=()=>{const[o,i]=(0,e.useState)(!1);return(0,e.useEffect)(()=>{(async()=>{try{window.PublicKeyCredential&&typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable=="function"?i(await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()):i(!1)}catch(r){s.logger.error("Error checking biometric availability:",r),i(!1)}})()},[]),{isBiometricSupported:o}},m=()=>{const[o,i]=(0,e.useState)(null);return(0,e.useEffect)(()=>{"permissions"in window.navigator&&window.navigator.permissions.query({name:"geolocation"}).then(t=>{i(t.state),t.onchange=()=>{i(t.state)}})},[]),{geolocationPermission:o,requestGeolocationPermission:(0,e.useCallback)(()=>{"geolocation"in window.navigator?window.navigator.geolocation.getCurrentPosition(()=>i("granted"),()=>i("denied")):s.logger.warn("Provider Permission. Geolocation is not supported in this browser.")},[])}},w=()=>{const[o,i]=(0,e.useState)(null),[t,r]=(0,e.useState)(!1),a=(0,e.useCallback)(async()=>{if(r(!0),"Notification"in window)try{r(!0);const n=await window.Notification.requestPermission();return i(n),r(!1),n}catch(n){s.logger.error("Provider Permission. Failed to request notification permission:",n)}else s.logger.warn("Provider Permission. Notifications are not supported in this browser.");r(!1)},[]);return(0,e.useEffect)(()=>{"Notification"in window&&i(window.Notification.permission)},[]),{notificationPermission:o,requestNotificationPermission:a,isNotificationPermissionLoading:t}},g=()=>{const[o,i]=(0,e.useState)(!1);return(0,e.useEffect)(()=>{"PushManager"in window&&i(!0)},[]),{pushNotificationSupported:o}},p=()=>{const o=(0,e.useContext)(c);if(!o)throw new Error("usePermission must be used within an PermissionProvider");return o};Object.defineProperty(exports,"ProviderPermission",{enumerable:!0,get:function(){return d}});Object.defineProperty(exports,"usePermission",{enumerable:!0,get:function(){return p}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=context-permission-
|
|
3
|
+
//# sourceMappingURL=context-permission-BP9hPUcR.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-permission-
|
|
1
|
+
{"version":3,"file":"context-permission-BP9hPUcR.cjs","names":[],"sources":["../src/contexts/context-permission/context.tsx","../src/contexts/context-permission/context.hooks.ts"],"sourcesContent":["import { logger } from '@local/cores/logger';\n\nimport { createContext, useCallback, useEffect, useState } from 'react';\n\nimport { IPermissionContext, IPermissionProvider } from './context.types';\n\nexport const PermissionContext = createContext<IPermissionContext | null>(null);\n\nexport const ProviderPermission = (props: IPermissionProvider) => {\n const { pushNotificationSupported } = usePushNotificationSupported();\n const { isBiometricSupported } = useBiometricSupported();\n const { notificationPermission, requestNotificationPermission, isNotificationPermissionLoading } =\n useNotificationPermission();\n const { geolocationPermission, requestGeolocationPermission } = useGeolocationPermission();\n\n return (\n <PermissionContext.Provider\n value={{\n isBiometricSupported,\n geolocationPermission,\n pushNotificationSupported,\n requestGeolocationPermission,\n notificationPermission,\n requestNotificationPermission,\n isNotificationPermissionLoading,\n }}\n >\n {props.children}\n </PermissionContext.Provider>\n );\n};\n\nconst useBiometricSupported = () => {\n const [isBiometricSupported, setIsBiometricSupported] = useState(false);\n\n useEffect(() => {\n const checkBiometricAvailability = async () => {\n try {\n if (\n window.PublicKeyCredential &&\n typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable === 'function'\n ) {\n const available = await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n setIsBiometricSupported(available);\n } else {\n setIsBiometricSupported(false);\n }\n } catch (error) {\n logger.error('Error checking biometric availability:', error);\n setIsBiometricSupported(false);\n }\n };\n\n checkBiometricAvailability();\n }, []);\n\n return { isBiometricSupported };\n};\n\nconst useGeolocationPermission = () => {\n // eslint-disable-next-line no-undef\n const [geolocationPermission, setGeolocationPermission] = useState<PermissionState | null>(null);\n\n useEffect(() => {\n if ('permissions' in window.navigator) {\n window.navigator.permissions.query({ name: 'geolocation' }).then((permissionStatus) => {\n setGeolocationPermission(permissionStatus.state);\n permissionStatus.onchange = () => {\n setGeolocationPermission(permissionStatus.state);\n };\n });\n }\n }, []);\n\n const requestGeolocationPermission = useCallback(() => {\n if ('geolocation' in window.navigator) {\n window.navigator.geolocation.getCurrentPosition(\n () => setGeolocationPermission('granted'),\n () => setGeolocationPermission('denied'),\n );\n } else {\n logger.warn('Provider Permission. Geolocation is not supported in this browser.');\n }\n }, []);\n\n return { geolocationPermission, requestGeolocationPermission };\n};\n\nconst useNotificationPermission = () => {\n // eslint-disable-next-line no-undef\n const [notificationPermission, setNotificationPermission] = useState<NotificationPermission | null>(null);\n const [isNotificationPermissionLoading, setIsNotificationPermissionLoading] = useState<boolean>(false);\n\n const requestNotificationPermission = useCallback(async () => {\n setIsNotificationPermissionLoading(true);\n if ('Notification' in window) {\n try {\n setIsNotificationPermissionLoading(true);\n const permission = await window.Notification.requestPermission();\n setNotificationPermission(permission);\n setIsNotificationPermissionLoading(false);\n return permission;\n } catch (error) {\n logger.error('Provider Permission. Failed to request notification permission:', error);\n }\n } else {\n logger.warn('Provider Permission. Notifications are not supported in this browser.');\n }\n setIsNotificationPermissionLoading(false);\n }, []);\n\n useEffect(() => {\n if ('Notification' in window) {\n setNotificationPermission(window.Notification.permission);\n }\n }, []);\n\n return { notificationPermission, requestNotificationPermission, isNotificationPermissionLoading };\n};\n\nconst usePushNotificationSupported = () => {\n const [pushNotificationSupported, setPushNotificationSupported] = useState<boolean>(false);\n\n useEffect(() => {\n if ('PushManager' in window) {\n setPushNotificationSupported(true);\n }\n }, []);\n\n return { pushNotificationSupported };\n};\n","import { useContext } from 'react';\n\nimport { PermissionContext } from './context';\nimport { IPermissionContext } from './context.types';\n\n/**\n * Custom hook to access the PermissionContext.\n */\nexport const usePermission = (): IPermissionContext => {\n const context = useContext(PermissionContext);\n if (!context) {\n throw new Error('usePermission must be used within an PermissionProvider');\n }\n return context;\n};\n"],"mappings":"iIAMA,IAAa,KAAA,EAAA,eAA6D,IAAA,EAE7D,EAAsB,GAA+B,CAChE,KAAM,CAAE,0BAAA,CAAA,EAA8B,EAAA,EAChC,CAAE,qBAAA,CAAA,EAAyB,EAAA,EAC3B,CAAE,uBAAA,EAAwB,8BAAA,EAA+B,gCAAA,CAAA,EAC7D,EAAA,EACI,CAAE,sBAAA,EAAuB,6BAAA,CAAA,EAAiC,EAAA,EAEhE,SACE,EAAA,KAAC,EAAkB,SAAnB,CACE,MAAO,CACL,qBAAA,EACA,sBAAA,EACA,0BAAA,EACA,6BAAA,EACA,uBAAA,EACA,8BAAA,EACA,gCAAA,YAGD,EAAM,SACoB,GAI3B,EAAA,IAA8B,CAClC,KAAM,CAAC,EAAsB,CAAA,KAAA,EAAA,UAAoC,EAAA,EAEjE,SAAA,EAAA,WAAA,IAAgB,EACqB,SAAY,CAC7C,GAAI,CAEA,OAAO,qBACP,OAAO,OAAO,oBAAoB,+CAAkD,WAGpF,EADkB,MAAM,OAAO,oBAAoB,8CAAA,CAA+C,EAGlG,EAAwB,EAAA,QAEnB,EAAO,CACd,EAAA,OAAO,MAAM,yCAA0C,CAAA,EACvD,EAAwB,EAAA,KAI5B,GACC,CAAA,CAAE,EAEE,CAAE,qBAAA,CAAA,GAGL,EAAA,IAAiC,CAErC,KAAM,CAAC,EAAuB,CAAA,KAAA,EAAA,UAA6D,IAAA,EAE3F,SAAA,EAAA,WAAA,IAAgB,CACV,gBAAiB,OAAO,WAC1B,OAAO,UAAU,YAAY,MAAM,CAAE,KAAM,aAAA,CAAe,EAAE,KAAM,GAAqB,CACrF,EAAyB,EAAiB,KAAA,EAC1C,EAAiB,SAAA,IAAiB,CAChC,EAAyB,EAAiB,KAAA,MAI/C,CAAA,CAAE,EAaE,CAAE,sBAAA,EAAuB,gCAAA,EAAA,aAAA,IAXuB,CACjD,gBAAiB,OAAO,UAC1B,OAAO,UAAU,YAAY,mBAAA,IACrB,EAAyB,SAAA,EAAU,IACnC,EAAyB,QAAA,CAAS,EAG1C,EAAA,OAAO,KAAK,oEAAA,GAEb,CAAA,CAAE,IAKD,EAAA,IAAkC,CAEtC,KAAM,CAAC,EAAwB,CAAA,KAAA,EAAA,UAAqE,IAAA,EAC9F,CAAC,EAAiC,CAAA,KAAA,EAAA,UAAwD,EAAA,EAE1F,KAAA,EAAA,aAA4C,SAAY,CAE5D,GADA,EAAmC,EAAA,EAC/B,iBAAkB,OACpB,GAAI,CACF,EAAmC,EAAA,EACnC,MAAM,EAAa,MAAM,OAAO,aAAa,kBAAA,EAC7C,OAAA,EAA0B,CAAA,EAC1B,EAAmC,EAAA,EAC5B,QACA,EAAO,CACd,EAAA,OAAO,MAAM,kEAAmE,CAAA,OAGlF,EAAA,OAAO,KAAK,uEAAA,EAEd,EAAmC,EAAA,GAClC,CAAA,CAAE,EAEL,SAAA,EAAA,WAAA,IAAgB,CACV,iBAAkB,QACpB,EAA0B,OAAO,aAAa,UAAA,GAE/C,CAAA,CAAE,EAEE,CAAE,uBAAA,EAAwB,8BAAA,EAA+B,gCAAA,IAG5D,EAAA,IAAqC,CACzC,KAAM,CAAC,EAA2B,CAAA,KAAA,EAAA,UAAkD,EAAA,EAEpF,SAAA,EAAA,WAAA,IAAgB,CACV,gBAAiB,QACnB,EAA6B,EAAA,GAE9B,CAAA,CAAE,EAEE,CAAE,0BAAA,CAAA,GCzHE,EAAA,IAA0C,CACrD,MAAM,KAAA,EAAA,YAAqB,CAAA,EAC3B,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,yDAAA,EAElB,OAAO"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as s } from "./logger-
|
|
1
|
+
import { t as s } from "./logger-QC3A33gh.js";
|
|
2
2
|
import { jsx as d } from "react/jsx-runtime";
|
|
3
3
|
import { createContext as P, useCallback as u, useContext as w, useEffect as a, useState as n } from "react";
|
|
4
4
|
var l = P(null), C = (o) => {
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
q as t
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
//# sourceMappingURL=context-permission-
|
|
77
|
+
//# sourceMappingURL=context-permission-Cj70kL4A.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-permission-
|
|
1
|
+
{"version":3,"file":"context-permission-Cj70kL4A.js","names":[],"sources":["../src/contexts/context-permission/context.tsx","../src/contexts/context-permission/context.hooks.ts"],"sourcesContent":["import { logger } from '@local/cores/logger';\n\nimport { createContext, useCallback, useEffect, useState } from 'react';\n\nimport { IPermissionContext, IPermissionProvider } from './context.types';\n\nexport const PermissionContext = createContext<IPermissionContext | null>(null);\n\nexport const ProviderPermission = (props: IPermissionProvider) => {\n const { pushNotificationSupported } = usePushNotificationSupported();\n const { isBiometricSupported } = useBiometricSupported();\n const { notificationPermission, requestNotificationPermission, isNotificationPermissionLoading } =\n useNotificationPermission();\n const { geolocationPermission, requestGeolocationPermission } = useGeolocationPermission();\n\n return (\n <PermissionContext.Provider\n value={{\n isBiometricSupported,\n geolocationPermission,\n pushNotificationSupported,\n requestGeolocationPermission,\n notificationPermission,\n requestNotificationPermission,\n isNotificationPermissionLoading,\n }}\n >\n {props.children}\n </PermissionContext.Provider>\n );\n};\n\nconst useBiometricSupported = () => {\n const [isBiometricSupported, setIsBiometricSupported] = useState(false);\n\n useEffect(() => {\n const checkBiometricAvailability = async () => {\n try {\n if (\n window.PublicKeyCredential &&\n typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable === 'function'\n ) {\n const available = await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n setIsBiometricSupported(available);\n } else {\n setIsBiometricSupported(false);\n }\n } catch (error) {\n logger.error('Error checking biometric availability:', error);\n setIsBiometricSupported(false);\n }\n };\n\n checkBiometricAvailability();\n }, []);\n\n return { isBiometricSupported };\n};\n\nconst useGeolocationPermission = () => {\n // eslint-disable-next-line no-undef\n const [geolocationPermission, setGeolocationPermission] = useState<PermissionState | null>(null);\n\n useEffect(() => {\n if ('permissions' in window.navigator) {\n window.navigator.permissions.query({ name: 'geolocation' }).then((permissionStatus) => {\n setGeolocationPermission(permissionStatus.state);\n permissionStatus.onchange = () => {\n setGeolocationPermission(permissionStatus.state);\n };\n });\n }\n }, []);\n\n const requestGeolocationPermission = useCallback(() => {\n if ('geolocation' in window.navigator) {\n window.navigator.geolocation.getCurrentPosition(\n () => setGeolocationPermission('granted'),\n () => setGeolocationPermission('denied'),\n );\n } else {\n logger.warn('Provider Permission. Geolocation is not supported in this browser.');\n }\n }, []);\n\n return { geolocationPermission, requestGeolocationPermission };\n};\n\nconst useNotificationPermission = () => {\n // eslint-disable-next-line no-undef\n const [notificationPermission, setNotificationPermission] = useState<NotificationPermission | null>(null);\n const [isNotificationPermissionLoading, setIsNotificationPermissionLoading] = useState<boolean>(false);\n\n const requestNotificationPermission = useCallback(async () => {\n setIsNotificationPermissionLoading(true);\n if ('Notification' in window) {\n try {\n setIsNotificationPermissionLoading(true);\n const permission = await window.Notification.requestPermission();\n setNotificationPermission(permission);\n setIsNotificationPermissionLoading(false);\n return permission;\n } catch (error) {\n logger.error('Provider Permission. Failed to request notification permission:', error);\n }\n } else {\n logger.warn('Provider Permission. Notifications are not supported in this browser.');\n }\n setIsNotificationPermissionLoading(false);\n }, []);\n\n useEffect(() => {\n if ('Notification' in window) {\n setNotificationPermission(window.Notification.permission);\n }\n }, []);\n\n return { notificationPermission, requestNotificationPermission, isNotificationPermissionLoading };\n};\n\nconst usePushNotificationSupported = () => {\n const [pushNotificationSupported, setPushNotificationSupported] = useState<boolean>(false);\n\n useEffect(() => {\n if ('PushManager' in window) {\n setPushNotificationSupported(true);\n }\n }, []);\n\n return { pushNotificationSupported };\n};\n","import { useContext } from 'react';\n\nimport { PermissionContext } from './context';\nimport { IPermissionContext } from './context.types';\n\n/**\n * Custom hook to access the PermissionContext.\n */\nexport const usePermission = (): IPermissionContext => {\n const context = useContext(PermissionContext);\n if (!context) {\n throw new Error('usePermission must be used within an PermissionProvider');\n }\n return context;\n};\n"],"mappings":";;;AAMA,IAAa,IAAoB,EAAyC,IAAA,GAE7D,IAAA,CAAsB,MAA+B;AAChE,QAAM,EAAE,2BAAA,EAAA,IAA8B,EAAA,GAChC,EAAE,sBAAA,EAAA,IAAyB,EAAA,GAC3B,EAAE,wBAAA,GAAwB,+BAAA,GAA+B,iCAAA,EAAA,IAC7D,EAAA,GACI,EAAE,uBAAA,GAAuB,8BAAA,EAAA,IAAiC,EAAA;AAEhE,SACE,gBAAA,EAAC,EAAkB,UAAnB;AAAA,IACE,OAAO;AAAA,MACL,sBAAA;AAAA,MACA,uBAAA;AAAA,MACA,2BAAA;AAAA,MACA,8BAAA;AAAA,MACA,wBAAA;AAAA,MACA,+BAAA;AAAA,MACA,iCAAA;AAAA;cAGD,EAAM;AAAA,GACoB;GAI3B,IAAA,MAA8B;AAClC,QAAM,CAAC,GAAsB,CAAA,IAA2B,EAAS,EAAA;AAEjE,SAAA,EAAA,MAAgB;AAkBd,KAjBmC,YAAY;AAC7C,UAAI;AACF,QACE,OAAO,uBACP,OAAO,OAAO,oBAAoB,iDAAkD,aAGpF,EADkB,MAAM,OAAO,oBAAoB,8CAAA,CAA+C,IAGlG,EAAwB,EAAA;AAAA,eAEnB,GAAO;AACd,QAAA,EAAO,MAAM,0CAA0C,CAAA,GACvD,EAAwB,EAAA;AAAA;OAI5B;AAAA,KACC,CAAA,CAAE,GAEE,EAAE,sBAAA,EAAA;GAGL,IAAA,MAAiC;AAErC,QAAM,CAAC,GAAuB,CAAA,IAA4B,EAAiC,IAAA;AAE3F,SAAA,EAAA,MAAgB;AACd,IAAI,iBAAiB,OAAO,aAC1B,OAAO,UAAU,YAAY,MAAM,EAAE,MAAM,cAAA,CAAe,EAAE,KAAA,CAAM,MAAqB;AACrF,MAAA,EAAyB,EAAiB,KAAA,GAC1C,EAAiB,WAAA,MAAiB;AAChC,QAAA,EAAyB,EAAiB,KAAA;AAAA;;KAI/C,CAAA,CAAE,GAaE;AAAA,IAAE,uBAAA;AAAA,IAAuB,8BAXK,EAAA,MAAkB;AACrD,MAAI,iBAAiB,OAAO,YAC1B,OAAO,UAAU,YAAY,mBAAA,MACrB,EAAyB,SAAA,GAAU,MACnC,EAAyB,QAAA,CAAS,IAG1C,EAAO,KAAK,oEAAA;AAAA,OAEb,CAAA,CAAE;AAAA;GAKD,IAAA,MAAkC;AAEtC,QAAM,CAAC,GAAwB,CAAA,IAA6B,EAAwC,IAAA,GAC9F,CAAC,GAAiC,CAAA,IAAsC,EAAkB,EAAA,GAE1F,IAAgC,EAAY,YAAY;AAE5D,QADA,EAAmC,EAAA,GAC/B,kBAAkB,OACpB,KAAI;AACF,MAAA,EAAmC,EAAA;AACnC,YAAM,IAAa,MAAM,OAAO,aAAa,kBAAA;AAC7C,aAAA,EAA0B,CAAA,GAC1B,EAAmC,EAAA,GAC5B;AAAA,aACA,GAAO;AACd,MAAA,EAAO,MAAM,mEAAmE,CAAA;AAAA;QAGlF,CAAA,EAAO,KAAK,uEAAA;AAEd,IAAA,EAAmC,EAAA;AAAA,KAClC,CAAA,CAAE;AAEL,SAAA,EAAA,MAAgB;AACd,IAAI,kBAAkB,UACpB,EAA0B,OAAO,aAAa,UAAA;AAAA,KAE/C,CAAA,CAAE,GAEE;AAAA,IAAE,wBAAA;AAAA,IAAwB,+BAAA;AAAA,IAA+B,iCAAA;AAAA;GAG5D,IAAA,MAAqC;AACzC,QAAM,CAAC,GAA2B,CAAA,IAAgC,EAAkB,EAAA;AAEpF,SAAA,EAAA,MAAgB;AACd,IAAI,iBAAiB,UACnB,EAA6B,EAAA;AAAA,KAE9B,CAAA,CAAE,GAEE,EAAE,2BAAA,EAAA;GCzHE,IAAA,MAA0C;AACrD,QAAM,IAAU,EAAW,CAAA;AAC3B,MAAI,CAAC,EACH,OAAM,IAAI,MAAM,yDAAA;AAElB,SAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-permission-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-permission-BP9hPUcR.cjs");exports.ProviderPermission=e.ProviderPermission;exports.usePermission=e.usePermission;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const m=require("./chunk-Dd8m0Ver.cjs"),s=require("./utils-
|
|
1
|
+
const m=require("./chunk-Dd8m0Ver.cjs"),s=require("./utils-DCIq-5FL.cjs"),f=require("./dist-SXTf0-_7.cjs");let l=require("react/jsx-runtime"),i=require("react");var p=f.createContext(null),w=typeof window<"u"&&window.innerWidth>window.innerHeight?"landscape":"portrait",h=()=>typeof window>"u"?"default":Object.entries(s.CSS_VARS.screen.breakpoint).map(([r,t])=>({key:r,bp:parseInt(t.replace(/\D/g,""),10)})).sort((r,t)=>r.bp-t.bp).find(({bp:r})=>window.innerWidth<=r)?.key??"default",b=h(),v=r=>{const[t,a]=(0,i.useState)(b),[d,o]=(0,i.useState)(w),n=(0,i.useRef)(null);n.current===null&&typeof window<"u"&&(n.current=Object.entries(s.CSS_VARS.screen.breakpoint).map(([e,u])=>({key:e,bp:parseInt(u.replace(/\D/g,""),10)})).sort((e,u)=>e.bp-u.bp).map(({key:e,bp:u})=>({key:e,mq:window.matchMedia(`(max-width: ${u}px)`)})));const c=(0,i.useCallback)(()=>{n.current&&a(n.current.find(({mq:e})=>e.matches)?.key??"default")},[]);return(0,i.useEffect)(()=>{if(typeof window>"u")return;const e=()=>{o(window.innerWidth>window.innerHeight?"landscape":"portrait")};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,i.useEffect)(()=>{if(n.current)return n.current.forEach(({mq:e})=>{e.addEventListener("change",c)}),c(),()=>{n.current?.forEach(({mq:e})=>{e.removeEventListener("change",c)})}},[c]),(0,l.jsx)(p.Provider,{value:{breakpoint:t,orientation:d,type:r.type??"breakpoint"},children:r.children})},S=r=>{const t=f.useContextSelector(p,a=>a?r.reduce((d,o)=>(d[o]=a[o],d),{}):null);if(!t)throw new Error("useScreenWidth must be used within an ProviderScreenWidth");return t};Object.defineProperty(exports,"ProviderScreenWidth",{enumerable:!0,get:function(){return v}});Object.defineProperty(exports,"useScreenWidth",{enumerable:!0,get:function(){return S}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=context-screen-width-
|
|
3
|
+
//# sourceMappingURL=context-screen-width-Cfe3atNC.cjs.map
|
package/build/{context-screen-width-hcRkxzy7.cjs.map → context-screen-width-Cfe3atNC.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-screen-width-
|
|
1
|
+
{"version":3,"file":"context-screen-width-Cfe3atNC.cjs","names":[],"sources":["../src/contexts/context-screen-width/context.tsx","../src/contexts/context-screen-width/context.hooks.ts"],"sourcesContent":["import { CSS_VARS, IThemeBreakpoint } from '@local/styles/utils';\n\nimport { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { createContext } from 'use-context-selector';\n\nimport { IScreenWidthContext, IScreenWidthProvider } from './context.types';\n\nexport const ScreenWidthContext = createContext<IScreenWidthContext | null>(null);\n\nconst defaultOrientation =\n typeof window !== 'undefined' && window.innerWidth > window.innerHeight ? 'landscape' : 'portrait';\n\nconst getDefaultBreakpoint = (): IScreenWidthContext['breakpoint'] => {\n if (typeof window === 'undefined') return 'default';\n\n const breakpoints = Object.entries(CSS_VARS.screen.breakpoint)\n .map(([key, value]) => ({\n key: key as keyof typeof CSS_VARS.screen.breakpoint,\n bp: parseInt(value.replace(/\\D/g, ''), 10),\n }))\n .sort((a, b) => a.bp - b.bp);\n\n const matched = breakpoints.find(({ bp }) => window.innerWidth <= bp);\n return matched?.key ?? 'default';\n};\n\nconst defaultBreakpoint: IScreenWidthContext['breakpoint'] = getDefaultBreakpoint();\n\nexport const ProviderScreenWidth: FC<IScreenWidthProvider> = (props) => {\n const [breakpoint, setBreakpoint] = useState<IScreenWidthContext['breakpoint']>(defaultBreakpoint);\n const [orientation, setOrientation] = useState<IScreenWidthContext['orientation']>(defaultOrientation);\n\n const queriesRef = useRef<Array<{\n key: IThemeBreakpoint;\n mq: MediaQueryList;\n }> | null>(null);\n\n if (queriesRef.current === null && typeof window !== 'undefined') {\n queriesRef.current = Object.entries(CSS_VARS.screen.breakpoint)\n .map(([key, value]) => {\n const bp = parseInt(value.replace(/\\D/g, ''), 10);\n return {\n key: key as keyof typeof CSS_VARS.screen.breakpoint,\n bp,\n };\n })\n .sort((a, b) => a.bp - b.bp)\n .map(({ key, bp }) => ({\n key,\n mq: window.matchMedia(`(max-width: ${bp}px)`),\n }));\n }\n\n const updateBreakpoint = useCallback(() => {\n if (!queriesRef.current) return;\n const matched = queriesRef.current.find(({ mq }) => mq.matches);\n setBreakpoint(matched?.key ?? 'default');\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n const newWidth = window.innerWidth;\n const newOrientation = newWidth > window.innerHeight ? 'landscape' : 'portrait';\n\n setOrientation(newOrientation);\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n if (!queriesRef.current) return;\n\n queriesRef.current.forEach(({ mq }) => {\n mq.addEventListener('change', updateBreakpoint);\n });\n updateBreakpoint();\n\n return () => {\n queriesRef.current?.forEach(({ mq }) => {\n mq.removeEventListener('change', updateBreakpoint);\n });\n };\n }, [updateBreakpoint]);\n\n return (\n <ScreenWidthContext.Provider\n value={{\n breakpoint,\n orientation,\n type: props.type ?? 'breakpoint',\n }}\n >\n {props.children}\n </ScreenWidthContext.Provider>\n );\n};\n","import { useContextSelector } from 'use-context-selector';\n\nimport { ScreenWidthContext } from './context';\nimport { IScreenWidthContext, IUseScreenWidthDependencies } from './context.types';\n\nexport const useScreenWidth = (props: IUseScreenWidthDependencies): IScreenWidthContext => {\n const context = useContextSelector(ScreenWidthContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useScreenWidth must be used within an ProviderScreenWidth');\n }\n return context;\n};\n"],"mappings":"iKAOA,IAAa,EAAqB,EAAA,cAA0C,IAAA,EAEtE,EACJ,OAAO,OAAW,KAAe,OAAO,WAAa,OAAO,YAAc,YAAc,WAEpF,EAAA,IACA,OAAO,OAAW,IAAoB,UAEtB,OAAO,QAAQ,EAAA,SAAS,OAAO,UAAA,EAChD,IAAA,CAAK,CAAC,EAAK,CAAA,KAAY,CACjB,IAAA,EACL,GAAI,SAAS,EAAM,QAAQ,MAAO,EAAA,EAAK,EAAA,GACxC,EACA,KAAA,CAAM,EAAG,IAAM,EAAE,GAAK,EAAE,EAAA,EAEC,KAAA,CAAM,CAAE,GAAA,CAAA,IAAS,OAAO,YAAc,CAAA,GAClD,KAAO,UAGnB,EAAuD,EAAA,EAEhD,EAAiD,GAAU,CACtE,KAAM,CAAC,EAAY,CAAA,KAAA,EAAA,UAA6D,CAAA,EAC1E,CAAC,EAAa,CAAA,KAAA,EAAA,UAA+D,CAAA,EAE7E,KAAA,EAAA,QAGK,IAAA,EAEP,EAAW,UAAY,MAAQ,OAAO,OAAW,MACnD,EAAW,QAAU,OAAO,QAAQ,EAAA,SAAS,OAAO,UAAA,EACjD,IAAA,CAAK,CAAC,EAAK,CAAA,KAEH,CACA,IAAA,EACL,GAHS,SAAS,EAAM,QAAQ,MAAO,EAAA,EAAK,EAAA,KAM/C,KAAA,CAAM,EAAG,IAAM,EAAE,GAAK,EAAE,EAAA,EACxB,IAAA,CAAK,CAAE,IAAA,EAAK,GAAA,CAAA,KAAU,CACrB,IAAA,EACA,GAAI,OAAO,WAAW,eAAe,CAAA,KAAG,GACzC,GAGL,MAAM,KAAA,EAAA,aAAA,IAAqC,CACpC,EAAW,SAEhB,EADgB,EAAW,QAAQ,KAAA,CAAM,CAAE,GAAA,CAAA,IAAS,EAAG,OAAA,GAChC,KAAO,SAAA,GAC7B,CAAA,CAAE,EAEL,SAAA,EAAA,WAAA,IAAgB,CACd,GAAI,OAAO,OAAW,IAAa,OAEnC,MAAM,EAAA,IAAqB,CAIzB,EAHiB,OAAO,WACU,OAAO,YAAc,YAAc,UAAA,GAKvE,cAAO,iBAAiB,SAAU,CAAA,EAClC,IAAa,OAAO,oBAAoB,SAAU,CAAA,GACjD,CAAA,CAAE,KAEL,EAAA,WAAA,IAAgB,CACd,GAAK,EAAW,QAEhB,OAAA,EAAW,QAAQ,QAAA,CAAS,CAAE,GAAA,CAAA,IAAS,CACrC,EAAG,iBAAiB,SAAU,CAAA,IAEhC,EAAA,EAEA,IAAa,CACX,EAAW,SAAS,QAAA,CAAS,CAAE,GAAA,CAAA,IAAS,CACtC,EAAG,oBAAoB,SAAU,CAAA,MAGpC,CAAC,CAAA,CAAiB,KAGnB,EAAA,KAAC,EAAmB,SAApB,CACE,MAAO,CACL,WAAA,EACA,YAAA,EACA,KAAM,EAAM,MAAQ,uBAGrB,EAAM,SACqB,GC5FrB,EAAkB,GAA4D,CACzF,MAAM,EAAU,EAAA,mBAAmB,EAAqB,GAC/C,EACH,EAAM,OAAA,CAAQ,EAAK,KACjB,EAAI,CAAA,EAAQ,EAAE,CAAA,EACP,GACN,CAAA,CAAE,EACL,MAEN,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,2DAAA,EAElB,OAAO"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as p } from "./utils-
|
|
2
|
-
import { n as w, t as l } from "./dist-
|
|
1
|
+
import { r as p } from "./utils-BRgi6734.js";
|
|
2
|
+
import { n as w, t as l } from "./dist-ck-7oUux.js";
|
|
3
3
|
import { jsx as h } from "react/jsx-runtime";
|
|
4
4
|
import { useCallback as m, useEffect as s, useRef as v, useState as c } from "react";
|
|
5
5
|
var f = l(null), b = typeof window < "u" && window.innerWidth > window.innerHeight ? "landscape" : "portrait", k = () => typeof window > "u" ? "default" : Object.entries(p.screen.breakpoint).map(([r, t]) => ({
|
|
@@ -50,4 +50,4 @@ export {
|
|
|
50
50
|
C as t
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
//# sourceMappingURL=context-screen-width-
|
|
53
|
+
//# sourceMappingURL=context-screen-width-Cq_B7IVp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-screen-width-
|
|
1
|
+
{"version":3,"file":"context-screen-width-Cq_B7IVp.js","names":[],"sources":["../src/contexts/context-screen-width/context.tsx","../src/contexts/context-screen-width/context.hooks.ts"],"sourcesContent":["import { CSS_VARS, IThemeBreakpoint } from '@local/styles/utils';\n\nimport { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { createContext } from 'use-context-selector';\n\nimport { IScreenWidthContext, IScreenWidthProvider } from './context.types';\n\nexport const ScreenWidthContext = createContext<IScreenWidthContext | null>(null);\n\nconst defaultOrientation =\n typeof window !== 'undefined' && window.innerWidth > window.innerHeight ? 'landscape' : 'portrait';\n\nconst getDefaultBreakpoint = (): IScreenWidthContext['breakpoint'] => {\n if (typeof window === 'undefined') return 'default';\n\n const breakpoints = Object.entries(CSS_VARS.screen.breakpoint)\n .map(([key, value]) => ({\n key: key as keyof typeof CSS_VARS.screen.breakpoint,\n bp: parseInt(value.replace(/\\D/g, ''), 10),\n }))\n .sort((a, b) => a.bp - b.bp);\n\n const matched = breakpoints.find(({ bp }) => window.innerWidth <= bp);\n return matched?.key ?? 'default';\n};\n\nconst defaultBreakpoint: IScreenWidthContext['breakpoint'] = getDefaultBreakpoint();\n\nexport const ProviderScreenWidth: FC<IScreenWidthProvider> = (props) => {\n const [breakpoint, setBreakpoint] = useState<IScreenWidthContext['breakpoint']>(defaultBreakpoint);\n const [orientation, setOrientation] = useState<IScreenWidthContext['orientation']>(defaultOrientation);\n\n const queriesRef = useRef<Array<{\n key: IThemeBreakpoint;\n mq: MediaQueryList;\n }> | null>(null);\n\n if (queriesRef.current === null && typeof window !== 'undefined') {\n queriesRef.current = Object.entries(CSS_VARS.screen.breakpoint)\n .map(([key, value]) => {\n const bp = parseInt(value.replace(/\\D/g, ''), 10);\n return {\n key: key as keyof typeof CSS_VARS.screen.breakpoint,\n bp,\n };\n })\n .sort((a, b) => a.bp - b.bp)\n .map(({ key, bp }) => ({\n key,\n mq: window.matchMedia(`(max-width: ${bp}px)`),\n }));\n }\n\n const updateBreakpoint = useCallback(() => {\n if (!queriesRef.current) return;\n const matched = queriesRef.current.find(({ mq }) => mq.matches);\n setBreakpoint(matched?.key ?? 'default');\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n const newWidth = window.innerWidth;\n const newOrientation = newWidth > window.innerHeight ? 'landscape' : 'portrait';\n\n setOrientation(newOrientation);\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n if (!queriesRef.current) return;\n\n queriesRef.current.forEach(({ mq }) => {\n mq.addEventListener('change', updateBreakpoint);\n });\n updateBreakpoint();\n\n return () => {\n queriesRef.current?.forEach(({ mq }) => {\n mq.removeEventListener('change', updateBreakpoint);\n });\n };\n }, [updateBreakpoint]);\n\n return (\n <ScreenWidthContext.Provider\n value={{\n breakpoint,\n orientation,\n type: props.type ?? 'breakpoint',\n }}\n >\n {props.children}\n </ScreenWidthContext.Provider>\n );\n};\n","import { useContextSelector } from 'use-context-selector';\n\nimport { ScreenWidthContext } from './context';\nimport { IScreenWidthContext, IUseScreenWidthDependencies } from './context.types';\n\nexport const useScreenWidth = (props: IUseScreenWidthDependencies): IScreenWidthContext => {\n const context = useContextSelector(ScreenWidthContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useScreenWidth must be used within an ProviderScreenWidth');\n }\n return context;\n};\n"],"mappings":";;;;AAOA,IAAa,IAAqB,EAA0C,IAAA,GAEtE,IACJ,OAAO,SAAW,OAAe,OAAO,aAAa,OAAO,cAAc,cAAc,YAEpF,IAAA,MACA,OAAO,SAAW,MAAoB,YAEtB,OAAO,QAAQ,EAAS,OAAO,UAAA,EAChD,IAAA,CAAK,CAAC,GAAK,CAAA,OAAY;AAAA,EACjB,KAAA;AAAA,EACL,IAAI,SAAS,EAAM,QAAQ,OAAO,EAAA,GAAK,EAAA;EACxC,EACA,KAAA,CAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAA,EAEC,KAAA,CAAM,EAAE,IAAA,EAAA,MAAS,OAAO,cAAc,CAAA,GAClD,OAAO,WAGnB,IAAuD,EAAA,GAEhD,IAAA,CAAiD,MAAU;AACtE,QAAM,CAAC,GAAY,CAAA,IAAiB,EAA4C,CAAA,GAC1E,CAAC,GAAa,CAAA,IAAkB,EAA6C,CAAA,GAE7E,IAAa,EAGR,IAAA;AAEX,EAAI,EAAW,YAAY,QAAQ,OAAO,SAAW,QACnD,EAAW,UAAU,OAAO,QAAQ,EAAS,OAAO,UAAA,EACjD,IAAA,CAAK,CAAC,GAAK,CAAA,OAEH;AAAA,IACA,KAAA;AAAA,IACL,IAHS,SAAS,EAAM,QAAQ,OAAO,EAAA,GAAK,EAAA;AAAA,MAM/C,KAAA,CAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAA,EACxB,IAAA,CAAK,EAAE,KAAA,GAAK,IAAA,EAAA,OAAU;AAAA,IACrB,KAAA;AAAA,IACA,IAAI,OAAO,WAAW,eAAe,CAAA,KAAG;AAAA,IACzC;AAGL,QAAM,IAAmB,EAAA,MAAkB;AACzC,IAAK,EAAW,WAEhB,EADgB,EAAW,QAAQ,KAAA,CAAM,EAAE,IAAA,EAAA,MAAS,EAAG,OAAA,GAChC,OAAO,SAAA;AAAA,KAC7B,CAAA,CAAE;AAEL,SAAA,EAAA,MAAgB;AACd,QAAI,OAAO,SAAW,IAAa;AAEnC,UAAM,IAAA,MAAqB;AAIzB,MAAA,EAHiB,OAAO,aACU,OAAO,cAAc,cAAc,UAAA;AAAA;AAKvE,kBAAO,iBAAiB,UAAU,CAAA,GAClC,MAAa,OAAO,oBAAoB,UAAU,CAAA;AAAA,KACjD,CAAA,CAAE,GAEL,EAAA,MAAgB;AACd,QAAK,EAAW;AAEhB,aAAA,EAAW,QAAQ,QAAA,CAAS,EAAE,IAAA,EAAA,MAAS;AACrC,QAAA,EAAG,iBAAiB,UAAU,CAAA;AAAA,UAEhC,EAAA,GAEA,MAAa;AACX,QAAA,EAAW,SAAS,QAAA,CAAS,EAAE,IAAA,EAAA,MAAS;AACtC,UAAA,EAAG,oBAAoB,UAAU,CAAA;AAAA;;KAGpC,CAAC,CAAA,CAAiB,GAGnB,gBAAA,EAAC,EAAmB,UAApB;AAAA,IACE,OAAO;AAAA,MACL,YAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAM,EAAM,QAAQ;AAAA;cAGrB,EAAM;AAAA,GACqB;GC5FrB,IAAA,CAAkB,MAA4D;AACzF,QAAM,IAAU,EAAmB,GAAA,CAAqB,MAC/C,IACH,EAAM,OAAA,CAAQ,GAAK,OACjB,EAAI,CAAA,IAAQ,EAAE,CAAA,GACP,IACN,CAAA,CAAE,IACL;AAEN,MAAI,CAAC,EACH,OAAM,IAAI,MAAM,2DAAA;AAElB,SAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-screen-width-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-screen-width-Cfe3atNC.cjs");exports.ProviderScreenWidth=e.ProviderScreenWidth;exports.useScreenWidth=e.useScreenWidth;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const ae=require("./chunk-Dd8m0Ver.cjs"),
|
|
1
|
+
const ae=require("./chunk-Dd8m0Ver.cjs"),u=require("./utils-DCIq-5FL.cjs"),P=require("./functions-CZrZU5U0.cjs"),B=require("./proxy-BDese6Pb.cjs"),H=require("./AnimatePresence-DeKd4Eek.cjs"),_=require("./icon-Ddkbk3-m.cjs"),z=require("./button-CHEeSypf.cjs"),O=require("./dist-SXTf0-_7.cjs"),M=require("./v4-BDi_Luux.cjs");let r=require("react/jsx-runtime"),i=require("react");var U=.04,F=.3;var G={content:"Undo",onClick:()=>{}},d=u.CSS_CLASS.context.sonner,W=d.layout,$=d.elementWrapper,K=d.content,Y=d.icon,J=d.contentTitle,Q=d.contentDescription,X=d.buttonWrapper,Z={"bottom-center":d.layoutBottomCenter,"bottom-left":d.layoutBottomLeft,"bottom-right":d.layoutBottomRight,"top-right":d.layoutTopRight,"top-left":d.layoutTopLeft,"top-center":d.layoutTopCenter},p=e=>P.setClasses([W,Z[e]]),ee=e=>({"--context-sonner-gap":`${e.gap}px`,"--context-sonner-z-index":`${e.zIndex??0}`}),ne=e=>{const t=u.CSS_VARS.genre.button[e];return{"--context-sonner-wrapper-background":t.background.index,"--context-sonner-wrapper-border-color":t.border.index,"--context-sonner-wrapper-box-shadow":e==="primary"||e==="secondary"?u.CSS_VARS.palette.shadowPrimaryLight:u.CSS_VARS.palette.shadowSecondaryLight,"--context-sonner-wrapper-box-shadow-hover":e==="primary"||e==="secondary"?u.CSS_VARS.palette.shadowSecondaryLight:u.CSS_VARS.palette.shadowPrimaryLight,"--context-sonner-icon-color":t.color.index,"--context-sonner-title-color":t.color.index,"--context-sonner-description-color":t.color.index}},k=O.createContext(null),te=e=>{const t=(0,i.useMemo)(()=>e.visibleToasts,[e.visibleToasts]),S=(0,i.useMemo)(()=>e?.default?.description,[e?.default?.description]),f=(0,i.useMemo)(()=>e?.default?.title,[e?.default?.title]),g=(0,i.useMemo)(()=>e?.default?.button,[e?.default?.button]),b=(0,i.useMemo)(()=>e?.default?.hidingTime,[e?.default?.hidingTime]),I=(0,i.useMemo)(()=>e?.default?.hidingMode??"clickOnButton",[e?.default?.hidingMode]),E=(0,i.useMemo)(()=>e?.default?.genre??"product",[e?.default?.genre]),w=(0,i.useMemo)(()=>e.position.includes("top"),[e.position]),[C,y]=(0,i.useState)([]),[R,L]=(0,i.useState)(!1),N=(0,i.useCallback)(()=>{L(!0)},[]),T=(0,i.useCallback)(()=>{L(!1)},[]),x=(0,i.useCallback)(n=>{y(a=>{const s=a.find(o=>o.id===n);if(!s)return a;const c=s.index,l=a.filter(o=>o.id!==n).map(o=>({...o,index:o.index>c?o.index-1:o.index}));return l.length===0&&T(),l})},[T]),m=(0,i.useCallback)(n=>{const a=n.id??M.v4(),s=n.hidingTime??b;y(c=>{const l=c.findIndex(h=>h.id===a);let o;if(l!==-1)o=[...c],o[l]={...n,id:a,index:c[l].index};else{o=c.map(v=>({...v,index:v.index+1}));const h={...n,id:a,index:0};o.unshift(h)}return o}),s!==void 0&&setTimeout(()=>{x(a)},s)},[b,x]),D=(0,i.useCallback)((n,a,s)=>{const c=M.v4();return m({...a,id:c,isLoading:!0}),n.then(l=>{m({...s(l,void 0),id:c})}).catch(l=>{m({...s(void 0,l),id:c})})},[m]),q=(0,i.useCallback)(n=>{x(n)},[x]);return(0,i.useEffect)(()=>()=>{y([])},[]),(0,r.jsxs)(k.Provider,{value:{toast:m,promise:D,remove:x,contentHistory:C},children:[(0,r.jsx)("div",{className:p(e.position),style:ee({gap:e.gap,zIndex:e.zIndex??100}),onMouseEnter:N,onMouseLeave:T,children:(0,r.jsx)(H.AnimatePresence,{children:C.map(n=>{const a=n.index,s=t?a>t:!1,c=t?a>t-1:!1,l=t?a===t-1:!1,o=n.genre??E,h=o,v=n.hidingMode??I,V="content"in n?n.content:!1,j="title"in n?n.title:!1,A="description"in n?n.description:!1;return(0,r.jsx)(oe,{isMoreThanLastViewIndexPlusOne:s,isMoreThanLastViewIndex:c,isLastViewIndex:l,isTop:w,id:n.id,icon:n.icon,isLoading:n.isLoading,index:a,buttonGenre:h,hidingMode:v,isHovered:R,genre:o,content:V,title:j||f,description:A||S,button:n.button??g??G,handleOnClick:q},n.id)})})}),e.children]})},ie=e=>(0,r.jsx)(B.motion.div,{layout:!0,initial:{opacity:0,scale:1,y:e.isLastViewIndex?e.isTop?100:-100:e.isTop?-100:100},animate:{y:0,opacity:e.isMoreThanLastViewIndex?0:1,pointerEvents:e.isMoreThanLastViewIndex?"none":"auto",display:e.isMoreThanLastViewIndex?"none":"flex",scale:e.isHovered?1:Math.max(1-e.index*U,.88),marginTop:e.isTop?e.isHovered||e.index===0?"0px":"-65px":"0px",marginBottom:e.isTop||e.isHovered||e.index===0?"0px":"-65px"},style:{zIndex:-e.index},whileInView:{opacity:e.isMoreThanLastViewIndex?0:1},exit:{opacity:0,y:e.isTop?-100:100},transition:{type:"spring",duration:F},children:(0,r.jsxs)("div",{className:$,style:ne(e.genre),role:e.hidingMode==="clickOnSonner"?"button":void 0,tabIndex:e.hidingMode==="clickOnSonner"?0:void 0,onClick:()=>e.hidingMode==="clickOnSonner"&&e.handleOnClick(e.id,"clickOnSonner"),onKeyDown:t=>{e.hidingMode==="clickOnSonner"&&(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),e.handleOnClick(e.id,"clickOnSonner"))},children:[(e.isLoading||e.icon)&&(0,r.jsx)("div",{className:Y,children:e.isLoading?(0,r.jsx)(_.Icon,{size:"medium",type:"loading",name:"Line"}):e.icon&&(0,r.jsx)(_.Icon,{...e.icon,size:e.icon.size??"medium"})}),(0,r.jsx)("div",{className:K,children:e.content?e.content:(0,r.jsxs)(r.Fragment,{children:[e.title&&(0,r.jsx)("div",{className:J,children:e.title}),e.description&&(0,r.jsx)("div",{className:Q,children:e.description})]})}),e.button&&"content"in e.button&&e.button?.content&&(0,r.jsx)("div",{className:X,children:(0,r.jsx)(z.Button,{genre:e.buttonGenre,size:"small",onClick:()=>e.hidingMode==="clickOnButton"&&e.handleOnClick(e.id,"clickOnButton"),children:e.button.content})})]})},e.id),oe=(0,i.memo)(ie),re=e=>{const t=O.useContextSelector(k,S=>S?e.reduce((f,g)=>(f[g]=S[g],f),{}):null);if(!t)throw new Error("useSonner must be used within an ProviderSonner");return t};Object.defineProperty(exports,"ProviderSonner",{enumerable:!0,get:function(){return te}});Object.defineProperty(exports,"useSonner",{enumerable:!0,get:function(){return re}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=context-sonner-
|
|
3
|
+
//# sourceMappingURL=context-sonner-Dqw0jhwT.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-sonner-4gBa1F7G.cjs","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"yXAKA,IAAa,EAAgC,IAEhC,EAAmC,GAGhD,IAAa,EAAuE,CAClF,QAAS,OACT,QAAA,IAAe,CAAA,GCJJ,EAAc,EAAA,UAAU,QAAQ,OAEhC,EAAe,EAAY,OAC3B,EAAuB,EAAY,eACnC,EAAgB,EAAY,QAC5B,EAAa,EAAY,KACzB,EAAqB,EAAY,aACjC,EAA2B,EAAY,mBACvC,EAAsB,EAAY,cAEzC,EAA4E,CAChF,gBAAiB,EAAY,mBAC7B,cAAe,EAAY,iBAC3B,eAAgB,EAAY,kBAC5B,YAAa,EAAY,eACzB,WAAY,EAAY,cACxB,aAAc,EAAY,iBAKf,EAA4B,GACvC,EAAA,WAAW,CAAC,EAAc,EAA6B,CAAA,CAAA,CAAU,EAEtD,GAAwB,IAA0E,CAC7G,uBAAwB,GAAG,EAAM,GAAA,KACjC,2BAA4B,GAAG,EAAM,QAAU,CAAA,KAGpC,GAAgC,GAAmD,CAC9F,MAAM,EAAa,EAAA,SAAS,MAAM,OAAO,CAAA,EAEzC,MAAO,CACL,sCAAuC,EAAW,WAAW,MAC7D,wCAAyC,EAAW,OAAO,MAC3D,sCACE,IAAU,WAAa,IAAU,YAC7B,EAAA,SAAS,QAAQ,mBACjB,EAAA,SAAS,QAAQ,qBACvB,4CACE,IAAU,WAAa,IAAU,YAC7B,EAAA,SAAS,QAAQ,qBACjB,EAAA,SAAS,QAAQ,mBACvB,8BAA+B,EAAW,MAAM,MAChD,+BAAgC,EAAW,MAAM,MACjD,qCAAsC,EAAW,MAAM,QCjB9C,EAAgB,EAAA,cAAqC,IAAA,EAErD,GAAuC,GAAU,CAC5D,MAAM,KAAA,EAAA,SAAA,IAAoE,EAAM,cAAe,CAAC,EAAM,aAAA,CAAc,EAC9G,KAAA,EAAA,SAAA,IACE,GAAO,SAAS,YACtB,CAAC,GAAO,SAAS,WAAA,CAAY,EAEzB,KAAA,EAAA,SAAA,IACE,GAAO,SAAS,MACtB,CAAC,GAAO,SAAS,KAAA,CAAM,EAEnB,KAAA,EAAA,SAAA,IACE,GAAO,SAAS,OACtB,CAAC,GAAO,SAAS,MAAA,CAAO,EAEpB,KAAA,EAAA,SAAA,IACE,GAAO,SAAS,WACtB,CAAC,GAAO,SAAS,UAAA,CAAW,EAExB,KAAA,EAAA,SAAA,IACE,GAAO,SAAS,YAAc,gBACpC,CAAC,GAAO,SAAS,UAAA,CAAW,EAExB,KAAA,EAAA,SAAA,IACE,GAAO,SAAS,OAAA,UACtB,CAAC,GAAO,SAAS,KAAA,CAAM,EAGnB,KAAA,EAAA,SAAA,IAAsB,EAAM,SAAS,SAAS,KAAA,EAAQ,CAAC,EAAM,QAAA,CAAS,EAEtE,CAAC,EAAgB,CAAA,KAAA,EAAA,UAAgD,CAAA,CAAE,EAEnE,CAAC,EAAW,CAAA,KAAA,EAAA,UAAyB,EAAA,EAErC,KAAA,EAAA,aAAA,IAAqC,CACzC,EAAa,EAAA,GACZ,CAAA,CAAE,EAEC,KAAA,EAAA,aAAA,IAAqC,CACzC,EAAa,EAAA,GACZ,CAAA,CAAE,EAEC,KAAA,EAAA,aACH,GAAO,CACN,EAAmB,GAAS,CAC1B,MAAM,EAAe,EAAK,KAAM,GAAS,EAAK,KAAO,CAAA,EAErD,GAAI,CAAC,EAAc,OAAO,EAE1B,MAAM,EAAgB,EAAa,MAE7B,EAAiB,EACpB,OAAQ,GAAS,EAAK,KAAO,CAAA,EAC7B,IAAK,IAAU,CACd,GAAG,EACH,MAAO,EAAK,MAAQ,EAAgB,EAAK,MAAQ,EAAI,EAAK,OAC3D,EAEH,OAAI,EAAe,SAAW,GAAG,EAAA,EAE1B,KAGX,CAAC,CAAA,CAAiB,EAGd,KAAA,EAAA,aACH,GAAY,CACX,MAAM,EAAK,EAAQ,IAAM,EAAA,GAAA,EAEnB,EAAa,EAAQ,YAAc,EAEzC,EAAmB,GAAS,CAC1B,MAAM,EAAgB,EAAK,UAAW,GAAS,EAAK,KAAO,CAAA,EAE3D,IAAI,EACJ,GAAI,IAAkB,GAEpB,EAAiB,CAAC,GAAG,CAAA,EACrB,EAAe,CAAA,EAAiB,CAAE,GAAG,EAAS,GAAA,EAAI,MAAO,EAAK,CAAA,EAAe,WACxE,CAEL,EAAiB,EAAK,IAAK,IAAU,CACnC,GAAG,EACH,MAAO,EAAK,MAAQ,GACrB,EACD,MAAM,EAAa,CAAE,GAAG,EAAS,GAAA,EAAI,MAAO,GAC5C,EAAe,QAAQ,CAAA,EAGzB,OAAO,IAGL,IAAe,QACjB,WAAA,IAAiB,CACf,EAAO,CAAA,GACN,CAAA,GAGP,CAAC,EAAuB,CAAA,CAAO,EAG3B,KAAA,EAAA,aAAA,CAEF,EACA,EACA,IACG,CACH,MAAM,EAAK,EAAA,GAAA,EACX,OAAA,EAAM,CAAE,GAAG,EAAa,GAAA,EAAI,UAAW,GAAM,EAEtC,EACJ,KAAM,GAAW,CAChB,EAAM,CAAE,GAAG,EAAW,EAAQ,MAAA,EAAY,GAAA,EAAI,IAE/C,MAAO,GAAU,CAChB,EAAM,CAAE,GAAG,EAAW,OAAW,CAAA,EAAQ,GAAA,EAAI,KAGnD,CAAC,CAAA,CAAM,EAGH,KAAA,EAAA,aACH,GAAqC,CACpC,EAAO,CAAA,GAET,CAAC,CAAA,CAAO,EAGV,SAAA,EAAA,WAAA,IACE,IAAa,CACX,EAAkB,CAAA,CAAE,GAErB,CAAA,CAAE,KAEH,EAAA,MAAC,EAAc,SAAf,CAAwB,MAAO,CAAE,MAAA,EAAO,QAAA,EAAS,OAAA,EAAQ,eAAA,YAAzD,IACE,EAAA,KAAC,MAAD,CACE,UAAW,EAAyB,EAAM,QAAA,EAC1C,MAAO,GAAqB,CAC1B,IAAK,EAAM,IACX,OAAQ,EAAM,QAAA,IACf,EACD,aAAc,EACd,aAAc,cAEd,EAAA,KAAC,EAAA,gBAAD,CAAA,SACG,EAAe,IAAK,GAAY,CAC/B,MAAM,EAAQ,EAAQ,MAChB,EAAiC,EAAoB,EAAQ,EAAoB,GACjF,EAA0B,EAAoB,EAAQ,EAAoB,EAAI,GAC9E,EAAkB,EAAoB,IAAU,EAAoB,EAAI,GACxE,EAAa,EAAQ,OAAS,EAC9B,EAAc,EACd,EAAa,EAAQ,YAAc,EAEnC,EAAe,YAAa,EAAU,EAAQ,QAAU,GACxD,EAAa,UAAW,EAAU,EAAQ,MAAQ,GAClD,EAAmB,gBAAiB,EAAU,EAAQ,YAAc,GAC1E,SACE,EAAA,KAAC,GAAD,CACkC,+BAAA,EACP,wBAAA,EACR,gBAAA,EACV,MAAA,EAEP,GAAI,EAAQ,GACZ,KAAM,EAAQ,KACd,UAAW,EAAQ,UACZ,MAAA,EACM,YAAA,EACD,WAAA,EACD,UAAA,EACX,MAAO,EACP,QAAS,EACT,MAAO,GAAc,EACrB,YAAa,GAAoB,EACjC,OAAQ,EAAQ,QAAU,GAAqB,EAChC,cAAA,GAbV,EAAQ,EAAA,GAgBjB,CACc,EACd,EACL,EAAM,QAAA,KAKP,GAAiB,MAEnB,EAAA,KAAC,EAAA,OAAO,IAAR,CAEE,OAAA,GACA,QAAS,CACP,QAAS,EACT,MAAO,EACP,EAAG,EAAM,gBACJ,EAAM,MACL,IAAA,KAED,EAAM,MAEL,KAFK,KAIb,QAAS,CACP,EAAG,EACH,QAAS,EAAM,wBAA0B,EAAI,EAC7C,cAAe,EAAM,wBAA0B,OAAS,OACxD,QAAS,EAAM,wBAA0B,OAAS,OAClD,MAAQ,EAAM,UAA8E,EAAlE,KAAK,IAAI,EAAI,EAAM,MAAQ,EAA+B,GAAA,EACpF,UAAW,EAAM,MACb,EAAM,WAAa,EAAM,QAAU,EACjC,MACA,QACF,MACJ,aAAe,EAAM,OACjB,EAAM,WAAa,EAAM,QAAU,EAGnC,MADE,SAGR,MAAO,CACL,OAAQ,CAAC,EAAM,KAAA,EAEjB,YAAa,CAAE,QAAS,EAAM,wBAA0B,EAAI,CAAA,EAC5D,KAAM,CAAE,QAAS,EAAG,EAAI,EAAM,MAAoC,KAApC,KAC9B,WAAY,CAAE,KAAM,SAAU,SAAU,eAExC,EAAA,MAAC,MAAD,CACE,UAAW,EACX,MAAO,GAA6B,EAAM,KAAA,EAC1C,KAAM,EAAM,aAAe,gBAAkB,SAAW,OACxD,SAAU,EAAM,aAAe,gBAAkB,EAAI,OACrD,QAAA,IAAe,EAAM,aAAe,iBAAmB,EAAM,cAAc,EAAM,GAAI,eAAA,EACrF,UAAY,GAAU,CAChB,EAAM,aAAe,kBACrB,EAAM,MAAQ,SAAW,EAAM,MAAQ,OACzC,EAAM,eAAA,EACN,EAAM,cAAc,EAAM,GAAI,eAAA,aAVpC,EAcI,EAAM,WAAa,EAAM,UACzB,EAAA,KAAC,MAAD,CAAK,UAAW,WACb,EAAM,aACL,EAAA,KAAC,EAAA,KAAD,CAAM,KAAK,SAAS,KAAK,UAAU,KAAK,OAAS,EAEjD,EAAM,SAAQ,EAAA,KAAC,EAAA,KAAD,CAAM,GAAI,EAAM,KAAM,KAAM,EAAM,KAAK,MAAQ,SAAY,EAEvE,KAER,EAAA,KAAC,MAAD,CAAK,UAAW,WACb,EAAM,QACL,EAAM,WAEN,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAM,UAAS,EAAA,KAAC,MAAD,CAAK,UAAW,WAAqB,EAAM,MAAY,EACtE,EAAM,gBAAe,EAAA,KAAC,MAAD,CAAK,UAAW,WAA2B,EAAM,YAAkB,CAAA,CACxF,CAAA,EAED,EAEL,EAAM,QAAU,YAAa,EAAM,QAAU,EAAM,QAAQ,YAC1D,EAAA,KAAC,MAAD,CAAK,UAAW,cACd,EAAA,KAAC,EAAA,OAAD,CACE,MAAO,EAAM,YACb,KAAK,QACL,QAAA,IAAe,EAAM,aAAe,iBAAmB,EAAM,cAAc,EAAM,GAAI,eAAA,WAEpF,EAAM,OAAO,QACP,EACL,MAhFL,EAAM,EAAA,EAsFX,MAAA,EAAA,MAA6B,EAAA,ECrTtB,GAAa,GAAkD,CAC1E,MAAM,EAAU,EAAA,mBAAmB,EAAgB,GAC1C,EACH,EAAM,OAAA,CAAQ,EAAK,KACjB,EAAI,CAAA,EAAQ,EAAE,CAAA,EACP,GACN,CAAA,CAAE,EACL,MAEN,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,iDAAA,EAElB,OAAO"}
|
|
1
|
+
{"version":3,"file":"context-sonner-Dqw0jhwT.cjs","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as F } from "./
|
|
3
|
-
import {
|
|
4
|
-
import { t as W } from "./
|
|
5
|
-
import { r as I } from "./icon-
|
|
6
|
-
import { t as $ } from "./button-
|
|
7
|
-
import { n as j, t as K } from "./dist-
|
|
1
|
+
import { n as U, r as f } from "./utils-BRgi6734.js";
|
|
2
|
+
import { t as F } from "./functions-DzX-pTN8.js";
|
|
3
|
+
import { t as G } from "./proxy-BFHkqO7P.js";
|
|
4
|
+
import { t as W } from "./AnimatePresence-BWc2vFe-.js";
|
|
5
|
+
import { r as I } from "./icon-D2w7GViT.js";
|
|
6
|
+
import { t as $ } from "./button-C1w25-Hk.js";
|
|
7
|
+
import { n as j, t as K } from "./dist-ck-7oUux.js";
|
|
8
8
|
import { t as w } from "./v4-CYaPyb-W.js";
|
|
9
9
|
import { Fragment as Y, jsx as l, jsxs as b } from "react/jsx-runtime";
|
|
10
10
|
import { memo as q, useCallback as u, useEffect as J, useMemo as s, useState as M } from "react";
|
|
@@ -13,14 +13,14 @@ var Z = {
|
|
|
13
13
|
content: "Undo",
|
|
14
14
|
onClick: () => {
|
|
15
15
|
}
|
|
16
|
-
}, a =
|
|
16
|
+
}, a = U.context.sonner, p = a.layout, ee = a.elementWrapper, ne = a.content, te = a.icon, ie = a.contentTitle, oe = a.contentDescription, ae = a.buttonWrapper, de = {
|
|
17
17
|
"bottom-center": a.layoutBottomCenter,
|
|
18
18
|
"bottom-left": a.layoutBottomLeft,
|
|
19
19
|
"bottom-right": a.layoutBottomRight,
|
|
20
20
|
"top-right": a.layoutTopRight,
|
|
21
21
|
"top-left": a.layoutTopLeft,
|
|
22
22
|
"top-center": a.layoutTopCenter
|
|
23
|
-
}, re = (e) =>
|
|
23
|
+
}, re = (e) => F([p, de[e]]), le = (e) => ({
|
|
24
24
|
"--context-sonner-gap": `${e.gap}px`,
|
|
25
25
|
"--context-sonner-z-index": `${e.zIndex ?? 0}`
|
|
26
26
|
}), ce = (e) => {
|
|
@@ -113,7 +113,7 @@ var Z = {
|
|
|
113
113
|
}),
|
|
114
114
|
onMouseEnter: V,
|
|
115
115
|
onMouseLeave: L,
|
|
116
|
-
children: /* @__PURE__ */ l(
|
|
116
|
+
children: /* @__PURE__ */ l(W, { children: C.map((n) => {
|
|
117
117
|
const o = n.index, c = t ? o > t : !1, d = t ? o > t - 1 : !1, r = t ? o === t - 1 : !1, i = n.genre ?? D, h = i, y = n.hidingMode ?? k, B = "content" in n ? n.content : !1, H = "title" in n ? n.title : !1, z = "description" in n ? n.description : !1;
|
|
118
118
|
return /* @__PURE__ */ l(ue, {
|
|
119
119
|
isMoreThanLastViewIndexPlusOne: c,
|
|
@@ -137,7 +137,7 @@ var Z = {
|
|
|
137
137
|
}) })
|
|
138
138
|
}), e.children]
|
|
139
139
|
});
|
|
140
|
-
}, se = (e) => /* @__PURE__ */ l(
|
|
140
|
+
}, se = (e) => /* @__PURE__ */ l(G.div, {
|
|
141
141
|
layout: !0,
|
|
142
142
|
initial: {
|
|
143
143
|
opacity: 0,
|
|
@@ -215,4 +215,4 @@ export {
|
|
|
215
215
|
Oe as t
|
|
216
216
|
};
|
|
217
217
|
|
|
218
|
-
//# sourceMappingURL=context-sonner-
|
|
218
|
+
//# sourceMappingURL=context-sonner-MO6uE8y0.js.map
|