@jenesei-software/jenesei-kit-react 1.3.10 → 1.3.12
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/{area-BC64nSGj.js → area-BWxBop5m.js} +2 -2
- package/build/area-BWxBop5m.js.map +1 -0
- package/build/{area-DRqAofd0.js → area-CD8KKIM0.js} +2 -2
- package/build/area-CD8KKIM0.js.map +1 -0
- package/build/area-CZkDIeGx.cjs +2 -0
- package/build/area-CZkDIeGx.cjs.map +1 -0
- package/build/{area-C6QOr2Kd.cjs → area-CmCMHnRA.cjs} +2 -2
- package/build/area-CmCMHnRA.cjs.map +1 -0
- package/build/{area-BYuHpaUX.js → area-DEwj0-O3.js} +5 -5
- package/build/area-DEwj0-O3.js.map +1 -0
- package/build/{area-oZm7ewxw.cjs → area-DRsIULcw.cjs} +2 -2
- package/build/{area-oZm7ewxw.cjs.map → area-DRsIULcw.cjs.map} +1 -1
- package/build/{area-D7906bXA.cjs → area-Dup_lUb9.cjs} +2 -2
- package/build/area-Dup_lUb9.cjs.map +1 -0
- 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-CkM4ZN2F.js → area-sDVSuS3G.js} +2 -2
- package/build/{area-CkM4ZN2F.js.map → area-sDVSuS3G.js.map} +1 -1
- package/build/area-scroll.cjs.js +1 -1
- package/build/area-scroll.d.ts +1 -1
- package/build/area-scroll.es.js +1 -1
- package/build/area-skeleton.cjs.js +1 -1
- package/build/area-skeleton.d.ts +1 -1
- package/build/area-skeleton.es.js +1 -1
- package/build/area-smooth.cjs.js +1 -1
- package/build/area-smooth.d.ts +1 -1
- package/build/area-smooth.es.js +1 -1
- package/build/area.hooks-Bk04M7mk.js.map +1 -1
- package/build/area.hooks-C_UKZzcb.cjs.map +1 -1
- package/build/build-info.txt +3 -3
- package/build/{component--Oo5_3xq.cjs → component-8NOxwZJO.cjs} +2 -2
- package/build/component-8NOxwZJO.cjs.map +1 -0
- package/build/{component-C67KboOB.cjs → component-BVnHSTJd.cjs} +2 -2
- package/build/{component-C67KboOB.cjs.map → component-BVnHSTJd.cjs.map} +1 -1
- package/build/component-CLqcB5mM.cjs.map +1 -1
- package/build/{component-DJYgewYg.js → component-CN6att4f.js} +2 -2
- package/build/{component-DJYgewYg.js.map → component-CN6att4f.js.map} +1 -1
- package/build/component-DHM9pbab.js.map +1 -1
- package/build/{component-BYox4gmt.cjs → component-DdJt3LEF.cjs} +2 -2
- package/build/component-DdJt3LEF.cjs.map +1 -0
- package/build/{component-B1bvPlyB.cjs → component-DnJo66DS.cjs} +2 -2
- package/build/{component-B1bvPlyB.cjs.map → component-DnJo66DS.cjs.map} +1 -1
- package/build/{component-BcHiCCC9.js → component-DpVp9dB1.js} +2 -2
- package/build/component-DpVp9dB1.js.map +1 -0
- package/build/component-GKvpOWlO.cjs +28 -0
- package/build/component-GKvpOWlO.cjs.map +1 -0
- package/build/{component-DKMsOpqH.js → component-GtWqnaqk.js} +2 -2
- package/build/{component-DKMsOpqH.js.map → component-GtWqnaqk.js.map} +1 -1
- package/build/{component-CvW0MIM8.js → component-P-3bwi3_.js} +3 -3
- package/build/component-P-3bwi3_.js.map +1 -0
- package/build/component-accordion.cjs.js +1 -1
- package/build/component-accordion.d.ts +1 -1
- package/build/component-accordion.es.js +1 -1
- package/build/component-button-group.cjs.js +1 -1
- package/build/component-button-group.es.js +1 -1
- package/build/component-button.cjs.js +1 -1
- package/build/component-button.es.js +1 -1
- package/build/{component-CY7lfJVv.cjs → component-cRmWWDr_.cjs} +2 -2
- package/build/component-cRmWWDr_.cjs.map +1 -0
- package/build/component-checkbox-group.cjs.js +1 -1
- package/build/component-checkbox-group.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-WUYE2soZ.js → component-feWPgACX.js} +2 -2
- package/build/component-feWPgACX.js.map +1 -0
- package/build/component-image-button.cjs.js +1 -1
- package/build/component-image-button.es.js +1 -1
- package/build/component-image-select.cjs.js +1 -1
- package/build/component-image-select.es.js +1 -1
- package/build/component-image-slider.cjs.js +1 -1
- package/build/component-image-slider.d.ts +1 -1
- package/build/component-image-slider.es.js +1 -1
- package/build/component-image.cjs.js +1 -1
- package/build/component-image.es.js +1 -1
- package/build/component-map.cjs.js +1 -1
- package/build/component-map.es.js +1 -1
- package/build/{component-jPZYT5iL.js → component-mzzOCXSx.js} +12 -12
- package/build/component-mzzOCXSx.js.map +1 -0
- package/build/component-pagination.cjs.js +1 -1
- package/build/component-pagination.es.js +1 -1
- package/build/component-select.cjs.js +1 -1
- package/build/component-select.es.js +1 -1
- package/build/component-stack.cjs.js +1 -1
- package/build/component-stack.d.ts +5 -7
- package/build/component-stack.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/{component.components-f-tFdB6f.js → component.components-C-EEYFsd.js} +2 -2
- package/build/{component.components-f-tFdB6f.js.map → component.components-C-EEYFsd.js.map} +1 -1
- package/build/{component.components-CeKyOsDE.cjs → component.components-CC3IeZon.cjs} +2 -2
- package/build/{component.components-CeKyOsDE.cjs.map → component.components-CC3IeZon.cjs.map} +1 -1
- package/build/{component.constants-BrJrCmlA.js → component.constants-34RZJIiQ.js} +3 -3
- package/build/component.constants-34RZJIiQ.js.map +1 -0
- package/build/{component.constants-amkB3VHg.js → component.constants-BxnfHAYp.js} +6 -6
- package/build/component.constants-BxnfHAYp.js.map +1 -0
- package/build/{component.constants-DRPyaSU8.cjs → component.constants-CpRgeAIu.cjs} +2 -2
- package/build/component.constants-CpRgeAIu.cjs.map +1 -0
- package/build/{component.constants-B9xzGc3A.cjs → component.constants-D6AJ1xmO.cjs} +2 -2
- package/build/component.constants-D6AJ1xmO.cjs.map +1 -0
- package/build/{component.styles-BTsmbWT6.cjs → component.styles-B-bndnRM.cjs} +2 -2
- package/build/component.styles-B-bndnRM.cjs.map +1 -0
- package/build/component.styles-B0L4jbOO.js.map +1 -1
- package/build/component.styles-BDKsgd6y.js.map +1 -1
- package/build/{component.styles-CPWNnqqm.js → component.styles-BEaqQuF_.js} +3 -3
- package/build/{component.styles-CPWNnqqm.js.map → component.styles-BEaqQuF_.js.map} +1 -1
- package/build/component.styles-BGYbrzvh.js.map +1 -1
- package/build/component.styles-BKnUDWqO.cjs.map +1 -1
- package/build/{component.styles-BpvpyZax.cjs → component.styles-Bb7_KygZ.cjs} +2 -2
- package/build/{component.styles-BpvpyZax.cjs.map → component.styles-Bb7_KygZ.cjs.map} +1 -1
- package/build/{component.styles-iHE8mmya.cjs → component.styles-C4xnWrvJ.cjs} +2 -2
- package/build/component.styles-C4xnWrvJ.cjs.map +1 -0
- package/build/{component.styles-DjoG6jr2.js → component.styles-CJC0h3Ed.js} +2 -2
- package/build/component.styles-CJC0h3Ed.js.map +1 -0
- package/build/component.styles-DS0ofW1Y.js.map +1 -1
- package/build/{component.styles-nl99kkS3.js → component.styles-DTnknwt_.js} +2 -2
- package/build/{component.styles-nl99kkS3.js.map → component.styles-DTnknwt_.js.map} +1 -1
- package/build/{component.styles-DARNjy9P.js → component.styles-DWS6xT-y.js} +2 -2
- package/build/{component.styles-DARNjy9P.js.map → component.styles-DWS6xT-y.js.map} +1 -1
- package/build/{component.styles-DWGUgUoF.cjs → component.styles-DbWj2stq.cjs} +2 -2
- package/build/{component.styles-DWGUgUoF.cjs.map → component.styles-DbWj2stq.cjs.map} +1 -1
- package/build/component.styles-Dpg-__rn.cjs.map +1 -1
- package/build/{component.styles-DOnQEUrI.js → component.styles-DwtZ7CY4.js} +7 -7
- package/build/component.styles-DwtZ7CY4.js.map +1 -0
- package/build/{component.styles-mhkAuWyU.cjs → component.styles-PNgt36ZD.cjs} +2 -2
- package/build/{component.styles-mhkAuWyU.cjs.map → component.styles-PNgt36ZD.cjs.map} +1 -1
- package/build/{component.styles-Dpo373cZ.cjs → component.styles-Py-IeQ2q.cjs} +2 -2
- package/build/component.styles-Py-IeQ2q.cjs.map +1 -0
- package/build/component.styles-ZU_GyVub.cjs.map +1 -1
- package/build/component.styles-gZHy-64x.cjs.map +1 -1
- package/build/{component.styles--PEjCgcA.js → component.styles-mcm1LgEr.js} +3 -3
- package/build/{component.styles--PEjCgcA.js.map → component.styles-mcm1LgEr.js.map} +1 -1
- package/build/component.types-BBQ18Npa.js.map +1 -1
- package/build/{component.types-CSnoBg2y.js → component.types-BhmQrqBu.js} +5 -5
- package/build/component.types-BhmQrqBu.js.map +1 -0
- package/build/{component.types-CWp0NPUN.cjs → component.types-CfR3RBsV.cjs} +2 -2
- package/build/{component.types-CWp0NPUN.cjs.map → component.types-CfR3RBsV.cjs.map} +1 -1
- package/build/component.types-DraGq1j_.cjs.map +1 -1
- package/build/context-app.cjs.js +1 -1
- package/build/context-app.es.js +1 -1
- package/build/context-dialog.cjs.js +1 -1
- package/build/context-dialog.es.js +1 -1
- package/build/context-permission.d.ts +4 -4
- package/build/context-sonner.cjs.js +1 -1
- package/build/context-sonner.es.js +1 -1
- package/build/{context.constants-CvkvB0XC.js → context.constants-BCpaUfFz.js} +2 -2
- package/build/context.constants-BCpaUfFz.js.map +1 -0
- package/build/{context.constants-ByXsACU7.cjs → context.constants-BLQ_1jZI.cjs} +2 -2
- package/build/context.constants-BLQ_1jZI.cjs.map +1 -0
- package/build/{context.constants-DRimaVcG.js → context.constants-DOMoMUoD.js} +2 -2
- package/build/context.constants-DOMoMUoD.js.map +1 -0
- package/build/{context.constants-CTr1U0kI.cjs → context.constants-cm50ZUiS.cjs} +2 -2
- package/build/{context.constants-CTr1U0kI.cjs.map → context.constants-cm50ZUiS.cjs.map} +1 -1
- package/build/context.functions-80N-5MqM.cjs.map +1 -1
- package/build/context.functions-B8FDl7nJ.js.map +1 -1
- package/build/context.functions-BD15C8_y.js.map +1 -1
- package/build/context.functions-CQ9GerPb.js.map +1 -1
- package/build/context.functions-ar41xFVo.cjs.map +1 -1
- package/build/context.functions-ohI9H54j.cjs.map +1 -1
- package/build/context.hooks-7ydA7mGj.js.map +1 -1
- package/build/context.hooks-BIsapq-0.cjs.map +1 -1
- package/build/context.hooks-BmwyZ1p3.js.map +1 -1
- package/build/context.hooks-BzMTkJNv.js.map +1 -1
- package/build/{context.hooks-kga1DMrX.js → context.hooks-Cmgo0uqV.js} +2 -2
- package/build/context.hooks-Cmgo0uqV.js.map +1 -0
- package/build/context.hooks-D13tbrva.cjs.map +1 -1
- package/build/{context.hooks-DOygH-Yj.cjs → context.hooks-XBiTuVyt.cjs} +2 -2
- package/build/context.hooks-XBiTuVyt.cjs.map +1 -0
- package/build/context.hooks-u408Pxw8.cjs.map +1 -1
- package/build/index.cjs.js +1 -1
- package/build/index.d.ts +9 -11
- package/build/index.es.js +23 -23
- package/build/motion-CIQfrLky.js.map +1 -1
- package/build/motion-DgB7M2Hn.cjs.map +1 -1
- package/build/style-error.d.ts +6 -6
- package/build/style-fRZ6xrVp.cjs.map +1 -1
- package/build/style-plT9Ah7t.js.map +1 -1
- package/build/use-Bp8UVw4Y.js.map +1 -1
- package/build/use-C1l0O0Qo.cjs.map +1 -1
- package/build/{use-Dg449cuf.cjs → use-ClugPshj.cjs} +2 -2
- package/build/{use-Dg449cuf.cjs.map → use-ClugPshj.cjs.map} +1 -1
- package/build/use-DT0XgvJT.js.map +1 -1
- package/build/use-IhzeVumv.cjs.map +1 -1
- package/build/{use-DLVWi2kS.js → use-_V1SKE0-.js} +6 -6
- package/build/{use-DLVWi2kS.js.map → use-_V1SKE0-.js.map} +1 -1
- package/package.json +4 -3
- package/build/area-BC64nSGj.js.map +0 -1
- package/build/area-BYuHpaUX.js.map +0 -1
- package/build/area-C6QOr2Kd.cjs.map +0 -1
- package/build/area-C6XuN6wk.cjs +0 -2
- package/build/area-C6XuN6wk.cjs.map +0 -1
- package/build/area-D7906bXA.cjs.map +0 -1
- package/build/area-DRqAofd0.js.map +0 -1
- package/build/component--Oo5_3xq.cjs.map +0 -1
- package/build/component-BV_7tGiu.cjs +0 -28
- package/build/component-BV_7tGiu.cjs.map +0 -1
- package/build/component-BYox4gmt.cjs.map +0 -1
- package/build/component-BcHiCCC9.js.map +0 -1
- package/build/component-CY7lfJVv.cjs.map +0 -1
- package/build/component-CvW0MIM8.js.map +0 -1
- package/build/component-WUYE2soZ.js.map +0 -1
- package/build/component-jPZYT5iL.js.map +0 -1
- package/build/component.constants-B9xzGc3A.cjs.map +0 -1
- package/build/component.constants-BrJrCmlA.js.map +0 -1
- package/build/component.constants-DRPyaSU8.cjs.map +0 -1
- package/build/component.constants-amkB3VHg.js.map +0 -1
- package/build/component.styles-BTsmbWT6.cjs.map +0 -1
- package/build/component.styles-DOnQEUrI.js.map +0 -1
- package/build/component.styles-DjoG6jr2.js.map +0 -1
- package/build/component.styles-Dpo373cZ.cjs.map +0 -1
- package/build/component.styles-iHE8mmya.cjs.map +0 -1
- package/build/component.types-CSnoBg2y.js.map +0 -1
- package/build/context.constants-ByXsACU7.cjs.map +0 -1
- package/build/context.constants-CvkvB0XC.js.map +0 -1
- package/build/context.constants-DRimaVcG.js.map +0 -1
- package/build/context.hooks-DOygH-Yj.cjs.map +0 -1
- package/build/context.hooks-kga1DMrX.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.constants-BLQ_1jZI.cjs","sources":["../src/contexts/context-dialog/context.tsx","../src/contexts/context-dialog/context.hooks.ts","../src/contexts/context-dialog/context.styles.tsx","../src/contexts/context-dialog/context.constants.ts"],"sourcesContent":["import { Outside } from '@local/areas/outside';\n\nimport { AnimatePresence } from 'framer-motion';\nimport { createContext, FC, memo, useCallback, useMemo, useState } from 'react';\n\nimport {\n DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT,\n DialogContentProps,\n DialogContextProps,\n DialogElementProps,\n DialogElementWrapper,\n DialogLayout,\n ProviderDialogProps,\n} from '.';\n\nexport const DialogContext = createContext<DialogContextProps<object> | null>(null);\n\nexport const ProviderDialog: FC<ProviderDialogProps> = (props) => {\n const [dialogHistory, setDialogHistory] = useState<DialogContentProps<object>[]>([]);\n\n const remove: DialogContextProps<object>['remove'] = useCallback((id) => {\n setDialogHistory((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 return updatedHistory;\n });\n }, []);\n\n const update: DialogContextProps<object>['update'] = useCallback((dialog) => {\n setDialogHistory((prev) => {\n return prev.map((item) => {\n if (item.id === dialog.id) {\n return { ...item, ...dialog };\n }\n return item;\n });\n });\n }, []);\n\n const add: DialogContextProps<object>['add'] = useCallback((dialog) => {\n const id = dialog.id;\n\n setDialogHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory;\n if (existingIndex !== -1) {\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...dialog, id, index: prev[existingIndex].index };\n } else {\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index! + 1,\n }));\n const newContent = { ...dialog, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n }, []);\n\n const dialogHistoryLength = useMemo(() => dialogHistory.length, [dialogHistory.length]);\n const zIndex = useMemo(() => props.zIndex, [props.zIndex]);\n\n return (\n <DialogContext.Provider value={{ add, remove, update, dialogHistory }}>\n <AnimatePresence>\n {dialogHistoryLength && (\n <DialogLayout\n $zIndex={zIndex}\n initial={{\n opacity: 0,\n }}\n exit={{\n opacity: 0,\n }}\n animate={{\n opacity: 1,\n }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT }}\n >\n {dialogHistory.map((dialog) => {\n const index = dialog.index;\n const content = dialog.content;\n const id = dialog.id;\n const props = dialog.props;\n\n return (\n <MemoizedDialogElement\n index={index}\n content={content}\n props={props}\n key={id}\n id={id}\n remove={() => remove(id)}\n />\n );\n })}\n </DialogLayout>\n )}\n </AnimatePresence>\n\n {props.children}\n </DialogContext.Provider>\n );\n};\n\nconst DialogElement = (props: DialogElementProps) => {\n const [isAnimating, setIsAnimating] = useState(true);\n return (\n <Outside onOutsideClick={() => props.remove()}>\n <DialogElementWrapper\n key={props.id}\n initial={{\n opacity: 0,\n scale: 0.8,\n }}\n animate={{\n opacity: 1,\n scale: 1,\n }}\n onAnimationComplete={() => setIsAnimating(false)}\n transition={{\n type: 'spring',\n duration: DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n delay: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT,\n }}\n style={{\n zIndex: -props.index!,\n }}\n $isDisabledOutline={props.props?.propsDialog?.isDisabledOutline}\n $isOutlineBoxShadow={props.props?.propsDialog?.isOutlineBoxShadow}\n $isReadOnly={props.props?.propsDialog?.isReadOnly}\n $propsDialog={props.props?.propsDialog}\n >\n {props.content?.(props.props, props.remove, isAnimating)}\n </DialogElementWrapper>\n </Outside>\n );\n};\nconst MemoizedDialogElement = memo(DialogElement);\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { useDeepCompareMemoize } from '@local/hooks/use-deep-compare-memoize';\n\nimport { DialogContext, DialogContextItemProps, DialogContextProps, useDialogProps } from '.';\n\nexport const useDialogs = (): DialogContextProps<object> => {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error('useDialogs must be used within an ProviderDialog');\n }\n return context;\n};\n\nexport const useDialog = <T extends object>(props?: useDialogProps<T>): DialogContextItemProps<T> => {\n const { add, remove, update, dialogHistory } = useDialogs();\n const [id, setId] = useState<string | null>(null);\n\n const localAdd: DialogContextItemProps<T>['add'] = useCallback(\n (dialog) => {\n const find = dialogHistory.find((item) => item.id === dialog.id);\n if (!id || !find) {\n const id = dialog.id || uuidv4();\n setId(id);\n add({ ...(dialog as T), props: props, id });\n }\n },\n [add, dialogHistory, id, props],\n );\n const localRemove = useCallback(() => {\n if (id) {\n remove(id);\n setId(null);\n }\n }, [id, remove]);\n\n const propsMemo = useDeepCompareMemoize(props);\n\n useEffect(() => {\n if (id) {\n update({ id, props: propsMemo });\n }\n }, [id, propsMemo, update]);\n\n return { add: localAdd, remove: localRemove, id };\n};\n","import { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nimport { addOutline } from '@local/styles/add';\n\nimport {\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n DialogElementWrapperProps,\n DialogLayoutProps,\n} from '.';\n\nexport const DialogLayout = styled(motion.div)<DialogLayoutProps>`\n position: fixed;\n flex: 1;\n width: 100%;\n height: 100%;\n background-color: ${(props) => props.theme.palette.black50};\n z-index: ${(props) => props.$zIndex};\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n`;\n\nexport const DialogElementWrapper = styled(motion.dialog)<DialogElementWrapperProps>`\n ${addOutline};\n max-width: ${(props) => props.$propsDialog?.maxWidth || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH};\n max-height: ${(props) => props.$propsDialog?.maxHeight || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT};\n border-radius: ${(props) => props.$propsDialog?.borderRadius || DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS};\n background: ${(props) =>\n props.$propsDialog?.background\n ? props.theme.palette[props.$propsDialog.background]\n : props.theme.palette[DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND]};\n padding: ${(props) => props.$propsDialog?.padding || DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING};\n width: max-content;\n height: max-content;\n border: 0;\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: flex-start;\n justify-content: flex-start;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0px 10px 30px 0px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n`;\nexport const DialogContent = styled(motion.div)``;\n","// export const DEFAULT_PROVIDER_Dialog_SCALE = 0.04\nimport { IThemePaletteKeys } from '@local/theme';\n\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT = 0.3;\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT = 0.4;\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT: string = 'max-content';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH: string = 'max-content';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS: string = '12px';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING: string = '20px';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND: IThemePaletteKeys = 'whiteStandard';\n"],"names":["DialogContext","createContext","MemoizedDialogElement","memo","props","isAnimating","setIsAnimating","useState","Outside","onOutsideClick","remove","children","jsx","DialogElementWrapper","initial","opacity","scale","animate","onAnimationComplete","transition","type","duration","DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT","delay","DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT","style","zIndex","index","$isDisabledOutline","_b","_a","propsDialog","isDisabledOutline","$isOutlineBoxShadow","_d","_c","isOutlineBoxShadow","$isReadOnly","_f","_e","isReadOnly","$propsDialog","_g","content","id","useDialogs","context","useContext","Error","DialogLayout","styled","motion","div","theme","palette","black50","$zIndex","dialog","addOutline","maxWidth","DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH","maxHeight","DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT","borderRadius","DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS","background","DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND","padding","DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING","DialogContent","dialogHistory","setDialogHistory","useCallback","prev","itemToRemove","find","item","indexToRemove","filter","map","update","add","existingIndex","findIndex","updatedHistory","newContent","unshift","dialogHistoryLength","useMemo","length","jsxs","Provider","value","AnimatePresence","exit","setId","localAdd","uuidv4","localRemove","propsMemo","useDeepCompareMemoize","useEffect"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createContext, memo, useMemo, useState, useCallback, useContext } from "react";
|
|
2
2
|
import { j as jsxRuntimeExports } from "./jsx-runtime-BrDlu8eK.js";
|
|
3
|
-
import { c as Button } from "./component-
|
|
3
|
+
import { c as Button } from "./component-CN6att4f.js";
|
|
4
4
|
import { I as Icon } from "./component.styles-DS0ofW1Y.js";
|
|
5
5
|
import { motion, AnimatePresence } from "framer-motion";
|
|
6
6
|
import styled, { useTheme, css } from "styled-components";
|
|
@@ -389,4 +389,4 @@ export {
|
|
|
389
389
|
DEFAULT_PROVIDER_SONNER_BUTTON as m,
|
|
390
390
|
useSonner as u
|
|
391
391
|
};
|
|
392
|
-
//# sourceMappingURL=context.constants-
|
|
392
|
+
//# sourceMappingURL=context.constants-DOMoMUoD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.constants-DOMoMUoD.js","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts"],"sourcesContent":["import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { createContext, FC, memo, useCallback, useMemo, useState } from 'react';\nimport { useTheme } from 'styled-components';\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 ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout,\n} from '.';\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null);\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = (props) => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts],\n );\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ProviderSonnerProps['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<SonnerContentProps[]>([]);\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: SonnerContextProps['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: SonnerContextProps['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;\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 const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, '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 const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id);\n },\n [remove],\n );\n const theme = useTheme();\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\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 = theme.colors.sonner[localGenre].button.genre;\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 </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: SonnerElementProps) => {\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 ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 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 <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon name={props.icon} type='id' size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && (\n <SonnerContentTitle\n $genre={props.genre}\n $font={{\n size: 14,\n weight: 700,\n }}\n >\n {props.title}\n </SonnerContentTitle>\n )}\n {props.description && (\n <SonnerContentDescription\n $font={{\n size: 12,\n weight: 400,\n }}\n $genre={props.genre}\n >\n {props.description}\n </SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <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 </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContext } from 'react';\n\nimport { SonnerContext, SonnerContextProps } from '.';\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext);\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n","import { addRemoveScrollbar, addTransition } from '@local/styles/add';\n\nimport styled, { css } from 'styled-components';\n\nimport {\n SonnerContentDescriptionProps,\n SonnerContentTitleProps,\n SonnerElementWrapperProps,\n SonnerLayoutProps,\n} from '.';\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${(props) => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${(props) => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${(props) =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`;\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${(props) => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`;\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`;\nexport const SonnerIcon = styled.div`\n display: contents;\n`;\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n color: ${(props) => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n color:${(props) => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nexport const SonnerButtonWrapper = styled.div``;\n","import { ITheme } from '@local/theme';\n\nimport { ProviderSonnerProps } from '.';\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: keyof ITheme['colors']['sonner'] = 'black';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n"],"names":["_a","uuidv4","promise","jsxs","jsx","Fragment"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const e=require("react"),n=require("./jsx-runtime-BcGej2Kr.cjs"),t=require("./component-
|
|
1
|
+
"use strict";const e=require("react"),n=require("./jsx-runtime-BcGej2Kr.cjs"),t=require("./component-DnJo66DS.cjs"),i=require("./component.styles-BKnUDWqO.cjs"),o=require("framer-motion"),r=require("styled-components"),s=require("uuid"),l=require("./style-Df37KnoJ.cjs"),d=e.createContext(null),x=e.memo(e=>n.jsxRuntimeExports.jsx(o.motion.div,{layout:!0,initial:{opacity:0,scale:1,y:e.isLastViewIndex?e.isTop?j:-j:e.isTop?-j:j},animate:{y:0,opacity:e.isMoreThanLastViewIndex?0:1,pointerEvents:e.isMoreThanLastViewIndex?"none":"auto",display:e.isMoreThanLastViewIndex?"none":"flex",scale:e.isHovered?1:1-e.index*g,marginTop:e.isTop?e.isHovered||0===e.index?"0px":`-${R}px`:"0px",marginBottom:e.isTop||e.isHovered||0===e.index?"0px":`-${R}px`},style:{zIndex:-e.index},whileInView:{opacity:e.isMoreThanLastViewIndex?0:1},exit:{opacity:0,y:e.isTop?-j:j},transition:{type:"spring",duration:E},children:n.jsxRuntimeExports.jsxs(a,{$genre:e.genre,onClick:()=>"clickOnSonner"===e.hidingMode&&e.handleOnClick(e.id,"clickOnSonner"),children:[(e.isLoading||e.icon)&&n.jsxRuntimeExports.jsx(p,{children:e.isLoading?n.jsxRuntimeExports.jsx(i.Icon,{size:"medium",type:"loading",name:"Line"}):e.icon&&n.jsxRuntimeExports.jsx(i.Icon,{name:e.icon,type:"id",size:"medium"})}),n.jsxRuntimeExports.jsx(u,{children:e.content?e.content:n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[e.title&&n.jsxRuntimeExports.jsx(m,{$genre:e.genre,$font:{size:14,weight:700},children:e.title}),e.description&&n.jsxRuntimeExports.jsx(f,{$font:{size:12,weight:400},$genre:e.genre,children:e.description})]})}),e.button&&e.button.content&&n.jsxRuntimeExports.jsx(v,{children:n.jsxRuntimeExports.jsx(t.Button,{genre:e.buttonGenre,size:"small",onClick:()=>"clickOnButton"===e.hidingMode&&e.handleOnClick(e.id,"clickOnButton"),children:e.button.content})})]})},e.id)),c=r.div`
|
|
2
2
|
position: fixed;
|
|
3
3
|
z-index: ${e=>e.$zIndex};
|
|
4
4
|
max-height: calc(100dvh - 20px);
|
|
@@ -95,4 +95,4 @@
|
|
|
95
95
|
align-items: center;
|
|
96
96
|
justify-content: flex-start;
|
|
97
97
|
`,v=r.div``,h=100,g=.04,j=100,E=.3,b="black",R=60,$={content:"Undo",onClick:()=>{}};exports.DEFAULT_PROVIDER_SONNER_BUTTON=$,exports.DEFAULT_PROVIDER_SONNER_DURATION=E,exports.DEFAULT_PROVIDER_SONNER_GENRE=b,exports.DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM=R,exports.DEFAULT_PROVIDER_SONNER_SCALE=g,exports.DEFAULT_PROVIDER_SONNER_Y=j,exports.DEFAULT_PROVIDER_SONNER_Z_INDEX=h,exports.ProviderSonner=t=>{var i,l,a,u,p,m;const f=e.useMemo(()=>t.visibleToasts,[t.visibleToasts]),v=e.useMemo(()=>{var e;return null==(e=null==t?void 0:t.default)?void 0:e.description},[null==(i=null==t?void 0:t.default)?void 0:i.description]),g=e.useMemo(()=>{var e;return null==(e=null==t?void 0:t.default)?void 0:e.title},[null==(l=null==t?void 0:t.default)?void 0:l.title]),j=e.useMemo(()=>{var e;return null==(e=null==t?void 0:t.default)?void 0:e.button},[null==(a=null==t?void 0:t.default)?void 0:a.button]),E=e.useMemo(()=>{var e;return null==(e=null==t?void 0:t.default)?void 0:e.hidingTime},[null==(u=null==t?void 0:t.default)?void 0:u.hidingTime]),R=e.useMemo(()=>{var e;return(null==(e=null==t?void 0:t.default)?void 0:e.hidingMode)??"clickOnButton"},[null==(p=null==t?void 0:t.default)?void 0:p.hidingMode]),y=e.useMemo(()=>{var e;return(null==(e=null==t?void 0:t.default)?void 0:e.genre)??b},[null==(m=null==t?void 0:t.default)?void 0:m.genre]),T=e.useMemo(()=>t.position.includes("top"),[t.position]),[w,O]=e.useState([]),[I,S]=e.useState(!1),L=e.useCallback(()=>{S(!0)},[]),M=e.useCallback(()=>{S(!1)},[]),k=e.useCallback(e=>{O(n=>{const t=n.find(n=>n.id===e);if(!t)return n;const i=t.index,o=n.filter(n=>n.id!==e).map(e=>({...e,index:e.index>i?e.index-1:e.index}));return 0===o.length&&M(),o})},[M]),_=e.useCallback(e=>{const n=e.id??s.v4(),t=e.hidingTime??E;O(t=>{const i=t.findIndex(e=>e.id===n);let o;if(-1!==i)o=[...t],o[i]={...e,id:n,index:t[i].index};else{o=t.map(e=>({...e,index:e.index+1}));const i={...e,id:n,index:0};o.unshift(i)}return o}),void 0!==t&&setTimeout(()=>{k(n)},t)},[E,k]),C=e.useCallback((e,n,t)=>{const i=s.v4();return _({...n,id:i,isLoading:!0}),e.then(e=>{_({...t(e,void 0),id:i})}).catch(e=>{_({...t(void 0,e),id:i})})},[_]),N=e.useCallback(e=>{k(e)},[k]),D=r.useTheme();return n.jsxRuntimeExports.jsxs(d.Provider,{value:{toast:_,promise:C,remove:k,contentHistory:w},children:[n.jsxRuntimeExports.jsx(c,{$zIndex:t.zIndex??h,$position:t.position,$gap:t.gap,onMouseEnter:L,onMouseLeave:M,children:n.jsxRuntimeExports.jsx(o.AnimatePresence,{children:w.map(e=>{const t=e.index,i=!!f&&t>f,o=!!f&&t>f-1,r=!!f&&t==f-1,s=e.genre??y,l=D.colors.sonner[s].button.genre,d=e.hidingMode??R,c="content"in e&&e.content,a="title"in e&&e.title,u="description"in e&&e.description;return n.jsxRuntimeExports.jsx(x,{isMoreThanLastViewIndexPlusOne:i,isMoreThanLastViewIndex:o,isLastViewIndex:r,isTop:T,id:e.id,icon:e.icon,isLoading:e.isLoading,index:t,buttonGenre:l,hidingMode:d,isHovered:I,genre:s,content:c,title:a||g,description:u||v,button:e.button??j??$,handleOnClick:N},e.id)})})}),t.children]})},exports.SonnerButtonWrapper=v,exports.SonnerContent=u,exports.SonnerContentDescription=f,exports.SonnerContentTitle=m,exports.SonnerContext=d,exports.SonnerElementWrapper=a,exports.SonnerIcon=p,exports.SonnerLayout=c,exports.useSonner=()=>{const n=e.useContext(d);if(!n)throw new Error("useSonner must be used within an ProviderSonner");return n};
|
|
98
|
-
//# sourceMappingURL=context.constants-
|
|
98
|
+
//# sourceMappingURL=context.constants-cm50ZUiS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.constants-CTr1U0kI.cjs","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { createContext, FC, memo, useCallback, useMemo, useState } from 'react';\nimport { useTheme } from 'styled-components';\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 ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout,\n} from '.';\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null);\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = (props) => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts],\n );\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ProviderSonnerProps['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<SonnerContentProps[]>([]);\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: SonnerContextProps['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: SonnerContextProps['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;\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 const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, '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 const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id);\n },\n [remove],\n );\n const theme = useTheme();\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\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 = theme.colors.sonner[localGenre].button.genre;\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 </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: SonnerElementProps) => {\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 ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 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 <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon name={props.icon} type='id' size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && (\n <SonnerContentTitle\n $genre={props.genre}\n $font={{\n size: 14,\n weight: 700,\n }}\n >\n {props.title}\n </SonnerContentTitle>\n )}\n {props.description && (\n <SonnerContentDescription\n $font={{\n size: 12,\n weight: 400,\n }}\n $genre={props.genre}\n >\n {props.description}\n </SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <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 </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { addRemoveScrollbar, addTransition } from '@local/styles/add';\n\nimport styled, { css } from 'styled-components';\n\nimport {\n SonnerContentDescriptionProps,\n SonnerContentTitleProps,\n SonnerElementWrapperProps,\n SonnerLayoutProps,\n} from '.';\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${(props) => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${(props) => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${(props) =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`;\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${(props) => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`;\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`;\nexport const SonnerIcon = styled.div`\n display: contents;\n`;\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n color: ${(props) => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n color:${(props) => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nexport const SonnerButtonWrapper = styled.div``;\n","import { ITheme } from '@local/theme'\n\nimport { ProviderSonnerProps } from '.'\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: keyof ITheme['colors']['sonner'] = 'black'\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {}\n}\n","import { useContext } from 'react'\n\nimport { SonnerContext, SonnerContextProps } from '.'\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext)\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner')\n }\n return context\n}\n"],"names":["SonnerContext","createContext","MemoizedSonnerElement","memo","props","jsx","motion","div","layout","initial","opacity","scale","y","isLastViewIndex","isTop","DEFAULT_PROVIDER_SONNER_Y","animate","isMoreThanLastViewIndex","pointerEvents","display","isHovered","index","DEFAULT_PROVIDER_SONNER_SCALE","marginTop","DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM","marginBottom","style","zIndex","whileInView","exit","transition","type","duration","DEFAULT_PROVIDER_SONNER_DURATION","children","jsxs","SonnerElementWrapper","$genre","genre","onClick","hidingMode","handleOnClick","id","isLoading","icon","SonnerIcon","Icon","size","name","SonnerContent","content","Fragment","title","SonnerContentTitle","$font","weight","description","SonnerContentDescription","button","SonnerButtonWrapper","Button","buttonGenre","SonnerLayout","styled","$zIndex","$gap","addRemoveScrollbar","$position","css","theme","colors","sonner","wrapper","background","color","borderColor","boxShadow","boxShadowHover","addTransition","DEFAULT_PROVIDER_SONNER_Z_INDEX","DEFAULT_PROVIDER_SONNER_GENRE","DEFAULT_PROVIDER_SONNER_BUTTON","memoVisibleToasts","useMemo","visibleToasts","memoDefaultDescription","_a","default","memoDefaultTitle","_b","memoDefaultButton","_c","memoDefaultHidingTime","hidingTime","_d","memoDefaultHidingMode","_e","memoDefaultGenre","_f","position","includes","contentHistory","setContentHistory","useState","setIsHovered","handleMouseEnter","useCallback","handleMouseLeave","remove","prev","itemToRemove","find","item","indexToRemove","updatedHistory","filter","map","length","toast","uuidv4","existingIndex","findIndex","newContent","unshift","setTimeout","promise","expectation","localToast","then","result","catch","error","useTheme","Provider","value","gap","onMouseEnter","onMouseLeave","AnimatePresence","isMoreThanLastViewIndexPlusOne","localGenre","localContent","localTitle","localDescription","context","useContext","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.constants-cm50ZUiS.cjs","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { createContext, FC, memo, useCallback, useMemo, useState } from 'react';\nimport { useTheme } from 'styled-components';\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 ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout,\n} from '.';\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null);\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = (props) => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts],\n );\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ProviderSonnerProps['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<SonnerContentProps[]>([]);\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: SonnerContextProps['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: SonnerContextProps['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;\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 const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, '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 const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id);\n },\n [remove],\n );\n const theme = useTheme();\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\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 = theme.colors.sonner[localGenre].button.genre;\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 </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: SonnerElementProps) => {\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 ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 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 <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon name={props.icon} type='id' size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && (\n <SonnerContentTitle\n $genre={props.genre}\n $font={{\n size: 14,\n weight: 700,\n }}\n >\n {props.title}\n </SonnerContentTitle>\n )}\n {props.description && (\n <SonnerContentDescription\n $font={{\n size: 12,\n weight: 400,\n }}\n $genre={props.genre}\n >\n {props.description}\n </SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <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 </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { addRemoveScrollbar, addTransition } from '@local/styles/add';\n\nimport styled, { css } from 'styled-components';\n\nimport {\n SonnerContentDescriptionProps,\n SonnerContentTitleProps,\n SonnerElementWrapperProps,\n SonnerLayoutProps,\n} from '.';\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${(props) => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${(props) => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${(props) =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`;\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${(props) => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${(props) => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`;\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`;\nexport const SonnerIcon = styled.div`\n display: contents;\n`;\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n color: ${(props) => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n color:${(props) => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nexport const SonnerButtonWrapper = styled.div``;\n","import { ITheme } from '@local/theme';\n\nimport { ProviderSonnerProps } from '.';\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: keyof ITheme['colors']['sonner'] = 'black';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { useContext } from 'react';\n\nimport { SonnerContext, SonnerContextProps } from '.';\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext);\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"names":["SonnerContext","createContext","MemoizedSonnerElement","memo","props","jsx","motion","div","layout","initial","opacity","scale","y","isLastViewIndex","isTop","DEFAULT_PROVIDER_SONNER_Y","animate","isMoreThanLastViewIndex","pointerEvents","display","isHovered","index","DEFAULT_PROVIDER_SONNER_SCALE","marginTop","DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM","marginBottom","style","zIndex","whileInView","exit","transition","type","duration","DEFAULT_PROVIDER_SONNER_DURATION","children","jsxs","SonnerElementWrapper","$genre","genre","onClick","hidingMode","handleOnClick","id","isLoading","icon","SonnerIcon","Icon","size","name","SonnerContent","content","Fragment","title","SonnerContentTitle","$font","weight","description","SonnerContentDescription","button","SonnerButtonWrapper","Button","buttonGenre","SonnerLayout","styled","$zIndex","$gap","addRemoveScrollbar","$position","css","theme","colors","sonner","wrapper","background","color","borderColor","boxShadow","boxShadowHover","addTransition","DEFAULT_PROVIDER_SONNER_Z_INDEX","DEFAULT_PROVIDER_SONNER_GENRE","DEFAULT_PROVIDER_SONNER_BUTTON","memoVisibleToasts","useMemo","visibleToasts","memoDefaultDescription","_a","default","memoDefaultTitle","_b","memoDefaultButton","_c","memoDefaultHidingTime","hidingTime","_d","memoDefaultHidingMode","_e","memoDefaultGenre","_f","position","includes","contentHistory","setContentHistory","useState","setIsHovered","handleMouseEnter","useCallback","handleMouseLeave","remove","prev","itemToRemove","find","item","indexToRemove","updatedHistory","filter","map","length","toast","uuidv4","existingIndex","findIndex","newContent","unshift","setTimeout","promise","expectation","localToast","then","result","catch","error","useTheme","Provider","value","gap","onMouseEnter","onMouseLeave","AnimatePresence","isMoreThanLastViewIndexPlusOne","localGenre","localContent","localTitle","localDescription","context","useContext","Error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.functions-80N-5MqM.cjs","sources":["../src/contexts/context-cookie/context.tsx","../src/contexts/context-cookie/context.functions.ts","../src/contexts/context-cookie/context.hooks.ts"],"sourcesContent":["import Cookies from 'js-cookie'
|
|
1
|
+
{"version":3,"file":"context.functions-80N-5MqM.cjs","sources":["../src/contexts/context-cookie/context.tsx","../src/contexts/context-cookie/context.functions.ts","../src/contexts/context-cookie/context.hooks.ts"],"sourcesContent":["import Cookies from 'js-cookie';\nimport { FC, createContext, useCallback, useEffect, useState } from 'react';\n\nimport { CookieAttributes, CookieContextProps, ProviderCookieProps, ValidCookieObject } from '.';\n\n/**\n * Context for managing cookies.\n */\nexport const CookieContext = createContext<CookieContextProps | null>(null);\n\n/**\n * Provider component for managing cookies.\n *\n * @remarks\n * You should understand which cookies you are changing and whether you have access to them.\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 ValidCookieObject {\n * access_token: string\n * refresh_token: string\n * }\n * }\n * ```\n */\nexport const ProviderCookie: FC<ProviderCookieProps> = (props) => {\n const { getCookie, setCookie, removeCookieValue, removeCookieValues, checkCookie, cookieValues } =\n useProviderCookie(props);\n\n return (\n <CookieContext.Provider\n value={{\n getCookie,\n setCookie,\n removeCookieValue,\n removeCookieValues,\n checkCookie,\n cookieValues,\n }}\n >\n {props.children}\n </CookieContext.Provider>\n );\n};\n\nconst useProviderCookie = (props: ProviderCookieProps) => {\n const [cookieValues, setCookieValues] = useState<ValidCookieObject>();\n\n const getCookie = useCallback(<K extends keyof ValidCookieObject>(name: K): ValidCookieObject[K] | undefined => {\n const cookie = Cookies.get(String(name));\n setCookieValues((prevState) => ({\n ...prevState,\n [name]: cookie ? JSON.parse(cookie) : undefined,\n }));\n return cookie ? JSON.parse(cookie) : undefined;\n }, []);\n\n const changeCookie = useCallback(\n <K extends keyof ValidCookieObject>(name: K, value: ValidCookieObject[K], options?: CookieAttributes) => {\n try {\n Cookies.set(String(name), JSON.stringify(value), options);\n setCookieValues((prevState) => ({ ...prevState, [name]: value }));\n } catch {\n console.info(`Provider Cookie. ChangeCookie error - key:${name}, value:${value}.`);\n }\n },\n [],\n );\n\n const removeCookieValue = useCallback(<K extends keyof ValidCookieObject>(name: K, options?: CookieAttributes) => {\n try {\n Cookies.remove(String(name), options);\n setCookieValues((prevState) => ({ ...prevState, [name]: undefined }));\n } catch {\n console.info(`Provider Cookie. RemoveCookieValue error - key:${name}.`);\n }\n }, []);\n\n const removeCookieValues = useCallback(() => {\n if (props.validate && props.validate.validateKeys) {\n props.validate?.validateKeys.forEach((key) => {\n removeCookieValue(String(key) as never);\n });\n } else {\n console.info('Provider Cookie. Validate is not defined.');\n }\n }, [props.validate, removeCookieValue]);\n\n const checkCookie = useCallback(() => {\n if (props.validate && props.validate.validateKeys && props.validate.getValidateCookieValue) {\n props.validate?.validateKeys.forEach((key) => {\n const cookieValue = Cookies.get(String(key));\n if (cookieValue) {\n try {\n const parsedValue = JSON.parse(cookieValue);\n if (!props.validate?.getValidateCookieValue(String(key) as never, parsedValue as never)) {\n removeCookieValue(String(key) as never);\n } else {\n setCookieValues((prevState) => ({\n ...prevState,\n [key]: parsedValue,\n }));\n }\n } catch {\n removeCookieValue(String(key) as never);\n }\n } else {\n removeCookieValue(String(key) as never);\n }\n });\n } else {\n console.info('Provider Cookie. Validate is not defined.');\n }\n }, [props.validate, removeCookieValue]);\n\n useEffect(() => {\n checkCookie();\n }, [checkCookie]);\n\n return { getCookie, setCookie: changeCookie, removeCookieValue, removeCookieValues, checkCookie, cookieValues };\n};\n","import Cookies from 'js-cookie';\n\nimport { CookieAttributes } from '.';\n\nexport function getFromCookie<T>(key: string): T | null {\n const item = Cookies.get(key);\n if (item) {\n try {\n return JSON.parse(item) as T;\n } catch (error) {\n console.error(`Error parsing cookie item \"${key}\":`, error);\n return null;\n }\n }\n return null;\n}\n\nexport function setToCookie<T>(key: string, value: T, options?: CookieAttributes): void {\n try {\n const item = JSON.stringify(value);\n Cookies.set(key, item, options);\n } catch (error) {\n console.error(`Error setting cookie item \"${key}\":`, error);\n }\n}\n","import { useContext } from 'react';\n\nimport { CookieContext, CookieContextProps } from '.';\n\n/**\n * Custom hook to access the CookieContext.\n *\n * @remarks\n * You should understand which cookies you are changing and whether you have access to them.\n *\n */\nexport const useCookie = (): CookieContextProps => {\n const context = useContext(CookieContext);\n if (!context) {\n throw new Error('useCookie must be used within an ProviderCookie');\n }\n return context;\n};\n"],"names":["CookieContext","createContext","useProviderCookie","props","cookieValues","setCookieValues","useState","getCookie","useCallback","name","cookie","Cookies","get","String","prevState","JSON","parse","changeCookie","value","options","set","stringify","console","info","removeCookieValue","remove","removeCookieValues","validate","validateKeys","_a","forEach","key","checkCookie","getValidateCookieValue","cookieValue","parsedValue","useEffect","setCookie","jsx","Provider","children","item","error","context","useContext","Error"],"mappings":"qGAQaA,EAAgBC,EAAAA,cAAyC,MA0ChEC,EAAqBC,IACzB,MAAOC,EAAcC,GAAmBC,aAElCC,EAAYC,cAAgDC,IAChE,MAAMC,EAASC,EAAQC,IAAIC,OAAOJ,IAKlC,OAJAJ,EAAiBS,IAAA,IACZA,EACHL,CAACA,GAAOC,EAASK,KAAKC,MAAMN,QAAU,KAEjCA,EAASK,KAAKC,MAAMN,QAAU,GACpC,IAEGO,EAAeT,EAAAA,YACnB,CAAoCC,EAASS,EAA6BC,KACxE,IACER,EAAQS,IAAIP,OAAOJ,GAAOM,KAAKM,UAAUH,GAAQC,GACjDd,EAAiBS,QAAoBA,EAAWL,CAACA,GAAOS,IAAQ,CAAA,MAEhEI,QAAQC,KAAK,6CAA6Cd,YAAeS,KAAQ,GAGrF,IAGIM,EAAoBhB,EAAAA,YAAY,CAAoCC,EAASU,KACjF,IACER,EAAQc,OAAOZ,OAAOJ,GAAOU,GAC7Bd,EAAiBS,QAAoBA,EAAWL,CAACA,QAAO,IAAY,CAAA,MAEpEa,QAAQC,KAAK,kDAAkDd,KAAO,GAEvE,IAEGiB,EAAqBlB,EAAAA,YAAY,WACjCL,EAAMwB,UAAYxB,EAAMwB,SAASC,aACnC,OAAAC,EAAA1B,EAAMwB,WAANE,EAAgBD,aAAaE,QAASC,IACpCP,EAAkBX,OAAOkB,MAG3BT,QAAQC,KAAK,8CAEd,CAACpB,EAAMwB,SAAUH,IAEdQ,EAAcxB,EAAAA,YAAY,WAC1BL,EAAMwB,UAAYxB,EAAMwB,SAASC,cAAgBzB,EAAMwB,SAASM,uBAClE,OAAAJ,EAAA1B,EAAMwB,WAANE,EAAgBD,aAAaE,QAASC,UACpC,MAAMG,EAAcvB,EAAQC,IAAIC,OAAOkB,IACvC,GAAIG,EACF,IACE,MAAMC,EAAcpB,KAAKC,MAAMkB,IAC1B,OAAAL,EAAA1B,EAAMwB,eAAN,EAAAE,EAAgBI,uBAAuBpB,OAAOkB,GAAeI,IAGhE9B,EAAiBS,IAAA,IACZA,EACHiB,CAACA,GAAMI,KAJTX,EAAkBX,OAAOkB,GAM3B,CAAA,MAEAP,EAAkBX,OAAOkB,GAAa,MAGxCP,EAAkBX,OAAOkB,MAI7BT,QAAQC,KAAK,8CAEd,CAACpB,EAAMwB,SAAUH,IAMpB,OAJAY,EAAAA,UAAU,KACRJ,KACC,CAACA,IAEG,CAAEzB,YAAW8B,UAAWpB,EAAcO,oBAAmBE,qBAAoBM,cAAa5B,gEA9F3CD,IACtD,MAAMI,UAAEA,YAAW8B,EAAAb,kBAAWA,EAAAE,mBAAmBA,cAAoBM,EAAA5B,aAAaA,GAChFF,EAAkBC,GAEpB,SACEmC,kBAAAA,IAACtC,EAAcuC,SAAd,CACCrB,MAAO,CACLX,YACA8B,YACAb,oBACAE,qBACAM,cACA5B,gBAGDoC,SAAArC,EAAMqC,kCCzCN,SAA0BT,GAC/B,MAAMU,EAAO9B,EAAQC,IAAImB,GACzB,GAAIU,EACF,IACE,OAAO1B,KAAKC,MAAMyB,EAAI,OACfC,GAEP,OADApB,QAAQoB,MAAM,8BAA8BX,MAASW,GAC9C,IAAA,CAGX,OAAO,IACT,sBAEO,SAAwBX,EAAab,EAAUC,GACpD,IACE,MAAMsB,EAAO1B,KAAKM,UAAUH,GAC5BP,EAAQS,IAAIW,EAAKU,EAAMtB,EAAO,OACvBuB,GACPpB,QAAQoB,MAAM,8BAA8BX,MAASW,EAAK,CAE9D,oBCbyB,KACvB,MAAMC,EAAUC,EAAAA,WAAW5C,GAC3B,IAAK2C,EACH,MAAM,IAAIE,MAAM,mDAElB,OAAOF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.functions-B8FDl7nJ.js","sources":["../src/contexts/context-permission/context.functions.ts"],"sourcesContent":["export const urlBase64ToUint8Array = (base64String: string) => {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4)
|
|
1
|
+
{"version":3,"file":"context.functions-B8FDl7nJ.js","sources":["../src/contexts/context-permission/context.functions.ts"],"sourcesContent":["export const urlBase64ToUint8Array = (base64String: string) => {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');\n\n const rawData = window.atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n\n return outputArray;\n};\n"],"names":[],"mappings":"AAAO,MAAM,wBAAwB,CAAC,iBAAyB;AAC7D,QAAM,UAAU,IAAI,QAAQ,IAAK,aAAa,SAAS,KAAM,CAAC;AAC9D,QAAM,UAAU,eAAe,SAAS,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAE5E,QAAM,UAAU,OAAO,KAAK,MAAM;AAClC,QAAM,cAAc,IAAI,WAAW,QAAQ,MAAM;AAEjD,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACvC,gBAAY,CAAC,IAAI,QAAQ,WAAW,CAAC;AAAA,EAAA;AAGvC,SAAO;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.functions-BD15C8_y.js","sources":["../src/contexts/context-cookie/context.tsx","../src/contexts/context-cookie/context.hooks.ts","../src/contexts/context-cookie/context.functions.ts"],"sourcesContent":["import Cookies from 'js-cookie'
|
|
1
|
+
{"version":3,"file":"context.functions-BD15C8_y.js","sources":["../src/contexts/context-cookie/context.tsx","../src/contexts/context-cookie/context.hooks.ts","../src/contexts/context-cookie/context.functions.ts"],"sourcesContent":["import Cookies from 'js-cookie';\nimport { FC, createContext, useCallback, useEffect, useState } from 'react';\n\nimport { CookieAttributes, CookieContextProps, ProviderCookieProps, ValidCookieObject } from '.';\n\n/**\n * Context for managing cookies.\n */\nexport const CookieContext = createContext<CookieContextProps | null>(null);\n\n/**\n * Provider component for managing cookies.\n *\n * @remarks\n * You should understand which cookies you are changing and whether you have access to them.\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 ValidCookieObject {\n * access_token: string\n * refresh_token: string\n * }\n * }\n * ```\n */\nexport const ProviderCookie: FC<ProviderCookieProps> = (props) => {\n const { getCookie, setCookie, removeCookieValue, removeCookieValues, checkCookie, cookieValues } =\n useProviderCookie(props);\n\n return (\n <CookieContext.Provider\n value={{\n getCookie,\n setCookie,\n removeCookieValue,\n removeCookieValues,\n checkCookie,\n cookieValues,\n }}\n >\n {props.children}\n </CookieContext.Provider>\n );\n};\n\nconst useProviderCookie = (props: ProviderCookieProps) => {\n const [cookieValues, setCookieValues] = useState<ValidCookieObject>();\n\n const getCookie = useCallback(<K extends keyof ValidCookieObject>(name: K): ValidCookieObject[K] | undefined => {\n const cookie = Cookies.get(String(name));\n setCookieValues((prevState) => ({\n ...prevState,\n [name]: cookie ? JSON.parse(cookie) : undefined,\n }));\n return cookie ? JSON.parse(cookie) : undefined;\n }, []);\n\n const changeCookie = useCallback(\n <K extends keyof ValidCookieObject>(name: K, value: ValidCookieObject[K], options?: CookieAttributes) => {\n try {\n Cookies.set(String(name), JSON.stringify(value), options);\n setCookieValues((prevState) => ({ ...prevState, [name]: value }));\n } catch {\n console.info(`Provider Cookie. ChangeCookie error - key:${name}, value:${value}.`);\n }\n },\n [],\n );\n\n const removeCookieValue = useCallback(<K extends keyof ValidCookieObject>(name: K, options?: CookieAttributes) => {\n try {\n Cookies.remove(String(name), options);\n setCookieValues((prevState) => ({ ...prevState, [name]: undefined }));\n } catch {\n console.info(`Provider Cookie. RemoveCookieValue error - key:${name}.`);\n }\n }, []);\n\n const removeCookieValues = useCallback(() => {\n if (props.validate && props.validate.validateKeys) {\n props.validate?.validateKeys.forEach((key) => {\n removeCookieValue(String(key) as never);\n });\n } else {\n console.info('Provider Cookie. Validate is not defined.');\n }\n }, [props.validate, removeCookieValue]);\n\n const checkCookie = useCallback(() => {\n if (props.validate && props.validate.validateKeys && props.validate.getValidateCookieValue) {\n props.validate?.validateKeys.forEach((key) => {\n const cookieValue = Cookies.get(String(key));\n if (cookieValue) {\n try {\n const parsedValue = JSON.parse(cookieValue);\n if (!props.validate?.getValidateCookieValue(String(key) as never, parsedValue as never)) {\n removeCookieValue(String(key) as never);\n } else {\n setCookieValues((prevState) => ({\n ...prevState,\n [key]: parsedValue,\n }));\n }\n } catch {\n removeCookieValue(String(key) as never);\n }\n } else {\n removeCookieValue(String(key) as never);\n }\n });\n } else {\n console.info('Provider Cookie. Validate is not defined.');\n }\n }, [props.validate, removeCookieValue]);\n\n useEffect(() => {\n checkCookie();\n }, [checkCookie]);\n\n return { getCookie, setCookie: changeCookie, removeCookieValue, removeCookieValues, checkCookie, cookieValues };\n};\n","import { useContext } from 'react';\n\nimport { CookieContext, CookieContextProps } from '.';\n\n/**\n * Custom hook to access the CookieContext.\n *\n * @remarks\n * You should understand which cookies you are changing and whether you have access to them.\n *\n */\nexport const useCookie = (): CookieContextProps => {\n const context = useContext(CookieContext);\n if (!context) {\n throw new Error('useCookie must be used within an ProviderCookie');\n }\n return context;\n};\n","import Cookies from 'js-cookie';\n\nimport { CookieAttributes } from '.';\n\nexport function getFromCookie<T>(key: string): T | null {\n const item = Cookies.get(key);\n if (item) {\n try {\n return JSON.parse(item) as T;\n } catch (error) {\n console.error(`Error parsing cookie item \"${key}\":`, error);\n return null;\n }\n }\n return null;\n}\n\nexport function setToCookie<T>(key: string, value: T, options?: CookieAttributes): void {\n try {\n const item = JSON.stringify(value);\n Cookies.set(key, item, options);\n } catch (error) {\n console.error(`Error setting cookie item \"${key}\":`, error);\n }\n}\n"],"names":["jsx","_a"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.functions-CQ9GerPb.js","sources":["../src/contexts/context-local-storage/context.tsx","../src/contexts/context-local-storage/context.hooks.ts","../src/contexts/context-local-storage/context.functions.ts"],"sourcesContent":["import { FC, createContext, useCallback, useEffect, useState } from 'react'
|
|
1
|
+
{"version":3,"file":"context.functions-CQ9GerPb.js","sources":["../src/contexts/context-local-storage/context.tsx","../src/contexts/context-local-storage/context.hooks.ts","../src/contexts/context-local-storage/context.functions.ts"],"sourcesContent":["import { FC, createContext, useCallback, useEffect, useState } from 'react';\n\nimport { LocalStorageContextProps, ProviderLocalStorageProps, ValidLocalStorageObject } from '.';\n\nexport const LocalStorageContext = createContext<LocalStorageContextProps | 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 ValidLocalStorageObject {\n * access_token: string\n * refresh_token: string\n * }\n * }\n * ```\n */\nexport const ProviderLocalStorage: FC<ProviderLocalStorageProps> = (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: ProviderLocalStorageProps) => {\n const [localStorageValues, setLocalStorageValues] = useState<ValidLocalStorageObject>();\n\n const getLocalStorage = useCallback(\n <K extends keyof ValidLocalStorageObject>(name: K): ValidLocalStorageObject[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 ValidLocalStorageObject>(name: K, value: ValidLocalStorageObject[K]) => {\n try {\n localStorage.setItem(String(name), JSON.stringify(value));\n setLocalStorageValues((prevState) => ({ ...prevState, [name]: value }));\n } catch {\n console.info(`Provider LocalStorage. ChangeLocalStorage error - key:${name}, value:${value}.`);\n }\n },\n [],\n );\n\n const removeLocalStorageValue = useCallback(<K extends keyof ValidLocalStorageObject>(name: K) => {\n try {\n localStorage.removeItem(String(name));\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [name]: undefined,\n }));\n } catch {\n console.info(`Provider LocalStorage. RemoveLocalStorageValue error - key:${name}.`);\n }\n }, []);\n\n const removeLocalStorageValues = useCallback(() => {\n if (props.validate && props.validate.validateKeys) {\n props.validate?.validateKeys.forEach((key) => {\n removeLocalStorageValue(String(key) as never);\n });\n } else {\n console.info('Provider LocalStorage. RemoveLocalStorageValues - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n const checkLocalStorage = useCallback(() => {\n if (props.validate && 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 console.info('Provider LocalStorage. CheckLocalStorage - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n useEffect(() => {\n checkLocalStorage();\n }, [checkLocalStorage]);\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, LocalStorageContextProps } from '.';\n\n/**\n * Custom hook to access the LocalStorageContext.\n */\nexport const useLocalStorage = (): LocalStorageContextProps => {\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","export function getFromLocalStorage<T>(key: string): T | null {\n const item = localStorage.getItem(key);\n if (item) {\n try {\n return JSON.parse(item) as T;\n } catch (error) {\n console.error(`Error parsing localStorage item \"${key}\":`, error);\n return null;\n }\n }\n return null;\n}\n\nexport function setToLocalStorage<T>(key: string, value: T): void {\n try {\n const item = JSON.stringify(value);\n localStorage.setItem(key, item);\n } catch (error) {\n console.error(`Error setting localStorage item \"${key}\":`, error);\n }\n}\n"],"names":["jsx","_a"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.functions-ar41xFVo.cjs","sources":["../src/contexts/context-permission/context.functions.ts"],"sourcesContent":["export const urlBase64ToUint8Array = (base64String: string) => {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4)
|
|
1
|
+
{"version":3,"file":"context.functions-ar41xFVo.cjs","sources":["../src/contexts/context-permission/context.functions.ts"],"sourcesContent":["export const urlBase64ToUint8Array = (base64String: string) => {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');\n\n const rawData = window.atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n\n return outputArray;\n};\n"],"names":["base64String","base64","repeat","length","replace","rawData","window","atob","outputArray","Uint8Array","i","charCodeAt"],"mappings":"2CAAsCA,IACpC,MACMC,GAAUD,EADA,IAAIE,QAAQ,EAAKF,EAAaG,OAAS,GAAM,IACrBC,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAEnEC,EAAUC,OAAOC,KAAKN,GACtBO,EAAc,IAAIC,WAAWJ,EAAQF,QAE3C,IAAA,IAASO,EAAI,EAAGA,EAAIL,EAAQF,SAAUO,EACpCF,EAAYE,GAAKL,EAAQM,WAAWD,GAGtC,OAAOF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.functions-ohI9H54j.cjs","sources":["../src/contexts/context-local-storage/context.tsx","../src/contexts/context-local-storage/context.functions.ts","../src/contexts/context-local-storage/context.hooks.ts"],"sourcesContent":["import { FC, createContext, useCallback, useEffect, useState } from 'react'
|
|
1
|
+
{"version":3,"file":"context.functions-ohI9H54j.cjs","sources":["../src/contexts/context-local-storage/context.tsx","../src/contexts/context-local-storage/context.functions.ts","../src/contexts/context-local-storage/context.hooks.ts"],"sourcesContent":["import { FC, createContext, useCallback, useEffect, useState } from 'react';\n\nimport { LocalStorageContextProps, ProviderLocalStorageProps, ValidLocalStorageObject } from '.';\n\nexport const LocalStorageContext = createContext<LocalStorageContextProps | 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 ValidLocalStorageObject {\n * access_token: string\n * refresh_token: string\n * }\n * }\n * ```\n */\nexport const ProviderLocalStorage: FC<ProviderLocalStorageProps> = (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: ProviderLocalStorageProps) => {\n const [localStorageValues, setLocalStorageValues] = useState<ValidLocalStorageObject>();\n\n const getLocalStorage = useCallback(\n <K extends keyof ValidLocalStorageObject>(name: K): ValidLocalStorageObject[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 ValidLocalStorageObject>(name: K, value: ValidLocalStorageObject[K]) => {\n try {\n localStorage.setItem(String(name), JSON.stringify(value));\n setLocalStorageValues((prevState) => ({ ...prevState, [name]: value }));\n } catch {\n console.info(`Provider LocalStorage. ChangeLocalStorage error - key:${name}, value:${value}.`);\n }\n },\n [],\n );\n\n const removeLocalStorageValue = useCallback(<K extends keyof ValidLocalStorageObject>(name: K) => {\n try {\n localStorage.removeItem(String(name));\n setLocalStorageValues((prevState) => ({\n ...prevState,\n [name]: undefined,\n }));\n } catch {\n console.info(`Provider LocalStorage. RemoveLocalStorageValue error - key:${name}.`);\n }\n }, []);\n\n const removeLocalStorageValues = useCallback(() => {\n if (props.validate && props.validate.validateKeys) {\n props.validate?.validateKeys.forEach((key) => {\n removeLocalStorageValue(String(key) as never);\n });\n } else {\n console.info('Provider LocalStorage. RemoveLocalStorageValues - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n const checkLocalStorage = useCallback(() => {\n if (props.validate && 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 console.info('Provider LocalStorage. CheckLocalStorage - validate is not defined.');\n }\n }, [props.validate, removeLocalStorageValue]);\n\n useEffect(() => {\n checkLocalStorage();\n }, [checkLocalStorage]);\n\n return {\n getLocalStorage,\n setLocalStorage: changeLocalStorage,\n removeLocalStorageValue,\n removeLocalStorageValues,\n checkLocalStorage,\n localStorageValues,\n };\n};\n","export function getFromLocalStorage<T>(key: string): T | null {\n const item = localStorage.getItem(key);\n if (item) {\n try {\n return JSON.parse(item) as T;\n } catch (error) {\n console.error(`Error parsing localStorage item \"${key}\":`, error);\n return null;\n }\n }\n return null;\n}\n\nexport function setToLocalStorage<T>(key: string, value: T): void {\n try {\n const item = JSON.stringify(value);\n localStorage.setItem(key, item);\n } catch (error) {\n console.error(`Error setting localStorage item \"${key}\":`, error);\n }\n}\n","import { useContext } from 'react';\n\nimport { LocalStorageContext, LocalStorageContextProps } from '.';\n\n/**\n * Custom hook to access the LocalStorageContext.\n */\nexport const useLocalStorage = (): LocalStorageContextProps => {\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"],"names":["LocalStorageContext","createContext","useProviderLocalStorage","props","localStorageValues","setLocalStorageValues","useState","getLocalStorage","useCallback","name","localStorageValue","localStorage","getItem","prevState","JSON","parse","changeLocalStorage","value","setItem","String","stringify","console","info","removeLocalStorageValue","removeItem","removeLocalStorageValues","validate","validateKeys","_a","forEach","key","checkLocalStorage","getValidateLocalStorageValue","parsedValue","useEffect","setLocalStorage","jsx","Provider","children","item","error","context","useContext","Error"],"mappings":"8EAIaA,EAAsBC,EAAAA,cAA+C,MA6C5EC,EAA2BC,IAC/B,MAAOC,EAAoBC,GAAyBC,aAE9CC,EAAkBC,EAAAA,YACoBC,IACxC,MAAMC,EAAoBC,aAAaC,QAAQH,GAK/C,OAJAJ,EAAuBQ,IAAA,IAClBA,EACHJ,CAACA,GAAOC,EAAoBI,KAAKC,MAAML,QAAqB,KAEvDA,EAAoBI,KAAKC,MAAML,QAAqB,GAE7D,IAGIM,EAAqBR,EAAAA,YACzB,CAA0CC,EAASQ,KACjD,IACEN,aAAaO,QAAQC,OAAOV,GAAOK,KAAKM,UAAUH,IAClDZ,EAAuBQ,QAAoBA,EAAWJ,CAACA,GAAOQ,IAAQ,CAAA,MAEtEI,QAAQC,KAAK,yDAAyDb,YAAeQ,KAAQ,GAGjG,IAGIM,EAA0Bf,cAAsDC,IACpF,IACEE,aAAaa,WAAWL,OAAOV,IAC/BJ,EAAuBQ,IAAA,IAClBA,EACHJ,CAACA,QAAO,IACR,CAAA,MAEFY,QAAQC,KAAK,8DAA8Db,KAAO,GAEnF,IAEGgB,EAA2BjB,EAAAA,YAAY,WACvCL,EAAMuB,UAAYvB,EAAMuB,SAASC,aACnC,OAAAC,EAAAzB,EAAMuB,WAANE,EAAgBD,aAAaE,QAASC,IACpCP,EAAwBJ,OAAOW,MAGjCT,QAAQC,KAAK,+EAEd,CAACnB,EAAMuB,SAAUH,IAEdQ,EAAoBvB,EAAAA,YAAY,WAChCL,EAAMuB,UAAYvB,EAAMuB,SAASC,cAAgBxB,EAAMuB,SAASM,6BAClE,OAAAJ,EAAAzB,EAAMuB,WAANE,EAAgBD,aAAaE,QAASC,UACpC,MAAMpB,EAAoBC,aAAaC,QAAQkB,GAC/C,GAAIpB,EACF,IACE,MAAMuB,EAAcnB,KAAKC,MAAML,IAC1B,OAAAkB,EAAAzB,EAAMuB,eAAN,EAAAE,EAAgBI,6BAA6Bb,OAAOW,GAAeG,IAGtE5B,EAAuBQ,IAAA,IAClBA,EACHiB,CAACA,GAAMG,KAJTV,EAAwBJ,OAAOW,GAMjC,CAAA,MAEAP,EAAwBJ,OAAOW,GAAa,MAG9CP,EAAwBJ,OAAOW,MAInCT,QAAQC,KAAK,wEAEd,CAACnB,EAAMuB,SAAUH,IAMpB,OAJAW,EAAAA,UAAU,KACRH,KACC,CAACA,IAEG,CACLxB,kBACA4B,gBAAiBnB,EACjBO,0BACAE,2BACAM,oBACA3B,kFAhHgED,IAClE,MAAMI,gBACJA,EAAA4B,gBACAA,EAAAZ,wBACAA,EAAAE,yBACAA,EAAAM,kBACAA,EAAA3B,mBACAA,GACEF,EAAwBC,GAE5B,SACEiC,kBAAAA,IAACpC,EAAoBqC,SAApB,CACCpB,MAAO,CACLV,kBACA4B,kBACAZ,0BACAE,2BACAM,oBACA3B,sBAGDkC,SAAAnC,EAAMmC,wCC5CN,SAAgCR,GACrC,MAAMS,EAAO5B,aAAaC,QAAQkB,GAClC,GAAIS,EACF,IACE,OAAOzB,KAAKC,MAAMwB,EAAI,OACfC,GAEP,OADAnB,QAAQmB,MAAM,oCAAoCV,MAASU,GACpD,IAAA,CAGX,OAAO,IACT,4BAEO,SAA8BV,EAAab,GAChD,IACE,MAAMsB,EAAOzB,KAAKM,UAAUH,GAC5BN,aAAaO,QAAQY,EAAKS,EAAI,OACvBC,GACPnB,QAAQmB,MAAM,oCAAoCV,MAASU,EAAK,CAEpE,0BCb+B,KAC7B,MAAMC,EAAUC,EAAAA,WAAW1C,GAC3B,IAAKyC,EACH,MAAM,IAAIE,MAAM,+DAElB,OAAOF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.hooks-7ydA7mGj.js","sources":["../src/contexts/context-permission/context.tsx","../src/contexts/context-permission/context.hooks.ts"],"sourcesContent":["import { createContext, useCallback, useEffect, useState } from 'react'
|
|
1
|
+
{"version":3,"file":"context.hooks-7ydA7mGj.js","sources":["../src/contexts/context-permission/context.tsx","../src/contexts/context-permission/context.hooks.ts"],"sourcesContent":["import { createContext, useCallback, useEffect, useState } from 'react';\n\nimport { PermissionContextProps, ProviderPermissionProps } from '.';\n\nexport const PermissionContext = createContext<PermissionContextProps | null>(null);\n\nexport const ProviderPermission = (props: ProviderPermissionProps) => {\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 console.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 console.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 console.error('Provider Permission. Failed to request notification permission:', error);\n }\n } else {\n console.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, PermissionContextProps } from '.';\n\n/**\n * Custom hook to access the PermissionContext.\n */\nexport const usePermission = (): PermissionContextProps => {\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"],"names":["jsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.hooks-BIsapq-0.cjs","sources":["../src/contexts/context-screen-width/context.tsx","../src/contexts/context-screen-width/context.hooks.ts"],"sourcesContent":["import { FC, createContext, useEffect, useMemo, useState } from 'react'
|
|
1
|
+
{"version":3,"file":"context.hooks-BIsapq-0.cjs","sources":["../src/contexts/context-screen-width/context.tsx","../src/contexts/context-screen-width/context.hooks.ts"],"sourcesContent":["import { FC, createContext, useEffect, useMemo, useState } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ProviderScreenWidthProps, ScreenWidthContextProps, Screens } from '.';\n\nexport const ScreenWidthContext = createContext<ScreenWidthContextProps | null>(null);\n\nexport const ProviderScreenWidth: FC<ProviderScreenWidthProps> = (props) => {\n const theme = useTheme();\n const [screenWidth, setScreenWidth] = useState<Screens>('default');\n\n const screens: ScreenWidthContextProps['screens'] = useMemo(() => {\n const allSizes = Object.entries(theme.screens).map(([key]) => {\n return {\n isScreen: screenWidth === key,\n value: key as Screens,\n };\n });\n return allSizes;\n }, [screenWidth, theme.screens]);\n\n const screenActual: ScreenWidthContextProps['screenActual'] = useMemo(() => {\n const find = screens.find((item) => item.isScreen);\n return find?.value ?? 'default';\n }, [screens]);\n\n useEffect(() => {\n const sortedScreens = Object.entries(theme.screens)\n .map(([key, value]) => ({\n key: key as Screens,\n bp: (value as { width: number }).width,\n }))\n .sort((a, b) => a.bp - b.bp);\n\n const queries = sortedScreens.map(({ key, bp }) => {\n return { key, mq: window.matchMedia(`(max-width: ${bp}px)`) };\n });\n const updateScreen = () => {\n for (const { key, mq } of queries) {\n if (mq.matches) {\n setScreenWidth(key);\n return;\n }\n }\n // На всякий случай fallback\n setScreenWidth('default');\n };\n\n queries.forEach(({ mq }) => mq.addEventListener('change', updateScreen));\n updateScreen();\n\n return () => {\n queries.forEach(({ mq }) => mq.removeEventListener('change', updateScreen));\n };\n }, [theme.screens]);\n return (\n <ScreenWidthContext.Provider\n value={{\n screens,\n screenActual,\n screenWidth,\n }}\n >\n {props.children}\n </ScreenWidthContext.Provider>\n );\n};\n","import { useContext } from 'react';\n\nimport { ScreenWidthContext, ScreenWidthContextProps } from '.';\n\nexport const useScreenWidth = (): ScreenWidthContextProps => {\n const context = useContext(ScreenWidthContext);\n if (!context) {\n throw new Error('useScreenWidth must be used within an ProviderScreenWidth');\n }\n return context;\n};\n"],"names":["ScreenWidthContext","createContext","props","theme","useTheme","screenWidth","setScreenWidth","useState","screens","useMemo","Object","entries","map","key","isScreen","value","screenActual","find","item","useEffect","queries","bp","width","sort","a","b","mq","window","matchMedia","updateScreen","matches","forEach","addEventListener","removeEventListener","jsx","Provider","children","context","useContext","Error"],"mappings":"6GAKaA,EAAqBC,EAAAA,cAA8C,kCAEdC,IAChE,MAAMC,EAAQC,EAAAA,YACPC,EAAaC,GAAkBC,EAAAA,SAAkB,WAElDC,EAA8CC,EAAAA,QAAQ,IACzCC,OAAOC,QAAQR,EAAMK,SAASI,IAAI,EAAEC,MAC5C,CACLC,SAAUT,IAAgBQ,EAC1BE,MAAOF,KAIV,CAACR,EAAaF,EAAMK,UAEjBQ,EAAwDP,EAAAA,QAAQ,KACpE,MAAMQ,EAAOT,EAAQS,KAAMC,GAASA,EAAKJ,UACzC,aAAOG,WAAMF,QAAS,WACrB,CAACP,IA+BJ,OA7BAW,EAAAA,UAAU,KACR,MAOMC,EAPgBV,OAAOC,QAAQR,EAAMK,SACxCI,IAAI,EAAEC,EAAKE,MAAK,CACfF,MACAQ,GAAKN,EAA4BO,SAElCC,KAAK,CAACC,EAAGC,IAAMD,EAAEH,GAAKI,EAAEJ,IAEGT,IAAI,EAAGC,MAAKQ,SACjC,CAAER,MAAKa,GAAIC,OAAOC,WAAW,eAAeP,WAE/CQ,EAAe,KACnB,IAAA,MAAWhB,IAAEA,EAAAa,GAAKA,KAAQN,EACxB,GAAIM,EAAGI,QAEL,YADAxB,EAAeO,GAKnBP,EAAe,YAMjB,OAHAc,EAAQW,QAAQ,EAAGL,QAASA,EAAGM,iBAAiB,SAAUH,IAC1DA,IAEO,KACLT,EAAQW,QAAQ,EAAGL,QAASA,EAAGO,oBAAoB,SAAUJ,MAE9D,CAAC1B,EAAMK,YAER0B,kBAAAA,IAAClC,EAAmBmC,SAAnB,CACCpB,MAAO,CACLP,UACAQ,eACAX,eAGD+B,SAAAlC,EAAMkC,gEC3DiB,KAC5B,MAAMC,EAAUC,EAAAA,WAAWtC,GAC3B,IAAKqC,EACH,MAAM,IAAIE,MAAM,6DAElB,OAAOF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.hooks-BmwyZ1p3.js","sources":["../src/contexts/context-screen-width/context.tsx","../src/contexts/context-screen-width/context.hooks.ts"],"sourcesContent":["import { FC, createContext, useEffect, useMemo, useState } from 'react'
|
|
1
|
+
{"version":3,"file":"context.hooks-BmwyZ1p3.js","sources":["../src/contexts/context-screen-width/context.tsx","../src/contexts/context-screen-width/context.hooks.ts"],"sourcesContent":["import { FC, createContext, useEffect, useMemo, useState } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ProviderScreenWidthProps, ScreenWidthContextProps, Screens } from '.';\n\nexport const ScreenWidthContext = createContext<ScreenWidthContextProps | null>(null);\n\nexport const ProviderScreenWidth: FC<ProviderScreenWidthProps> = (props) => {\n const theme = useTheme();\n const [screenWidth, setScreenWidth] = useState<Screens>('default');\n\n const screens: ScreenWidthContextProps['screens'] = useMemo(() => {\n const allSizes = Object.entries(theme.screens).map(([key]) => {\n return {\n isScreen: screenWidth === key,\n value: key as Screens,\n };\n });\n return allSizes;\n }, [screenWidth, theme.screens]);\n\n const screenActual: ScreenWidthContextProps['screenActual'] = useMemo(() => {\n const find = screens.find((item) => item.isScreen);\n return find?.value ?? 'default';\n }, [screens]);\n\n useEffect(() => {\n const sortedScreens = Object.entries(theme.screens)\n .map(([key, value]) => ({\n key: key as Screens,\n bp: (value as { width: number }).width,\n }))\n .sort((a, b) => a.bp - b.bp);\n\n const queries = sortedScreens.map(({ key, bp }) => {\n return { key, mq: window.matchMedia(`(max-width: ${bp}px)`) };\n });\n const updateScreen = () => {\n for (const { key, mq } of queries) {\n if (mq.matches) {\n setScreenWidth(key);\n return;\n }\n }\n // На всякий случай fallback\n setScreenWidth('default');\n };\n\n queries.forEach(({ mq }) => mq.addEventListener('change', updateScreen));\n updateScreen();\n\n return () => {\n queries.forEach(({ mq }) => mq.removeEventListener('change', updateScreen));\n };\n }, [theme.screens]);\n return (\n <ScreenWidthContext.Provider\n value={{\n screens,\n screenActual,\n screenWidth,\n }}\n >\n {props.children}\n </ScreenWidthContext.Provider>\n );\n};\n","import { useContext } from 'react';\n\nimport { ScreenWidthContext, ScreenWidthContextProps } from '.';\n\nexport const useScreenWidth = (): ScreenWidthContextProps => {\n const context = useContext(ScreenWidthContext);\n if (!context) {\n throw new Error('useScreenWidth must be used within an ProviderScreenWidth');\n }\n return context;\n};\n"],"names":["jsx"],"mappings":";;;AAKO,MAAM,qBAAqB,cAA8C,IAAI;AAE7E,MAAM,sBAAoD,CAAC,UAAU;AAC1E,QAAM,QAAQ,SAAA;AACd,QAAM,CAAC,aAAa,cAAc,IAAI,SAAkB,SAAS;AAEjE,QAAM,UAA8C,QAAQ,MAAM;AAChE,UAAM,WAAW,OAAO,QAAQ,MAAM,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM;AAC5D,aAAO;AAAA,QACL,UAAU,gBAAgB;AAAA,QAC1B,OAAO;AAAA,MAAA;AAAA,IACT,CACD;AACD,WAAO;AAAA,EAAA,GACN,CAAC,aAAa,MAAM,OAAO,CAAC;AAE/B,QAAM,eAAwD,QAAQ,MAAM;AAC1E,UAAM,OAAO,QAAQ,KAAK,CAAC,SAAS,KAAK,QAAQ;AACjD,YAAO,6BAAM,UAAS;AAAA,EAAA,GACrB,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACd,UAAM,gBAAgB,OAAO,QAAQ,MAAM,OAAO,EAC/C,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,MACtB;AAAA,MACA,IAAK,MAA4B;AAAA,IAAA,EACjC,EACD,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAE7B,UAAM,UAAU,cAAc,IAAI,CAAC,EAAE,KAAK,SAAS;AACjD,aAAO,EAAE,KAAK,IAAI,OAAO,WAAW,eAAe,EAAE,KAAK,EAAA;AAAA,IAAE,CAC7D;AACD,UAAM,eAAe,MAAM;AACzB,iBAAW,EAAE,KAAK,GAAA,KAAQ,SAAS;AACjC,YAAI,GAAG,SAAS;AACd,yBAAe,GAAG;AAClB;AAAA,QAAA;AAAA,MACF;AAGF,qBAAe,SAAS;AAAA,IAAA;AAG1B,YAAQ,QAAQ,CAAC,EAAE,GAAA,MAAS,GAAG,iBAAiB,UAAU,YAAY,CAAC;AACvE,iBAAA;AAEA,WAAO,MAAM;AACX,cAAQ,QAAQ,CAAC,EAAE,GAAA,MAAS,GAAG,oBAAoB,UAAU,YAAY,CAAC;AAAA,IAAA;AAAA,EAC5E,GACC,CAAC,MAAM,OAAO,CAAC;AAClB,SACEA,kCAAAA;AAAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAGD,UAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AAGb;AC9DO,MAAM,iBAAiB,MAA+B;AAC3D,QAAM,UAAU,WAAW,kBAAkB;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAAA;AAE7E,SAAO;AACT;"}
|