@jenesei-software/jenesei-kit-react 1.3.7 → 1.3.9

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 (218) hide show
  1. package/README.md +0 -20
  2. package/build/{area-AbheP_ot.cjs → area-DnAf310m.cjs} +2 -2
  3. package/build/{area-AbheP_ot.cjs.map → area-DnAf310m.cjs.map} +1 -1
  4. package/build/{area-CH6c_n7-.js → area-Dnq78ow6.js} +2 -2
  5. package/build/{area-CH6c_n7-.js.map → area-Dnq78ow6.js.map} +1 -1
  6. package/build/area-preview.cjs.js +1 -1
  7. package/build/area-preview.es.js +1 -1
  8. package/build/build-info.txt +3 -3
  9. package/build/{component-BuxekWox.cjs → component-BiNPQpCQ.cjs} +2 -2
  10. package/build/{component-BuxekWox.cjs.map → component-BiNPQpCQ.cjs.map} +1 -1
  11. package/build/{component-Bwu-fBEh.js → component-BoHvC24Q.js} +2 -2
  12. package/build/{component-Bwu-fBEh.js.map → component-BoHvC24Q.js.map} +1 -1
  13. package/build/{component-D8qbXvM4.js → component-Bzw_uobM.js} +3 -3
  14. package/build/{component-D8qbXvM4.js.map → component-Bzw_uobM.js.map} +1 -1
  15. package/build/{component-CmotrA_9.js → component-C4ULY0c6.js} +16 -6
  16. package/build/component-C4ULY0c6.js.map +1 -0
  17. package/build/{component-CeWNemV1.cjs → component-CACoGUK9.cjs} +2 -2
  18. package/build/{component-CeWNemV1.cjs.map → component-CACoGUK9.cjs.map} +1 -1
  19. package/build/{component-D7A-4DNQ.cjs → component-CLqcB5mM.cjs} +2 -2
  20. package/build/component-CLqcB5mM.cjs.map +1 -0
  21. package/build/{component-BvLPfi2B.js → component-CQ8fy2gK.js} +2 -2
  22. package/build/{component-BvLPfi2B.js.map → component-CQ8fy2gK.js.map} +1 -1
  23. package/build/{component-vpCWcIhC.js → component-DHM9pbab.js} +3 -3
  24. package/build/component-DHM9pbab.js.map +1 -0
  25. package/build/{component-DfqhPd0e.cjs → component-DHq4T6Ku.cjs} +2 -2
  26. package/build/{component-DfqhPd0e.cjs.map → component-DHq4T6Ku.cjs.map} +1 -1
  27. package/build/{component-BFhXrZ3a.js → component-DfxlJBGv.js} +3 -3
  28. package/build/{component-BFhXrZ3a.js.map → component-DfxlJBGv.js.map} +1 -1
  29. package/build/{component-DUUxsxY6.cjs → component-Dn-VRY7-.cjs} +2 -2
  30. package/build/{component-DUUxsxY6.cjs.map → component-Dn-VRY7-.cjs.map} +1 -1
  31. package/build/component-accordion.cjs.js +1 -1
  32. package/build/component-accordion.d.ts +1 -1
  33. package/build/component-accordion.es.js +1 -1
  34. package/build/component-button-group.cjs.js +1 -1
  35. package/build/component-button-group.d.ts +22 -6
  36. package/build/component-button-group.es.js +1 -1
  37. package/build/component-button.cjs.js +1 -1
  38. package/build/component-button.d.ts +22 -6
  39. package/build/component-button.es.js +1 -1
  40. package/build/component-checkbox-group.cjs.js +1 -1
  41. package/build/component-checkbox-group.d.ts +19 -6
  42. package/build/component-checkbox-group.es.js +1 -1
  43. package/build/component-checkbox.cjs.js +1 -1
  44. package/build/component-checkbox.d.ts +20 -7
  45. package/build/component-checkbox.es.js +1 -1
  46. package/build/component-date-picker.cjs.js +1 -1
  47. package/build/component-date-picker.d.ts +22 -6
  48. package/build/component-date-picker.es.js +1 -1
  49. package/build/component-icon.cjs.js +1 -1
  50. package/build/component-icon.d.ts +16 -3
  51. package/build/component-icon.es.js +3 -2
  52. package/build/component-image-button.cjs.js +1 -1
  53. package/build/component-image-button.d.ts +22 -6
  54. package/build/component-image-button.es.js +1 -1
  55. package/build/component-image-select.cjs.js +1 -1
  56. package/build/component-image-select.d.ts +22 -6
  57. package/build/component-image-select.es.js +1 -1
  58. package/build/component-image-slider.cjs.js +1 -1
  59. package/build/component-image-slider.d.ts +1 -1
  60. package/build/component-image-slider.es.js +1 -1
  61. package/build/component-input-otp.cjs.js +1 -1
  62. package/build/component-input-otp.d.ts +1 -1
  63. package/build/component-input-otp.es.js +1 -1
  64. package/build/component-input.cjs.js +1 -1
  65. package/build/component-input.d.ts +1 -1
  66. package/build/component-input.es.js +2 -2
  67. package/build/component-map.cjs.js +1 -1
  68. package/build/component-map.d.ts +11 -12
  69. package/build/component-map.es.js +2 -2
  70. package/build/component-pagination.cjs.js +1 -1
  71. package/build/component-pagination.d.ts +22 -6
  72. package/build/component-pagination.es.js +1 -1
  73. package/build/component-range.cjs.js +1 -1
  74. package/build/component-range.d.ts +1 -1
  75. package/build/component-range.es.js +1 -1
  76. package/build/component-ripple.cjs.js +1 -1
  77. package/build/component-ripple.es.js +1 -1
  78. package/build/component-select.cjs.js +1 -1
  79. package/build/component-select.d.ts +3 -3
  80. package/build/component-select.es.js +1 -1
  81. package/build/component-separator.d.ts +1 -1
  82. package/build/component-textarea.cjs.js +1 -1
  83. package/build/component-textarea.d.ts +1 -1
  84. package/build/component-textarea.es.js +1 -1
  85. package/build/component-toggle.cjs.js +1 -1
  86. package/build/component-toggle.d.ts +1 -1
  87. package/build/component-toggle.es.js +1 -1
  88. package/build/component-tooltip.cjs.js +1 -1
  89. package/build/component-tooltip.d.ts +4 -4
  90. package/build/component-tooltip.es.js +1 -1
  91. package/build/component-typography.cjs.js +1 -1
  92. package/build/component-typography.d.ts +4 -4
  93. package/build/component-typography.es.js +1 -1
  94. package/build/{component-CMkU2lIg.cjs → component-u_42PteJ.cjs} +9 -9
  95. package/build/component-u_42PteJ.cjs.map +1 -0
  96. package/build/{component.components-BPIVZi-R.js → component.components-DX0DVix5.js} +26 -18
  97. package/build/component.components-DX0DVix5.js.map +1 -0
  98. package/build/{component.components-BWWKHxKD.cjs → component.components-H_qAeBHw.cjs} +3 -3
  99. package/build/component.components-H_qAeBHw.cjs.map +1 -0
  100. package/build/{component.constants-Dtw4932G.js → component.constants-C7DGbAC8.js} +5 -5
  101. package/build/{component.constants-Dtw4932G.js.map → component.constants-C7DGbAC8.js.map} +1 -1
  102. package/build/{component.constants-CmQuESzl.js → component.constants-DjYLZpyY.js} +2 -2
  103. package/build/{component.constants-CmQuESzl.js.map → component.constants-DjYLZpyY.js.map} +1 -1
  104. package/build/{component.constants-D8QVKsqc.cjs → component.constants-DwRduxMm.cjs} +2 -2
  105. package/build/{component.constants-D8QVKsqc.cjs.map → component.constants-DwRduxMm.cjs.map} +1 -1
  106. package/build/{component.constants-DyKCJRH3.cjs → component.constants-veAUxKBd.cjs} +2 -2
  107. package/build/{component.constants-DyKCJRH3.cjs.map → component.constants-veAUxKBd.cjs.map} +1 -1
  108. package/build/{component.styles-CKLd9UoP.cjs → component.styles--Ug3PJQ6.cjs} +2 -2
  109. package/build/{component.styles-CKLd9UoP.cjs.map → component.styles--Ug3PJQ6.cjs.map} +1 -1
  110. package/build/{component.styles-CQbSHrL_.js → component.styles-5CVyEjEh.js} +7 -7
  111. package/build/{component.styles-CQbSHrL_.js.map → component.styles-5CVyEjEh.js.map} +1 -1
  112. package/build/{component.styles-CKArb78Q.js → component.styles-5Xz_H-fR.js} +6 -6
  113. package/build/{component.styles-CKArb78Q.js.map → component.styles-5Xz_H-fR.js.map} +1 -1
  114. package/build/{component.styles-CS_lQRm0.cjs → component.styles-8tkaznu_.cjs} +2 -2
  115. package/build/{component.styles-CS_lQRm0.cjs.map → component.styles-8tkaznu_.cjs.map} +1 -1
  116. package/build/{component.styles-R92hjRRA.cjs → component.styles-Bfhg18CX.cjs} +2 -2
  117. package/build/{component.styles-R92hjRRA.cjs.map → component.styles-Bfhg18CX.cjs.map} +1 -1
  118. package/build/{component.styles-DYAuT7U2.js → component.styles-Bm3Ec-Kd.js} +40 -13
  119. package/build/component.styles-Bm3Ec-Kd.js.map +1 -0
  120. package/build/{component.styles-C-mr1A0b.cjs → component.styles-BuzZQhqS.cjs} +2 -2
  121. package/build/{component.styles-C-mr1A0b.cjs.map → component.styles-BuzZQhqS.cjs.map} +1 -1
  122. package/build/{component.styles-ClU_KFe9.js → component.styles-C1p3V7H6.js} +5 -5
  123. package/build/{component.styles-ClU_KFe9.js.map → component.styles-C1p3V7H6.js.map} +1 -1
  124. package/build/{component.styles-DoUBnv1C.js → component.styles-C3hYZJGh.js} +3 -3
  125. package/build/{component.styles-DoUBnv1C.js.map → component.styles-C3hYZJGh.js.map} +1 -1
  126. package/build/{component.styles-l0Dr5zHf.cjs → component.styles-CISd4naT.cjs} +2 -2
  127. package/build/{component.styles-l0Dr5zHf.cjs.map → component.styles-CISd4naT.cjs.map} +1 -1
  128. package/build/{component.styles-BfzC8j7O.js → component.styles-CggIUAVx.js} +6 -6
  129. package/build/{component.styles-BfzC8j7O.js.map → component.styles-CggIUAVx.js.map} +1 -1
  130. package/build/{component.styles-BMJamWba.cjs → component.styles-Cje8zTpf.cjs} +2 -2
  131. package/build/{component.styles-BMJamWba.cjs.map → component.styles-Cje8zTpf.cjs.map} +1 -1
  132. package/build/{component.styles-DyTB01CW.js → component.styles-CpFA5YrM.js} +4 -4
  133. package/build/{component.styles-DyTB01CW.js.map → component.styles-CpFA5YrM.js.map} +1 -1
  134. package/build/{component.styles-DETkOSnM.cjs → component.styles-Crx4pACx.cjs} +2 -2
  135. package/build/{component.styles-DETkOSnM.cjs.map → component.styles-Crx4pACx.cjs.map} +1 -1
  136. package/build/component.styles-DSle6iuF.cjs +22 -0
  137. package/build/component.styles-DSle6iuF.cjs.map +1 -0
  138. package/build/{component.styles-DkL2qYQQ.js → component.styles-DX_3POUD.js} +2 -2
  139. package/build/{component.styles-DkL2qYQQ.js.map → component.styles-DX_3POUD.js.map} +1 -1
  140. package/build/{component.styles-CMXsg9Uj.js → component.styles-DYS_AJ9F.js} +4 -4
  141. package/build/{component.styles-CMXsg9Uj.js.map → component.styles-DYS_AJ9F.js.map} +1 -1
  142. package/build/{component.styles-B294m7QY.cjs → component.styles-Db3HLiuV.cjs} +2 -2
  143. package/build/{component.styles-B294m7QY.cjs.map → component.styles-Db3HLiuV.cjs.map} +1 -1
  144. package/build/{component.styles-b_DLfQqU.cjs → component.styles-DhAMCZ71.cjs} +2 -2
  145. package/build/{component.styles-b_DLfQqU.cjs.map → component.styles-DhAMCZ71.cjs.map} +1 -1
  146. package/build/{component.styles-usmYNSi8.js → component.styles-DpgkACgI.js} +2 -2
  147. package/build/{component.styles-usmYNSi8.js.map → component.styles-DpgkACgI.js.map} +1 -1
  148. package/build/{component.styles-B5kjhqh4.cjs → component.styles-o7GmI4Ap.cjs} +2 -2
  149. package/build/{component.styles-B5kjhqh4.cjs.map → component.styles-o7GmI4Ap.cjs.map} +1 -1
  150. package/build/{component.styles-BHBTNQ8p.js → component.styles-v0YYECwW.js} +4 -4
  151. package/build/{component.styles-BHBTNQ8p.js.map → component.styles-v0YYECwW.js.map} +1 -1
  152. package/build/{component.types-D05KdxnZ.js → component.types-BBQ18Npa.js} +14 -3
  153. package/build/component.types-BBQ18Npa.js.map +1 -0
  154. package/build/{component.types-BG6lGoeD.js → component.types-BzBjcohg.js} +15 -16
  155. package/build/component.types-BzBjcohg.js.map +1 -0
  156. package/build/{component.types-gy5Q9qHX.cjs → component.types-DraGq1j_.cjs} +2 -2
  157. package/build/component.types-DraGq1j_.cjs.map +1 -0
  158. package/build/{component.types-CA_k1wak.cjs → component.types-ydMLhabS.cjs} +3 -3
  159. package/build/component.types-ydMLhabS.cjs.map +1 -0
  160. package/build/consts.cjs.js +1 -1
  161. package/build/consts.cjs.js.map +1 -1
  162. package/build/consts.d.ts +1 -1
  163. package/build/consts.es.js +1 -1
  164. package/build/consts.es.js.map +1 -1
  165. package/build/context-app.cjs.js +1 -1
  166. package/build/context-app.d.ts +1 -1
  167. package/build/context-app.es.js +1 -1
  168. package/build/context-dialog.d.ts +1 -1
  169. package/build/context-sonner.cjs.js +1 -1
  170. package/build/context-sonner.d.ts +5 -4
  171. package/build/context-sonner.es.js +1 -1
  172. package/build/context.constants-B9Yk6CGe.js.map +1 -1
  173. package/build/{context.constants-4kkNHBzR.js → context.constants-Bz_5itIx.js} +4 -4
  174. package/build/{context.constants-4kkNHBzR.js.map → context.constants-Bz_5itIx.js.map} +1 -1
  175. package/build/context.constants-CTfUKury.cjs.map +1 -1
  176. package/build/{context.constants-DKCD80Pp.cjs → context.constants-CV8ycctl.cjs} +2 -2
  177. package/build/{context.constants-DKCD80Pp.cjs.map → context.constants-CV8ycctl.cjs.map} +1 -1
  178. package/build/{context.hooks-DGmZRxkb.cjs → context.hooks-BDEwJHqB.cjs} +2 -2
  179. package/build/{context.hooks-DGmZRxkb.cjs.map → context.hooks-BDEwJHqB.cjs.map} +1 -1
  180. package/build/{context.hooks-Cfr2Mp8e.js → context.hooks-DTdppyho.js} +3 -3
  181. package/build/{context.hooks-Cfr2Mp8e.js.map → context.hooks-DTdppyho.js.map} +1 -1
  182. package/build/index.cjs.js +1 -1
  183. package/build/index.d.ts +37 -21
  184. package/build/index.es.js +40 -39
  185. package/build/{style-BVejuajH.cjs → style-B5u4pW5G.cjs} +2 -2
  186. package/build/{style-BVejuajH.cjs.map → style-B5u4pW5G.cjs.map} +1 -1
  187. package/build/{style-CQOBaUTO.js → style-BQ653xOS.js} +3 -3
  188. package/build/{style-CQOBaUTO.js.map → style-BQ653xOS.js.map} +1 -1
  189. package/build/style-error.cjs.js +1 -1
  190. package/build/style-error.es.js +1 -1
  191. package/build/style-theme.cjs.js +1 -1
  192. package/build/style-theme.d.ts +5 -4
  193. package/build/style-theme.es.js +1 -1
  194. package/build/theme.global-B9t2Fi10.cjs +173 -0
  195. package/build/theme.global-B9t2Fi10.cjs.map +1 -0
  196. package/build/{theme.global-DuEXPcSK.js → theme.global-CFUz5Asg.js} +70 -1
  197. package/build/theme.global-CFUz5Asg.js.map +1 -0
  198. package/build/{use-D0mgQexh.cjs → use-D7IsSb34.cjs} +2 -2
  199. package/build/{use-D0mgQexh.cjs.map → use-D7IsSb34.cjs.map} +1 -1
  200. package/build/{use-BsyZ6-h6.js → use-DTZ8c8_g.js} +5 -5
  201. package/build/{use-BsyZ6-h6.js.map → use-DTZ8c8_g.js.map} +1 -1
  202. package/package.json +2 -1
  203. package/build/component-CMkU2lIg.cjs.map +0 -1
  204. package/build/component-CmotrA_9.js.map +0 -1
  205. package/build/component-D7A-4DNQ.cjs.map +0 -1
  206. package/build/component-vpCWcIhC.js.map +0 -1
  207. package/build/component.components-BPIVZi-R.js.map +0 -1
  208. package/build/component.components-BWWKHxKD.cjs.map +0 -1
  209. package/build/component.styles-CbkvPvEl.cjs +0 -22
  210. package/build/component.styles-CbkvPvEl.cjs.map +0 -1
  211. package/build/component.styles-DYAuT7U2.js.map +0 -1
  212. package/build/component.types-BG6lGoeD.js.map +0 -1
  213. package/build/component.types-CA_k1wak.cjs.map +0 -1
  214. package/build/component.types-D05KdxnZ.js.map +0 -1
  215. package/build/component.types-gy5Q9qHX.cjs.map +0 -1
  216. package/build/theme.global-B9wIU_rF.cjs +0 -173
  217. package/build/theme.global-B9wIU_rF.cjs.map +0 -1
  218. package/build/theme.global-DuEXPcSK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context.constants-4kkNHBzR.js","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts"],"sourcesContent":["import { AnimatePresence, motion } from 'framer-motion'\nimport { FC, createContext, memo, useCallback, useMemo, useState } from 'react'\nimport { useTheme } from 'styled-components'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Button } from '@local/components/button'\nimport { Icon } from '@local/components/icon'\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout\n} from '.'\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null)\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = props => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts]\n )\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description]\n )\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title]\n )\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button]\n )\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime]\n )\n const memoDefaultHidingMode: ProviderSonnerProps['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode]\n )\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre]\n )\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position])\n\n const [contentHistory, setContentHistory] = useState<SonnerContentProps[]>([])\n\n const [isHovered, setIsHovered] = useState(false)\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false)\n }, [])\n\n const remove: SonnerContextProps['remove'] = useCallback(\n id => {\n setContentHistory(prev => {\n const itemToRemove = prev.find(item => item.id === id)\n\n if (!itemToRemove) return prev\n\n const indexToRemove = itemToRemove.index\n\n const updatedHistory = prev\n .filter(item => item.id !== id)\n .map(item => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index\n }))\n\n if (updatedHistory.length === 0) handleMouseLeave()\n\n return updatedHistory\n })\n },\n [handleMouseLeave]\n )\n\n const toast: SonnerContextProps['toast'] = useCallback(\n content => {\n const id = content.id ?? uuidv4()\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime\n\n setContentHistory(prev => {\n const existingIndex = prev.findIndex(item => item.id === id)\n\n let updatedHistory\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev]\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index }\n } else {\n // Add new item\n updatedHistory = prev.map(item => ({\n ...item,\n index: item.index + 1\n }))\n const newContent = { ...content, id, index: 0 }\n updatedHistory.unshift(newContent)\n }\n\n return updatedHistory\n })\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id)\n }, hidingTime)\n }\n },\n [memoDefaultHidingTime, remove]\n )\n const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, 'index'>\n ) => {\n const id = uuidv4()\n toast({ ...expectation, id, isLoading: true })\n\n return promise\n .then(result => {\n toast({ ...localToast(result, undefined), id })\n })\n .catch(error => {\n toast({ ...localToast(undefined, error), id })\n })\n },\n [toast]\n )\n const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id)\n },\n [remove]\n )\n const theme = useTheme()\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map(content => {\n const index = content.index\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false\n const isLastViewIndex = memoVisibleToasts ? index == memoVisibleToasts - 1 : false\n const localGenre = content.genre ?? memoDefaultGenre\n const buttonGenre = theme.colors.sonner[localGenre].button.genre\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode\n\n const localContent = 'content' in content ? content.content : false\n const localTitle = 'title' in content ? content.title : false\n const localDescription = 'description' in content ? content.description : false\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n )\n })}\n </AnimatePresence>\n </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n )\n}\n\nconst SonnerElement = (props: SonnerElementProps) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px'\n }}\n style={{\n zIndex: -props.index\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size=\"medium\" type=\"loading\" name=\"Line\" />\n ) : (\n props.icon && <Icon name={props.icon} type=\"id\" size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <SonnerContentTitle $genre={props.genre}>{props.title}</SonnerContentTitle>}\n {props.description && (\n <SonnerContentDescription $genre={props.genre}>{props.description}</SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <SonnerButtonWrapper>\n <Button\n genre={props.buttonGenre}\n size=\"small\"\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n )\n}\nconst MemoizedSonnerElement = memo(SonnerElement)\n","import { useContext } from 'react'\n\nimport { SonnerContext, SonnerContextProps } from '.'\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext)\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner')\n }\n return context\n}\n","import styled, { css } from 'styled-components'\n\nimport { getFontSizeStyles } from '@local/components/typography'\nimport { addRemoveScrollbar, addTransition } from '@local/styles/add'\n\nimport { SonnerContentDescriptionProps, SonnerContentTitleProps, SonnerElementWrapperProps, SonnerLayoutProps } from '.'\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${props => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${props => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${props =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${props => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${props => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${props => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`\nexport const SonnerIcon = styled.div`\n display: contents;\n`\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n ${props => getFontSizeStyles(14, 700, props.theme.font.family)}\n color: ${props => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n ${props => getFontSizeStyles(12, 400, props.theme.font.family)}\n color:${props => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerButtonWrapper = styled.div``\n","import { ITheme } from '@local/theme'\n\nimport { ProviderSonnerProps } from '.'\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04\nexport const DEFAULT_PROVIDER_SONNER_Y = 100\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3\nexport const DEFAULT_PROVIDER_SONNER_GENRE: keyof ITheme['colors']['sonner'] = 'black'\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {}\n}\n"],"names":["_a","uuidv4","promise","jsxs","jsx","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"context.constants-Bz_5itIx.js","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts"],"sourcesContent":["import { AnimatePresence, motion } from 'framer-motion'\nimport { FC, createContext, memo, useCallback, useMemo, useState } from 'react'\nimport { useTheme } from 'styled-components'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Button } from '@local/components/button'\nimport { Icon } from '@local/components/icon'\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout\n} from '.'\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null)\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = props => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts]\n )\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description]\n )\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title]\n )\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button]\n )\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime]\n )\n const memoDefaultHidingMode: ProviderSonnerProps['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode]\n )\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre]\n )\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position])\n\n const [contentHistory, setContentHistory] = useState<SonnerContentProps[]>([])\n\n const [isHovered, setIsHovered] = useState(false)\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false)\n }, [])\n\n const remove: SonnerContextProps['remove'] = useCallback(\n id => {\n setContentHistory(prev => {\n const itemToRemove = prev.find(item => item.id === id)\n\n if (!itemToRemove) return prev\n\n const indexToRemove = itemToRemove.index\n\n const updatedHistory = prev\n .filter(item => item.id !== id)\n .map(item => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index\n }))\n\n if (updatedHistory.length === 0) handleMouseLeave()\n\n return updatedHistory\n })\n },\n [handleMouseLeave]\n )\n\n const toast: SonnerContextProps['toast'] = useCallback(\n content => {\n const id = content.id ?? uuidv4()\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime\n\n setContentHistory(prev => {\n const existingIndex = prev.findIndex(item => item.id === id)\n\n let updatedHistory\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev]\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index }\n } else {\n // Add new item\n updatedHistory = prev.map(item => ({\n ...item,\n index: item.index + 1\n }))\n const newContent = { ...content, id, index: 0 }\n updatedHistory.unshift(newContent)\n }\n\n return updatedHistory\n })\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id)\n }, hidingTime)\n }\n },\n [memoDefaultHidingTime, remove]\n )\n const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, 'index'>\n ) => {\n const id = uuidv4()\n toast({ ...expectation, id, isLoading: true })\n\n return promise\n .then(result => {\n toast({ ...localToast(result, undefined), id })\n })\n .catch(error => {\n toast({ ...localToast(undefined, error), id })\n })\n },\n [toast]\n )\n const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id)\n },\n [remove]\n )\n const theme = useTheme()\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map(content => {\n const index = content.index\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false\n const isLastViewIndex = memoVisibleToasts ? index == memoVisibleToasts - 1 : false\n const localGenre = content.genre ?? memoDefaultGenre\n const buttonGenre = theme.colors.sonner[localGenre].button.genre\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode\n\n const localContent = 'content' in content ? content.content : false\n const localTitle = 'title' in content ? content.title : false\n const localDescription = 'description' in content ? content.description : false\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n )\n })}\n </AnimatePresence>\n </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n )\n}\n\nconst SonnerElement = (props: SonnerElementProps) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px'\n }}\n style={{\n zIndex: -props.index\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size=\"medium\" type=\"loading\" name=\"Line\" />\n ) : (\n props.icon && <Icon name={props.icon} type=\"id\" size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <SonnerContentTitle $genre={props.genre}>{props.title}</SonnerContentTitle>}\n {props.description && (\n <SonnerContentDescription $genre={props.genre}>{props.description}</SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <SonnerButtonWrapper>\n <Button\n genre={props.buttonGenre}\n size=\"small\"\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n )\n}\nconst MemoizedSonnerElement = memo(SonnerElement)\n","import { useContext } from 'react'\n\nimport { SonnerContext, SonnerContextProps } from '.'\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext)\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner')\n }\n return context\n}\n","import styled, { css } from 'styled-components'\n\nimport { getFontSizeStyles } from '@local/components/typography'\nimport { addRemoveScrollbar, addTransition } from '@local/styles/add'\n\nimport { SonnerContentDescriptionProps, SonnerContentTitleProps, SonnerElementWrapperProps, SonnerLayoutProps } from '.'\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${props => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${props => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${props =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${props => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${props => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${props => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`\nexport const SonnerIcon = styled.div`\n display: contents;\n`\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n ${props => getFontSizeStyles(14, 700, props.theme.font.family)}\n color: ${props => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n ${props => getFontSizeStyles(12, 400, props.theme.font.family)}\n color:${props => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerButtonWrapper = styled.div``\n","import { ITheme } from '@local/theme'\n\nimport { ProviderSonnerProps } from '.'\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04\nexport const DEFAULT_PROVIDER_SONNER_Y = 100\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3\nexport const DEFAULT_PROVIDER_SONNER_GENRE: keyof ITheme['colors']['sonner'] = 'black'\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {}\n}\n"],"names":["_a","uuidv4","promise","jsxs","jsx","Fragment"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.constants-CTfUKury.cjs","sources":["../src/contexts/context-dialog/context.tsx","../src/contexts/context-dialog/context.hooks.ts","../src/contexts/context-dialog/context.styles.tsx","../src/contexts/context-dialog/context.constants.ts"],"sourcesContent":["import { AnimatePresence } from 'framer-motion'\nimport { FC, createContext, memo, useCallback, useMemo, useState } from 'react'\n\nimport { Outside } from '@local/areas/outside'\n\nimport {\n DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT,\n DialogContentProps,\n DialogContextProps,\n DialogElementProps,\n DialogElementWrapper,\n DialogLayout,\n ProviderDialogProps\n} from '.'\n\nexport const DialogContext = createContext<DialogContextProps<object> | null>(null)\n\nexport const ProviderDialog: FC<ProviderDialogProps> = props => {\n const [dialogHistory, setDialogHistory] = useState<DialogContentProps<object>[]>([])\n\n const remove: DialogContextProps<object>['remove'] = useCallback(id => {\n setDialogHistory(prev => {\n const itemToRemove = prev.find(item => item.id === id)\n\n if (!itemToRemove) return prev\n\n const indexToRemove = itemToRemove.index!\n\n const updatedHistory = prev\n .filter(item => item.id !== id)\n .map(item => ({\n ...item,\n index: item.index! > indexToRemove ? item.index! - 1 : item.index\n }))\n\n return updatedHistory\n })\n }, [])\n\n const update: DialogContextProps<object>['update'] = useCallback(dialog => {\n setDialogHistory(prev => {\n return prev.map(item => {\n if (item.id === dialog.id) {\n return { ...item, ...dialog }\n }\n return item\n })\n })\n }, [])\n\n const add: DialogContextProps<object>['add'] = useCallback(dialog => {\n const id = dialog.id\n\n setDialogHistory(prev => {\n const existingIndex = prev.findIndex(item => item.id === id)\n\n let updatedHistory\n if (existingIndex !== -1) {\n updatedHistory = [...prev]\n updatedHistory[existingIndex] = { ...dialog, id, index: prev[existingIndex].index }\n } else {\n updatedHistory = prev.map(item => ({\n ...item,\n index: item.index! + 1\n }))\n const newContent = { ...dialog, id, index: 0 }\n updatedHistory.unshift(newContent)\n }\n\n return updatedHistory\n })\n }, [])\n\n const dialogHistoryLength = useMemo(() => dialogHistory.length, [dialogHistory.length])\n const zIndex = useMemo(() => props.zIndex, [props.zIndex])\n\n return (\n <DialogContext.Provider value={{ add, remove, update, dialogHistory }}>\n <AnimatePresence>\n {dialogHistoryLength && (\n <DialogLayout\n $zIndex={zIndex}\n initial={{\n opacity: 0\n }}\n exit={{\n opacity: 0\n }}\n animate={{\n opacity: 1\n }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT }}\n >\n {dialogHistory.map(dialog => {\n const index = dialog.index\n const content = dialog.content\n const id = dialog.id\n const props = dialog.props\n\n return (\n <MemoizedDialogElement\n index={index}\n content={content}\n props={props}\n key={id}\n id={id}\n remove={() => remove(id)}\n />\n )\n })}\n </DialogLayout>\n )}\n </AnimatePresence>\n\n {props.children}\n </DialogContext.Provider>\n )\n}\n\nconst DialogElement = (props: DialogElementProps) => {\n const [isAnimating, setIsAnimating] = useState(true)\n return (\n <Outside onOutsideClick={() => props.remove()}>\n <DialogElementWrapper\n key={props.id}\n initial={{\n opacity: 0,\n scale: 0.8\n }}\n animate={{\n opacity: 1,\n scale: 1\n }}\n onAnimationComplete={() => setIsAnimating(false)}\n transition={{\n type: 'spring',\n duration: DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n delay: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT\n }}\n style={{\n zIndex: -props.index!\n }}\n $propsDialog={props.props?.propsDialog}\n >\n {props.content?.(props.props, props.remove, isAnimating)}\n </DialogElementWrapper>\n </Outside>\n )\n}\nconst MemoizedDialogElement = memo(DialogElement)\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { useDeepCompareMemoize } from '@local/hooks/use-deep-compare-memoize'\n\nimport { DialogContext, DialogContextItemProps, DialogContextProps, useDialogProps } from '.'\n\nexport const useDialogs = (): DialogContextProps<object> => {\n const context = useContext(DialogContext)\n if (!context) {\n throw new Error('useDialogs must be used within an ProviderDialog')\n }\n return context\n}\n\nexport const useDialog = <T extends object>(props?: useDialogProps<T>): DialogContextItemProps<T> => {\n const { add, remove, update, dialogHistory } = useDialogs()\n const [id, setId] = useState<string | null>(null)\n\n const localAdd: DialogContextItemProps<T>['add'] = useCallback(\n dialog => {\n const find = dialogHistory.find(item => item.id === dialog.id)\n if (!id || !find) {\n const id = dialog.id || uuidv4()\n setId(id)\n add({ ...(dialog as T), props: props, id })\n }\n },\n [add, dialogHistory, id, props]\n )\n const localRemove = useCallback(() => {\n if (id) {\n remove(id)\n setId(null)\n }\n }, [id, remove])\n\n const propsMemo = useDeepCompareMemoize(props)\n\n useEffect(() => {\n if (id) {\n update({ id, props: propsMemo })\n }\n }, [id, propsMemo, update])\n\n return { add: localAdd, remove: localRemove, id }\n}\n","import { motion } from 'framer-motion'\nimport styled from 'styled-components'\n\nimport { addOutline } from '@local/styles/add'\n\nimport {\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n DialogElementWrapperProps,\n DialogLayoutProps\n} from '.'\n\nexport const DialogLayout = styled(motion.div)<DialogLayoutProps>`\n position: fixed;\n flex: 1;\n width: 100%;\n height: 100%;\n background-color: ${props => props.theme.palette.black50};\n z-index: ${props => props.$zIndex};\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n`\n\nexport const DialogElementWrapper = styled(motion.dialog)<DialogElementWrapperProps>`\n ${addOutline};\n max-width: ${props => props.$propsDialog?.maxWidth || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH};\n max-height: ${props => props.$propsDialog?.maxHeight || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT};\n border-radius: ${props => props.$propsDialog?.borderRadius || DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS};\n background: ${props =>\n props.$propsDialog?.background\n ? props.theme.palette[props.$propsDialog.background]\n : props.theme.palette[DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND]};\n padding: ${props => props.$propsDialog?.padding || DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING};\n width: max-content;\n height: max-content;\n border: 0;\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: flex-start;\n justify-content: flex-start;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0px 10px 30px 0px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n`\nexport const DialogContent = styled(motion.div)``\n","// export const DEFAULT_PROVIDER_Dialog_SCALE = 0.04\nimport { IThemePaletteKeys } from '@local/theme'\n\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT = 0.3\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT = 0.4\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT: string = 'max-content'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH: string = 'max-content'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS: string = '12px'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING: string = '20px'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND: IThemePaletteKeys = 'whiteStandard'\n"],"names":["DialogContext","createContext","MemoizedDialogElement","memo","props","isAnimating","setIsAnimating","useState","Outside","onOutsideClick","remove","children","jsx","DialogElementWrapper","initial","opacity","scale","animate","onAnimationComplete","transition","type","duration","DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT","delay","DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT","style","zIndex","index","$propsDialog","_a","propsDialog","content","id","useDialogs","context","useContext","Error","DialogLayout","styled","motion","div","theme","palette","black50","$zIndex","dialog","addOutline","maxWidth","DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH","maxHeight","DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT","borderRadius","DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS","background","DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND","padding","DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING","DialogContent","dialogHistory","setDialogHistory","useCallback","prev","itemToRemove","find","item","indexToRemove","filter","map","update","add","existingIndex","findIndex","updatedHistory","newContent","unshift","dialogHistoryLength","useMemo","length","jsxs","Provider","value","AnimatePresence","exit","setId","localAdd","uuidv4","localRemove","propsMemo","useDeepCompareMemoize","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"context.constants-CTfUKury.cjs","sources":["../src/contexts/context-dialog/context.tsx","../src/contexts/context-dialog/context.hooks.ts","../src/contexts/context-dialog/context.styles.tsx","../src/contexts/context-dialog/context.constants.ts"],"sourcesContent":["import { Outside } from '@local/areas/outside'\n\nimport { AnimatePresence } from 'framer-motion'\nimport { createContext, FC, memo, useCallback, useMemo, useState } from 'react'\n\nimport {\n DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT,\n DialogContentProps,\n DialogContextProps,\n DialogElementProps,\n DialogElementWrapper,\n DialogLayout,\n ProviderDialogProps\n} from '.'\n\nexport const DialogContext = createContext<DialogContextProps<object> | null>(null)\n\nexport const ProviderDialog: FC<ProviderDialogProps> = props => {\n const [dialogHistory, setDialogHistory] = useState<DialogContentProps<object>[]>([])\n\n const remove: DialogContextProps<object>['remove'] = useCallback(id => {\n setDialogHistory(prev => {\n const itemToRemove = prev.find(item => item.id === id)\n\n if (!itemToRemove) return prev\n\n const indexToRemove = itemToRemove.index!\n\n const updatedHistory = prev\n .filter(item => item.id !== id)\n .map(item => ({\n ...item,\n index: item.index! > indexToRemove ? item.index! - 1 : item.index\n }))\n\n return updatedHistory\n })\n }, [])\n\n const update: DialogContextProps<object>['update'] = useCallback(dialog => {\n setDialogHistory(prev => {\n return prev.map(item => {\n if (item.id === dialog.id) {\n return { ...item, ...dialog }\n }\n return item\n })\n })\n }, [])\n\n const add: DialogContextProps<object>['add'] = useCallback(dialog => {\n const id = dialog.id\n\n setDialogHistory(prev => {\n const existingIndex = prev.findIndex(item => item.id === id)\n\n let updatedHistory\n if (existingIndex !== -1) {\n updatedHistory = [...prev]\n updatedHistory[existingIndex] = { ...dialog, id, index: prev[existingIndex].index }\n } else {\n updatedHistory = prev.map(item => ({\n ...item,\n index: item.index! + 1\n }))\n const newContent = { ...dialog, id, index: 0 }\n updatedHistory.unshift(newContent)\n }\n\n return updatedHistory\n })\n }, [])\n\n const dialogHistoryLength = useMemo(() => dialogHistory.length, [dialogHistory.length])\n const zIndex = useMemo(() => props.zIndex, [props.zIndex])\n\n return (\n <DialogContext.Provider value={{ add, remove, update, dialogHistory }}>\n <AnimatePresence>\n {dialogHistoryLength && (\n <DialogLayout\n $zIndex={zIndex}\n initial={{\n opacity: 0\n }}\n exit={{\n opacity: 0\n }}\n animate={{\n opacity: 1\n }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT }}\n >\n {dialogHistory.map(dialog => {\n const index = dialog.index\n const content = dialog.content\n const id = dialog.id\n const props = dialog.props\n\n return (\n <MemoizedDialogElement\n index={index}\n content={content}\n props={props}\n key={id}\n id={id}\n remove={() => remove(id)}\n />\n )\n })}\n </DialogLayout>\n )}\n </AnimatePresence>\n\n {props.children}\n </DialogContext.Provider>\n )\n}\n\nconst DialogElement = (props: DialogElementProps) => {\n const [isAnimating, setIsAnimating] = useState(true)\n return (\n <Outside onOutsideClick={() => props.remove()}>\n <DialogElementWrapper\n key={props.id}\n initial={{\n opacity: 0,\n scale: 0.8\n }}\n animate={{\n opacity: 1,\n scale: 1\n }}\n onAnimationComplete={() => setIsAnimating(false)}\n transition={{\n type: 'spring',\n duration: DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n delay: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT\n }}\n style={{\n zIndex: -props.index!\n }}\n $propsDialog={props.props?.propsDialog}\n >\n {props.content?.(props.props, props.remove, isAnimating)}\n </DialogElementWrapper>\n </Outside>\n )\n}\nconst MemoizedDialogElement = memo(DialogElement)\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { useDeepCompareMemoize } from '@local/hooks/use-deep-compare-memoize'\n\nimport { DialogContext, DialogContextItemProps, DialogContextProps, useDialogProps } from '.'\n\nexport const useDialogs = (): DialogContextProps<object> => {\n const context = useContext(DialogContext)\n if (!context) {\n throw new Error('useDialogs must be used within an ProviderDialog')\n }\n return context\n}\n\nexport const useDialog = <T extends object>(props?: useDialogProps<T>): DialogContextItemProps<T> => {\n const { add, remove, update, dialogHistory } = useDialogs()\n const [id, setId] = useState<string | null>(null)\n\n const localAdd: DialogContextItemProps<T>['add'] = useCallback(\n dialog => {\n const find = dialogHistory.find(item => item.id === dialog.id)\n if (!id || !find) {\n const id = dialog.id || uuidv4()\n setId(id)\n add({ ...(dialog as T), props: props, id })\n }\n },\n [add, dialogHistory, id, props]\n )\n const localRemove = useCallback(() => {\n if (id) {\n remove(id)\n setId(null)\n }\n }, [id, remove])\n\n const propsMemo = useDeepCompareMemoize(props)\n\n useEffect(() => {\n if (id) {\n update({ id, props: propsMemo })\n }\n }, [id, propsMemo, update])\n\n return { add: localAdd, remove: localRemove, id }\n}\n","import { motion } from 'framer-motion'\nimport styled from 'styled-components'\n\nimport { addOutline } from '@local/styles/add'\n\nimport {\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n DialogElementWrapperProps,\n DialogLayoutProps\n} from '.'\n\nexport const DialogLayout = styled(motion.div)<DialogLayoutProps>`\n position: fixed;\n flex: 1;\n width: 100%;\n height: 100%;\n background-color: ${props => props.theme.palette.black50};\n z-index: ${props => props.$zIndex};\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n`\n\nexport const DialogElementWrapper = styled(motion.dialog)<DialogElementWrapperProps>`\n ${addOutline};\n max-width: ${props => props.$propsDialog?.maxWidth || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH};\n max-height: ${props => props.$propsDialog?.maxHeight || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT};\n border-radius: ${props => props.$propsDialog?.borderRadius || DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS};\n background: ${props =>\n props.$propsDialog?.background\n ? props.theme.palette[props.$propsDialog.background]\n : props.theme.palette[DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND]};\n padding: ${props => props.$propsDialog?.padding || DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING};\n width: max-content;\n height: max-content;\n border: 0;\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: flex-start;\n justify-content: flex-start;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0px 10px 30px 0px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n`\nexport const DialogContent = styled(motion.div)``\n","// export const DEFAULT_PROVIDER_Dialog_SCALE = 0.04\nimport { IThemePaletteKeys } from '@local/theme'\n\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT = 0.3\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT = 0.4\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT: string = 'max-content'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH: string = 'max-content'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS: string = '12px'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING: string = '20px'\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND: IThemePaletteKeys = 'whiteStandard'\n"],"names":["DialogContext","createContext","MemoizedDialogElement","memo","props","isAnimating","setIsAnimating","useState","Outside","onOutsideClick","remove","children","jsx","DialogElementWrapper","initial","opacity","scale","animate","onAnimationComplete","transition","type","duration","DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT","delay","DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT","style","zIndex","index","$propsDialog","_a","propsDialog","content","id","useDialogs","context","useContext","Error","DialogLayout","styled","motion","div","theme","palette","black50","$zIndex","dialog","addOutline","maxWidth","DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH","maxHeight","DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT","borderRadius","DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS","background","DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND","padding","DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING","DialogContent","dialogHistory","setDialogHistory","useCallback","prev","itemToRemove","find","item","indexToRemove","filter","map","update","add","existingIndex","findIndex","updatedHistory","newContent","unshift","dialogHistoryLength","useMemo","length","jsxs","Provider","value","AnimatePresence","exit","setId","localAdd","uuidv4","localRemove","propsMemo","useDeepCompareMemoize","useEffect"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";const e=require("react"),n=require("./jsx-runtime-BcGej2Kr.cjs"),t=require("framer-motion"),i=require("styled-components"),o=require("uuid"),r=require("./component-CMkU2lIg.cjs"),s=require("./component.styles-CbkvPvEl.cjs"),l=require("./component-CeWNemV1.cjs"),d=require("./style-mc2ST5fY.cjs"),c=e.createContext(null),x=e.memo(e=>n.jsxRuntimeExports.jsx(t.motion.div,{layout:!0,initial:{opacity:0,scale:1,y:e.isLastViewIndex?e.isTop?E:-E:e.isTop?-E:E},animate:{y:0,opacity:e.isMoreThanLastViewIndex?0:1,pointerEvents:e.isMoreThanLastViewIndex?"none":"auto",display:e.isMoreThanLastViewIndex?"none":"flex",scale:e.isHovered?1:1-e.index*j,marginTop:e.isTop?e.isHovered||0===e.index?"0px":`-${y}px`:"0px",marginBottom:e.isTop||e.isHovered||0===e.index?"0px":`-${y}px`},style:{zIndex:-e.index},whileInView:{opacity:e.isMoreThanLastViewIndex?0:1},exit:{opacity:0,y:e.isTop?-E:E},transition:{type:"spring",duration:b},children:n.jsxRuntimeExports.jsxs(u,{$genre:e.genre,onClick:()=>"clickOnSonner"===e.hidingMode&&e.handleOnClick(e.id,"clickOnSonner"),children:[(e.isLoading||e.icon)&&n.jsxRuntimeExports.jsx(m,{children:e.isLoading?n.jsxRuntimeExports.jsx(s.Icon,{size:"medium",type:"loading",name:"Line"}):e.icon&&n.jsxRuntimeExports.jsx(s.Icon,{name:e.icon,type:"id",size:"medium"})}),n.jsxRuntimeExports.jsx(p,{children:e.content?e.content:n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[e.title&&n.jsxRuntimeExports.jsx(f,{$genre:e.genre,children:e.title}),e.description&&n.jsxRuntimeExports.jsx(v,{$genre:e.genre,children:e.description})]})}),e.button&&e.button.content&&n.jsxRuntimeExports.jsx(h,{children:n.jsxRuntimeExports.jsx(r.Button,{genre:e.buttonGenre,size:"small",onClick:()=>"clickOnButton"===e.hidingMode&&e.handleOnClick(e.id,"clickOnButton"),children:e.button.content})})]})},e.id)),a=i.div`
1
+ "use strict";const e=require("react"),n=require("./jsx-runtime-BcGej2Kr.cjs"),t=require("framer-motion"),i=require("styled-components"),o=require("uuid"),r=require("./component-u_42PteJ.cjs"),s=require("./component.styles-DSle6iuF.cjs"),l=require("./component-CACoGUK9.cjs"),d=require("./style-mc2ST5fY.cjs"),c=e.createContext(null),x=e.memo(e=>n.jsxRuntimeExports.jsx(t.motion.div,{layout:!0,initial:{opacity:0,scale:1,y:e.isLastViewIndex?e.isTop?E:-E:e.isTop?-E:E},animate:{y:0,opacity:e.isMoreThanLastViewIndex?0:1,pointerEvents:e.isMoreThanLastViewIndex?"none":"auto",display:e.isMoreThanLastViewIndex?"none":"flex",scale:e.isHovered?1:1-e.index*j,marginTop:e.isTop?e.isHovered||0===e.index?"0px":`-${y}px`:"0px",marginBottom:e.isTop||e.isHovered||0===e.index?"0px":`-${y}px`},style:{zIndex:-e.index},whileInView:{opacity:e.isMoreThanLastViewIndex?0:1},exit:{opacity:0,y:e.isTop?-E:E},transition:{type:"spring",duration:b},children:n.jsxRuntimeExports.jsxs(u,{$genre:e.genre,onClick:()=>"clickOnSonner"===e.hidingMode&&e.handleOnClick(e.id,"clickOnSonner"),children:[(e.isLoading||e.icon)&&n.jsxRuntimeExports.jsx(m,{children:e.isLoading?n.jsxRuntimeExports.jsx(s.Icon,{size:"medium",type:"loading",name:"Line"}):e.icon&&n.jsxRuntimeExports.jsx(s.Icon,{name:e.icon,type:"id",size:"medium"})}),n.jsxRuntimeExports.jsx(p,{children:e.content?e.content:n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[e.title&&n.jsxRuntimeExports.jsx(f,{$genre:e.genre,children:e.title}),e.description&&n.jsxRuntimeExports.jsx(v,{$genre:e.genre,children:e.description})]})}),e.button&&e.button.content&&n.jsxRuntimeExports.jsx(h,{children:n.jsxRuntimeExports.jsx(r.Button,{genre:e.buttonGenre,size:"small",onClick:()=>"clickOnButton"===e.hidingMode&&e.handleOnClick(e.id,"clickOnButton"),children:e.button.content})})]})},e.id)),a=i.div`
2
2
  position: fixed;
3
3
  z-index: ${e=>e.$zIndex};
4
4
  max-height: calc(100dvh - 20px);
@@ -97,4 +97,4 @@
97
97
  align-items: center;
98
98
  justify-content: flex-start;
99
99
  `,h=i.div``,g=100,j=.04,E=100,b=.3,R="black",y=60,$={content:"Undo",onClick:()=>{}};exports.DEFAULT_PROVIDER_SONNER_BUTTON=$,exports.DEFAULT_PROVIDER_SONNER_DURATION=b,exports.DEFAULT_PROVIDER_SONNER_GENRE=R,exports.DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM=y,exports.DEFAULT_PROVIDER_SONNER_SCALE=j,exports.DEFAULT_PROVIDER_SONNER_Y=E,exports.DEFAULT_PROVIDER_SONNER_Z_INDEX=g,exports.ProviderSonner=r=>{var s,l,d,u,p,m;const f=e.useMemo(()=>r.visibleToasts,[r.visibleToasts]),v=e.useMemo(()=>{var e;return null==(e=null==r?void 0:r.default)?void 0:e.description},[null==(s=null==r?void 0:r.default)?void 0:s.description]),h=e.useMemo(()=>{var e;return null==(e=null==r?void 0:r.default)?void 0:e.title},[null==(l=null==r?void 0:r.default)?void 0:l.title]),j=e.useMemo(()=>{var e;return null==(e=null==r?void 0:r.default)?void 0:e.button},[null==(d=null==r?void 0:r.default)?void 0:d.button]),E=e.useMemo(()=>{var e;return null==(e=null==r?void 0:r.default)?void 0:e.hidingTime},[null==(u=null==r?void 0:r.default)?void 0:u.hidingTime]),b=e.useMemo(()=>{var e;return(null==(e=null==r?void 0:r.default)?void 0:e.hidingMode)??"clickOnButton"},[null==(p=null==r?void 0:r.default)?void 0:p.hidingMode]),y=e.useMemo(()=>{var e;return(null==(e=null==r?void 0:r.default)?void 0:e.genre)??R},[null==(m=null==r?void 0:r.default)?void 0:m.genre]),T=e.useMemo(()=>r.position.includes("top"),[r.position]),[S,w]=e.useState([]),[I,O]=e.useState(!1),L=e.useCallback(()=>{O(!0)},[]),M=e.useCallback(()=>{O(!1)},[]),k=e.useCallback(e=>{w(n=>{const t=n.find(n=>n.id===e);if(!t)return n;const i=t.index,o=n.filter(n=>n.id!==e).map(e=>({...e,index:e.index>i?e.index-1:e.index}));return 0===o.length&&M(),o})},[M]),_=e.useCallback(e=>{const n=e.id??o.v4(),t=e.hidingTime??E;w(t=>{const i=t.findIndex(e=>e.id===n);let o;if(-1!==i)o=[...t],o[i]={...e,id:n,index:t[i].index};else{o=t.map(e=>({...e,index:e.index+1}));const i={...e,id:n,index:0};o.unshift(i)}return o}),void 0!==t&&setTimeout(()=>{k(n)},t)},[E,k]),C=e.useCallback((e,n,t)=>{const i=o.v4();return _({...n,id:i,isLoading:!0}),e.then(e=>{_({...t(e,void 0),id:i})}).catch(e=>{_({...t(void 0,e),id:i})})},[_]),N=e.useCallback(e=>{k(e)},[k]),D=i.useTheme();return n.jsxRuntimeExports.jsxs(c.Provider,{value:{toast:_,promise:C,remove:k,contentHistory:S},children:[n.jsxRuntimeExports.jsx(a,{$zIndex:r.zIndex??g,$position:r.position,$gap:r.gap,onMouseEnter:L,onMouseLeave:M,children:n.jsxRuntimeExports.jsx(t.AnimatePresence,{children:S.map(e=>{const t=e.index,i=!!f&&t>f,o=!!f&&t>f-1,r=!!f&&t==f-1,s=e.genre??y,l=D.colors.sonner[s].button.genre,d=e.hidingMode??b,c="content"in e&&e.content,a="title"in e&&e.title,u="description"in e&&e.description;return n.jsxRuntimeExports.jsx(x,{isMoreThanLastViewIndexPlusOne:i,isMoreThanLastViewIndex:o,isLastViewIndex:r,isTop:T,id:e.id,icon:e.icon,isLoading:e.isLoading,index:t,buttonGenre:l,hidingMode:d,isHovered:I,genre:s,content:c,title:a||h,description:u||v,button:e.button??j??$,handleOnClick:N},e.id)})})}),r.children]})},exports.SonnerButtonWrapper=h,exports.SonnerContent=p,exports.SonnerContentDescription=v,exports.SonnerContentTitle=f,exports.SonnerContext=c,exports.SonnerElementWrapper=u,exports.SonnerIcon=m,exports.SonnerLayout=a,exports.useSonner=()=>{const n=e.useContext(c);if(!n)throw new Error("useSonner must be used within an ProviderSonner");return n};
