@jenesei-software/jenesei-kit-react 2.3.0 → 2.3.2

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.
Files changed (159) hide show
  1. package/build/area-outside.cjs.js +1 -1
  2. package/build/area-outside.es.js +1 -1
  3. package/build/area-preview.cjs.js +1 -1
  4. package/build/area-preview.es.js +1 -1
  5. package/build/area-skeleton.cjs.js +1 -1
  6. package/build/area-skeleton.es.js +1 -1
  7. package/build/button-6CFvwtSz.cjs +3 -0
  8. package/build/button-6CFvwtSz.cjs.map +1 -0
  9. package/build/button-D6Bg00Uh.js +120 -0
  10. package/build/button-D6Bg00Uh.js.map +1 -0
  11. package/build/{checkbox-Bxt8K0ZY.cjs → checkbox-9ue4f3-6.cjs} +2 -2
  12. package/build/{checkbox-Bxt8K0ZY.cjs.map → checkbox-9ue4f3-6.cjs.map} +1 -1
  13. package/build/{checkbox-DPkXe4_5.js → checkbox-TW5VSNui.js} +3 -3
  14. package/build/{checkbox-DPkXe4_5.js.map → checkbox-TW5VSNui.js.map} +1 -1
  15. package/build/component-button.cjs.js +1 -1
  16. package/build/component-button.es.js +1 -1
  17. package/build/component-checkbox.cjs.js +1 -1
  18. package/build/component-checkbox.es.js +1 -1
  19. package/build/component-date-picker.cjs.js +1 -1
  20. package/build/component-date-picker.es.js +1 -1
  21. package/build/component-icon.cjs.js +1 -1
  22. package/build/component-icon.es.js +1 -1
  23. package/build/component-input-otp.cjs.js +1 -1
  24. package/build/component-input-otp.es.js +1 -1
  25. package/build/component-input.cjs.js +1 -1
  26. package/build/component-input.es.js +1 -1
  27. package/build/component-pagination.cjs.js +1 -1
  28. package/build/component-pagination.es.js +1 -1
  29. package/build/component-popover.cjs.js +1 -1
  30. package/build/component-popover.es.js +1 -1
  31. package/build/component-select.cjs.js +1 -1
  32. package/build/component-select.es.js +1 -1
  33. package/build/component-textarea.cjs.js +1 -1
  34. package/build/component-textarea.es.js +1 -1
  35. package/build/component-toggle.cjs.js +1 -1
  36. package/build/component-toggle.es.js +1 -1
  37. package/build/component-tooltip.cjs.js +1 -1
  38. package/build/component-tooltip.es.js +1 -1
  39. package/build/component-typography.cjs.js +1 -1
  40. package/build/component-typography.es.js +1 -1
  41. package/build/components/button/component.d.ts +1 -2
  42. package/build/components/select/component.types.d.ts +1 -0
  43. package/build/components-error.cjs.js +1 -1
  44. package/build/components-error.es.js +1 -1
  45. package/build/{context-app-Dsa1tKlU.cjs → context-app-29ajupjq.cjs} +2 -2
  46. package/build/{context-app-Dsa1tKlU.cjs.map → context-app-29ajupjq.cjs.map} +1 -1
  47. package/build/{context-app-C9XoarPw.js → context-app-CxNgCfd2.js} +2 -2
  48. package/build/{context-app-C9XoarPw.js.map → context-app-CxNgCfd2.js.map} +1 -1
  49. package/build/context-app.cjs.js +1 -1
  50. package/build/context-app.es.js +1 -1
  51. package/build/{context-dialog-DctdSBC8.cjs → context-dialog-BLb0fPJw.cjs} +2 -2
  52. package/build/{context-dialog-DctdSBC8.cjs.map → context-dialog-BLb0fPJw.cjs.map} +1 -1
  53. package/build/{context-dialog-DzwL2ElF.js → context-dialog-IYNzoNOe.js} +2 -2
  54. package/build/{context-dialog-DzwL2ElF.js.map → context-dialog-IYNzoNOe.js.map} +1 -1
  55. package/build/context-dialog.cjs.js +1 -1
  56. package/build/context-dialog.es.js +1 -1
  57. package/build/{context-sonner-Dqw0jhwT.cjs → context-sonner-B-eO7pwI.cjs} +2 -2
  58. package/build/{context-sonner-Dqw0jhwT.cjs.map → context-sonner-B-eO7pwI.cjs.map} +1 -1
  59. package/build/{context-sonner-MO6uE8y0.js → context-sonner-CtCttHLD.js} +3 -3
  60. package/build/{context-sonner-MO6uE8y0.js.map → context-sonner-CtCttHLD.js.map} +1 -1
  61. package/build/context-sonner.cjs.js +1 -1
  62. package/build/context-sonner.es.js +1 -1
  63. package/build/{date-picker-ATktGA1c.cjs → date-picker-9rpPgP0a.cjs} +2 -2
  64. package/build/{date-picker-ATktGA1c.cjs.map → date-picker-9rpPgP0a.cjs.map} +1 -1
  65. package/build/{date-picker-D81n3KbO.js → date-picker-BvKtH7lp.js} +6 -6
  66. package/build/{date-picker-D81n3KbO.js.map → date-picker-BvKtH7lp.js.map} +1 -1
  67. package/build/{error-BdFba_yV.cjs → error-aQfsl_Kl.cjs} +1 -1
  68. package/build/{error-BdFba_yV.cjs.map → error-aQfsl_Kl.cjs.map} +1 -1
  69. package/build/{error-BFb2NCum.js → error-iaB6e_aq.js} +1 -1
  70. package/build/{error-BFb2NCum.js.map → error-iaB6e_aq.js.map} +1 -1
  71. package/build/hooks/use-fps/index.d.ts +2 -0
  72. package/build/hooks/use-fps/use.d.ts +2 -0
  73. package/build/hooks/use-fps/use.types.d.ts +10 -0
  74. package/build/hooks-use-deep-compare-memoize.cjs.js +1 -1
  75. package/build/hooks-use-deep-compare-memoize.es.js +1 -1
  76. package/build/hooks-use-deep-memo.cjs.js +1 -1
  77. package/build/hooks-use-deep-memo.es.js +1 -1
  78. package/build/hooks-use-fps.cjs.js +3 -0
  79. package/build/hooks-use-fps.cjs.js.map +1 -0
  80. package/build/hooks-use-fps.d.ts +2 -0
  81. package/build/hooks-use-fps.es.js +46 -0
  82. package/build/hooks-use-fps.es.js.map +1 -0
  83. package/build/{icon-Ddkbk3-m.cjs → icon-DyjaxKWq.cjs} +2 -2
  84. package/build/{icon-Ddkbk3-m.cjs.map → icon-DyjaxKWq.cjs.map} +1 -1
  85. package/build/{icon-D2w7GViT.js → icon-Y-IZxLXB.js} +2 -2
  86. package/build/{icon-D2w7GViT.js.map → icon-Y-IZxLXB.js.map} +1 -1
  87. package/build/index.cjs.js +1 -1
  88. package/build/index.d.ts +1 -0
  89. package/build/index.es.js +46 -44
  90. package/build/{input-B9ceeR9v.js → input-Buf_HFGH.js} +34 -30
  91. package/build/{input-B9ceeR9v.js.map → input-Buf_HFGH.js.map} +1 -1
  92. package/build/{input-CmdwwrV2.cjs → input-DMm67Wyr.cjs} +3 -3
  93. package/build/{input-CmdwwrV2.cjs.map → input-DMm67Wyr.cjs.map} +1 -1
  94. package/build/input-otp-MDjIcfVu.cjs +3 -0
  95. package/build/input-otp-MDjIcfVu.cjs.map +1 -0
  96. package/build/{input-otp-CeMGm5Xq.js → input-otp-q4zKk_nP.js} +26 -26
  97. package/build/input-otp-q4zKk_nP.js.map +1 -0
  98. package/build/{isEqual-0jZ23Bb6.js → isEqual-BHn_Fkkw.js} +1 -1
  99. package/build/{isEqual-0jZ23Bb6.js.map → isEqual-BHn_Fkkw.js.map} +1 -1
  100. package/build/{isEqual-BA0P9-C8.cjs → isEqual-Q-mEN2md.cjs} +1 -1
  101. package/build/{isEqual-BA0P9-C8.cjs.map → isEqual-Q-mEN2md.cjs.map} +1 -1
  102. package/build/{outside-CXyCk8h1.cjs → outside-BP81eKu0.cjs} +2 -2
  103. package/build/{outside-CXyCk8h1.cjs.map → outside-BP81eKu0.cjs.map} +1 -1
  104. package/build/{outside-DopxX0PZ.js → outside-_oOot7z3.js} +6 -6
  105. package/build/{outside-DopxX0PZ.js.map → outside-_oOot7z3.js.map} +1 -1
  106. package/build/{pagination-BluJtJl7.js → pagination-BFTnpYCz.js} +33 -23
  107. package/build/pagination-BFTnpYCz.js.map +1 -0
  108. package/build/pagination-ZXl2fVKZ.cjs +3 -0
  109. package/build/pagination-ZXl2fVKZ.cjs.map +1 -0
  110. package/build/{popover-DHWcQVp1.js → popover--NOw9qfd.js} +1 -1
  111. package/build/{popover-DHWcQVp1.js.map → popover--NOw9qfd.js.map} +1 -1
  112. package/build/{popover-DQkn4RWI.cjs → popover-B1KASIeD.cjs} +1 -1
  113. package/build/{popover-DQkn4RWI.cjs.map → popover-B1KASIeD.cjs.map} +1 -1
  114. package/build/{preview-Bc2qdyd4.js → preview-C-mtYSGG.js} +20 -20
  115. package/build/preview-C-mtYSGG.js.map +1 -0
  116. package/build/preview-p2i9Ju3I.cjs +3 -0
  117. package/build/preview-p2i9Ju3I.cjs.map +1 -0
  118. package/build/select-7yVS14II.cjs +9 -0
  119. package/build/select-7yVS14II.cjs.map +1 -0
  120. package/build/{select-CCbtkj6f.js → select-BdGRG7zf.js} +1069 -1054
  121. package/build/select-BdGRG7zf.js.map +1 -0
  122. package/build/skeleton-BfOHjRgT.cjs +3 -0
  123. package/build/skeleton-BfOHjRgT.cjs.map +1 -0
  124. package/build/skeleton-wRSg85X7.js +39 -0
  125. package/build/skeleton-wRSg85X7.js.map +1 -0
  126. package/build/styles.css +1 -1
  127. package/build/{textarea-DInJb6Lz.cjs → textarea-Bm3ki2-6.cjs} +2 -2
  128. package/build/{textarea-DInJb6Lz.cjs.map → textarea-Bm3ki2-6.cjs.map} +1 -1
  129. package/build/{textarea-jIGZ0JdP.js → textarea-DLZq4RT-.js} +2 -2
  130. package/build/{textarea-jIGZ0JdP.js.map → textarea-DLZq4RT-.js.map} +1 -1
  131. package/build/{toggle-D1nXs-LD.js → toggle-Bzru0yZw.js} +2 -2
  132. package/build/{toggle-D1nXs-LD.js.map → toggle-Bzru0yZw.js.map} +1 -1
  133. package/build/{toggle-BEmUm0of.cjs → toggle-CdUVhH0Z.cjs} +2 -2
  134. package/build/{toggle-BEmUm0of.cjs.map → toggle-CdUVhH0Z.cjs.map} +1 -1
  135. package/build/{typography-BKp4OAQI.cjs → typography-DzYrzZZb.cjs} +2 -2
  136. package/build/{typography-BKp4OAQI.cjs.map → typography-DzYrzZZb.cjs.map} +1 -1
  137. package/build/{typography-07KEDl9_.js → typography-Tebu6c9L.js} +2 -2
  138. package/build/{typography-07KEDl9_.js.map → typography-Tebu6c9L.js.map} +1 -1
  139. package/package.json +7 -1
  140. package/build/button-C1w25-Hk.js +0 -102
  141. package/build/button-C1w25-Hk.js.map +0 -1
  142. package/build/button-CHEeSypf.cjs +0 -3
  143. package/build/button-CHEeSypf.cjs.map +0 -1
  144. package/build/input-otp-CJfZoWd7.cjs +0 -3
  145. package/build/input-otp-CJfZoWd7.cjs.map +0 -1
  146. package/build/input-otp-CeMGm5Xq.js.map +0 -1
  147. package/build/pagination-BluJtJl7.js.map +0 -1
  148. package/build/pagination-VMAFNidU.cjs +0 -3
  149. package/build/pagination-VMAFNidU.cjs.map +0 -1
  150. package/build/preview-BLu-NOv2.cjs +0 -3
  151. package/build/preview-BLu-NOv2.cjs.map +0 -1
  152. package/build/preview-Bc2qdyd4.js.map +0 -1
  153. package/build/select-CCbtkj6f.js.map +0 -1
  154. package/build/select-CGXyVf57.cjs +0 -9
  155. package/build/select-CGXyVf57.cjs.map +0 -1
  156. package/build/skeleton-Bh6zA5iB.js +0 -39
  157. package/build/skeleton-Bh6zA5iB.js.map +0 -1
  158. package/build/skeleton-DmaXsm9C.cjs +0 -3
  159. package/build/skeleton-DmaXsm9C.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context-sonner-Dqw0jhwT.cjs","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"context-sonner-B-eO7pwI.cjs","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { n as U, r as f } from "./utils-BRgi6734.js";