100
- //# sourceMappingURL=context.constants-DKCD80Pp.cjs.map
100
+ //# sourceMappingURL=context.constants-CV8ycctl.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.constants-DKCD80Pp.cjs","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { AnimatePresence, motion } from 'framer-motion'\nimport { FC, createContext, memo, useCallback, useMemo, useState } from 'react'\nimport { useTheme } from 'styled-components'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Button } from '@local/components/button'\nimport { Icon } from '@local/components/icon'\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout\n} from '.'\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null)\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = props => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts]\n )\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description]\n )\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title]\n )\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button]\n )\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime]\n )\n const memoDefaultHidingMode: ProviderSonnerProps['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode]\n )\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre]\n )\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position])\n\n const [contentHistory, setContentHistory] = useState<SonnerContentProps[]>([])\n\n const [isHovered, setIsHovered] = useState(false)\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false)\n }, [])\n\n const remove: SonnerContextProps['remove'] = useCallback(\n id => {\n setContentHistory(prev => {\n const itemToRemove = prev.find(item => item.id === id)\n\n if (!itemToRemove) return prev\n\n const indexToRemove = itemToRemove.index\n\n const updatedHistory = prev\n .filter(item => item.id !== id)\n .map(item => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index\n }))\n\n if (updatedHistory.length === 0) handleMouseLeave()\n\n return updatedHistory\n })\n },\n [handleMouseLeave]\n )\n\n const toast: SonnerContextProps['toast'] = useCallback(\n content => {\n const id = content.id ?? uuidv4()\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime\n\n setContentHistory(prev => {\n const existingIndex = prev.findIndex(item => item.id === id)\n\n let updatedHistory\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev]\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index }\n } else {\n // Add new item\n updatedHistory = prev.map(item => ({\n ...item,\n index: item.index + 1\n }))\n const newContent = { ...content, id, index: 0 }\n updatedHistory.unshift(newContent)\n }\n\n return updatedHistory\n })\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id)\n }, hidingTime)\n }\n },\n [memoDefaultHidingTime, remove]\n )\n const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, 'index'>\n ) => {\n const id = uuidv4()\n toast({ ...expectation, id, isLoading: true })\n\n return promise\n .then(result => {\n toast({ ...localToast(result, undefined), id })\n })\n .catch(error => {\n toast({ ...localToast(undefined, error), id })\n })\n },\n [toast]\n )\n const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id)\n },\n [remove]\n )\n const theme = useTheme()\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map(content => {\n const index = content.index\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false\n const isLastViewIndex = memoVisibleToasts ? index == memoVisibleToasts - 1 : false\n const localGenre = content.genre ?? memoDefaultGenre\n const buttonGenre = theme.colors.sonner[localGenre].button.genre\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode\n\n const localContent = 'content' in content ? content.content : false\n const localTitle = 'title' in content ? content.title : false\n const localDescription = 'description' in content ? content.description : false\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n )\n })}\n </AnimatePresence>\n </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n )\n}\n\nconst SonnerElement = (props: SonnerElementProps) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px'\n }}\n style={{\n zIndex: -props.index\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size=\"medium\" type=\"loading\" name=\"Line\" />\n ) : (\n props.icon && <Icon name={props.icon} type=\"id\" size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <SonnerContentTitle $genre={props.genre}>{props.title}</SonnerContentTitle>}\n {props.description && (\n <SonnerContentDescription $genre={props.genre}>{props.description}</SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <SonnerButtonWrapper>\n <Button\n genre={props.buttonGenre}\n size=\"small\"\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n )\n}\nconst MemoizedSonnerElement = memo(SonnerElement)\n","import styled, { css } from 'styled-components'\n\nimport { getFontSizeStyles } from '@local/components/typography'\nimport { addRemoveScrollbar, addTransition } from '@local/styles/add'\n\nimport { SonnerContentDescriptionProps, SonnerContentTitleProps, SonnerElementWrapperProps, SonnerLayoutProps } from '.'\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${props => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${props => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${props =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${props => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${props => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${props => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`\nexport const SonnerIcon = styled.div`\n display: contents;\n`\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n ${props => getFontSizeStyles(14, 700, props.theme.font.family)}\n color: ${props => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n ${props => getFontSizeStyles(12, 400, props.theme.font.family)}\n color:${props => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerButtonWrapper = styled.div``\n","import { ITheme } from '@local/theme'\n\nimport { ProviderSonnerProps } from '.'\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04\nexport const DEFAULT_PROVIDER_SONNER_Y = 100\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3\nexport const DEFAULT_PROVIDER_SONNER_GENRE: keyof ITheme['colors']['sonner'] = 'black'\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {}\n}\n","import { useContext } from 'react'\n\nimport { SonnerContext, SonnerContextProps } from '.'\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext)\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner')\n }\n return context\n}\n"],"names":["SonnerContext","createContext","MemoizedSonnerElement","memo","props","jsx","motion","div","layout","initial","opacity","scale","y","isLastViewIndex","isTop","DEFAULT_PROVIDER_SONNER_Y","animate","isMoreThanLastViewIndex","pointerEvents","display","isHovered","index","DEFAULT_PROVIDER_SONNER_SCALE","marginTop","DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM","marginBottom","style","zIndex","whileInView","exit","transition","type","duration","DEFAULT_PROVIDER_SONNER_DURATION","children","jsxs","SonnerElementWrapper","$genre","genre","onClick","hidingMode","handleOnClick","id","isLoading","icon","SonnerIcon","Icon","size","name","SonnerContent","content","Fragment","title","SonnerContentTitle","description","SonnerContentDescription","button","SonnerButtonWrapper","Button","buttonGenre","SonnerLayout","styled","$zIndex","$gap","addRemoveScrollbar","$position","css","theme","colors","sonner","wrapper","background","color","borderColor","boxShadow","boxShadowHover","addTransition","getFontSizeStyles","font","family","DEFAULT_PROVIDER_SONNER_Z_INDEX","DEFAULT_PROVIDER_SONNER_GENRE","DEFAULT_PROVIDER_SONNER_BUTTON","memoVisibleToasts","useMemo","visibleToasts","memoDefaultDescription","_a","default","memoDefaultTitle","_b","memoDefaultButton","_c","memoDefaultHidingTime","hidingTime","_d","memoDefaultHidingMode","_e","memoDefaultGenre","_f","position","includes","contentHistory","setContentHistory","useState","setIsHovered","handleMouseEnter","useCallback","handleMouseLeave","remove","prev","itemToRemove","find","item","indexToRemove","updatedHistory","filter","map","length","toast","uuidv4","existingIndex","findIndex","newContent","unshift","setTimeout","promise","expectation","localToast","then","result","catch","error","useTheme","Provider","value","gap","onMouseEnter","onMouseLeave","AnimatePresence","isMoreThanLastViewIndexPlusOne","localGenre","localContent","localTitle","localDescription","context","useContext","Error"],"mappings":"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"}
1
+ {"version":3,"file":"context.constants-CV8ycctl.cjs","sources":["../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { AnimatePresence, motion } from 'framer-motion'\nimport { FC, createContext, memo, useCallback, useMemo, useState } from 'react'\nimport { useTheme } from 'styled-components'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Button } from '@local/components/button'\nimport { Icon } from '@local/components/icon'\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n ProviderSonnerProps,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentProps,\n SonnerContentStandardProps,\n SonnerContentTitle,\n SonnerContextProps,\n SonnerElementProps,\n SonnerElementWrapper,\n SonnerIcon,\n SonnerLayout\n} from '.'\n\nexport const SonnerContext = createContext<SonnerContextProps | null>(null)\n\nexport const ProviderSonner: FC<ProviderSonnerProps> = props => {\n const memoVisibleToasts: ProviderSonnerProps['visibleToasts'] = useMemo(\n () => props.visibleToasts,\n [props.visibleToasts]\n )\n const memoDefaultDescription: ProviderSonnerProps['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description]\n )\n const memoDefaultTitle: ProviderSonnerProps['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title]\n )\n const memoDefaultButton: ProviderSonnerProps['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button]\n )\n const memoDefaultHidingTime: ProviderSonnerProps['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime]\n )\n const memoDefaultHidingMode: ProviderSonnerProps['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode]\n )\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre]\n )\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position])\n\n const [contentHistory, setContentHistory] = useState<SonnerContentProps[]>([])\n\n const [isHovered, setIsHovered] = useState(false)\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false)\n }, [])\n\n const remove: SonnerContextProps['remove'] = useCallback(\n id => {\n setContentHistory(prev => {\n const itemToRemove = prev.find(item => item.id === id)\n\n if (!itemToRemove) return prev\n\n const indexToRemove = itemToRemove.index\n\n const updatedHistory = prev\n .filter(item => item.id !== id)\n .map(item => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index\n }))\n\n if (updatedHistory.length === 0) handleMouseLeave()\n\n return updatedHistory\n })\n },\n [handleMouseLeave]\n )\n\n const toast: SonnerContextProps['toast'] = useCallback(\n content => {\n const id = content.id ?? uuidv4()\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime\n\n setContentHistory(prev => {\n const existingIndex = prev.findIndex(item => item.id === id)\n\n let updatedHistory\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev]\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index }\n } else {\n // Add new item\n updatedHistory = prev.map(item => ({\n ...item,\n index: item.index + 1\n }))\n const newContent = { ...content, id, index: 0 }\n updatedHistory.unshift(newContent)\n }\n\n return updatedHistory\n })\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id)\n }, hidingTime)\n }\n },\n [memoDefaultHidingTime, remove]\n )\n const promise: SonnerContextProps['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<SonnerContentProps, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<SonnerContentProps, 'index'>\n ) => {\n const id = uuidv4()\n toast({ ...expectation, id, isLoading: true })\n\n return promise\n .then(result => {\n toast({ ...localToast(result, undefined), id })\n })\n .catch(error => {\n toast({ ...localToast(undefined, error), id })\n })\n },\n [toast]\n )\n const handleOnClick = useCallback(\n (id: SonnerContentStandardProps['id']) => {\n remove(id)\n },\n [remove]\n )\n const theme = useTheme()\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <SonnerLayout\n $zIndex={props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX}\n $position={props.position}\n $gap={props.gap}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map(content => {\n const index = content.index\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false\n const isLastViewIndex = memoVisibleToasts ? index == memoVisibleToasts - 1 : false\n const localGenre = content.genre ?? memoDefaultGenre\n const buttonGenre = theme.colors.sonner[localGenre].button.genre\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode\n\n const localContent = 'content' in content ? content.content : false\n const localTitle = 'title' in content ? content.title : false\n const localDescription = 'description' in content ? content.description : false\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n )\n })}\n </AnimatePresence>\n </SonnerLayout>\n {props.children}\n </SonnerContext.Provider>\n )\n}\n\nconst SonnerElement = (props: SonnerElementProps) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? 1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px'\n }}\n style={{\n zIndex: -props.index\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <SonnerElementWrapper\n $genre={props.genre}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n >\n {(props.isLoading || props.icon) && (\n <SonnerIcon>\n {props.isLoading ? (\n <Icon size=\"medium\" type=\"loading\" name=\"Line\" />\n ) : (\n props.icon && <Icon name={props.icon} type=\"id\" size={'medium'} />\n )}\n </SonnerIcon>\n )}\n <SonnerContent>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <SonnerContentTitle $genre={props.genre}>{props.title}</SonnerContentTitle>}\n {props.description && (\n <SonnerContentDescription $genre={props.genre}>{props.description}</SonnerContentDescription>\n )}\n </>\n )}\n </SonnerContent>\n\n {props.button && props.button.content && (\n <SonnerButtonWrapper>\n <Button\n genre={props.buttonGenre}\n size=\"small\"\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </SonnerButtonWrapper>\n )}\n </SonnerElementWrapper>\n </motion.div>\n )\n}\nconst MemoizedSonnerElement = memo(SonnerElement)\n","import styled, { css } from 'styled-components'\n\nimport { getFontSizeStyles } from '@local/components/typography'\nimport { addRemoveScrollbar, addTransition } from '@local/styles/add'\n\nimport { SonnerContentDescriptionProps, SonnerContentTitleProps, SonnerElementWrapperProps, SonnerLayoutProps } from '.'\n\nexport const SonnerLayout = styled.div<SonnerLayoutProps>`\n position: fixed;\n z-index: ${props => props.$zIndex};\n max-height: calc(100dvh - 20px);\n width: 320px;\n display: flex;\n margin: 10px;\n gap: ${props => props.$gap}px;\n box-sizing: content-box;\n overflow-y: visible;\n overflow-x: visible;\n ${addRemoveScrollbar}\n ${props =>\n props.$position === 'bottom-center'\n ? css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-left'\n ? css`\n left: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'bottom-right'\n ? css`\n right: 0;\n bottom: 0;\n justify-content: flex-start;\n flex-direction: column-reverse;\n `\n : props.$position === 'top-right'\n ? css`\n top: 0;\n right: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-left'\n ? css`\n top: 0;\n left: 0;\n justify-content: flex-end;\n flex-direction: column;\n `\n : props.$position === 'top-center'\n ? css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n justify-content: flex-end;\n flex-direction: column;\n `\n : css``}\n`\n\nexport const SonnerElementWrapper = styled.div<SonnerElementWrapperProps>`\n background: ${props => props.theme.colors.sonner[props.$genre].wrapper.background};\n color: ${props => props.theme.colors.sonner[props.$genre].icon.color};\n border-radius: 12px;\n border-style: solid;\n border-color: ${props => props.theme.colors.sonner[props.$genre].wrapper.borderColor};\n border-width: 1px;\n padding: 16px 20px 16px 20px;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex-shrink: 1;\n min-width: 320px;\n min-height: 64px;\n transform-origin: center center;\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadow};\n overflow: visible;\n &:hover {\n box-shadow: ${props => props.theme.colors.sonner[props.$genre].wrapper.boxShadowHover};\n }\n ${addTransition};\n`\nexport const SonnerContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-start;\n justify-content: flex-start;\n align-self: stretch;\n flex-shrink: 0;\n flex: 1;\n position: relative;\n overflow: hidden;\n`\nexport const SonnerIcon = styled.div`\n display: contents;\n`\nexport const SonnerContentTitle = styled.div<SonnerContentTitleProps>`\n ${props => getFontSizeStyles(14, 700, props.theme.font.family)}\n color: ${props => props.theme.colors.sonner[props.$genre].title.color};\n text-align: left;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerContentDescription = styled.div<SonnerContentDescriptionProps>`\n ${props => getFontSizeStyles(12, 400, props.theme.font.family)}\n color:${props => props.theme.colors.sonner[props.$genre].description.color};\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`\nexport const SonnerButtonWrapper = styled.div``\n","import { ITheme } from '@local/theme'\n\nimport { ProviderSonnerProps } from '.'\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04\nexport const DEFAULT_PROVIDER_SONNER_Y = 100\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3\nexport const DEFAULT_PROVIDER_SONNER_GENRE: keyof ITheme['colors']['sonner'] = 'black'\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 60\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ProviderSonnerProps['default']['button'] = {\n content: 'Undo',\n onClick: () => {}\n}\n","import { useContext } from 'react'\n\nimport { SonnerContext, SonnerContextProps } from '.'\n\nexport const useSonner = (): SonnerContextProps => {\n const context = useContext(SonnerContext)\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner')\n }\n return context\n}\n"],"names":["SonnerContext","createContext","MemoizedSonnerElement","memo","props","jsx","motion","div","layout","initial","opacity","scale","y","isLastViewIndex","isTop","DEFAULT_PROVIDER_SONNER_Y","animate","isMoreThanLastViewIndex","pointerEvents","display","isHovered","index","DEFAULT_PROVIDER_SONNER_SCALE","marginTop","DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM","marginBottom","style","zIndex","whileInView","exit","transition","type","duration","DEFAULT_PROVIDER_SONNER_DURATION","children","jsxs","SonnerElementWrapper","$genre","genre","onClick","hidingMode","handleOnClick","id","isLoading","icon","SonnerIcon","Icon","size","name","SonnerContent","content","Fragment","title","SonnerContentTitle","description","SonnerContentDescription","button","SonnerButtonWrapper","Button","buttonGenre","SonnerLayout","styled","$zIndex","$gap","addRemoveScrollbar","$position","css","theme","colors","sonner","wrapper","background","color","borderColor","boxShadow","boxShadowHover","addTransition","getFontSizeStyles","font","family","DEFAULT_PROVIDER_SONNER_Z_INDEX","DEFAULT_PROVIDER_SONNER_GENRE","DEFAULT_PROVIDER_SONNER_BUTTON","memoVisibleToasts","useMemo","visibleToasts","memoDefaultDescription","_a","default","memoDefaultTitle","_b","memoDefaultButton","_c","memoDefaultHidingTime","hidingTime","_d","memoDefaultHidingMode","_e","memoDefaultGenre","_f","position","includes","contentHistory","setContentHistory","useState","setIsHovered","handleMouseEnter","useCallback","handleMouseLeave","remove","prev","itemToRemove","find","item","indexToRemove","updatedHistory","filter","map","length","toast","uuidv4","existingIndex","findIndex","newContent","unshift","setTimeout","promise","expectation","localToast","then","result","catch","error","useTheme","Provider","value","gap","onMouseEnter","onMouseLeave","AnimatePresence","isMoreThanLastViewIndexPlusOne","localGenre","localContent","localTitle","localDescription","context","useContext","Error"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";const e=require("react"),t=require("./jsx-runtime-BcGej2Kr.cjs"),i=require("./area-AbheP_ot.cjs"),o=require("./theme.global-B9wIU_rF.cjs"),r=require("./context.hooks-BIsapq-0.cjs"),l=require("./style-mc2ST5fY.cjs"),n=require("styled-components"),s=e.createContext(null),a=t=>{const[i,o]=e.useState(t||{visible:!0,defaultVisible:!0}),r=e.useCallback(e=>{o(e)},[]);return e.useEffect(()=>{t&&o(t)},[t]),{previewProps:i,changePreview:r}},d=t=>{const[i,o]=e.useState({bgColor:t,bgColorHistory:[t],bgColorIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.bgColorHistory.slice(0,t.bgColorIndex+1),e];return{bgColor:e,bgColorHistory:i,bgColorIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.bgColorIndex+e;return i>=0&&i<t.bgColorHistory.length?{...t,bgColor:t.bgColorHistory[i],bgColorIndex:i}:t})},[]),n=e.useCallback(()=>{o({bgColor:t,bgColorHistory:[t],bgColorIndex:0})},[t]);return e.useEffect(()=>{o({bgColor:t,bgColorHistory:[t],bgColorIndex:0})},[t]),{bgColor:i.bgColor,changeBgColor:r,historyBgColor:l,setDefaultBgColor:n,bgColorIndex:i.bgColorIndex}},u=t=>{const[i,o]=e.useState({statusBarColor:t,statusBarColorHistory:[t],statusBarColorIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.statusBarColorHistory.slice(0,t.statusBarColorIndex+1),e];return{statusBarColor:e,statusBarColorHistory:i,statusBarColorIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.statusBarColorIndex+e;return i>=0&&i<t.statusBarColorHistory.length?{...t,statusBarColor:t.statusBarColorHistory[i],statusBarColorIndex:i}:t})},[]),n=e.useCallback(()=>{o({statusBarColor:t,statusBarColorHistory:[t],statusBarColorIndex:0})},[t]);return e.useEffect(()=>{o({statusBarColor:t,statusBarColorHistory:[t],statusBarColorIndex:0})},[t]),{statusBarColor:i.statusBarColor,changeStatusBarColor:r,historyStatusBarColor:l,setDefaultStatusBarColor:n,statusBarColorIndex:i.statusBarColorIndex}},g=t=>{const[i,o]=e.useState({bgImage:t,bgImageHistory:[t],bgImageIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.bgImageHistory.slice(0,t.bgImageIndex+1),e];return{bgImage:e,bgImageHistory:i,bgImageIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.bgImageIndex+e;return i>=0&&i<t.bgImageHistory.length?{...t,bgImage:t.bgImageHistory[i],bgImageIndex:i}:t})},[]),n=e.useCallback(()=>{o({bgImage:t,bgImageHistory:[t],bgImageIndex:0})},[t]);return e.useEffect(()=>{o({bgImage:t,bgImageHistory:[t],bgImageIndex:0})},[t]),{bgImage:i.bgImage,changeBgImage:r,historyBgImage:l,setDefaultBgImage:n,bgImageIndex:i.bgImageIndex}},c=t=>{const[i,o]=e.useState({title:t,titleHistory:[t],titleIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.titleHistory.slice(0,t.titleIndex+1),e];return{title:e,titleHistory:i,titleIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.titleIndex+e;return i>=0&&i<t.titleHistory.length?{...t,title:t.titleHistory[i],titleIndex:i}:t})},[]),n=e.useCallback(()=>{o({title:t,titleHistory:[t],titleIndex:0})},[t]);return e.useEffect(()=>{o({title:t,titleHistory:[t],titleIndex:0})},[t]),{title:i.title,titleIndex:i.titleIndex,titleHistory:i.titleHistory,changeTitle:r,setHistoryTitle:l,setDefaultTitle:n}},h=t=>{const[i,o]=e.useState({description:t,descriptionHistory:[t],descriptionIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.descriptionHistory.slice(0,t.descriptionIndex+1),e];return{description:e,descriptionHistory:i,descriptionIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.descriptionIndex+e;return i>=0&&i<t.descriptionHistory.length?{...t,description:t.descriptionHistory[i],descriptionIndex:i}:t})},[]),n=e.useCallback(()=>{o({description:t,descriptionHistory:[t],descriptionIndex:0})},[t]);return e.useEffect(()=>{o({description:t,descriptionHistory:[t],descriptionIndex:0})},[t]),{description:i.description,changeDescription:r,historyDescription:l,setDefaultDescription:n,descriptionIndex:i.descriptionIndex}},x=n.styled.div`
1
+ "use strict";const e=require("react"),t=require("./jsx-runtime-BcGej2Kr.cjs"),i=require("./area-DnAf310m.cjs"),o=require("./theme.global-B9t2Fi10.cjs"),r=require("./context.hooks-BIsapq-0.cjs"),l=require("./style-mc2ST5fY.cjs"),n=require("styled-components"),s=e.createContext(null),a=t=>{const[i,o]=e.useState(t||{visible:!0,defaultVisible:!0}),r=e.useCallback(e=>{o(e)},[]);return e.useEffect(()=>{t&&o(t)},[t]),{previewProps:i,changePreview:r}},d=t=>{const[i,o]=e.useState({bgColor:t,bgColorHistory:[t],bgColorIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.bgColorHistory.slice(0,t.bgColorIndex+1),e];return{bgColor:e,bgColorHistory:i,bgColorIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.bgColorIndex+e;return i>=0&&i<t.bgColorHistory.length?{...t,bgColor:t.bgColorHistory[i],bgColorIndex:i}:t})},[]),n=e.useCallback(()=>{o({bgColor:t,bgColorHistory:[t],bgColorIndex:0})},[t]);return e.useEffect(()=>{o({bgColor:t,bgColorHistory:[t],bgColorIndex:0})},[t]),{bgColor:i.bgColor,changeBgColor:r,historyBgColor:l,setDefaultBgColor:n,bgColorIndex:i.bgColorIndex}},u=t=>{const[i,o]=e.useState({statusBarColor:t,statusBarColorHistory:[t],statusBarColorIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.statusBarColorHistory.slice(0,t.statusBarColorIndex+1),e];return{statusBarColor:e,statusBarColorHistory:i,statusBarColorIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.statusBarColorIndex+e;return i>=0&&i<t.statusBarColorHistory.length?{...t,statusBarColor:t.statusBarColorHistory[i],statusBarColorIndex:i}:t})},[]),n=e.useCallback(()=>{o({statusBarColor:t,statusBarColorHistory:[t],statusBarColorIndex:0})},[t]);return e.useEffect(()=>{o({statusBarColor:t,statusBarColorHistory:[t],statusBarColorIndex:0})},[t]),{statusBarColor:i.statusBarColor,changeStatusBarColor:r,historyStatusBarColor:l,setDefaultStatusBarColor:n,statusBarColorIndex:i.statusBarColorIndex}},g=t=>{const[i,o]=e.useState({bgImage:t,bgImageHistory:[t],bgImageIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.bgImageHistory.slice(0,t.bgImageIndex+1),e];return{bgImage:e,bgImageHistory:i,bgImageIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.bgImageIndex+e;return i>=0&&i<t.bgImageHistory.length?{...t,bgImage:t.bgImageHistory[i],bgImageIndex:i}:t})},[]),n=e.useCallback(()=>{o({bgImage:t,bgImageHistory:[t],bgImageIndex:0})},[t]);return e.useEffect(()=>{o({bgImage:t,bgImageHistory:[t],bgImageIndex:0})},[t]),{bgImage:i.bgImage,changeBgImage:r,historyBgImage:l,setDefaultBgImage:n,bgImageIndex:i.bgImageIndex}},c=t=>{const[i,o]=e.useState({title:t,titleHistory:[t],titleIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.titleHistory.slice(0,t.titleIndex+1),e];return{title:e,titleHistory:i,titleIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.titleIndex+e;return i>=0&&i<t.titleHistory.length?{...t,title:t.titleHistory[i],titleIndex:i}:t})},[]),n=e.useCallback(()=>{o({title:t,titleHistory:[t],titleIndex:0})},[t]);return e.useEffect(()=>{o({title:t,titleHistory:[t],titleIndex:0})},[t]),{title:i.title,titleIndex:i.titleIndex,titleHistory:i.titleHistory,changeTitle:r,setHistoryTitle:l,setDefaultTitle:n}},h=t=>{const[i,o]=e.useState({description:t,descriptionHistory:[t],descriptionIndex:0}),r=e.useCallback(e=>{o(t=>{const i=[...t.descriptionHistory.slice(0,t.descriptionIndex+1),e];return{description:e,descriptionHistory:i,descriptionIndex:i.length-1}})},[]),l=e.useCallback(e=>{o(t=>{const i=t.descriptionIndex+e;return i>=0&&i<t.descriptionHistory.length?{...t,description:t.descriptionHistory[i],descriptionIndex:i}:t})},[]),n=e.useCallback(()=>{o({description:t,descriptionHistory:[t],descriptionIndex:0})},[t]);return e.useEffect(()=>{o({description:t,descriptionHistory:[t],descriptionIndex:0})},[t]),{description:i.description,changeDescription:r,historyDescription:l,setDefaultDescription:n,descriptionIndex:i.descriptionIndex}},x=n.styled.div`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  max-width: 100dvw;
@@ -69,4 +69,4 @@
69
69
  grid-area: rightAside;
70
70
  display: flex;
71
71
  `;exports.AppContext=s,exports.ProviderApp=e=>{var l,n,p,v,B,H,j,D,w,E,S,P,k,T,R,z,O,W,q,N,F,J,G,L;const{bgColor:M,changeBgColor:V,historyBgColor:K,setDefaultBgColor:Q}=d(e.defaultBgColor),{statusBarColor:U,changeStatusBarColor:X,historyStatusBarColor:Y,setDefaultStatusBarColor:Z}=u(e.defaultStatusBarColor),{bgImage:_,changeBgImage:ee,historyBgImage:te,setDefaultBgImage:ie}=g(e.defaultBgImage||null),{title:oe,changeTitle:re,setHistoryTitle:le,setDefaultTitle:ne}=c(e.defaultTitle||null),{description:se,changeDescription:ae,historyDescription:de,setDefaultDescription:ue}=h(e.defaultDescription),{changePreview:ge,previewProps:ce}=a(e.defaultPreview),{screenActual:he}=r.useScreenWidth();return t.jsxRuntimeExports.jsxs(s.Provider,{value:{changePreview:ge,changeStatusBarColor:X,changeBgColor:V,changeBgImage:ee,changeTitle:re,changeDescription:ae,historyStatusBarColor:Y,historyBgColor:K,historyBgImage:te,setHistoryTitle:le,historyDescription:de,setDefaultStatusBarColor:Z,setDefaultBgColor:Q,setDefaultBgImage:ie,setDefaultTitle:ne,setDefaultDescription:ue},children:[t.jsxRuntimeExports.jsx("title",{children:oe}),t.jsxRuntimeExports.jsx("meta",{name:"description",content:se}),t.jsxRuntimeExports.jsx("meta",{name:"theme-color",content:o.JeneseiPalette[U]}),t.jsxRuntimeExports.jsx("meta",{name:"apple-mobile-web-app-status-bar-style",content:"default"}),t.jsxRuntimeExports.jsx("meta",{name:"mobile-web-app-capable",content:"yes"}),t.jsxRuntimeExports.jsx(i.Preview,{...ce,children:t.jsxRuntimeExports.jsx(x,{$bgColor:M,$bgImage:_,children:t.jsxRuntimeExports.jsxs(f,{$isScrollOutlet:e.isScrollOutlet,$footer:e.footer,$notification:e.notification,$header:e.header,$nav:e.nav,$leftAside:e.leftAside,$rightAside:e.rightAside,children:[(null==(l=e.notification)?void 0:l.length)&&(null==(p=null==(n=e.notification)?void 0:n.length)?void 0:p[he])?t.jsxRuntimeExports.jsx(C,{$notification:e.notification,children:(null==(v=e.notification)?void 0:v.component)||null}):null,(null==(B=e.header)?void 0:B.length)&&(null==(j=null==(H=e.header)?void 0:H.length)?void 0:j[he])?t.jsxRuntimeExports.jsx(I,{$header:e.header,children:(null==(D=e.header)?void 0:D.component)||null}):null,(null==(w=e.nav)?void 0:w.length)&&(null==(S=null==(E=e.nav)?void 0:E.length)?void 0:S[he])?t.jsxRuntimeExports.jsx($,{$nav:e.nav,children:(null==(P=e.nav)?void 0:P.component)||null}):null,(null==(k=e.leftAside)?void 0:k.length)&&(null==(R=null==(T=e.leftAside)?void 0:T.length)?void 0:R[he])?t.jsxRuntimeExports.jsx(y,{$leftAside:e.leftAside,children:(null==(z=e.leftAside)?void 0:z.component)||null}):null,t.jsxRuntimeExports.jsx(m,{$isScrollOutlet:e.isScrollOutlet,$main:e.main,children:e.children}),(null==(O=e.rightAside)?void 0:O.length)&&(null==(q=null==(W=e.rightAside)?void 0:W.length)?void 0:q[he])?t.jsxRuntimeExports.jsx(A,{$rightAside:e.rightAside,children:(null==(N=e.rightAside)?void 0:N.component)||null}):null,(null==(F=e.footer)?void 0:F.length)&&(null==(G=null==(J=e.footer)?void 0:J.length)?void 0:G[he])?t.jsxRuntimeExports.jsx(b,{$footer:e.footer,children:(null==(L=e.footer)?void 0:L.component)||null}):null]})})})]})},exports.ProviderAppOutlet=f,exports.ProviderAppOutletChildren=m,exports.ProviderAppOutletFooter=b,exports.ProviderAppOutletHeader=I,exports.ProviderAppOutletLeftAside=y,exports.ProviderAppOutletNav=$,exports.ProviderAppOutletNotification=C,exports.ProviderAppOutletRightAside=A,exports.ProviderAppWrapper=x,exports.useApp=()=>{const t=e.useContext(s);if(!t)throw new Error("useApp must be used within an ProviderApp");return t},exports.useBgColor=d,exports.useBgImage=g,exports.useDescription=h,exports.useStatusBarColor=u;