2
2
  import { t as F } from "./functions-DzX-pTN8.js";
3
3
  import { t as G } from "./proxy-BFHkqO7P.js";
4
4
  import { t as W } from "./AnimatePresence-BWc2vFe-.js";
5
- import { r as I } from "./icon-D2w7GViT.js";
6
- import { t as $ } from "./button-C1w25-Hk.js";
5
+ import { r as I } from "./icon-Y-IZxLXB.js";
6
+ import { t as $ } from "./button-D6Bg00Uh.js";
7
7
  import { n as j, t as K } from "./dist-ck-7oUux.js";
8
8
  import { t as w } from "./v4-CYaPyb-W.js";
9
9
  import { Fragment as Y, jsx as l, jsxs as b } from "react/jsx-runtime";
@@ -215,4 +215,4 @@ export {
215
215
  Oe as t
216
216
  };
217
217
 
218
- //# sourceMappingURL=context-sonner-MO6uE8y0.js.map
218
+ //# sourceMappingURL=context-sonner-CtCttHLD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-sonner-MO6uE8y0.js","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"context-sonner-CtCttHLD.js","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-sonner-Dqw0jhwT.cjs");exports.ProviderSonner=e.ProviderSonner;exports.useSonner=e.useSonner;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-sonner-B-eO7pwI.cjs");exports.ProviderSonner=e.ProviderSonner;exports.useSonner=e.useSonner;
@@ -1,4 +1,4 @@
1
- import { n as o, t as e } from "./context-sonner-MO6uE8y0.js";
1
+ import { n as o, t as e } from "./context-sonner-CtCttHLD.js";
2
2
  export {
3
3
  o as ProviderSonner,
4
4
  e as useSonner
@@ -1,3 +1,3 @@
1
- const Ut=require("./chunk-Dd8m0Ver.cjs"),e=require("./utils-DCIq-5FL.cjs"),V=require("./functions-CZrZU5U0.cjs"),st=require("./component-CbJ_P8yq.cjs");require("./component-stack.cjs.js");const at=require("./hooks-use-typography-styles.cjs.js"),ae=require("./button-CHEeSypf.cjs"),kt=require("./error-BdFba_yV.cjs"),ut=require("./popover-DQkn4RWI.cjs"),At=require("./typography-BKp4OAQI.cjs"),x=require("./select-CGXyVf57.cjs"),St=require("./dist-SXTf0-_7.cjs");let d=require("react/jsx-runtime"),o=require("react");var C=(function(t){return t.DD="DD",t.MM="MM",t.YYYY="YYYY",t})({}),_t=["mo","tu","we","th","fr","sa","su"],ct=[C.DD,C.MM,C.YYYY],it={[C.DD]:"",[C.MM]:"",[C.YYYY]:""},dt=St.createContext(null);function n(t){return St.useContextSelector(dt,r=>{if(!r)throw new Error("DatePicker context is not available.");return t(r)})}var Rt=t=>{const{ariaLabel:r,autoComplete:c,className:S,classNamePopover:h,control:s,dateDefault:p,dateMax:u,dateMin:f,error:y,genre:m,id:l,isBold:ce,isDisabled:g,isOnClickClose:ye,isReadOnly:q,isShowClearButton:X,labelPlaceholder:Q,locale:Y,mode:H,name:Ce,onBlur:Z,onChange:W,onFocus:he,size:D,style:ge,stylePopover:fe,sxTypography:ke,type:ie}=t,[_,Ae]=(0,o.useState)(null),[P,pt]=(0,o.useState)(x.hooks(p).utc()),[R,_e]=(0,o.useState)(it),[k,$]=(0,o.useState)(null),[Re,w]=(0,o.useState)(!1),[J,De]=(0,o.useState)(!1),le=(0,o.useRef)(R),ee=(0,o.useRef)(!1),ve=(0,o.useRef)(""),Pe=(0,o.useRef)(null),be=(0,o.useRef)(null),z=(0,o.useRef)(null);(0,o.useEffect)(()=>{le.current=R},[R]);const I=(0,o.useMemo)(()=>R[C.DD]!==""||R[C.MM]!==""||R[C.YYYY]!=="",[R]),B=(0,o.useCallback)(i=>{_e(a=>Kt(a,i)?a:i)},[]),K=(0,o.useCallback)(()=>{B(it)},[B]),O=(0,o.useMemo)(()=>!H||H.length===0||new Set(H).size!==H.length?ct:H,[H]),j=(0,o.useMemo)(()=>ie||"manualAndSelect",[ie]),Ve=(0,o.useMemo)(()=>({[C.DD]:Y.inputs.day,[C.MM]:Y.inputs.month,[C.YYYY]:Y.inputs.year}),[Y.inputs.day,Y.inputs.month,Y.inputs.year]),ue=(0,o.useCallback)((i,a)=>{_e(A=>A[i]===a?A:{...A,[i]:a})},[]),Me=(0,o.useCallback)(i=>{$(i)},[]),Se=(0,o.useCallback)(()=>{$(null)},[]),te=(0,o.useCallback)(i=>{$(qt(i,O))},[O]),de=(0,o.useCallback)(i=>{$($t(i,O))},[O]),xe=(0,o.useMemo)(()=>_t.map((i,a)=>({index:a,label:Y.weeks.find(A=>A.value===i)?.localeShort??i.toUpperCase()})),[Y.weeks]),ne=(0,o.useMemo)(()=>{const i=x.hooks.utc(),a=_??P,A=a.clone().startOf("month"),v=a.clone().endOf("month"),M=f?x.hooks.utc(f):null,G=u?x.hooks.utc(u):null,re=A.clone().subtract(A.isoWeekday()-1,"days"),se=v.clone().add(7-v.isoWeekday(),"days"),F=[],b=re.clone();for(;b<=se;){const pe=b.isBetween(A,v,"day","[]");F.push({value:b.valueOf(),labelString:b.format("dd"),labelNumber:b.date(),dayOfWeek:b.isoWeekday(),isWeekend:[6,7].includes(b.isoWeekday()),weekOfMonth:Math.ceil((F.length+1)/7),isToday:b.isSame(i,"day"),isCurrentMonth:pe,isChoice:b.valueOf()===_?.valueOf(),isDisabled:!!(M&&b.isBefore(M,"day")||G&&b.isAfter(G,"day"))}),b.add(1,"day")}return F},[_,P,u,f]),Ne=(0,o.useMemo)(()=>Ft(ne.length)+1,[ne]),Ye=(0,o.useMemo)(()=>e.CSS_VARS.sizeValue[D].radius,[D]),mt=(0,o.useMemo)(()=>e.CSS_VARS.sizeValue[D].padding,[D]),L=(0,o.useMemo)(()=>_!==null,[_]),We=(0,o.useMemo)(()=>{const i=(_??P).clone().add(1,"month").startOf("month");return u?i.isAfter(x.hooks.utc(u),"month"):!1},[_,u,P]),we=(0,o.useMemo)(()=>{const i=(_??P).clone().subtract(1,"month").startOf("month");return f?i.isBefore(x.hooks.utc(f),"month"):!1},[_,f,P]),yt=(0,o.useCallback)(()=>{he?.()},[he]),Ct=(0,o.useCallback)(()=>{Z?.()},[Z]),{isOpen:T,refReference:Oe,refFloating:Ie,floatingStyles:Be,close:E,toggle:je}=ut.usePopover({isFocusTrap:!0,placement:"bottom-start",offset:mt,mode:"independence",isClickOutside:!0,refsExcludeClickOutside:(0,o.useMemo)(()=>[Pe,be],[]),isDisabled:g||q,onFocus:yt,onBlur:Ct,onBlurReference:Se}),oe=(0,o.useMemo)(()=>!!(!J&&!L&&Q&&(j==="select"||!T)&&!I&&!k),[J,L,T,Q,I,k,j]),N=(0,o.useCallback)((i,a,A)=>{const v=x.hooks(i).utc(),M=v.clone().date().toString(),G=(v.clone().month()+1).toString(),re=M.padStart(2,"0"),se=G.padStart(2,"0"),F=v.clone().year().toString(),b=A?.[C.DD],pe=A?.[C.MM],gt=A?.[C.YYYY],ft=re===b&&se===pe&&gt===F,rt=_?.isSame(v,"day");rt||(Ae(v),W(v.valueOf())),(A?!ft:!rt)&&B({[C.DD]:a?re:M,[C.MM]:a?se:G,[C.YYYY]:F})},[_,W,B]),U=(0,o.useCallback)(i=>{const a=i.key,A=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Backspace","Delete","Tab","Enter"],v=/^\d$/.test(a);if(!(v||A.includes(a)||i.ctrlKey||i.metaKey)){i.preventDefault();return}if(k){if(v&&(Ht(a,k,R,ue,te),i.preventDefault(),i.stopPropagation()),a==="Tab"&&(O[O.length-1]!==k?(i.preventDefault(),te(k)):z?.current?.blur()),a==="Enter"&&(i.preventDefault(),i.stopPropagation()),a==="Backspace"||a==="Delete"){const M=R[k];M!==""?ue(k,M.length===1?"":M.slice(0,-1)):de(k),i.preventDefault(),i.stopPropagation()}(a==="ArrowLeft"||a==="ArrowDown")&&(i.preventDefault(),de(k)),(a==="ArrowRight"||a==="ArrowUp")&&(i.preventDefault(),te(k))}},[k,te,de,R,O,ue]),Le=(0,o.useCallback)(()=>{N((_??P).clone().add(1,"month").valueOf(),!0)},[_,N,P]),Te=(0,o.useCallback)(()=>{N((_??P).clone().subtract(1,"month").valueOf(),!0)},[_,N,P]),ze=(0,o.useCallback)(()=>{j!=="select"&&(De(!0),$(i=>i??C.DD))},[j]),He=(0,o.useCallback)(()=>{De(!1),T||Z?.()},[T,Z]),Ee=(0,o.useCallback)(i=>{const a=i.target.value,A=Et(a);if(A){B({[C.DD]:String(A.day).padStart(2,"0"),[C.MM]:String(A.month).padStart(2,"0"),[C.YYYY]:String(A.year)}),z.current&&(z.current.value="");return}const v=ve.current,M=a.length>v.length?a.slice(-1):null;ve.current=a,M&&/^\d$/.test(M)&&U({key:M,preventDefault:()=>{},stopPropagation:()=>{}}),a.length<v.length&&U({key:"Backspace",preventDefault:()=>{},stopPropagation:()=>{}}),z.current&&(z.current.value="")},[U,B]);(0,o.useEffect)(()=>{L&&!ee.current&&(ee.current=!0)},[L]),(0,o.useEffect)(()=>{pt(x.hooks(p).utc())},[p]),(0,o.useEffect)(()=>{if(Ae(t.value||t.defaultValue?x.hooks(t.value??t.defaultValue).utc():null),t.value){const i=x.hooks(t.value).utc();B({[C.DD]:i.date().toString().padStart(2,"0"),[C.MM]:(i.month()+1).toString().padStart(2,"0"),[C.YYYY]:i.year().toString()})}},[t.value,t.defaultValue,B]),(0,o.useEffect)(()=>{k||me(R,i=>{N(i,!0,R),w(!1)},()=>{W(null),w(!0)},i=>{i||(ee.current&&(W(null),ee.current=!1),w(!1))})},[N,W,R,k]),(0,o.useEffect)(()=>{!T&&!J&&I&&!k&&me(R,()=>{},()=>{W(null),K(),w(!1)},()=>{W(null),K(),w(!1)})},[K,R,T,J,W,I,k]),(0,o.useEffect)(()=>{k&&me(le.current,i=>{N(i,!0,le.current),w(!1)},()=>{w(!0)},i=>{i||w(!1)})},[N,k]),(0,o.useEffect)(()=>{k&&(E(),z?.current?.focus())},[k,E]);const Fe=(0,o.useMemo)(()=>(_??P).clone().startOf("month").utc().valueOf(),[_,P]),qe=(0,o.useMemo)(()=>(_??P).clone().startOf("year").utc().valueOf(),[_,P]),$e=(0,o.useCallback)(()=>{W(null),K(),w(!1)},[W,K]),Ke=(0,o.useCallback)(i=>{N(i,!0),ye&&E()},[N,ye,E]),Ue=(0,o.useCallback)(i=>{i&&N(i,!0)},[N]),{className:Ge,style:Xe}=at.useTypographyStyles({sx:{variant:e.EXTRA_VALUE.sizeToController.small,weight:"500",...ke}}),{className:Qe,style:Ze}=at.useTypographyStyles({sx:{size:16,weight:ce?"700":"400",...ke}}),{className:Je,style:et}=(0,o.useMemo)(()=>{const i=V.setClasses([e.CSS_CLASS.component.datePicker.wrapper,S]),a={};return a[e.CSS_VARS_RAW.component.datePicker.padding]=e.CSS_VARS.size[D].padding,a[e.CSS_VARS_RAW.component.datePicker.inputBackground]=e.CSS_VARS.genre.select[m].background.index,a[e.CSS_VARS_RAW.component.datePicker.inputBackgroundHover]=e.CSS_VARS.genre.input[m].background,a[e.CSS_VARS_RAW.component.datePicker.inputSegmentBackgroundActive]=e.CSS_VARS.palette.fillQuaternaryLight,a[e.CSS_VARS_RAW.component.datePicker.inputBorderColor]=e.CSS_VARS.genre.input[m].border,a[e.CSS_VARS_RAW.component.datePicker.inputBorderColorHover]=e.CSS_VARS.genre.input[m].border,a[e.CSS_VARS_RAW.component.datePicker.inputColor]=e.CSS_VARS.genre.input[m].color,a[e.CSS_VARS_RAW.component.datePicker.inputColorHover]=e.CSS_VARS.genre.input[m].color,a[e.CSS_VARS_RAW.component.datePicker.inputPadding]=oe?`0px ${e.CSS_VARS.size[D].padding}`:`0px ${e.CSS_VARS.size[D].padding} 0px ${e.CSS_VARS.sizeValue[D].padding-2}px`,a[e.CSS_VARS_RAW.component.datePicker.inputHeight]=e.CSS_VARS.size[D].height,a[e.CSS_VARS_RAW.component.datePicker.inputRadius]=e.CSS_VARS.size[D].radius,a[e.CSS_VARS_RAW.component.datePicker.inputValueColor]=e.CSS_VARS.genre.input[m].color,a[e.CSS_VARS_RAW.component.datePicker.inputPlaceholderColor]=e.CSS_VARS.genre.input[m].placeholder,a[e.CSS_VARS_RAW.component.datePicker.buttonToggleRight]=`${e.CSS_VARS.size[D].padding}`,a[e.CSS_VARS_RAW.component.datePicker.buttonClearRight]=`${e.CSS_VARS.sizeValue[D].padding*2+e.CSS_VARS.sizeValue[D].height}px`,{className:i,style:V.setStyles([Object.keys(a).length?a:void 0,ge])}},[S,ge,oe,m,D]),{className:tt,style:nt}=(0,o.useMemo)(()=>{const i=V.setClasses([h]),a={};return a[e.CSS_VARS_RAW.component.datePicker.dayRadius]=`${Ye}px`,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundRest]=e.CSS_VARS.genre.datepicker[m].background.index,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundHover]=e.CSS_VARS.genre.datepicker[m].background.hover,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundWeekend]=e.CSS_VARS.genre.datepicker[m].background.weekend,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundToday]=e.CSS_VARS.genre.datepicker[m].background.today,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundChoice]=e.CSS_VARS.genre.datepicker[m].background.choice,a[e.CSS_VARS_RAW.component.datePicker.dayBorderRest]=e.CSS_VARS.genre.datepicker[m].border.index,a[e.CSS_VARS_RAW.component.datePicker.dayBorderWeekend]=e.CSS_VARS.genre.datepicker[m].border.weekend,a[e.CSS_VARS_RAW.component.datePicker.dayBorderToday]=e.CSS_VARS.genre.datepicker[m].border.today,a[e.CSS_VARS_RAW.component.datePicker.dayBorderChoice]=e.CSS_VARS.genre.datepicker[m].border.choice,a[e.CSS_VARS_RAW.component.datePicker.dayBorderHover]=e.CSS_VARS.genre.datepicker[m].border.hover,a[e.CSS_VARS_RAW.component.datePicker.dayColorRest]=e.CSS_VARS.genre.datepicker[m].color.index,a[e.CSS_VARS_RAW.component.datePicker.dayColorHover]=e.CSS_VARS.genre.datepicker[m].color.hover,a[e.CSS_VARS_RAW.component.datePicker.dayColorWeekend]=e.CSS_VARS.genre.datepicker[m].color.weekend,a[e.CSS_VARS_RAW.component.datePicker.dayColorToday]=e.CSS_VARS.genre.datepicker[m].color.today,a[e.CSS_VARS_RAW.component.datePicker.dayColorChoice]=e.CSS_VARS.genre.datepicker[m].color.choice,{className:i,style:V.setStyles([Object.keys(a).length?a:void 0,{background:e.CSS_VARS.genre.popover[m].background,border:`solid 1px ${e.CSS_VARS.genre.input[m].border}`},fe])}},[h,fe,m,Ye]),ot=(0,o.useMemo)(()=>j!=="manual"||!!(X&&(L||I)&&!g&&!q),[j,I,L,X,g,q]),ht=(0,o.useMemo)(()=>({activeSegment:k,activateSegment:Me,ariaLabel:r,autoComplete:c,classNamePopover:tt,classNameTypography:Qe,classNameTypographyDay:Ge,classNameWrapper:Je,clearActiveSegment:Se,clearDate:$e,close:E,control:s,dateMax:u,dateMin:f,daysInMonth:ne,daysInWeek:xe,error:y,floatingStyles:Be,genre:m,id:l,input:R,inputPlaceholders:Ve,isBlockNextMonth:We,isBlockPrevMonth:we,isDisabled:g,isError:Re,isHasInput:I,isHasValue:L,isOpen:T,isReadOnly:q,isShowButtonList:ot,isShowClearButton:X,isShowPlaceholder:oe,labelPlaceholder:Q,localeMonths:Y.months,mode:O,monthSelectValue:Fe,name:Ce,onBlurInput:He,onChangeInput:Ee,onFocusInput:ze,onKeyDown:U,onNextMonth:Le,onPrevMonth:Te,onSelectDay:Ke,onSelectMonthYear:Ue,refFloating:Ie,refHiddenInput:z,refReference:Oe,refSelectMonth:Pe,refSelectYear:be,rows:Ne,size:D,stylePopover:nt,styleTypography:Ze,styleTypographyDay:Xe,styleWrapper:et,toggle:je,type:j,yearSelectValue:qe}),[k,Me,r,c,tt,Qe,Ge,Je,Se,$e,E,s,u,f,ne,xe,y,Be,m,l,R,Ve,We,we,g,Re,I,L,T,q,ot,X,oe,Q,Y.months,O,Fe,Ce,He,Ee,ze,U,Le,Te,Ke,Ue,Ie,Oe,Ne,D,nt,Ze,Xe,et,je,j,qe]);return(0,d.jsx)(dt.Provider,{value:ht,children:(0,d.jsx)(Dt,{})})},Dt=(0,o.memo)(()=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:n(t=>t.classNameWrapper),style:n(t=>t.styleWrapper),tabIndex:-1,children:(0,d.jsx)(vt,{})}),(0,d.jsx)(wt,{}),(0,d.jsx)(Lt,{})]})),vt=(0,o.memo)(()=>{const t=n(y=>y.activeSegment),r=n(y=>y.activateSegment),c=n(y=>y.control),S=n(y=>y.isDisabled),h=n(y=>y.isOpen),s=n(y=>y.isReadOnly),p=n(y=>y.refReference),u=n(y=>y.toggle),f=n(y=>y.type);return(0,d.jsxs)("div",{ref:p,tabIndex:-1,onClick:(0,o.useCallback)(()=>{if(f==="select"){u();return}!t&&!s&&r(C.DD)},[t,r,s,u,f]),className:V.setClasses([e.CSS_CLASS.component.datePicker.inputWrapper,e.CSS_CLASS.transition.color,e.CSS_CLASS.control[S?"none":c??(h||t?"boxShadowSelect":"boxShadowOnlyHover")]]),children:[(0,d.jsx)(Pt,{}),(0,d.jsx)(bt,{}),(0,d.jsx)(Nt,{})]})}),Pt=(0,o.memo)(()=>{const t=n(l=>l.ariaLabel),r=n(l=>l.autoComplete),c=n(l=>l.id),S=n(l=>l.isDisabled),h=n(l=>l.isReadOnly),s=n(l=>l.name),p=n(l=>l.onBlurInput),u=n(l=>l.onChangeInput),f=n(l=>l.onFocusInput),y=n(l=>l.onKeyDown),m=n(l=>l.refHiddenInput);return n(l=>l.type)==="select"?null:(0,d.jsx)("input",{name:s,"aria-label":t??s,autoComplete:r,id:c,ref:m,type:"tel",inputMode:"numeric",tabIndex:0,disabled:S||h,style:{position:"absolute",left:"-100dvw",top:0,width:"100%",height:"100%",opacity:0,border:"none",background:"transparent"},onKeyDown:y,onChange:u,onFocus:f,onBlur:p})}),bt=(0,o.memo)(()=>n(t=>t.isShowPlaceholder)?(0,d.jsx)(Vt,{}):(0,d.jsx)(Mt,{})),Vt=(0,o.memo)(()=>{const t=n(c=>c.genre),r=n(c=>c.labelPlaceholder);return(0,d.jsx)(At.Typography,{sx:{size:16,line:1,isNoUserSelect:!0},style:{color:e.CSS_VARS.genre.input[t].placeholder},children:r})}),Mt=(0,o.memo)(()=>{const t=n(r=>r.mode);return t.map((r,c)=>(0,d.jsxs)(o.Fragment,{children:[(0,d.jsx)(xt,{segment:r}),c!==t.length-1&&(0,d.jsx)("span",{style:{width:"4px",pointerEvents:"none",textAlign:"center"},children:"."})]},r))}),xt=(0,o.memo)(t=>{const{segment:r}=t,c=n(l=>l.activateSegment),S=n(l=>l.classNameTypography),h=n(l=>l.input[r]),s=n(l=>l.activeSegment===r),p=n(l=>l.isDisabled),u=n(l=>l.isReadOnly),f=n(l=>l.inputPlaceholders[r]),y=n(l=>l.styleTypography),m=n(l=>l.type);return(0,d.jsx)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.inputSegment,e.CSS_CLASS.transition.color,S,!!h&&e.CSS_CLASS.component.datePicker.inputSegmentHasValue,s&&e.CSS_CLASS.component.datePicker.inputSegmentIsActive]),style:y,onClick:l=>{m!=="select"&&(l.preventDefault(),l.stopPropagation(),!(p||u)&&c(r))},children:h||f||""})}),Nt=(0,o.memo)(()=>n(t=>t.isShowButtonList)?(0,d.jsxs)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.listButton]),children:[(0,d.jsx)(Yt,{}),(0,d.jsx)(Wt,{})]}):null),Yt=(0,o.memo)(()=>{const t=n(u=>u.clearActiveSegment),r=n(u=>u.clearDate),c=n(u=>u.genre),S=n(u=>u.isDisabled),h=n(u=>u.isHasInput),s=n(u=>u.isHasValue),p=n(u=>u.isReadOnly);return!n(u=>u.isShowClearButton)||!s&&!h||S||p?null:(0,d.jsx)(ae.Button,{genre:c,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,tabIndex:0,icons:[{name:"Close",type:"id"}],isDisabled:S||p,onFocus:u=>{u.preventDefault(),u.stopPropagation(),t()},onClick:u=>{u.preventDefault(),u.stopPropagation(),r()}})}),Wt=(0,o.memo)(()=>{const t=n(s=>s.clearActiveSegment),r=n(s=>s.genre),c=n(s=>s.isDisabled),S=n(s=>s.isReadOnly),h=n(s=>s.toggle);return n(s=>s.type)==="manual"?null:(0,d.jsx)(ae.Button,{genre:r,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,icons:[{name:"Calendar",type:"id"}],isDisabled:c||S,tabIndex:0,onFocus:s=>{s.preventDefault(),s.stopPropagation(),t()},onClick:s=>{s.preventDefault(),s.stopPropagation(),h()}})}),wt=(0,o.memo)(()=>{const t=n(p=>p.classNamePopover),r=n(p=>p.floatingStyles),c=n(p=>p.genre),S=n(p=>p.isOpen),h=n(p=>p.refFloating),s=n(p=>p.size);return(0,d.jsx)(ut.Popover,{style:n(p=>p.stylePopover),className:t,size:s,genre:c,isOpen:S,floatingStyles:r,ref:h,control:"boxShadowSelect",isDisabledBoxShadow:!0,children:(0,d.jsx)(Ot,{})})}),Ot=(0,o.memo)(()=>(0,d.jsxs)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.dropdownList]),children:[(0,d.jsx)(It,{}),(0,d.jsx)(Bt,{})]})),It=(0,o.memo)(()=>{const t=n(g=>g.dateMax),r=n(g=>g.dateMin),c=n(g=>g.genre),S=n(g=>g.isBlockNextMonth),h=n(g=>g.isBlockPrevMonth),s=n(g=>g.localeMonths),p=n(g=>g.monthSelectValue),u=n(g=>g.onNextMonth),f=n(g=>g.onPrevMonth),y=n(g=>g.onSelectMonthYear),m=n(g=>g.refSelectMonth),l=n(g=>g.refSelectYear),ce=n(g=>g.yearSelectValue);return(0,d.jsxs)(st.Stack,{style:{justifyContent:"space-between",alignItems:"center"},children:[(0,d.jsx)(ae.Button,{type:"button",isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:90}],isWidthAsHeight:!0,genre:c,size:"small",onClick:f,isHidden:h,isDisabled:h}),(0,d.jsxs)(st.Stack,{style:{gap:"8px"},children:[(0,d.jsx)(x.SelectMonth,{isToggleWhenClickSelectListOption:!0,monthsLocale:s,genre:c,size:"small",value:p,isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,isShortLabel:!0,refFloating:m,onChange:y,dateMin:r,dateMax:t,style:{width:"60px"}}),(0,d.jsx)(x.SelectYear,{isToggleWhenClickSelectListOption:!0,genre:c,size:"small",refFloating:l,value:ce,onChange:y,isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,dateMin:r,dateMax:t,style:{width:"60px"}})]}),(0,d.jsx)(ae.Button,{type:"button",onClick:u,isWidthAsHeight:!0,isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:-90}],genre:c,size:"small",isDisabled:S,isHidden:S})]})}),Bt=(0,o.memo)(()=>{const t=n(s=>s.classNameTypographyDay),r=n(s=>s.daysInMonth),c=n(s=>s.daysInWeek),S=n(s=>s.rows),h=n(s=>s.styleTypographyDay);return(0,d.jsxs)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.dropdownListDays]),style:V.setStyles([{[e.CSS_VARS_RAW.component.datePicker.rows]:S}]),children:[c.map(s=>(0,d.jsx)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.dayOfWeek,t,e.CSS_CLASS.transition.color]),style:V.setStyles([h,{[e.CSS_VARS_RAW.component.datePicker.row]:r[0]?.weekOfMonth-1,[e.CSS_VARS_RAW.component.datePicker.column]:s.index+1}]),tabIndex:-1,children:s.label},`${s.label}-${s.index}`)),r.map(s=>(0,d.jsx)(jt,{day:s,classNameTypographyDay:t,styleTypographyDay:h},s.value))]})}),jt=(0,o.memo)(t=>{const{classNameTypographyDay:r,day:c,styleTypographyDay:S}=t,h=n(s=>s.onSelectDay);return(0,d.jsx)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.day,r,e.CSS_CLASS.control[c.isDisabled||c.isChoice?"none":"boxShadow"],e.CSS_CLASS.transition.color,c.isDisabled&&e.CSS_CLASS.component.datePicker.dayIsHidden,c.isToday&&e.CSS_CLASS.component.datePicker.dayIsToday,c.isWeekend&&e.CSS_CLASS.component.datePicker.dayIsWeekend,c.isChoice&&e.CSS_CLASS.component.datePicker.dayIsChoice,!c.isCurrentMonth&&e.CSS_CLASS.component.datePicker.dayIsNotCurrentMonth]),style:V.setStyles([S,{[e.CSS_VARS_RAW.component.datePicker.row]:c.weekOfMonth+1,[e.CSS_VARS_RAW.component.datePicker.column]:c.dayOfWeek}]),onClick:()=>{c.isDisabled||h(c.value)},tabIndex:c.isDisabled?-1:0,children:c.labelNumber})}),Lt=(0,o.memo)(()=>{const t=n(S=>S.error),r=n(S=>S.isError),c=n(S=>S.size);return!t?.isError&&!r?null:(0,d.jsx)(kt.ErrorMessage,{size:t?.size??c,sxTypography:{size:16,weight:"400",...t?.sxTypography},...t??{}})}),Tt=/^\d{4}-\d{2}-\d{2}$/,zt=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;function Ht(t,r,c,S,h){const s=c[r]??"";if(r===C.YYYY){S(r,s.length>=4?t:s+t);return}if(s.length>=2||s===""){S(r,t);return}const p=r===C.DD?31:12,u=s+t,f=Number(u);if(f>p||f===0){S(r,t);return}S(r,u),h(r)}function Et(t){if(Tt.test(t)){const[c,S,h]=t.split("-").map(Number);return lt(c,S,h)}const r=zt.exec(t);if(r){const c=r[1],S=r[2],h=r[3],s=Number(c),p=Number(S),u=Number(h);let f,y;return s>12?(y=s,f=p):(f=s,y=p),lt(u,f,y)}return null}function lt(t,r,c){const S=new Date(t,r-1,c);return S.getFullYear()===t&&S.getMonth()===r-1&&S.getDate()===c?{year:t,month:r,day:c}:null}function Ft(t){const c=Math.floor(t/7);return t%7>0?c+1:c}function qt(t,r){const c=r.indexOf(t);return c<r.length-1?r[c+1]:r[0]}function $t(t,r){const c=r.indexOf(t);return c>0?r[c-1]:r[r.length-1]}function me(t,r,c,S){const h=t.DD,s=t.MM,p=t.YYYY,u=h===""?NaN:Number(h),f=s===""?NaN:Number(s),y=p===""?NaN:Number(p),m=h!==""||s!==""||p!=="";if(!Number.isNaN(u)&&!Number.isNaN(f)&&!Number.isNaN(y)){const l=x.hooks.utc(`${u}.${f}.${y}`,"D.M.YYYY",!0).startOf("day");l.isValid()?r?.(l.valueOf()):c?.()}else S?.(m)}function Kt(t,r){return t[C.DD]===r[C.DD]&&t[C.MM]===r[C.MM]&&t[C.YYYY]===r[C.YYYY]}Object.defineProperty(exports,"DatePicker",{enumerable:!0,get:function(){return Rt}});
1
+ const Ut=require("./chunk-Dd8m0Ver.cjs"),e=require("./utils-DCIq-5FL.cjs"),V=require("./functions-CZrZU5U0.cjs"),st=require("./component-CbJ_P8yq.cjs");require("./component-stack.cjs.js");const at=require("./hooks-use-typography-styles.cjs.js"),ae=require("./button-6CFvwtSz.cjs"),kt=require("./error-aQfsl_Kl.cjs"),ut=require("./popover-B1KASIeD.cjs"),At=require("./typography-DzYrzZZb.cjs"),x=require("./select-7yVS14II.cjs"),St=require("./dist-SXTf0-_7.cjs");let d=require("react/jsx-runtime"),o=require("react");var C=(function(t){return t.DD="DD",t.MM="MM",t.YYYY="YYYY",t})({}),_t=["mo","tu","we","th","fr","sa","su"],ct=[C.DD,C.MM,C.YYYY],it={[C.DD]:"",[C.MM]:"",[C.YYYY]:""},dt=St.createContext(null);function n(t){return St.useContextSelector(dt,r=>{if(!r)throw new Error("DatePicker context is not available.");return t(r)})}var Rt=t=>{const{ariaLabel:r,autoComplete:c,className:S,classNamePopover:h,control:s,dateDefault:p,dateMax:u,dateMin:f,error:y,genre:m,id:l,isBold:ce,isDisabled:g,isOnClickClose:ye,isReadOnly:q,isShowClearButton:X,labelPlaceholder:Q,locale:Y,mode:H,name:Ce,onBlur:Z,onChange:W,onFocus:he,size:D,style:ge,stylePopover:fe,sxTypography:ke,type:ie}=t,[_,Ae]=(0,o.useState)(null),[P,pt]=(0,o.useState)(x.hooks(p).utc()),[R,_e]=(0,o.useState)(it),[k,$]=(0,o.useState)(null),[Re,w]=(0,o.useState)(!1),[J,De]=(0,o.useState)(!1),le=(0,o.useRef)(R),ee=(0,o.useRef)(!1),ve=(0,o.useRef)(""),Pe=(0,o.useRef)(null),be=(0,o.useRef)(null),z=(0,o.useRef)(null);(0,o.useEffect)(()=>{le.current=R},[R]);const I=(0,o.useMemo)(()=>R[C.DD]!==""||R[C.MM]!==""||R[C.YYYY]!=="",[R]),B=(0,o.useCallback)(i=>{_e(a=>Kt(a,i)?a:i)},[]),K=(0,o.useCallback)(()=>{B(it)},[B]),O=(0,o.useMemo)(()=>!H||H.length===0||new Set(H).size!==H.length?ct:H,[H]),j=(0,o.useMemo)(()=>ie||"manualAndSelect",[ie]),Ve=(0,o.useMemo)(()=>({[C.DD]:Y.inputs.day,[C.MM]:Y.inputs.month,[C.YYYY]:Y.inputs.year}),[Y.inputs.day,Y.inputs.month,Y.inputs.year]),ue=(0,o.useCallback)((i,a)=>{_e(A=>A[i]===a?A:{...A,[i]:a})},[]),Me=(0,o.useCallback)(i=>{$(i)},[]),Se=(0,o.useCallback)(()=>{$(null)},[]),te=(0,o.useCallback)(i=>{$(qt(i,O))},[O]),de=(0,o.useCallback)(i=>{$($t(i,O))},[O]),xe=(0,o.useMemo)(()=>_t.map((i,a)=>({index:a,label:Y.weeks.find(A=>A.value===i)?.localeShort??i.toUpperCase()})),[Y.weeks]),ne=(0,o.useMemo)(()=>{const i=x.hooks.utc(),a=_??P,A=a.clone().startOf("month"),v=a.clone().endOf("month"),M=f?x.hooks.utc(f):null,G=u?x.hooks.utc(u):null,re=A.clone().subtract(A.isoWeekday()-1,"days"),se=v.clone().add(7-v.isoWeekday(),"days"),F=[],b=re.clone();for(;b<=se;){const pe=b.isBetween(A,v,"day","[]");F.push({value:b.valueOf(),labelString:b.format("dd"),labelNumber:b.date(),dayOfWeek:b.isoWeekday(),isWeekend:[6,7].includes(b.isoWeekday()),weekOfMonth:Math.ceil((F.length+1)/7),isToday:b.isSame(i,"day"),isCurrentMonth:pe,isChoice:b.valueOf()===_?.valueOf(),isDisabled:!!(M&&b.isBefore(M,"day")||G&&b.isAfter(G,"day"))}),b.add(1,"day")}return F},[_,P,u,f]),Ne=(0,o.useMemo)(()=>Ft(ne.length)+1,[ne]),Ye=(0,o.useMemo)(()=>e.CSS_VARS.sizeValue[D].radius,[D]),mt=(0,o.useMemo)(()=>e.CSS_VARS.sizeValue[D].padding,[D]),L=(0,o.useMemo)(()=>_!==null,[_]),We=(0,o.useMemo)(()=>{const i=(_??P).clone().add(1,"month").startOf("month");return u?i.isAfter(x.hooks.utc(u),"month"):!1},[_,u,P]),we=(0,o.useMemo)(()=>{const i=(_??P).clone().subtract(1,"month").startOf("month");return f?i.isBefore(x.hooks.utc(f),"month"):!1},[_,f,P]),yt=(0,o.useCallback)(()=>{he?.()},[he]),Ct=(0,o.useCallback)(()=>{Z?.()},[Z]),{isOpen:T,refReference:Oe,refFloating:Ie,floatingStyles:Be,close:E,toggle:je}=ut.usePopover({isFocusTrap:!0,placement:"bottom-start",offset:mt,mode:"independence",isClickOutside:!0,refsExcludeClickOutside:(0,o.useMemo)(()=>[Pe,be],[]),isDisabled:g||q,onFocus:yt,onBlur:Ct,onBlurReference:Se}),oe=(0,o.useMemo)(()=>!!(!J&&!L&&Q&&(j==="select"||!T)&&!I&&!k),[J,L,T,Q,I,k,j]),N=(0,o.useCallback)((i,a,A)=>{const v=x.hooks(i).utc(),M=v.clone().date().toString(),G=(v.clone().month()+1).toString(),re=M.padStart(2,"0"),se=G.padStart(2,"0"),F=v.clone().year().toString(),b=A?.[C.DD],pe=A?.[C.MM],gt=A?.[C.YYYY],ft=re===b&&se===pe&&gt===F,rt=_?.isSame(v,"day");rt||(Ae(v),W(v.valueOf())),(A?!ft:!rt)&&B({[C.DD]:a?re:M,[C.MM]:a?se:G,[C.YYYY]:F})},[_,W,B]),U=(0,o.useCallback)(i=>{const a=i.key,A=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Backspace","Delete","Tab","Enter"],v=/^\d$/.test(a);if(!(v||A.includes(a)||i.ctrlKey||i.metaKey)){i.preventDefault();return}if(k){if(v&&(Ht(a,k,R,ue,te),i.preventDefault(),i.stopPropagation()),a==="Tab"&&(O[O.length-1]!==k?(i.preventDefault(),te(k)):z?.current?.blur()),a==="Enter"&&(i.preventDefault(),i.stopPropagation()),a==="Backspace"||a==="Delete"){const M=R[k];M!==""?ue(k,M.length===1?"":M.slice(0,-1)):de(k),i.preventDefault(),i.stopPropagation()}(a==="ArrowLeft"||a==="ArrowDown")&&(i.preventDefault(),de(k)),(a==="ArrowRight"||a==="ArrowUp")&&(i.preventDefault(),te(k))}},[k,te,de,R,O,ue]),Le=(0,o.useCallback)(()=>{N((_??P).clone().add(1,"month").valueOf(),!0)},[_,N,P]),Te=(0,o.useCallback)(()=>{N((_??P).clone().subtract(1,"month").valueOf(),!0)},[_,N,P]),ze=(0,o.useCallback)(()=>{j!=="select"&&(De(!0),$(i=>i??C.DD))},[j]),He=(0,o.useCallback)(()=>{De(!1),T||Z?.()},[T,Z]),Ee=(0,o.useCallback)(i=>{const a=i.target.value,A=Et(a);if(A){B({[C.DD]:String(A.day).padStart(2,"0"),[C.MM]:String(A.month).padStart(2,"0"),[C.YYYY]:String(A.year)}),z.current&&(z.current.value="");return}const v=ve.current,M=a.length>v.length?a.slice(-1):null;ve.current=a,M&&/^\d$/.test(M)&&U({key:M,preventDefault:()=>{},stopPropagation:()=>{}}),a.length<v.length&&U({key:"Backspace",preventDefault:()=>{},stopPropagation:()=>{}}),z.current&&(z.current.value="")},[U,B]);(0,o.useEffect)(()=>{L&&!ee.current&&(ee.current=!0)},[L]),(0,o.useEffect)(()=>{pt(x.hooks(p).utc())},[p]),(0,o.useEffect)(()=>{if(Ae(t.value||t.defaultValue?x.hooks(t.value??t.defaultValue).utc():null),t.value){const i=x.hooks(t.value).utc();B({[C.DD]:i.date().toString().padStart(2,"0"),[C.MM]:(i.month()+1).toString().padStart(2,"0"),[C.YYYY]:i.year().toString()})}},[t.value,t.defaultValue,B]),(0,o.useEffect)(()=>{k||me(R,i=>{N(i,!0,R),w(!1)},()=>{W(null),w(!0)},i=>{i||(ee.current&&(W(null),ee.current=!1),w(!1))})},[N,W,R,k]),(0,o.useEffect)(()=>{!T&&!J&&I&&!k&&me(R,()=>{},()=>{W(null),K(),w(!1)},()=>{W(null),K(),w(!1)})},[K,R,T,J,W,I,k]),(0,o.useEffect)(()=>{k&&me(le.current,i=>{N(i,!0,le.current),w(!1)},()=>{w(!0)},i=>{i||w(!1)})},[N,k]),(0,o.useEffect)(()=>{k&&(E(),z?.current?.focus())},[k,E]);const Fe=(0,o.useMemo)(()=>(_??P).clone().startOf("month").utc().valueOf(),[_,P]),qe=(0,o.useMemo)(()=>(_??P).clone().startOf("year").utc().valueOf(),[_,P]),$e=(0,o.useCallback)(()=>{W(null),K(),w(!1)},[W,K]),Ke=(0,o.useCallback)(i=>{N(i,!0),ye&&E()},[N,ye,E]),Ue=(0,o.useCallback)(i=>{i&&N(i,!0)},[N]),{className:Ge,style:Xe}=at.useTypographyStyles({sx:{variant:e.EXTRA_VALUE.sizeToController.small,weight:"500",...ke}}),{className:Qe,style:Ze}=at.useTypographyStyles({sx:{size:16,weight:ce?"700":"400",...ke}}),{className:Je,style:et}=(0,o.useMemo)(()=>{const i=V.setClasses([e.CSS_CLASS.component.datePicker.wrapper,S]),a={};return a[e.CSS_VARS_RAW.component.datePicker.padding]=e.CSS_VARS.size[D].padding,a[e.CSS_VARS_RAW.component.datePicker.inputBackground]=e.CSS_VARS.genre.select[m].background.index,a[e.CSS_VARS_RAW.component.datePicker.inputBackgroundHover]=e.CSS_VARS.genre.input[m].background,a[e.CSS_VARS_RAW.component.datePicker.inputSegmentBackgroundActive]=e.CSS_VARS.palette.fillQuaternaryLight,a[e.CSS_VARS_RAW.component.datePicker.inputBorderColor]=e.CSS_VARS.genre.input[m].border,a[e.CSS_VARS_RAW.component.datePicker.inputBorderColorHover]=e.CSS_VARS.genre.input[m].border,a[e.CSS_VARS_RAW.component.datePicker.inputColor]=e.CSS_VARS.genre.input[m].color,a[e.CSS_VARS_RAW.component.datePicker.inputColorHover]=e.CSS_VARS.genre.input[m].color,a[e.CSS_VARS_RAW.component.datePicker.inputPadding]=oe?`0px ${e.CSS_VARS.size[D].padding}`:`0px ${e.CSS_VARS.size[D].padding} 0px ${e.CSS_VARS.sizeValue[D].padding-2}px`,a[e.CSS_VARS_RAW.component.datePicker.inputHeight]=e.CSS_VARS.size[D].height,a[e.CSS_VARS_RAW.component.datePicker.inputRadius]=e.CSS_VARS.size[D].radius,a[e.CSS_VARS_RAW.component.datePicker.inputValueColor]=e.CSS_VARS.genre.input[m].color,a[e.CSS_VARS_RAW.component.datePicker.inputPlaceholderColor]=e.CSS_VARS.genre.input[m].placeholder,a[e.CSS_VARS_RAW.component.datePicker.buttonToggleRight]=`${e.CSS_VARS.size[D].padding}`,a[e.CSS_VARS_RAW.component.datePicker.buttonClearRight]=`${e.CSS_VARS.sizeValue[D].padding*2+e.CSS_VARS.sizeValue[D].height}px`,{className:i,style:V.setStyles([Object.keys(a).length?a:void 0,ge])}},[S,ge,oe,m,D]),{className:tt,style:nt}=(0,o.useMemo)(()=>{const i=V.setClasses([h]),a={};return a[e.CSS_VARS_RAW.component.datePicker.dayRadius]=`${Ye}px`,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundRest]=e.CSS_VARS.genre.datepicker[m].background.index,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundHover]=e.CSS_VARS.genre.datepicker[m].background.hover,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundWeekend]=e.CSS_VARS.genre.datepicker[m].background.weekend,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundToday]=e.CSS_VARS.genre.datepicker[m].background.today,a[e.CSS_VARS_RAW.component.datePicker.dayBackgroundChoice]=e.CSS_VARS.genre.datepicker[m].background.choice,a[e.CSS_VARS_RAW.component.datePicker.dayBorderRest]=e.CSS_VARS.genre.datepicker[m].border.index,a[e.CSS_VARS_RAW.component.datePicker.dayBorderWeekend]=e.CSS_VARS.genre.datepicker[m].border.weekend,a[e.CSS_VARS_RAW.component.datePicker.dayBorderToday]=e.CSS_VARS.genre.datepicker[m].border.today,a[e.CSS_VARS_RAW.component.datePicker.dayBorderChoice]=e.CSS_VARS.genre.datepicker[m].border.choice,a[e.CSS_VARS_RAW.component.datePicker.dayBorderHover]=e.CSS_VARS.genre.datepicker[m].border.hover,a[e.CSS_VARS_RAW.component.datePicker.dayColorRest]=e.CSS_VARS.genre.datepicker[m].color.index,a[e.CSS_VARS_RAW.component.datePicker.dayColorHover]=e.CSS_VARS.genre.datepicker[m].color.hover,a[e.CSS_VARS_RAW.component.datePicker.dayColorWeekend]=e.CSS_VARS.genre.datepicker[m].color.weekend,a[e.CSS_VARS_RAW.component.datePicker.dayColorToday]=e.CSS_VARS.genre.datepicker[m].color.today,a[e.CSS_VARS_RAW.component.datePicker.dayColorChoice]=e.CSS_VARS.genre.datepicker[m].color.choice,{className:i,style:V.setStyles([Object.keys(a).length?a:void 0,{background:e.CSS_VARS.genre.popover[m].background,border:`solid 1px ${e.CSS_VARS.genre.input[m].border}`},fe])}},[h,fe,m,Ye]),ot=(0,o.useMemo)(()=>j!=="manual"||!!(X&&(L||I)&&!g&&!q),[j,I,L,X,g,q]),ht=(0,o.useMemo)(()=>({activeSegment:k,activateSegment:Me,ariaLabel:r,autoComplete:c,classNamePopover:tt,classNameTypography:Qe,classNameTypographyDay:Ge,classNameWrapper:Je,clearActiveSegment:Se,clearDate:$e,close:E,control:s,dateMax:u,dateMin:f,daysInMonth:ne,daysInWeek:xe,error:y,floatingStyles:Be,genre:m,id:l,input:R,inputPlaceholders:Ve,isBlockNextMonth:We,isBlockPrevMonth:we,isDisabled:g,isError:Re,isHasInput:I,isHasValue:L,isOpen:T,isReadOnly:q,isShowButtonList:ot,isShowClearButton:X,isShowPlaceholder:oe,labelPlaceholder:Q,localeMonths:Y.months,mode:O,monthSelectValue:Fe,name:Ce,onBlurInput:He,onChangeInput:Ee,onFocusInput:ze,onKeyDown:U,onNextMonth:Le,onPrevMonth:Te,onSelectDay:Ke,onSelectMonthYear:Ue,refFloating:Ie,refHiddenInput:z,refReference:Oe,refSelectMonth:Pe,refSelectYear:be,rows:Ne,size:D,stylePopover:nt,styleTypography:Ze,styleTypographyDay:Xe,styleWrapper:et,toggle:je,type:j,yearSelectValue:qe}),[k,Me,r,c,tt,Qe,Ge,Je,Se,$e,E,s,u,f,ne,xe,y,Be,m,l,R,Ve,We,we,g,Re,I,L,T,q,ot,X,oe,Q,Y.months,O,Fe,Ce,He,Ee,ze,U,Le,Te,Ke,Ue,Ie,Oe,Ne,D,nt,Ze,Xe,et,je,j,qe]);return(0,d.jsx)(dt.Provider,{value:ht,children:(0,d.jsx)(Dt,{})})},Dt=(0,o.memo)(()=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:n(t=>t.classNameWrapper),style:n(t=>t.styleWrapper),tabIndex:-1,children:(0,d.jsx)(vt,{})}),(0,d.jsx)(wt,{}),(0,d.jsx)(Lt,{})]})),vt=(0,o.memo)(()=>{const t=n(y=>y.activeSegment),r=n(y=>y.activateSegment),c=n(y=>y.control),S=n(y=>y.isDisabled),h=n(y=>y.isOpen),s=n(y=>y.isReadOnly),p=n(y=>y.refReference),u=n(y=>y.toggle),f=n(y=>y.type);return(0,d.jsxs)("div",{ref:p,tabIndex:-1,onClick:(0,o.useCallback)(()=>{if(f==="select"){u();return}!t&&!s&&r(C.DD)},[t,r,s,u,f]),className:V.setClasses([e.CSS_CLASS.component.datePicker.inputWrapper,e.CSS_CLASS.transition.color,e.CSS_CLASS.control[S?"none":c??(h||t?"boxShadowSelect":"boxShadowOnlyHover")]]),children:[(0,d.jsx)(Pt,{}),(0,d.jsx)(bt,{}),(0,d.jsx)(Nt,{})]})}),Pt=(0,o.memo)(()=>{const t=n(l=>l.ariaLabel),r=n(l=>l.autoComplete),c=n(l=>l.id),S=n(l=>l.isDisabled),h=n(l=>l.isReadOnly),s=n(l=>l.name),p=n(l=>l.onBlurInput),u=n(l=>l.onChangeInput),f=n(l=>l.onFocusInput),y=n(l=>l.onKeyDown),m=n(l=>l.refHiddenInput);return n(l=>l.type)==="select"?null:(0,d.jsx)("input",{name:s,"aria-label":t??s,autoComplete:r,id:c,ref:m,type:"tel",inputMode:"numeric",tabIndex:0,disabled:S||h,style:{position:"absolute",left:"-100dvw",top:0,width:"100%",height:"100%",opacity:0,border:"none",background:"transparent"},onKeyDown:y,onChange:u,onFocus:f,onBlur:p})}),bt=(0,o.memo)(()=>n(t=>t.isShowPlaceholder)?(0,d.jsx)(Vt,{}):(0,d.jsx)(Mt,{})),Vt=(0,o.memo)(()=>{const t=n(c=>c.genre),r=n(c=>c.labelPlaceholder);return(0,d.jsx)(At.Typography,{sx:{size:16,line:1,isNoUserSelect:!0},style:{color:e.CSS_VARS.genre.input[t].placeholder},children:r})}),Mt=(0,o.memo)(()=>{const t=n(r=>r.mode);return t.map((r,c)=>(0,d.jsxs)(o.Fragment,{children:[(0,d.jsx)(xt,{segment:r}),c!==t.length-1&&(0,d.jsx)("span",{style:{width:"4px",pointerEvents:"none",textAlign:"center"},children:"."})]},r))}),xt=(0,o.memo)(t=>{const{segment:r}=t,c=n(l=>l.activateSegment),S=n(l=>l.classNameTypography),h=n(l=>l.input[r]),s=n(l=>l.activeSegment===r),p=n(l=>l.isDisabled),u=n(l=>l.isReadOnly),f=n(l=>l.inputPlaceholders[r]),y=n(l=>l.styleTypography),m=n(l=>l.type);return(0,d.jsx)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.inputSegment,e.CSS_CLASS.transition.color,S,!!h&&e.CSS_CLASS.component.datePicker.inputSegmentHasValue,s&&e.CSS_CLASS.component.datePicker.inputSegmentIsActive]),style:y,onClick:l=>{m!=="select"&&(l.preventDefault(),l.stopPropagation(),!(p||u)&&c(r))},children:h||f||""})}),Nt=(0,o.memo)(()=>n(t=>t.isShowButtonList)?(0,d.jsxs)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.listButton]),children:[(0,d.jsx)(Yt,{}),(0,d.jsx)(Wt,{})]}):null),Yt=(0,o.memo)(()=>{const t=n(u=>u.clearActiveSegment),r=n(u=>u.clearDate),c=n(u=>u.genre),S=n(u=>u.isDisabled),h=n(u=>u.isHasInput),s=n(u=>u.isHasValue),p=n(u=>u.isReadOnly);return!n(u=>u.isShowClearButton)||!s&&!h||S||p?null:(0,d.jsx)(ae.Button,{genre:c,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,tabIndex:0,icons:[{name:"Close",type:"id"}],isDisabled:S||p,onFocus:u=>{u.preventDefault(),u.stopPropagation(),t()},onClick:u=>{u.preventDefault(),u.stopPropagation(),r()}})}),Wt=(0,o.memo)(()=>{const t=n(s=>s.clearActiveSegment),r=n(s=>s.genre),c=n(s=>s.isDisabled),S=n(s=>s.isReadOnly),h=n(s=>s.toggle);return n(s=>s.type)==="manual"?null:(0,d.jsx)(ae.Button,{genre:r,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,icons:[{name:"Calendar",type:"id"}],isDisabled:c||S,tabIndex:0,onFocus:s=>{s.preventDefault(),s.stopPropagation(),t()},onClick:s=>{s.preventDefault(),s.stopPropagation(),h()}})}),wt=(0,o.memo)(()=>{const t=n(p=>p.classNamePopover),r=n(p=>p.floatingStyles),c=n(p=>p.genre),S=n(p=>p.isOpen),h=n(p=>p.refFloating),s=n(p=>p.size);return(0,d.jsx)(ut.Popover,{style:n(p=>p.stylePopover),className:t,size:s,genre:c,isOpen:S,floatingStyles:r,ref:h,control:"boxShadowSelect",isDisabledBoxShadow:!0,children:(0,d.jsx)(Ot,{})})}),Ot=(0,o.memo)(()=>(0,d.jsxs)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.dropdownList]),children:[(0,d.jsx)(It,{}),(0,d.jsx)(Bt,{})]})),It=(0,o.memo)(()=>{const t=n(g=>g.dateMax),r=n(g=>g.dateMin),c=n(g=>g.genre),S=n(g=>g.isBlockNextMonth),h=n(g=>g.isBlockPrevMonth),s=n(g=>g.localeMonths),p=n(g=>g.monthSelectValue),u=n(g=>g.onNextMonth),f=n(g=>g.onPrevMonth),y=n(g=>g.onSelectMonthYear),m=n(g=>g.refSelectMonth),l=n(g=>g.refSelectYear),ce=n(g=>g.yearSelectValue);return(0,d.jsxs)(st.Stack,{style:{justifyContent:"space-between",alignItems:"center"},children:[(0,d.jsx)(ae.Button,{type:"button",isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:90}],isWidthAsHeight:!0,genre:c,size:"small",onClick:f,isHidden:h,isDisabled:h}),(0,d.jsxs)(st.Stack,{style:{gap:"8px"},children:[(0,d.jsx)(x.SelectMonth,{isToggleWhenClickSelectListOption:!0,monthsLocale:s,genre:c,size:"small",value:p,isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,isShortLabel:!0,refFloating:m,onChange:y,dateMin:r,dateMax:t,style:{width:"60px"}}),(0,d.jsx)(x.SelectYear,{isToggleWhenClickSelectListOption:!0,genre:c,size:"small",refFloating:l,value:ce,onChange:y,isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,dateMin:r,dateMax:t,style:{width:"60px"}})]}),(0,d.jsx)(ae.Button,{type:"button",onClick:u,isWidthAsHeight:!0,isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:-90}],genre:c,size:"small",isDisabled:S,isHidden:S})]})}),Bt=(0,o.memo)(()=>{const t=n(s=>s.classNameTypographyDay),r=n(s=>s.daysInMonth),c=n(s=>s.daysInWeek),S=n(s=>s.rows),h=n(s=>s.styleTypographyDay);return(0,d.jsxs)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.dropdownListDays]),style:V.setStyles([{[e.CSS_VARS_RAW.component.datePicker.rows]:S}]),children:[c.map(s=>(0,d.jsx)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.dayOfWeek,t,e.CSS_CLASS.transition.color]),style:V.setStyles([h,{[e.CSS_VARS_RAW.component.datePicker.row]:r[0]?.weekOfMonth-1,[e.CSS_VARS_RAW.component.datePicker.column]:s.index+1}]),tabIndex:-1,children:s.label},`${s.label}-${s.index}`)),r.map(s=>(0,d.jsx)(jt,{day:s,classNameTypographyDay:t,styleTypographyDay:h},s.value))]})}),jt=(0,o.memo)(t=>{const{classNameTypographyDay:r,day:c,styleTypographyDay:S}=t,h=n(s=>s.onSelectDay);return(0,d.jsx)("div",{className:V.setClasses([e.CSS_CLASS.component.datePicker.day,r,e.CSS_CLASS.control[c.isDisabled||c.isChoice?"none":"boxShadow"],e.CSS_CLASS.transition.color,c.isDisabled&&e.CSS_CLASS.component.datePicker.dayIsHidden,c.isToday&&e.CSS_CLASS.component.datePicker.dayIsToday,c.isWeekend&&e.CSS_CLASS.component.datePicker.dayIsWeekend,c.isChoice&&e.CSS_CLASS.component.datePicker.dayIsChoice,!c.isCurrentMonth&&e.CSS_CLASS.component.datePicker.dayIsNotCurrentMonth]),style:V.setStyles([S,{[e.CSS_VARS_RAW.component.datePicker.row]:c.weekOfMonth+1,[e.CSS_VARS_RAW.component.datePicker.column]:c.dayOfWeek}]),onClick:()=>{c.isDisabled||h(c.value)},tabIndex:c.isDisabled?-1:0,children:c.labelNumber})}),Lt=(0,o.memo)(()=>{const t=n(S=>S.error),r=n(S=>S.isError),c=n(S=>S.size);return!t?.isError&&!r?null:(0,d.jsx)(kt.ErrorMessage,{size:t?.size??c,sxTypography:{size:16,weight:"400",...t?.sxTypography},...t??{}})}),Tt=/^\d{4}-\d{2}-\d{2}$/,zt=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;function Ht(t,r,c,S,h){const s=c[r]??"";if(r===C.YYYY){S(r,s.length>=4?t:s+t);return}if(s.length>=2||s===""){S(r,t);return}const p=r===C.DD?31:12,u=s+t,f=Number(u);if(f>p||f===0){S(r,t);return}S(r,u),h(r)}function Et(t){if(Tt.test(t)){const[c,S,h]=t.split("-").map(Number);return lt(c,S,h)}const r=zt.exec(t);if(r){const c=r[1],S=r[2],h=r[3],s=Number(c),p=Number(S),u=Number(h);let f,y;return s>12?(y=s,f=p):(f=s,y=p),lt(u,f,y)}return null}function lt(t,r,c){const S=new Date(t,r-1,c);return S.getFullYear()===t&&S.getMonth()===r-1&&S.getDate()===c?{year:t,month:r,day:c}:null}function Ft(t){const c=Math.floor(t/7);return t%7>0?c+1:c}function qt(t,r){const c=r.indexOf(t);return c<r.length-1?r[c+1]:r[0]}function $t(t,r){const c=r.indexOf(t);return c>0?r[c-1]:r[r.length-1]}function me(t,r,c,S){const h=t.DD,s=t.MM,p=t.YYYY,u=h===""?NaN:Number(h),f=s===""?NaN:Number(s),y=p===""?NaN:Number(p),m=h!==""||s!==""||p!=="";if(!Number.isNaN(u)&&!Number.isNaN(f)&&!Number.isNaN(y)){const l=x.hooks.utc(`${u}.${f}.${y}`,"D.M.YYYY",!0).startOf("day");l.isValid()?r?.(l.valueOf()):c?.()}else S?.(m)}function Kt(t,r){return t[C.DD]===r[C.DD]&&t[C.MM]===r[C.MM]&&t[C.YYYY]===r[C.YYYY]}Object.defineProperty(exports,"DatePicker",{enumerable:!0,get:function(){return Rt}});
2
2
 
3
- //# sourceMappingURL=date-picker-ATktGA1c.cjs.map
3
+ //# sourceMappingURL=date-picker-9rpPgP0a.cjs.map