72
- //# sourceMappingURL=context.hooks-DGmZRxkb.cjs.map
72
+ //# sourceMappingURL=context.hooks-BDEwJHqB.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.hooks-DGmZRxkb.cjs","sources":["../src/contexts/context-app/context.tsx","../src/contexts/context-app/context.styles.ts","../src/contexts/context-app/context.hooks.ts"],"sourcesContent":["import { Preview, PreviewAdditionalProps } from '@local/areas/preview'\nimport { IThemePaletteKeys, JeneseiPalette } from '@local/theme'\n\nimport { createContext, FC, useCallback, useEffect, useState } from 'react'\n\nimport { useScreenWidth } from '../context-screen-width'\nimport {\n AppContextProps,\n ProviderAppOutlet,\n ProviderAppOutletChildren,\n ProviderAppOutletFooter,\n ProviderAppOutletHeader,\n ProviderAppOutletLeftAside,\n ProviderAppOutletNav,\n ProviderAppOutletNotification,\n ProviderAppOutletRightAside,\n ProviderAppProps,\n ProviderAppWrapper\n} from '.'\n\nexport const AppContext = createContext<AppContextProps | null>(null)\n\n/**\n * ProviderApp component is a context context that manages various application-level states\n * such as background color, status bar color, background image, title, and description.\n * It uses several custom hooks to handle these states and provides them via the AppContext.\n *\n * @component\n *\n * @param {ProviderAppProps} props - The properties passed to the ProviderApp component.\n * @param {string} props.defaultBgColor - The default background color.\n * @param {string} props.defaultStatusBarColor - The default status bar color.\n * @param {string} [props.defaultBgImage] - The default background image.\n * @param {string} [props.defaultTitle] - The default title.\n * @param {string} [props.defaultDescription] - The default description.\n * @param {boolean} [props.isScrollOutlet] - Determines if the outlet should be scrollable.\n * @param {object} [props.footer] - The footer component and its properties.\n * @param {object} [props.notification] - The notification component and its properties.\n * @param {object} [props.header] - The header component and its properties.\n * @param {object} [props.nav] - The navigation component and its properties.\n * @param {object} [props.leftAside] - The left aside component and its properties.\n * @param {object} [props.rightAside] - The right aside component and its properties.\n * @param {React.ReactNode} props.children - The children components to be rendered inside the ProviderApp.\n *\n * @returns {JSX.Element} The rendered ProviderApp component.\n */\nexport const ProviderApp: FC<ProviderAppProps> = props => {\n const { bgColor, changeBgColor, historyBgColor, setDefaultBgColor } = useBgColor(props.defaultBgColor)\n const { statusBarColor, changeStatusBarColor, historyStatusBarColor, setDefaultStatusBarColor } = useStatusBarColor(\n props.defaultStatusBarColor\n )\n const { bgImage, changeBgImage, historyBgImage, setDefaultBgImage } = useBgImage(props.defaultBgImage || null)\n const { title, changeTitle, setHistoryTitle, setDefaultTitle } = useTitle(props.defaultTitle || null)\n const { description, changeDescription, historyDescription, setDefaultDescription } = useDescription(\n props.defaultDescription\n )\n const { changePreview, previewProps } = usePreview(props.defaultPreview)\n const { screenActual } = useScreenWidth()\n\n return (\n <AppContext.Provider\n value={{\n changePreview,\n changeStatusBarColor,\n changeBgColor,\n changeBgImage,\n changeTitle,\n changeDescription,\n historyStatusBarColor,\n historyBgColor,\n historyBgImage,\n setHistoryTitle,\n historyDescription,\n setDefaultStatusBarColor,\n setDefaultBgColor,\n setDefaultBgImage,\n setDefaultTitle,\n setDefaultDescription\n }}\n >\n <title>{title}</title>\n <meta name=\"description\" content={description} />\n <meta name=\"theme-color\" content={JeneseiPalette[statusBarColor]} />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\" />\n <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n <Preview {...previewProps}>\n <ProviderAppWrapper $bgColor={bgColor} $bgImage={bgImage}>\n <ProviderAppOutlet\n $isScrollOutlet={props.isScrollOutlet}\n $footer={props.footer}\n $notification={props.notification}\n $header={props.header}\n $nav={props.nav}\n $leftAside={props.leftAside}\n $rightAside={props.rightAside}\n >\n {props.notification?.length && props.notification?.length?.[screenActual] ? (\n <ProviderAppOutletNotification $notification={props.notification}>\n {props.notification?.component || null}\n </ProviderAppOutletNotification>\n ) : null}\n\n {props.header?.length && props.header?.length?.[screenActual] ? (\n <ProviderAppOutletHeader $header={props.header}>\n {props.header?.component || null}\n </ProviderAppOutletHeader>\n ) : null}\n\n {props.nav?.length && props.nav?.length?.[screenActual] ? (\n <ProviderAppOutletNav $nav={props.nav}>{props.nav?.component || null}</ProviderAppOutletNav>\n ) : null}\n\n {props.leftAside?.length && props.leftAside?.length?.[screenActual] ? (\n <ProviderAppOutletLeftAside $leftAside={props.leftAside}>\n {props.leftAside?.component || null}\n </ProviderAppOutletLeftAside>\n ) : null}\n\n <ProviderAppOutletChildren $isScrollOutlet={props.isScrollOutlet} $main={props.main}>{props.children}</ProviderAppOutletChildren>\n\n {props.rightAside?.length && props.rightAside?.length?.[screenActual] ? (\n <ProviderAppOutletRightAside $rightAside={props.rightAside}>\n {props.rightAside?.component || null}\n </ProviderAppOutletRightAside>\n ) : null}\n\n {props.footer?.length && props.footer?.length?.[screenActual] ? (\n <ProviderAppOutletFooter $footer={props.footer}>\n {props.footer?.component || null}\n </ProviderAppOutletFooter>\n ) : null}\n </ProviderAppOutlet>\n </ProviderAppWrapper>\n </Preview>\n </AppContext.Provider>\n )\n}\n\n/**\n * Custom hook to manage preview properties.\n */\nconst usePreview = (defaultPreview: ProviderAppProps['defaultPreview']) => {\n const [previewProps, setPreviewProps] = useState(defaultPreview || { visible: true, defaultVisible: true })\n\n const changePreview = useCallback((newPreviewProps: PreviewAdditionalProps) => {\n setPreviewProps(newPreviewProps)\n }, [])\n\n useEffect(() => {\n if (defaultPreview) setPreviewProps(defaultPreview)\n }, [defaultPreview])\n\n return { previewProps, changePreview }\n}\n\n/**\n * Custom hook to manage background color state with history tracking.\n */\ntype BgColorState = {\n bgColor: IThemePaletteKeys\n bgColorHistory: IThemePaletteKeys[]\n bgColorIndex: number\n}\n\nexport const useBgColor = (defaultColor: IThemePaletteKeys) => {\n const [state, setState] = useState<BgColorState>({\n bgColor: defaultColor,\n bgColorHistory: [defaultColor],\n bgColorIndex: 0\n })\n\n const changeBgColor = useCallback((color: IThemePaletteKeys) => {\n setState(prev => {\n const newHistory = [...prev.bgColorHistory.slice(0, prev.bgColorIndex + 1), color]\n return {\n bgColor: color,\n bgColorHistory: newHistory,\n bgColorIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyBgColor = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.bgColorIndex + steps\n if (newIndex >= 0 && newIndex < prev.bgColorHistory.length) {\n return {\n ...prev,\n bgColor: prev.bgColorHistory[newIndex],\n bgColorIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultBgColor = useCallback(() => {\n setState({\n bgColor: defaultColor,\n bgColorHistory: [defaultColor],\n bgColorIndex: 0\n })\n }, [defaultColor])\n\n useEffect(() => {\n setState({\n bgColor: defaultColor,\n bgColorHistory: [defaultColor],\n bgColorIndex: 0\n })\n }, [defaultColor])\n\n return {\n bgColor: state.bgColor,\n changeBgColor,\n historyBgColor,\n setDefaultBgColor,\n bgColorIndex: state.bgColorIndex\n }\n}\n\n/**\n * Custom hook to manage the status bar color with history tracking.\n */\ntype StatusBarColorState = {\n statusBarColor: IThemePaletteKeys\n statusBarColorHistory: IThemePaletteKeys[]\n statusBarColorIndex: number\n}\n\nexport const useStatusBarColor = (defaultColor: IThemePaletteKeys) => {\n const [state, setState] = useState<StatusBarColorState>({\n statusBarColor: defaultColor,\n statusBarColorHistory: [defaultColor],\n statusBarColorIndex: 0\n })\n\n const changeStatusBarColor = useCallback((color: IThemePaletteKeys) => {\n setState(prev => {\n const newHistory = [...prev.statusBarColorHistory.slice(0, prev.statusBarColorIndex + 1), color]\n return {\n statusBarColor: color,\n statusBarColorHistory: newHistory,\n statusBarColorIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyStatusBarColor = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.statusBarColorIndex + steps\n if (newIndex >= 0 && newIndex < prev.statusBarColorHistory.length) {\n return {\n ...prev,\n statusBarColor: prev.statusBarColorHistory[newIndex],\n statusBarColorIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultStatusBarColor = useCallback(() => {\n setState({\n statusBarColor: defaultColor,\n statusBarColorHistory: [defaultColor],\n statusBarColorIndex: 0\n })\n }, [defaultColor])\n\n useEffect(() => {\n setState({\n statusBarColor: defaultColor,\n statusBarColorHistory: [defaultColor],\n statusBarColorIndex: 0\n })\n }, [defaultColor])\n\n return {\n statusBarColor: state.statusBarColor,\n changeStatusBarColor,\n historyStatusBarColor,\n setDefaultStatusBarColor,\n statusBarColorIndex: state.statusBarColorIndex\n }\n}\n\n/**\n * Custom hook to manage background images with history.\n */\ntype BgImageState = {\n bgImage: string | null\n bgImageHistory: (string | null)[]\n bgImageIndex: number\n}\n\nexport const useBgImage = (defaultImage: string | null) => {\n const [state, setState] = useState<BgImageState>({\n bgImage: defaultImage,\n bgImageHistory: [defaultImage],\n bgImageIndex: 0\n })\n\n const changeBgImage = useCallback((image: string | null) => {\n setState(prev => {\n const newHistory = [...prev.bgImageHistory.slice(0, prev.bgImageIndex + 1), image]\n return {\n bgImage: image,\n bgImageHistory: newHistory,\n bgImageIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyBgImage = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.bgImageIndex + steps\n if (newIndex >= 0 && newIndex < prev.bgImageHistory.length) {\n return {\n ...prev,\n bgImage: prev.bgImageHistory[newIndex],\n bgImageIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultBgImage = useCallback(() => {\n setState({\n bgImage: defaultImage,\n bgImageHistory: [defaultImage],\n bgImageIndex: 0\n })\n }, [defaultImage])\n\n useEffect(() => {\n setState({\n bgImage: defaultImage,\n bgImageHistory: [defaultImage],\n bgImageIndex: 0\n })\n }, [defaultImage])\n\n return {\n bgImage: state.bgImage,\n changeBgImage,\n historyBgImage,\n setDefaultBgImage,\n bgImageIndex: state.bgImageIndex\n }\n}\n\ntype TitleState = {\n title: string | null\n titleHistory: (string | null)[]\n titleIndex: number\n}\n/**\n * Custom hook to manage the document title with history tracking.\n */\nconst useTitle = (defaultTitle: string | null) => {\n const [state, setState] = useState<TitleState>({\n title: defaultTitle,\n titleHistory: [defaultTitle],\n titleIndex: 0\n })\n\n const changeTitle = useCallback((newTitle: string | null) => {\n setState(prev => {\n const newHistory = [...prev.titleHistory.slice(0, prev.titleIndex + 1), newTitle]\n return {\n title: newTitle,\n titleHistory: newHistory,\n titleIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const setHistoryTitle = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.titleIndex + steps\n if (newIndex >= 0 && newIndex < prev.titleHistory.length) {\n return {\n ...prev,\n title: prev.titleHistory[newIndex],\n titleIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultTitle = useCallback(() => {\n setState({\n title: defaultTitle,\n titleHistory: [defaultTitle],\n titleIndex: 0\n })\n }, [defaultTitle])\n\n useEffect(() => {\n setState({\n title: defaultTitle,\n titleHistory: [defaultTitle],\n titleIndex: 0\n })\n }, [defaultTitle])\n\n return {\n title: state.title,\n titleIndex: state.titleIndex,\n titleHistory: state.titleHistory,\n changeTitle,\n setHistoryTitle,\n setDefaultTitle\n }\n}\n\n/**\n * Custom hook to manage a description with history tracking.\n */\ntype DescriptionState = {\n description: string\n descriptionHistory: string[]\n descriptionIndex: number\n}\n\nexport const useDescription = (defaultDescription: string) => {\n const [state, setState] = useState<DescriptionState>({\n description: defaultDescription,\n descriptionHistory: [defaultDescription],\n descriptionIndex: 0\n })\n\n const changeDescription = useCallback((newDescription: string) => {\n setState(prev => {\n const newHistory = [...prev.descriptionHistory.slice(0, prev.descriptionIndex + 1), newDescription]\n return {\n description: newDescription,\n descriptionHistory: newHistory,\n descriptionIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyDescription = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.descriptionIndex + steps\n if (newIndex >= 0 && newIndex < prev.descriptionHistory.length) {\n return {\n ...prev,\n description: prev.descriptionHistory[newIndex],\n descriptionIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultDescription = useCallback(() => {\n setState({\n description: defaultDescription,\n descriptionHistory: [defaultDescription],\n descriptionIndex: 0\n })\n }, [defaultDescription])\n\n useEffect(() => {\n setState({\n description: defaultDescription,\n descriptionHistory: [defaultDescription],\n descriptionIndex: 0\n })\n }, [defaultDescription])\n\n return {\n description: state.description,\n changeDescription,\n historyDescription,\n setDefaultDescription,\n descriptionIndex: state.descriptionIndex\n }\n}\n","import { addGridTransition } from '@local/styles/add';\nimport { JeneseiPalette } from '@local/theme';\n\nimport { css, styled } from 'styled-components';\n\nimport { ScreenWidthProps } from '../context-screen-width';\nimport { ProviderAppOutletChildrenProps, ProviderAppOutletProps, ProviderAppWrapperProps } from '.';\n\nexport const ProviderAppWrapper = styled.div<ProviderAppWrapperProps>`\n display: flex;\n flex-direction: column;\n max-width: 100dvw;\n min-height: 100dvh;\n width: 100%;\n overflow: hidden;\n position: relative;\n\n background-color: ${(props) => JeneseiPalette[props.$bgColor]};\n background-image: url(${(props) => props.$bgImage});\n`;\n\nconst generateGridTemplateAreas = (props: ProviderAppOutletProps) => {\n let templateAreas = `\n \"notification notification notification\"\n \"header header header\"\n \"nav nav nav\"\n \"leftAside children rightAside\"\n \"footer footer footer\"\n `;\n\n templateAreas = `\n \"notification notification notification\"\n \"${props.$leftAside?.isTopHeader ? 'leftAside' : 'header'} header ${props.$rightAside?.isTopHeader ? 'rightAside' : 'header'}\"\n \"${props.$leftAside?.isTopHeader ? 'leftAside' : props.$leftAside?.isTopNav ? 'leftAside' : 'nav'} nav ${props.$rightAside?.isTopHeader ? 'rightAside' : props.$rightAside?.isTopNav ? 'rightAside' : 'nav'}\"\n \"leftAside children rightAside\"\n \"${props.$leftAside?.isTopFooter ? 'leftAside' : 'footer'} footer ${props.$rightAside?.isTopFooter ? 'rightAside' : 'footer'}\"\n `;\n\n return templateAreas;\n};\n\nfunction toStyledAppOutletCSS(props: {\n leftAsideWidth: string;\n rightAsideWidth: string;\n notificationHeight: string;\n headerHeight: string;\n navHeight: string;\n footerHeight: string;\n}) {\n return css`\n grid-template-columns: ${() => `${props.leftAsideWidth} 1fr ${props.rightAsideWidth}`};\n grid-template-rows: ${() =>\n `${props.notificationHeight} ${props.headerHeight} ${props.navHeight} 1fr ${props.footerHeight}`};\n `;\n}\nconst addSXAppOutlet = css<ProviderAppOutletProps>`\n ${(props) => {\n const leftAsideWidth = props.$leftAside?.length?.default;\n const rightAsideWidth = props.$rightAside?.length?.default;\n const notificationHeight = props.$notification?.length?.default;\n const headerHeight = props.$header?.length?.default;\n const navHeight = props.$nav?.length?.default;\n const footerHeight = props.$footer?.length?.default;\n return toStyledAppOutletCSS({\n leftAsideWidth: leftAsideWidth ?? '0px',\n rightAsideWidth: rightAsideWidth ?? '0px',\n notificationHeight: notificationHeight ?? '0px',\n headerHeight: headerHeight ?? '0px',\n navHeight: navHeight ?? '0px',\n footerHeight: footerHeight ?? '0px',\n });\n }}\n ${(props) => {\n const leftAsideWidth = props.$leftAside?.length;\n const rightAsideWidth = props.$rightAside?.length;\n const notificationHeight = props.$notification?.length;\n const headerHeight = props.$header?.length;\n const navHeight = props.$nav?.length;\n const footerHeight = props.$footer?.length;\n\n return Object.entries(props.theme.screens)\n .filter(([key]) => key !== 'default')\n .map(([key]) => {\n const deviceKey = key as keyof ScreenWidthProps<string | null>;\n const screenWidth = props.theme.screens[deviceKey]?.width;\n if (!screenWidth) return null;\n return css`\n @media (max-width: ${screenWidth}px) {\n ${toStyledAppOutletCSS({\n leftAsideWidth: leftAsideWidth && leftAsideWidth[deviceKey] ? leftAsideWidth[deviceKey] : '0px',\n rightAsideWidth: rightAsideWidth && rightAsideWidth[deviceKey] ? rightAsideWidth[deviceKey] : '0px',\n notificationHeight:\n notificationHeight && notificationHeight[deviceKey] ? notificationHeight[deviceKey] : '0px',\n headerHeight: headerHeight && headerHeight[deviceKey] ? headerHeight[deviceKey] : '0px',\n navHeight: navHeight && navHeight[deviceKey] ? navHeight[deviceKey] : '0px',\n footerHeight: footerHeight && footerHeight[deviceKey] ? footerHeight[deviceKey] : '0px',\n })}\n }\n `;\n });\n }}\n`;\nexport const ProviderAppOutlet = styled.div<ProviderAppOutletProps>`\n display: grid;\n width: 100%;\n height: 100%;\n\n overflow-y: auto;\n overflow-x: hidden;\n scrollbar-gutter: stable;\n \n min-height: 100dvh;\n max-height: 100dvh;\n \n ${addGridTransition};\n\n ${(props) => `\n grid-template-areas: ${generateGridTemplateAreas(props)};\n `}\n\n ${addSXAppOutlet};\n`;\n\nexport const ProviderAppOutletChildren = styled.main<ProviderAppOutletChildrenProps>`\n z-index: ${(props) => props?.$main?.zIndex ?? 'auto'};\n display: flex;\n grid-area: children;\n max-width: 100%;\n max-height: 100%;\n overflow: ${(props) => (props.$isScrollOutlet ? 'auto' : 'visible')};\n scrollbar-gutter: stable;\n`;\n\nexport const ProviderAppOutletNotification = styled.section<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$notification?.zIndex ?? 'auto'};\n grid-area: notification;\n display: flex;\n`;\n\nexport const ProviderAppOutletHeader = styled.header<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$header?.zIndex ?? 'auto'};\n grid-area: header;\n display: flex;\n`;\n\nexport const ProviderAppOutletFooter = styled.footer<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$footer?.zIndex ?? 'auto'};\n grid-area: footer;\n display: flex;\n`;\n\nexport const ProviderAppOutletNav = styled.nav<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$nav?.zIndex ?? 'auto'};\n grid-area: nav;\n display: flex;\n`;\n\nexport const ProviderAppOutletLeftAside = styled.aside<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$leftAside?.zIndex ?? 'auto'};\n grid-area: leftAside;\n display: flex;\n`;\n\nexport const ProviderAppOutletRightAside = styled.aside<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$rightAside?.zIndex ?? 'auto'};\n grid-area: rightAside;\n display: flex;\n`;\n","import { useContext } from 'react'\n\nimport { AppContext } from '.'\n\n/**\n * Custom hook to access the AppContext.\n */\nexport const useApp = () => {\n const context = useContext(AppContext)\n if (!context) {\n throw new Error('useApp must be used within an ProviderApp')\n }\n return context\n}\n"],"names":["AppContext","createContext","usePreview","defaultPreview","previewProps","setPreviewProps","useState","visible","defaultVisible","changePreview","useCallback","newPreviewProps","useEffect","useBgColor","defaultColor","state","setState","bgColor","bgColorHistory","bgColorIndex","changeBgColor","color","prev","newHistory","slice","length","historyBgColor","steps","newIndex","setDefaultBgColor","useStatusBarColor","statusBarColor","statusBarColorHistory","statusBarColorIndex","changeStatusBarColor","historyStatusBarColor","setDefaultStatusBarColor","useBgImage","defaultImage","bgImage","bgImageHistory","bgImageIndex","changeBgImage","image","historyBgImage","setDefaultBgImage","useTitle","defaultTitle","title","titleHistory","titleIndex","changeTitle","newTitle","setHistoryTitle","setDefaultTitle","useDescription","defaultDescription","description","descriptionHistory","descriptionIndex","changeDescription","newDescription","historyDescription","setDefaultDescription","ProviderAppWrapper","styled","div","props","JeneseiPalette","$bgColor","$bgImage","toStyledAppOutletCSS","css","leftAsideWidth","rightAsideWidth","notificationHeight","headerHeight","navHeight","footerHeight","addSXAppOutlet","_b","_a","$leftAside","default","_d","_c","$rightAside","_f","_e","$notification","_h","_g","$header","_j","_i","$nav","_l","_k","$footer","Object","entries","theme","screens","filter","key","map","deviceKey","screenWidth","width","ProviderAppOutlet","addGridTransition","templateAreas","isTopHeader","isTopNav","isTopFooter","generateGridTemplateAreas","ProviderAppOutletChildren","main","$main","zIndex","$isScrollOutlet","ProviderAppOutletNotification","section","ProviderAppOutletHeader","header","ProviderAppOutletFooter","footer","ProviderAppOutletNav","nav","ProviderAppOutletLeftAside","aside","ProviderAppOutletRightAside","defaultBgColor","defaultStatusBarColor","defaultBgImage","screenActual","useScreenWidth","jsxs","Provider","value","children","jsx","name","content","Preview","isScrollOutlet","notification","leftAside","rightAside","component","_m","_o","_n","_q","_s","_r","_u","_w","_v","context","useContext","Error"],"mappings":"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"}
1
+ {"version":3,"file":"context.hooks-BDEwJHqB.cjs","sources":["../src/contexts/context-app/context.tsx","../src/contexts/context-app/context.styles.ts","../src/contexts/context-app/context.hooks.ts"],"sourcesContent":["import { Preview, PreviewAdditionalProps } from '@local/areas/preview'\nimport { IThemePaletteKeys, JeneseiPalette } from '@local/theme'\n\nimport { createContext, FC, useCallback, useEffect, useState } from 'react'\n\nimport { useScreenWidth } from '../context-screen-width'\nimport {\n AppContextProps,\n ProviderAppOutlet,\n ProviderAppOutletChildren,\n ProviderAppOutletFooter,\n ProviderAppOutletHeader,\n ProviderAppOutletLeftAside,\n ProviderAppOutletNav,\n ProviderAppOutletNotification,\n ProviderAppOutletRightAside,\n ProviderAppProps,\n ProviderAppWrapper\n} from '.'\n\nexport const AppContext = createContext<AppContextProps | null>(null)\n\n/**\n * ProviderApp component is a context context that manages various application-level states\n * such as background color, status bar color, background image, title, and description.\n * It uses several custom hooks to handle these states and provides them via the AppContext.\n *\n * @component\n *\n * @param {ProviderAppProps} props - The properties passed to the ProviderApp component.\n * @param {string} props.defaultBgColor - The default background color.\n * @param {string} props.defaultStatusBarColor - The default status bar color.\n * @param {string} [props.defaultBgImage] - The default background image.\n * @param {string} [props.defaultTitle] - The default title.\n * @param {string} [props.defaultDescription] - The default description.\n * @param {boolean} [props.isScrollOutlet] - Determines if the outlet should be scrollable.\n * @param {object} [props.footer] - The footer component and its properties.\n * @param {object} [props.notification] - The notification component and its properties.\n * @param {object} [props.header] - The header component and its properties.\n * @param {object} [props.nav] - The navigation component and its properties.\n * @param {object} [props.leftAside] - The left aside component and its properties.\n * @param {object} [props.rightAside] - The right aside component and its properties.\n * @param {React.ReactNode} props.children - The children components to be rendered inside the ProviderApp.\n *\n * @returns {JSX.Element} The rendered ProviderApp component.\n */\nexport const ProviderApp: FC<ProviderAppProps> = props => {\n const { bgColor, changeBgColor, historyBgColor, setDefaultBgColor } = useBgColor(props.defaultBgColor)\n const { statusBarColor, changeStatusBarColor, historyStatusBarColor, setDefaultStatusBarColor } = useStatusBarColor(\n props.defaultStatusBarColor\n )\n const { bgImage, changeBgImage, historyBgImage, setDefaultBgImage } = useBgImage(props.defaultBgImage || null)\n const { title, changeTitle, setHistoryTitle, setDefaultTitle } = useTitle(props.defaultTitle || null)\n const { description, changeDescription, historyDescription, setDefaultDescription } = useDescription(\n props.defaultDescription\n )\n const { changePreview, previewProps } = usePreview(props.defaultPreview)\n const { screenActual } = useScreenWidth()\n\n return (\n <AppContext.Provider\n value={{\n changePreview,\n changeStatusBarColor,\n changeBgColor,\n changeBgImage,\n changeTitle,\n changeDescription,\n historyStatusBarColor,\n historyBgColor,\n historyBgImage,\n setHistoryTitle,\n historyDescription,\n setDefaultStatusBarColor,\n setDefaultBgColor,\n setDefaultBgImage,\n setDefaultTitle,\n setDefaultDescription\n }}\n >\n <title>{title}</title>\n <meta name=\"description\" content={description} />\n <meta name=\"theme-color\" content={JeneseiPalette[statusBarColor]} />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\" />\n <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n <Preview {...previewProps}>\n <ProviderAppWrapper $bgColor={bgColor} $bgImage={bgImage}>\n <ProviderAppOutlet\n $isScrollOutlet={props.isScrollOutlet}\n $footer={props.footer}\n $notification={props.notification}\n $header={props.header}\n $nav={props.nav}\n $leftAside={props.leftAside}\n $rightAside={props.rightAside}\n >\n {props.notification?.length && props.notification?.length?.[screenActual] ? (\n <ProviderAppOutletNotification $notification={props.notification}>\n {props.notification?.component || null}\n </ProviderAppOutletNotification>\n ) : null}\n\n {props.header?.length && props.header?.length?.[screenActual] ? (\n <ProviderAppOutletHeader $header={props.header}>\n {props.header?.component || null}\n </ProviderAppOutletHeader>\n ) : null}\n\n {props.nav?.length && props.nav?.length?.[screenActual] ? (\n <ProviderAppOutletNav $nav={props.nav}>{props.nav?.component || null}</ProviderAppOutletNav>\n ) : null}\n\n {props.leftAside?.length && props.leftAside?.length?.[screenActual] ? (\n <ProviderAppOutletLeftAside $leftAside={props.leftAside}>\n {props.leftAside?.component || null}\n </ProviderAppOutletLeftAside>\n ) : null}\n\n <ProviderAppOutletChildren $isScrollOutlet={props.isScrollOutlet} $main={props.main}>{props.children}</ProviderAppOutletChildren>\n\n {props.rightAside?.length && props.rightAside?.length?.[screenActual] ? (\n <ProviderAppOutletRightAside $rightAside={props.rightAside}>\n {props.rightAside?.component || null}\n </ProviderAppOutletRightAside>\n ) : null}\n\n {props.footer?.length && props.footer?.length?.[screenActual] ? (\n <ProviderAppOutletFooter $footer={props.footer}>\n {props.footer?.component || null}\n </ProviderAppOutletFooter>\n ) : null}\n </ProviderAppOutlet>\n </ProviderAppWrapper>\n </Preview>\n </AppContext.Provider>\n )\n}\n\n/**\n * Custom hook to manage preview properties.\n */\nconst usePreview = (defaultPreview: ProviderAppProps['defaultPreview']) => {\n const [previewProps, setPreviewProps] = useState(defaultPreview || { visible: true, defaultVisible: true })\n\n const changePreview = useCallback((newPreviewProps: PreviewAdditionalProps) => {\n setPreviewProps(newPreviewProps)\n }, [])\n\n useEffect(() => {\n if (defaultPreview) setPreviewProps(defaultPreview)\n }, [defaultPreview])\n\n return { previewProps, changePreview }\n}\n\n/**\n * Custom hook to manage background color state with history tracking.\n */\ntype BgColorState = {\n bgColor: IThemePaletteKeys\n bgColorHistory: IThemePaletteKeys[]\n bgColorIndex: number\n}\n\nexport const useBgColor = (defaultColor: IThemePaletteKeys) => {\n const [state, setState] = useState<BgColorState>({\n bgColor: defaultColor,\n bgColorHistory: [defaultColor],\n bgColorIndex: 0\n })\n\n const changeBgColor = useCallback((color: IThemePaletteKeys) => {\n setState(prev => {\n const newHistory = [...prev.bgColorHistory.slice(0, prev.bgColorIndex + 1), color]\n return {\n bgColor: color,\n bgColorHistory: newHistory,\n bgColorIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyBgColor = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.bgColorIndex + steps\n if (newIndex >= 0 && newIndex < prev.bgColorHistory.length) {\n return {\n ...prev,\n bgColor: prev.bgColorHistory[newIndex],\n bgColorIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultBgColor = useCallback(() => {\n setState({\n bgColor: defaultColor,\n bgColorHistory: [defaultColor],\n bgColorIndex: 0\n })\n }, [defaultColor])\n\n useEffect(() => {\n setState({\n bgColor: defaultColor,\n bgColorHistory: [defaultColor],\n bgColorIndex: 0\n })\n }, [defaultColor])\n\n return {\n bgColor: state.bgColor,\n changeBgColor,\n historyBgColor,\n setDefaultBgColor,\n bgColorIndex: state.bgColorIndex\n }\n}\n\n/**\n * Custom hook to manage the status bar color with history tracking.\n */\ntype StatusBarColorState = {\n statusBarColor: IThemePaletteKeys\n statusBarColorHistory: IThemePaletteKeys[]\n statusBarColorIndex: number\n}\n\nexport const useStatusBarColor = (defaultColor: IThemePaletteKeys) => {\n const [state, setState] = useState<StatusBarColorState>({\n statusBarColor: defaultColor,\n statusBarColorHistory: [defaultColor],\n statusBarColorIndex: 0\n })\n\n const changeStatusBarColor = useCallback((color: IThemePaletteKeys) => {\n setState(prev => {\n const newHistory = [...prev.statusBarColorHistory.slice(0, prev.statusBarColorIndex + 1), color]\n return {\n statusBarColor: color,\n statusBarColorHistory: newHistory,\n statusBarColorIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyStatusBarColor = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.statusBarColorIndex + steps\n if (newIndex >= 0 && newIndex < prev.statusBarColorHistory.length) {\n return {\n ...prev,\n statusBarColor: prev.statusBarColorHistory[newIndex],\n statusBarColorIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultStatusBarColor = useCallback(() => {\n setState({\n statusBarColor: defaultColor,\n statusBarColorHistory: [defaultColor],\n statusBarColorIndex: 0\n })\n }, [defaultColor])\n\n useEffect(() => {\n setState({\n statusBarColor: defaultColor,\n statusBarColorHistory: [defaultColor],\n statusBarColorIndex: 0\n })\n }, [defaultColor])\n\n return {\n statusBarColor: state.statusBarColor,\n changeStatusBarColor,\n historyStatusBarColor,\n setDefaultStatusBarColor,\n statusBarColorIndex: state.statusBarColorIndex\n }\n}\n\n/**\n * Custom hook to manage background images with history.\n */\ntype BgImageState = {\n bgImage: string | null\n bgImageHistory: (string | null)[]\n bgImageIndex: number\n}\n\nexport const useBgImage = (defaultImage: string | null) => {\n const [state, setState] = useState<BgImageState>({\n bgImage: defaultImage,\n bgImageHistory: [defaultImage],\n bgImageIndex: 0\n })\n\n const changeBgImage = useCallback((image: string | null) => {\n setState(prev => {\n const newHistory = [...prev.bgImageHistory.slice(0, prev.bgImageIndex + 1), image]\n return {\n bgImage: image,\n bgImageHistory: newHistory,\n bgImageIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyBgImage = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.bgImageIndex + steps\n if (newIndex >= 0 && newIndex < prev.bgImageHistory.length) {\n return {\n ...prev,\n bgImage: prev.bgImageHistory[newIndex],\n bgImageIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultBgImage = useCallback(() => {\n setState({\n bgImage: defaultImage,\n bgImageHistory: [defaultImage],\n bgImageIndex: 0\n })\n }, [defaultImage])\n\n useEffect(() => {\n setState({\n bgImage: defaultImage,\n bgImageHistory: [defaultImage],\n bgImageIndex: 0\n })\n }, [defaultImage])\n\n return {\n bgImage: state.bgImage,\n changeBgImage,\n historyBgImage,\n setDefaultBgImage,\n bgImageIndex: state.bgImageIndex\n }\n}\n\ntype TitleState = {\n title: string | null\n titleHistory: (string | null)[]\n titleIndex: number\n}\n/**\n * Custom hook to manage the document title with history tracking.\n */\nconst useTitle = (defaultTitle: string | null) => {\n const [state, setState] = useState<TitleState>({\n title: defaultTitle,\n titleHistory: [defaultTitle],\n titleIndex: 0\n })\n\n const changeTitle = useCallback((newTitle: string | null) => {\n setState(prev => {\n const newHistory = [...prev.titleHistory.slice(0, prev.titleIndex + 1), newTitle]\n return {\n title: newTitle,\n titleHistory: newHistory,\n titleIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const setHistoryTitle = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.titleIndex + steps\n if (newIndex >= 0 && newIndex < prev.titleHistory.length) {\n return {\n ...prev,\n title: prev.titleHistory[newIndex],\n titleIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultTitle = useCallback(() => {\n setState({\n title: defaultTitle,\n titleHistory: [defaultTitle],\n titleIndex: 0\n })\n }, [defaultTitle])\n\n useEffect(() => {\n setState({\n title: defaultTitle,\n titleHistory: [defaultTitle],\n titleIndex: 0\n })\n }, [defaultTitle])\n\n return {\n title: state.title,\n titleIndex: state.titleIndex,\n titleHistory: state.titleHistory,\n changeTitle,\n setHistoryTitle,\n setDefaultTitle\n }\n}\n\n/**\n * Custom hook to manage a description with history tracking.\n */\ntype DescriptionState = {\n description: string\n descriptionHistory: string[]\n descriptionIndex: number\n}\n\nexport const useDescription = (defaultDescription: string) => {\n const [state, setState] = useState<DescriptionState>({\n description: defaultDescription,\n descriptionHistory: [defaultDescription],\n descriptionIndex: 0\n })\n\n const changeDescription = useCallback((newDescription: string) => {\n setState(prev => {\n const newHistory = [...prev.descriptionHistory.slice(0, prev.descriptionIndex + 1), newDescription]\n return {\n description: newDescription,\n descriptionHistory: newHistory,\n descriptionIndex: newHistory.length - 1\n }\n })\n }, [])\n\n const historyDescription = useCallback((steps: number) => {\n setState(prev => {\n const newIndex = prev.descriptionIndex + steps\n if (newIndex >= 0 && newIndex < prev.descriptionHistory.length) {\n return {\n ...prev,\n description: prev.descriptionHistory[newIndex],\n descriptionIndex: newIndex\n }\n }\n return prev\n })\n }, [])\n\n const setDefaultDescription = useCallback(() => {\n setState({\n description: defaultDescription,\n descriptionHistory: [defaultDescription],\n descriptionIndex: 0\n })\n }, [defaultDescription])\n\n useEffect(() => {\n setState({\n description: defaultDescription,\n descriptionHistory: [defaultDescription],\n descriptionIndex: 0\n })\n }, [defaultDescription])\n\n return {\n description: state.description,\n changeDescription,\n historyDescription,\n setDefaultDescription,\n descriptionIndex: state.descriptionIndex\n }\n}\n","import { addGridTransition } from '@local/styles/add';\nimport { JeneseiPalette } from '@local/theme';\n\nimport { css, styled } from 'styled-components';\n\nimport { ScreenWidthProps } from '../context-screen-width';\nimport { ProviderAppOutletChildrenProps, ProviderAppOutletProps, ProviderAppWrapperProps } from '.';\n\nexport const ProviderAppWrapper = styled.div<ProviderAppWrapperProps>`\n display: flex;\n flex-direction: column;\n max-width: 100dvw;\n min-height: 100dvh;\n width: 100%;\n overflow: hidden;\n position: relative;\n\n background-color: ${(props) => JeneseiPalette[props.$bgColor]};\n background-image: url(${(props) => props.$bgImage});\n`;\n\nconst generateGridTemplateAreas = (props: ProviderAppOutletProps) => {\n let templateAreas = `\n \"notification notification notification\"\n \"header header header\"\n \"nav nav nav\"\n \"leftAside children rightAside\"\n \"footer footer footer\"\n `;\n\n templateAreas = `\n \"notification notification notification\"\n \"${props.$leftAside?.isTopHeader ? 'leftAside' : 'header'} header ${props.$rightAside?.isTopHeader ? 'rightAside' : 'header'}\"\n \"${props.$leftAside?.isTopHeader ? 'leftAside' : props.$leftAside?.isTopNav ? 'leftAside' : 'nav'} nav ${props.$rightAside?.isTopHeader ? 'rightAside' : props.$rightAside?.isTopNav ? 'rightAside' : 'nav'}\"\n \"leftAside children rightAside\"\n \"${props.$leftAside?.isTopFooter ? 'leftAside' : 'footer'} footer ${props.$rightAside?.isTopFooter ? 'rightAside' : 'footer'}\"\n `;\n\n return templateAreas;\n};\n\nfunction toStyledAppOutletCSS(props: {\n leftAsideWidth: string;\n rightAsideWidth: string;\n notificationHeight: string;\n headerHeight: string;\n navHeight: string;\n footerHeight: string;\n}) {\n return css`\n grid-template-columns: ${() => `${props.leftAsideWidth} 1fr ${props.rightAsideWidth}`};\n grid-template-rows: ${() =>\n `${props.notificationHeight} ${props.headerHeight} ${props.navHeight} 1fr ${props.footerHeight}`};\n `;\n}\nconst addSXAppOutlet = css<ProviderAppOutletProps>`\n ${(props) => {\n const leftAsideWidth = props.$leftAside?.length?.default;\n const rightAsideWidth = props.$rightAside?.length?.default;\n const notificationHeight = props.$notification?.length?.default;\n const headerHeight = props.$header?.length?.default;\n const navHeight = props.$nav?.length?.default;\n const footerHeight = props.$footer?.length?.default;\n return toStyledAppOutletCSS({\n leftAsideWidth: leftAsideWidth ?? '0px',\n rightAsideWidth: rightAsideWidth ?? '0px',\n notificationHeight: notificationHeight ?? '0px',\n headerHeight: headerHeight ?? '0px',\n navHeight: navHeight ?? '0px',\n footerHeight: footerHeight ?? '0px',\n });\n }}\n ${(props) => {\n const leftAsideWidth = props.$leftAside?.length;\n const rightAsideWidth = props.$rightAside?.length;\n const notificationHeight = props.$notification?.length;\n const headerHeight = props.$header?.length;\n const navHeight = props.$nav?.length;\n const footerHeight = props.$footer?.length;\n\n return Object.entries(props.theme.screens)\n .filter(([key]) => key !== 'default')\n .map(([key]) => {\n const deviceKey = key as keyof ScreenWidthProps<string | null>;\n const screenWidth = props.theme.screens[deviceKey]?.width;\n if (!screenWidth) return null;\n return css`\n @media (max-width: ${screenWidth}px) {\n ${toStyledAppOutletCSS({\n leftAsideWidth: leftAsideWidth && leftAsideWidth[deviceKey] ? leftAsideWidth[deviceKey] : '0px',\n rightAsideWidth: rightAsideWidth && rightAsideWidth[deviceKey] ? rightAsideWidth[deviceKey] : '0px',\n notificationHeight:\n notificationHeight && notificationHeight[deviceKey] ? notificationHeight[deviceKey] : '0px',\n headerHeight: headerHeight && headerHeight[deviceKey] ? headerHeight[deviceKey] : '0px',\n navHeight: navHeight && navHeight[deviceKey] ? navHeight[deviceKey] : '0px',\n footerHeight: footerHeight && footerHeight[deviceKey] ? footerHeight[deviceKey] : '0px',\n })}\n }\n `;\n });\n }}\n`;\nexport const ProviderAppOutlet = styled.div<ProviderAppOutletProps>`\n display: grid;\n width: 100%;\n height: 100%;\n\n overflow-y: auto;\n overflow-x: hidden;\n scrollbar-gutter: stable;\n \n min-height: 100dvh;\n max-height: 100dvh;\n \n ${addGridTransition};\n\n ${(props) => `\n grid-template-areas: ${generateGridTemplateAreas(props)};\n `}\n\n ${addSXAppOutlet};\n`;\n\nexport const ProviderAppOutletChildren = styled.main<ProviderAppOutletChildrenProps>`\n z-index: ${(props) => props?.$main?.zIndex ?? 'auto'};\n display: flex;\n grid-area: children;\n max-width: 100%;\n max-height: 100%;\n overflow: ${(props) => (props.$isScrollOutlet ? 'auto' : 'visible')};\n scrollbar-gutter: stable;\n`;\n\nexport const ProviderAppOutletNotification = styled.section<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$notification?.zIndex ?? 'auto'};\n grid-area: notification;\n display: flex;\n`;\n\nexport const ProviderAppOutletHeader = styled.header<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$header?.zIndex ?? 'auto'};\n grid-area: header;\n display: flex;\n`;\n\nexport const ProviderAppOutletFooter = styled.footer<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$footer?.zIndex ?? 'auto'};\n grid-area: footer;\n display: flex;\n`;\n\nexport const ProviderAppOutletNav = styled.nav<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$nav?.zIndex ?? 'auto'};\n grid-area: nav;\n display: flex;\n`;\n\nexport const ProviderAppOutletLeftAside = styled.aside<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$leftAside?.zIndex ?? 'auto'};\n grid-area: leftAside;\n display: flex;\n`;\n\nexport const ProviderAppOutletRightAside = styled.aside<ProviderAppOutletProps>`\n z-index: ${(props) => props?.$rightAside?.zIndex ?? 'auto'};\n grid-area: rightAside;\n display: flex;\n`;\n","import { useContext } from 'react'\n\nimport { AppContext } from '.'\n\n/**\n * Custom hook to access the AppContext.\n */\nexport const useApp = () => {\n const context = useContext(AppContext)\n if (!context) {\n throw new Error('useApp must be used within an ProviderApp')\n }\n return context\n}\n"],"names":["AppContext","createContext","usePreview","defaultPreview","previewProps","setPreviewProps","useState","visible","defaultVisible","changePreview","useCallback","newPreviewProps","useEffect","useBgColor","defaultColor","state","setState","bgColor","bgColorHistory","bgColorIndex","changeBgColor","color","prev","newHistory","slice","length","historyBgColor","steps","newIndex","setDefaultBgColor","useStatusBarColor","statusBarColor","statusBarColorHistory","statusBarColorIndex","changeStatusBarColor","historyStatusBarColor","setDefaultStatusBarColor","useBgImage","defaultImage","bgImage","bgImageHistory","bgImageIndex","changeBgImage","image","historyBgImage","setDefaultBgImage","useTitle","defaultTitle","title","titleHistory","titleIndex","changeTitle","newTitle","setHistoryTitle","setDefaultTitle","useDescription","defaultDescription","description","descriptionHistory","descriptionIndex","changeDescription","newDescription","historyDescription","setDefaultDescription","ProviderAppWrapper","styled","div","props","JeneseiPalette","$bgColor","$bgImage","toStyledAppOutletCSS","css","leftAsideWidth","rightAsideWidth","notificationHeight","headerHeight","navHeight","footerHeight","addSXAppOutlet","_b","_a","$leftAside","default","_d","_c","$rightAside","_f","_e","$notification","_h","_g","$header","_j","_i","$nav","_l","_k","$footer","Object","entries","theme","screens","filter","key","map","deviceKey","screenWidth","width","ProviderAppOutlet","addGridTransition","templateAreas","isTopHeader","isTopNav","isTopFooter","generateGridTemplateAreas","ProviderAppOutletChildren","main","$main","zIndex","$isScrollOutlet","ProviderAppOutletNotification","section","ProviderAppOutletHeader","header","ProviderAppOutletFooter","footer","ProviderAppOutletNav","nav","ProviderAppOutletLeftAside","aside","ProviderAppOutletRightAside","defaultBgColor","defaultStatusBarColor","defaultBgImage","screenActual","useScreenWidth","jsxs","Provider","value","children","jsx","name","content","Preview","isScrollOutlet","notification","leftAside","rightAside","component","_m","_o","_n","_q","_s","_r","_u","_w","_v","context","useContext","Error"],"mappings":"mQAoBaA,EAAaC,EAAAA,cAAsC,MAyH1DC,EAAcC,IAClB,MAAOC,EAAcC,GAAmBC,WAASH,GAAkB,CAAEI,SAAS,EAAMC,gBAAgB,IAE9FC,EAAgBC,cAAaC,IACjCN,EAAgBM,IACf,IAMH,OAJAC,EAAAA,UAAU,KACJT,KAAgCA,IACnC,CAACA,IAEG,CAAEC,eAAcK,kBAYZI,EAAcC,IACzB,MAAOC,EAAOC,GAAYV,WAAuB,CAC/CW,QAASH,EACTI,eAAgB,CAACJ,GACjBK,aAAc,IAGVC,EAAgBV,cAAaW,IACjCL,EAASM,IACP,MAAMC,EAAa,IAAID,EAAKJ,eAAeM,MAAM,EAAGF,EAAKH,aAAe,GAAIE,GAC5E,MAAO,CACLJ,QAASI,EACTH,eAAgBK,EAChBJ,aAAcI,EAAWE,OAAS,MAGrC,IAEGC,EAAiBhB,cAAaiB,IAClCX,EAASM,IACP,MAAMM,EAAWN,EAAKH,aAAeQ,EACrC,OAAIC,GAAY,GAAKA,EAAWN,EAAKJ,eAAeO,OAC3C,IACFH,EACHL,QAASK,EAAKJ,eAAeU,GAC7BT,aAAcS,GAGXN,KAER,IAEGO,EAAoBnB,EAAAA,YAAY,KACpCM,EAAS,CACPC,QAASH,EACTI,eAAgB,CAACJ,GACjBK,aAAc,KAEf,CAACL,IAUJ,OARAF,EAAAA,UAAU,KACRI,EAAS,CACPC,QAASH,EACTI,eAAgB,CAACJ,GACjBK,aAAc,KAEf,CAACL,IAEG,CACLG,QAASF,EAAME,QACfG,gBACAM,iBACAG,oBACAV,aAAcJ,EAAMI,eAaXW,EAAqBhB,IAChC,MAAOC,EAAOC,GAAYV,WAA8B,CACtDyB,eAAgBjB,EAChBkB,sBAAuB,CAAClB,GACxBmB,oBAAqB,IAGjBC,EAAuBxB,cAAaW,IACxCL,EAASM,IACP,MAAMC,EAAa,IAAID,EAAKU,sBAAsBR,MAAM,EAAGF,EAAKW,oBAAsB,GAAIZ,GAC1F,MAAO,CACLU,eAAgBV,EAChBW,sBAAuBT,EACvBU,oBAAqBV,EAAWE,OAAS,MAG5C,IAEGU,EAAwBzB,cAAaiB,IACzCX,EAASM,IACP,MAAMM,EAAWN,EAAKW,oBAAsBN,EAC5C,OAAIC,GAAY,GAAKA,EAAWN,EAAKU,sBAAsBP,OAClD,IACFH,EACHS,eAAgBT,EAAKU,sBAAsBJ,GAC3CK,oBAAqBL,GAGlBN,KAER,IAEGc,EAA2B1B,EAAAA,YAAY,KAC3CM,EAAS,CACPe,eAAgBjB,EAChBkB,sBAAuB,CAAClB,GACxBmB,oBAAqB,KAEtB,CAACnB,IAUJ,OARAF,EAAAA,UAAU,KACRI,EAAS,CACPe,eAAgBjB,EAChBkB,sBAAuB,CAAClB,GACxBmB,oBAAqB,KAEtB,CAACnB,IAEG,CACLiB,eAAgBhB,EAAMgB,eACtBG,uBACAC,wBACAC,2BACAH,oBAAqBlB,EAAMkB,sBAalBI,EAAcC,IACzB,MAAOvB,EAAOC,GAAYV,WAAuB,CAC/CiC,QAASD,EACTE,eAAgB,CAACF,GACjBG,aAAc,IAGVC,EAAgBhC,cAAaiC,IACjC3B,EAASM,IACP,MAAMC,EAAa,IAAID,EAAKkB,eAAehB,MAAM,EAAGF,EAAKmB,aAAe,GAAIE,GAC5E,MAAO,CACLJ,QAASI,EACTH,eAAgBjB,EAChBkB,aAAclB,EAAWE,OAAS,MAGrC,IAEGmB,EAAiBlC,cAAaiB,IAClCX,EAASM,IACP,MAAMM,EAAWN,EAAKmB,aAAed,EACrC,OAAIC,GAAY,GAAKA,EAAWN,EAAKkB,eAAef,OAC3C,IACFH,EACHiB,QAASjB,EAAKkB,eAAeZ,GAC7Ba,aAAcb,GAGXN,KAER,IAEGuB,EAAoBnC,EAAAA,YAAY,KACpCM,EAAS,CACPuB,QAASD,EACTE,eAAgB,CAACF,GACjBG,aAAc,KAEf,CAACH,IAUJ,OARA1B,EAAAA,UAAU,KACRI,EAAS,CACPuB,QAASD,EACTE,eAAgB,CAACF,GACjBG,aAAc,KAEf,CAACH,IAEG,CACLC,QAASxB,EAAMwB,QACfG,gBACAE,iBACAC,oBACAJ,aAAc1B,EAAM0B,eAYlBK,EAAYC,IAChB,MAAOhC,EAAOC,GAAYV,WAAqB,CAC7C0C,MAAOD,EACPE,aAAc,CAACF,GACfG,WAAY,IAGRC,EAAczC,cAAa0C,IAC/BpC,EAASM,IACP,MAAMC,EAAa,IAAID,EAAK2B,aAAazB,MAAM,EAAGF,EAAK4B,WAAa,GAAIE,GACxE,MAAO,CACLJ,MAAOI,EACPH,aAAc1B,EACd2B,WAAY3B,EAAWE,OAAS,MAGnC,IAEG4B,EAAkB3C,cAAaiB,IACnCX,EAASM,IACP,MAAMM,EAAWN,EAAK4B,WAAavB,EACnC,OAAIC,GAAY,GAAKA,EAAWN,EAAK2B,aAAaxB,OACzC,IACFH,EACH0B,MAAO1B,EAAK2B,aAAarB,GACzBsB,WAAYtB,GAGTN,KAER,IAEGgC,EAAkB5C,EAAAA,YAAY,KAClCM,EAAS,CACPgC,MAAOD,EACPE,aAAc,CAACF,GACfG,WAAY,KAEb,CAACH,IAUJ,OARAnC,EAAAA,UAAU,KACRI,EAAS,CACPgC,MAAOD,EACPE,aAAc,CAACF,GACfG,WAAY,KAEb,CAACH,IAEG,CACLC,MAAOjC,EAAMiC,MACbE,WAAYnC,EAAMmC,WAClBD,aAAclC,EAAMkC,aACpBE,cACAE,kBACAC,oBAaSC,EAAkBC,IAC7B,MAAOzC,EAAOC,GAAYV,WAA2B,CACnDmD,YAAaD,EACbE,mBAAoB,CAACF,GACrBG,iBAAkB,IAGdC,EAAoBlD,cAAamD,IACrC7C,EAASM,IACP,MAAMC,EAAa,IAAID,EAAKoC,mBAAmBlC,MAAM,EAAGF,EAAKqC,iBAAmB,GAAIE,GACpF,MAAO,CACLJ,YAAaI,EACbH,mBAAoBnC,EACpBoC,iBAAkBpC,EAAWE,OAAS,MAGzC,IAEGqC,EAAqBpD,cAAaiB,IACtCX,EAASM,IACP,MAAMM,EAAWN,EAAKqC,iBAAmBhC,EACzC,OAAIC,GAAY,GAAKA,EAAWN,EAAKoC,mBAAmBjC,OAC/C,IACFH,EACHmC,YAAanC,EAAKoC,mBAAmB9B,GACrC+B,iBAAkB/B,GAGfN,KAER,IAEGyC,EAAwBrD,EAAAA,YAAY,KACxCM,EAAS,CACPyC,YAAaD,EACbE,mBAAoB,CAACF,GACrBG,iBAAkB,KAEnB,CAACH,IAUJ,OARA5C,EAAAA,UAAU,KACRI,EAAS,CACPyC,YAAaD,EACbE,mBAAoB,CAACF,GACrBG,iBAAkB,KAEnB,CAACH,IAEG,CACLC,YAAa1C,EAAM0C,YACnBG,oBACAE,qBACAC,wBACAJ,iBAAkB5C,EAAM4C,mBCzdfK,EAAqBC,EAAAA,OAAOC,GAAA;;;;;;;;;sBASlBC,GAAUC,EAAAA,eAAeD,EAAME;0BAC3BF,GAAUA,EAAMG;EAuB3C,SAASC,EAAqBJ,GAQ5B,OAAOK,EAAAA,GAAAA;6BACoB,IAAM,GAAGL,EAAMM,sBAAsBN,EAAMO;0BAC9C,IACpB,GAAGP,EAAMQ,sBAAsBR,EAAMS,gBAAgBT,EAAMU,iBAAiBV,EAAMW;GAExF,CACA,MAAMC,EAAiBP,EAAAA,GAAAA;IAClBL,gCAOD,OAAOI,EAAqB,CAC1BE,gBAPqB,OAAAO,EAAA,OAAAC,EAAAd,EAAMe,iBAAN,EAAAD,EAAkBxD,aAAlB,EAAAuD,EAA0BG,UAOb,MAClCT,iBAPsB,OAAAU,EAAA,OAAAC,EAAAlB,EAAMmB,kBAAN,EAAAD,EAAmB5D,aAAnB,EAAA2D,EAA2BD,UAOb,MACpCR,oBAPyB,OAAAY,EAAA,OAAAC,EAAArB,EAAMsB,oBAAN,EAAAD,EAAqB/D,aAArB,EAAA8D,EAA6BJ,UAOZ,MAC1CP,cAPmB,OAAAc,EAAA,OAAAC,EAAAxB,EAAMyB,cAAN,EAAAD,EAAelE,aAAf,EAAAiE,EAAuBP,UAOZ,MAC9BN,WAPgB,OAAAgB,EAAA,OAAAC,EAAA3B,EAAM4B,WAAN,EAAAD,EAAYrE,aAAZ,EAAAoE,EAAoBV,UAOZ,MACxBL,cAPmB,OAAAkB,EAAA,OAAAC,EAAA9B,EAAM+B,cAAN,EAAAD,EAAexE,aAAf,EAAAuE,EAAuBb,UAOZ;IAG/BhB,oBACD,MAAMM,EAAiB,OAAAQ,EAAAd,EAAMe,iBAAN,EAAAD,EAAkBxD,OACnCiD,EAAkB,OAAAM,EAAAb,EAAMmB,kBAAN,EAAAN,EAAmBvD,OACrCkD,EAAqB,OAAAU,EAAAlB,EAAMsB,oBAAN,EAAAJ,EAAqB5D,OAC1CmD,EAAe,OAAAQ,EAAAjB,EAAMyB,cAAN,EAAAR,EAAe3D,OAC9BoD,EAAY,OAAAW,EAAArB,EAAM4B,WAAN,EAAAP,EAAY/D,OACxBqD,EAAe,OAAAS,EAAApB,EAAM+B,cAAN,EAAAX,EAAe9D,OAEpC,OAAO0E,OAAOC,QAAQjC,EAAMkC,MAAMC,SAC/BC,OAAO,EAAEC,KAAiB,YAARA,GAClBC,IAAI,EAAED,YACL,MAAME,EAAYF,EACZG,EAAc,OAAA1B,EAAAd,EAAMkC,MAAMC,QAAQI,WAApBzB,EAAgC2B,MACpD,OAAKD,EACEnC,EAAAA,GAAAA;+BACgBmC;cACjBpC,EAAqB,CACrBE,eAAgBA,GAAkBA,EAAeiC,GAAajC,EAAeiC,GAAa,MAC1FhC,gBAAiBA,GAAmBA,EAAgBgC,GAAahC,EAAgBgC,GAAa,MAC9F/B,mBACEA,GAAsBA,EAAmB+B,GAAa/B,EAAmB+B,GAAa,MACxF9B,aAAcA,GAAgBA,EAAa8B,GAAa9B,EAAa8B,GAAa,MAClF7B,UAAWA,GAAaA,EAAU6B,GAAa7B,EAAU6B,GAAa,MACtE5B,aAAcA,GAAgBA,EAAa4B,GAAa5B,EAAa4B,GAAa;;UAV/D;EAiBpBG,EAAoB5C,EAAAA,OAAOC,GAAA;;;;;;;;;;;;IAYpC4C;;IAEC3C,GAAU,8BA/FmB,CAACA,wBACjC,IAAI4C,EAAgB,qKAgBpB,OARAA,EAAgB,6DAET,OAAA9B,EAAAd,EAAMe,iBAAN,EAAAD,EAAkB+B,aAAc,YAAc,oBAAmB,OAAAhC,EAAAb,EAAMmB,kBAAN,EAAAN,EAAmBgC,aAAc,aAAe,sBACjH,OAAA3B,EAAAlB,EAAMe,iBAAN,EAAAG,EAAkB2B,eAA4B,OAAA5B,EAAAjB,EAAMe,iBAAN,EAAAE,EAAkB6B,UAAhC,YAAyD,cAAa,OAAAzB,EAAArB,EAAMmB,sBAAa0B,eAA6B,OAAAzB,IAAMD,kBAAN,EAAAC,EAAmB0B,UAAlC,aAA4D,0DAEnM,OAAAtB,EAAAxB,EAAMe,iBAAN,EAAAS,EAAkBuB,aAAc,YAAc,oBAAmB,OAAAxB,EAAAvB,EAAMmB,kBAAN,EAAAI,EAAmBwB,aAAc,aAAe,kBAGjHH,GA+EkBI,CAA0BhD;;IAGjDY;EAGSqC,EAA4BnD,EAAAA,OAAOoD,IAAA;aAClClD,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAOmD,gBAAOC,SAAU;;;;;cAKjCpD,GAAWA,EAAMqD,gBAAkB,OAAS;;EAI9CC,EAAgCxD,EAAAA,OAAOyD,OAAA;aACtCvD,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAOsB,wBAAe8B,SAAU;;;EAK3CI,EAA0B1D,EAAAA,OAAO2D,MAAA;aAChCzD,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAOyB,kBAAS2B,SAAU;;;EAKrCM,EAA0B5D,EAAAA,OAAO6D,MAAA;aAChC3D,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAO+B,kBAASqB,SAAU;;;EAKrCQ,EAAuB9D,EAAAA,OAAO+D,GAAA;aAC7B7D,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAO4B,eAAMwB,SAAU;;;EAKlCU,EAA6BhE,EAAAA,OAAOiE,KAAA;aACnC/D,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAOe,qBAAYqC,SAAU;;;EAKxCY,EAA8BlE,EAAAA,OAAOiE,KAAA;aACpC/D,UAAU,OAAA,OAAAc,EAAA,MAAAd,OAAA,EAAAA,EAAOmB,sBAAaiC,SAAU;;;2CDtHLpD,wDAC/C,MAAMlD,QAAEA,gBAASG,EAAAM,eAAeA,EAAAG,kBAAgBA,GAAsBhB,EAAWsD,EAAMiE,iBACjFrG,eAAEA,EAAAG,qBAAgBA,EAAAC,sBAAsBA,EAAAC,yBAAuBA,GAA6BN,EAChGqC,EAAMkE,wBAEF9F,QAAEA,gBAASG,GAAAE,eAAeA,GAAAC,kBAAgBA,IAAsBR,EAAW8B,EAAMmE,gBAAkB,OACnGtF,MAAEA,eAAOG,GAAAE,gBAAaA,GAAAC,gBAAiBA,IAAoBR,EAASqB,EAAMpB,cAAgB,OAC1FU,YAAEA,GAAAG,kBAAaA,GAAAE,mBAAmBA,GAAAC,sBAAoBA,IAA0BR,EACpFY,EAAMX,qBAEF/C,cAAEA,GAAAL,aAAeA,IAAiBF,EAAWiE,EAAMhE,iBACnDoI,aAAEA,IAAiBC,mBAEzB,SACEC,kBAAAA,KAACzI,EAAW0I,SAAX,CACCC,MAAO,CACLlI,iBACAyB,uBACAd,gBACAsB,iBACAS,eACAS,qBACAzB,wBACAT,iBACAkB,kBACAS,mBACAS,sBACA1B,2BACAP,oBACAgB,qBACAS,mBACAS,0BAGF6E,SAAA,GAAAC,kBAAAA,IAAC,SAAOD,SAAA5F,KACR6F,EAAAA,kBAAAA,IAAC,OAAA,CAAKC,KAAK,cAAcC,QAAStF,6BACjC,OAAA,CAAKqF,KAAK,cAAcC,QAAS3E,EAAAA,eAAerC,KACjD8G,EAAAA,kBAAAA,IAAC,OAAA,CAAKC,KAAK,wCAAwCC,QAAQ,YAC3DF,EAAAA,kBAAAA,IAAC,OAAA,CAAKC,KAAK,yBAAyBC,QAAQ,QAC5CF,EAAAA,kBAAAA,IAACG,EAAAA,YAAY5I,GACXwI,iCAAC5E,EAAA,CAAmBK,SAAUpD,EAASqD,SAAU/B,EAC/CqG,WAAAH,kBAAAA,KAAC5B,EAAA,CACCW,gBAAiBrD,EAAM8E,eACvB/C,QAAS/B,EAAM2D,OACfrC,cAAetB,EAAM+E,aACrBtD,QAASzB,EAAMyD,OACf7B,KAAM5B,EAAM6D,IACZ9C,WAAYf,EAAMgF,UAClB7D,YAAanB,EAAMiF,WAElBR,SAAA,EAAA,OAAA3D,EAAAd,EAAM+E,mBAAN,EAAAjE,EAAoBxD,UAAU,OAAA4D,EAAA,OAAAL,EAAAb,EAAM+E,mBAAN,EAAAlE,EAAoBvD,aAApB,EAAA4D,EAA6BkD,KAC1DM,EAAAA,kBAAAA,IAACpB,EAAA,CAA8BhC,cAAetB,EAAM+E,aACjDN,UAAA,OAAAxD,EAAAjB,EAAM+E,mBAAN,EAAA9D,EAAoBiE,YAAa,OAElC,MAEH,OAAA7D,EAAArB,EAAMyD,aAAN,EAAApC,EAAc/D,UAAU,OAAAkE,EAAA,OAAAJ,EAAApB,EAAMyD,aAAN,EAAArC,EAAc9D,aAAd,EAAAkE,EAAuB4C,KAC9CM,EAAAA,kBAAAA,IAAClB,EAAA,CAAwB/B,QAASzB,EAAMyD,OACrCgB,qBAAMhB,iBAAQyB,YAAa,OAE5B,MAEH,OAAAvD,EAAA3B,EAAM6D,UAAN,EAAAlC,EAAWrE,UAAU,OAAAwE,EAAA,OAAAJ,EAAA1B,EAAM6D,UAAN,EAAAnC,EAAWpE,aAAX,EAAAwE,EAAoBsC,KACxCM,EAAAA,kBAAAA,IAACd,EAAA,CAAqBhC,KAAM5B,EAAM6D,IAAMY,qBAAMZ,cAAKqB,YAAa,OAC9D,MAEH,OAAAC,EAAAnF,EAAMgF,gBAAN,EAAAG,EAAiB7H,UAAU,OAAA8H,EAAA,OAAAC,EAAArF,EAAMgF,gBAAN,EAAAK,EAAiB/H,aAAjB,EAAA8H,EAA0BhB,KACpDM,EAAAA,kBAAAA,IAACZ,EAAA,CAA2B/C,WAAYf,EAAMgF,UAC3CP,qBAAMO,oBAAWE,YAAa,OAE/B,KAEJR,EAAAA,kBAAAA,IAACzB,GAA0BI,gBAAiBrD,EAAM8E,eAAgB3B,MAAOnD,EAAMkD,KAAOuB,SAAAzE,EAAMyE,YAE3F,OAAAa,EAAAtF,EAAMiF,iBAAN,EAAAK,EAAkBhI,UAAU,OAAAiI,EAAA,OAAAC,EAAAxF,EAAMiF,iBAAN,EAAAO,EAAkBlI,aAAlB,EAAAiI,EAA2BnB,KACtDM,EAAAA,kBAAAA,IAACV,EAAA,CAA4B7C,YAAanB,EAAMiF,WAC7CR,qBAAMQ,qBAAYC,YAAa,OAEhC,MAEH,OAAAO,EAAAzF,EAAM2D,aAAN,EAAA8B,EAAcnI,UAAU,OAAAoI,EAAA,OAAAC,EAAA3F,EAAM2D,aAAN,EAAAgC,EAAcrI,aAAd,EAAAoI,EAAuBtB,KAC9CM,wBAAChB,EAAA,CAAwB3B,QAAS/B,EAAM2D,OACrCc,qBAAMd,iBAAQuB,YAAa,OAE5B,kVE3HM,KACpB,MAAMU,EAAUC,EAAAA,WAAWhK,GAC3B,IAAK+J,EACH,MAAM,IAAIE,MAAM,6CAElB,OAAOF"}
@@ -1,7 +1,7 @@
1
1
  import { createContext, useState, useCallback, useEffect, useContext } from "react";
2
2
  import { j as jsxRuntimeExports } from "./jsx-runtime-BrDlu8eK.js";
3
- import { P as Preview } from "./area-CH6c_n7-.js";
4
- import { J as JeneseiPalette } from "./theme.global-DuEXPcSK.js";
3
+ import { P as Preview } from "./area-Dnq78ow6.js";
4
+ import { J as JeneseiPalette } from "./theme.global-CFUz5Asg.js";
5
5
  import { u as useScreenWidth } from "./context.hooks-BmwyZ1p3.js";
6
6
  import { d as addGridTransition } from "./style-BgcnmVAY.js";
7
7
  import { styled, css } from "styled-components";
@@ -524,4 +524,4 @@ export {
524
524
  useApp as m,
525
525
  useBgColor as u
526
526
  };
527
- //# sourceMappingURL=context.hooks-Cfr2Mp8e.js.map
527
+ //# sourceMappingURL=context.hooks-DTdppyho.js.map