@eventlook/sdk 1.4.48 → 1.4.49-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/.env.example +1 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.js +8 -0
  3. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/cjs/_virtual/index.js +6 -0
  5. package/dist/cjs/_virtual/index.js.map +1 -0
  6. package/dist/cjs/_virtual/index2.js +6 -0
  7. package/dist/cjs/_virtual/index2.js.map +1 -0
  8. package/dist/cjs/_virtual/index3.js +6 -0
  9. package/dist/cjs/_virtual/index3.js.map +1 -0
  10. package/dist/cjs/_virtual/react-is.development.js +6 -0
  11. package/dist/cjs/_virtual/react-is.development.js.map +1 -0
  12. package/dist/cjs/_virtual/react-is.development2.js +6 -0
  13. package/dist/cjs/_virtual/react-is.development2.js.map +1 -0
  14. package/dist/cjs/_virtual/react-is.production.js +6 -0
  15. package/dist/cjs/_virtual/react-is.production.js.map +1 -0
  16. package/dist/cjs/_virtual/react-is.production.min.js +6 -0
  17. package/dist/cjs/_virtual/react-is.production.min.js.map +1 -0
  18. package/dist/cjs/components/hook-form/FormProvider.js +2 -2
  19. package/dist/cjs/components/hook-form/FormProvider.js.map +1 -1
  20. package/dist/cjs/form/ChildEventDialog.js +3 -3
  21. package/dist/cjs/form/ChildEventDialog.js.map +1 -1
  22. package/dist/cjs/form/ContactPerson.js +1 -1
  23. package/dist/cjs/form/ContactPerson.js.map +1 -1
  24. package/dist/cjs/form/PaymentOverviewBox.js +47 -61
  25. package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
  26. package/dist/cjs/form/PaymentOverviewDrawer.js +157 -0
  27. package/dist/cjs/form/PaymentOverviewDrawer.js.map +1 -0
  28. package/dist/cjs/form/ReleaseWithMerchandise.js +57 -48
  29. package/dist/cjs/form/ReleaseWithMerchandise.js.map +1 -1
  30. package/dist/cjs/form/Shipping.js +21 -18
  31. package/dist/cjs/form/Shipping.js.map +1 -1
  32. package/dist/cjs/form/TicketForm.js +94 -33
  33. package/dist/cjs/form/TicketForm.js.map +1 -1
  34. package/dist/cjs/form/TicketQuantityControl.js +51 -0
  35. package/dist/cjs/form/TicketQuantityControl.js.map +1 -0
  36. package/dist/cjs/form/TicketSelection.js +5 -6
  37. package/dist/cjs/form/TicketSelection.js.map +1 -1
  38. package/dist/cjs/form/TicketSelectionMobile.js +98 -0
  39. package/dist/cjs/form/TicketSelectionMobile.js.map +1 -0
  40. package/dist/cjs/form/TicketWithMerchandiseSelection.js +3 -5
  41. package/dist/cjs/form/TicketWithMerchandiseSelection.js.map +1 -1
  42. package/dist/cjs/form/index.js +1 -1
  43. package/dist/cjs/form/index.js.map +1 -1
  44. package/dist/cjs/form/merchandise/MerchandiseSelection.js +14 -0
  45. package/dist/cjs/form/merchandise/MerchandiseSelection.js.map +1 -0
  46. package/dist/cjs/form/merchandise/MerchandiseSlider.js +40 -0
  47. package/dist/cjs/form/merchandise/MerchandiseSlider.js.map +1 -0
  48. package/dist/cjs/form/merchendise/MerchandiseSelection.js +19 -0
  49. package/dist/cjs/form/merchendise/MerchandiseSelection.js.map +1 -0
  50. package/dist/cjs/form/merchendise/MerchandiseSlider.js +75 -0
  51. package/dist/cjs/form/merchendise/MerchandiseSlider.js.map +1 -0
  52. package/dist/cjs/form/payment/FeeBox.js +4 -16
  53. package/dist/cjs/form/payment/FeeBox.js.map +1 -1
  54. package/dist/cjs/form/payment/PaymentOverviewCheckbox.js +33 -28
  55. package/dist/cjs/form/payment/PaymentOverviewCheckbox.js.map +1 -1
  56. package/dist/cjs/form/product/ProductCard.js +139 -36
  57. package/dist/cjs/form/product/ProductCard.js.map +1 -1
  58. package/dist/cjs/form/product/ProductVariantsDialog.js +157 -96
  59. package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
  60. package/dist/cjs/form/services/index.js +133 -0
  61. package/dist/cjs/form/services/index.js.map +1 -0
  62. package/dist/cjs/form/style.js +7 -3
  63. package/dist/cjs/form/style.js.map +1 -1
  64. package/dist/cjs/form/tickets/ReleaseDescription.js +23 -0
  65. package/dist/cjs/form/tickets/ReleaseDescription.js.map +1 -0
  66. package/dist/cjs/form/tickets/ReleaseWithMerchandise.js +141 -0
  67. package/dist/cjs/form/tickets/ReleaseWithMerchandise.js.map +1 -0
  68. package/dist/cjs/form/tickets/TicketQuantityControl.js +52 -0
  69. package/dist/cjs/form/tickets/TicketQuantityControl.js.map +1 -0
  70. package/dist/cjs/form/tickets/TicketSelection.js +139 -0
  71. package/dist/cjs/form/tickets/TicketSelection.js.map +1 -0
  72. package/dist/cjs/form/tickets/TicketSelectionMap.js +73 -0
  73. package/dist/cjs/form/tickets/TicketSelectionMap.js.map +1 -0
  74. package/dist/cjs/form/tickets/TicketSelectionMobile.js +90 -0
  75. package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +1 -0
  76. package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js +117 -0
  77. package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js.map +1 -0
  78. package/dist/cjs/hooks/useConsentScrollOnDrawerOpen.js +59 -0
  79. package/dist/cjs/hooks/useConsentScrollOnDrawerOpen.js.map +1 -0
  80. package/dist/cjs/hooks/useScrollToFirstError.js +64 -0
  81. package/dist/cjs/hooks/useScrollToFirstError.js.map +1 -0
  82. package/dist/cjs/locales/cs.js +18 -3
  83. package/dist/cjs/locales/cs.js.map +1 -1
  84. package/dist/cjs/locales/en.js +17 -2
  85. package/dist/cjs/locales/en.js.map +1 -1
  86. package/dist/cjs/locales/es.js +16 -1
  87. package/dist/cjs/locales/es.js.map +1 -1
  88. package/dist/cjs/locales/pl.js +16 -1
  89. package/dist/cjs/locales/pl.js.map +1 -1
  90. package/dist/cjs/locales/sk.js +17 -2
  91. package/dist/cjs/locales/sk.js.map +1 -1
  92. package/dist/cjs/locales/uk.js +16 -1
  93. package/dist/cjs/locales/uk.js.map +1 -1
  94. package/dist/cjs/utils/data/global.js +2 -0
  95. package/dist/cjs/utils/data/global.js.map +1 -1
  96. package/dist/esm/_virtual/_commonjsHelpers.js +6 -0
  97. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  98. package/dist/esm/_virtual/index.js +4 -0
  99. package/dist/esm/_virtual/index.js.map +1 -0
  100. package/dist/esm/_virtual/index2.js +4 -0
  101. package/dist/esm/_virtual/index2.js.map +1 -0
  102. package/dist/esm/_virtual/index3.js +4 -0
  103. package/dist/esm/_virtual/index3.js.map +1 -0
  104. package/dist/esm/_virtual/react-is.development.js +4 -0
  105. package/dist/esm/_virtual/react-is.development.js.map +1 -0
  106. package/dist/esm/_virtual/react-is.development2.js +4 -0
  107. package/dist/esm/_virtual/react-is.development2.js.map +1 -0
  108. package/dist/esm/_virtual/react-is.production.js +4 -0
  109. package/dist/esm/_virtual/react-is.production.js.map +1 -0
  110. package/dist/esm/_virtual/react-is.production.min.js +4 -0
  111. package/dist/esm/_virtual/react-is.production.min.js.map +1 -0
  112. package/dist/esm/components/hook-form/FormProvider.js +2 -2
  113. package/dist/esm/components/hook-form/FormProvider.js.map +1 -1
  114. package/dist/esm/form/ChildEventDialog.js +3 -3
  115. package/dist/esm/form/ChildEventDialog.js.map +1 -1
  116. package/dist/esm/form/ContactPerson.js +1 -1
  117. package/dist/esm/form/ContactPerson.js.map +1 -1
  118. package/dist/esm/form/PaymentOverviewBox.js +48 -62
  119. package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
  120. package/dist/esm/form/PaymentOverviewDrawer.js +153 -0
  121. package/dist/esm/form/PaymentOverviewDrawer.js.map +1 -0
  122. package/dist/esm/form/ReleaseWithMerchandise.js +58 -49
  123. package/dist/esm/form/ReleaseWithMerchandise.js.map +1 -1
  124. package/dist/esm/form/Shipping.js +21 -18
  125. package/dist/esm/form/Shipping.js.map +1 -1
  126. package/dist/esm/form/TicketForm.js +96 -35
  127. package/dist/esm/form/TicketForm.js.map +1 -1
  128. package/dist/esm/form/TicketQuantityControl.js +47 -0
  129. package/dist/esm/form/TicketQuantityControl.js.map +1 -0
  130. package/dist/esm/form/TicketSelection.js +5 -6
  131. package/dist/esm/form/TicketSelection.js.map +1 -1
  132. package/dist/esm/form/TicketSelectionMobile.js +94 -0
  133. package/dist/esm/form/TicketSelectionMobile.js.map +1 -0
  134. package/dist/esm/form/TicketWithMerchandiseSelection.js +4 -6
  135. package/dist/esm/form/TicketWithMerchandiseSelection.js.map +1 -1
  136. package/dist/esm/form/index.js +1 -1
  137. package/dist/esm/form/index.js.map +1 -1
  138. package/dist/esm/form/merchandise/MerchandiseSelection.js +10 -0
  139. package/dist/esm/form/merchandise/MerchandiseSelection.js.map +1 -0
  140. package/dist/esm/form/merchandise/MerchandiseSlider.js +36 -0
  141. package/dist/esm/form/merchandise/MerchandiseSlider.js.map +1 -0
  142. package/dist/esm/form/merchendise/MerchandiseSelection.js +15 -0
  143. package/dist/esm/form/merchendise/MerchandiseSelection.js.map +1 -0
  144. package/dist/esm/form/merchendise/MerchandiseSlider.js +71 -0
  145. package/dist/esm/form/merchendise/MerchandiseSlider.js.map +1 -0
  146. package/dist/esm/form/payment/FeeBox.js +5 -17
  147. package/dist/esm/form/payment/FeeBox.js.map +1 -1
  148. package/dist/esm/form/payment/PaymentOverviewCheckbox.js +35 -30
  149. package/dist/esm/form/payment/PaymentOverviewCheckbox.js.map +1 -1
  150. package/dist/esm/form/product/ProductCard.js +140 -37
  151. package/dist/esm/form/product/ProductCard.js.map +1 -1
  152. package/dist/esm/form/product/ProductVariantsDialog.js +159 -98
  153. package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
  154. package/dist/esm/form/services/index.js +129 -0
  155. package/dist/esm/form/services/index.js.map +1 -0
  156. package/dist/esm/form/style.js +7 -3
  157. package/dist/esm/form/style.js.map +1 -1
  158. package/dist/esm/form/tickets/ReleaseDescription.js +19 -0
  159. package/dist/esm/form/tickets/ReleaseDescription.js.map +1 -0
  160. package/dist/esm/form/tickets/ReleaseWithMerchandise.js +137 -0
  161. package/dist/esm/form/tickets/ReleaseWithMerchandise.js.map +1 -0
  162. package/dist/esm/form/tickets/TicketQuantityControl.js +48 -0
  163. package/dist/esm/form/tickets/TicketQuantityControl.js.map +1 -0
  164. package/dist/esm/form/tickets/TicketSelection.js +135 -0
  165. package/dist/esm/form/tickets/TicketSelection.js.map +1 -0
  166. package/dist/esm/form/tickets/TicketSelectionMap.js +69 -0
  167. package/dist/esm/form/tickets/TicketSelectionMap.js.map +1 -0
  168. package/dist/esm/form/tickets/TicketSelectionMobile.js +86 -0
  169. package/dist/esm/form/tickets/TicketSelectionMobile.js.map +1 -0
  170. package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js +113 -0
  171. package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js.map +1 -0
  172. package/dist/esm/hooks/useConsentScrollOnDrawerOpen.js +55 -0
  173. package/dist/esm/hooks/useConsentScrollOnDrawerOpen.js.map +1 -0
  174. package/dist/esm/hooks/useScrollToFirstError.js +60 -0
  175. package/dist/esm/hooks/useScrollToFirstError.js.map +1 -0
  176. package/dist/esm/locales/cs.js +18 -3
  177. package/dist/esm/locales/cs.js.map +1 -1
  178. package/dist/esm/locales/en.js +17 -2
  179. package/dist/esm/locales/en.js.map +1 -1
  180. package/dist/esm/locales/es.js +16 -1
  181. package/dist/esm/locales/es.js.map +1 -1
  182. package/dist/esm/locales/pl.js +16 -1
  183. package/dist/esm/locales/pl.js.map +1 -1
  184. package/dist/esm/locales/sk.js +17 -2
  185. package/dist/esm/locales/sk.js.map +1 -1
  186. package/dist/esm/locales/uk.js +16 -1
  187. package/dist/esm/locales/uk.js.map +1 -1
  188. package/dist/esm/utils/data/global.js +2 -1
  189. package/dist/esm/utils/data/global.js.map +1 -1
  190. package/dist/types/components/Image.d.ts +4 -4
  191. package/dist/types/form/PaymentOverviewDrawer.d.ts +8 -0
  192. package/dist/types/form/merchendise/MerchandiseSelection.d.ts +9 -0
  193. package/dist/types/form/merchendise/MerchandiseSlider.d.ts +10 -0
  194. package/dist/types/form/merchendise/MerchendiseSlider.d.ts +0 -0
  195. package/dist/types/form/style.d.ts +1 -1
  196. package/package.json +5 -1
  197. package/rollup.config.mjs +2 -0
  198. package/src/components/hook-form/FormProvider.tsx +5 -2
  199. package/src/form/ChildEventDialog.tsx +3 -3
  200. package/src/form/ContactPerson.tsx +1 -1
  201. package/src/form/PaymentOverviewBox.tsx +89 -122
  202. package/src/form/PaymentOverviewDrawer.tsx +238 -0
  203. package/src/form/Shipping.tsx +29 -17
  204. package/src/form/TicketForm.tsx +140 -39
  205. package/src/form/index.tsx +3 -1
  206. package/src/form/merchandise/MerchandiseSelection.tsx +24 -0
  207. package/src/form/merchandise/MerchandiseSlider.tsx +62 -0
  208. package/src/form/payment/FeeBox.tsx +4 -31
  209. package/src/form/payment/PaymentOverviewCheckbox.tsx +57 -56
  210. package/src/form/product/ProductCard.tsx +250 -59
  211. package/src/form/product/ProductVariantsDialog.tsx +253 -140
  212. package/src/form/services/index.tsx +263 -0
  213. package/src/form/style.ts +9 -3
  214. package/src/form/tickets/ReleaseDescription.tsx +46 -0
  215. package/src/form/tickets/ReleaseWithMerchandise.tsx +239 -0
  216. package/src/form/tickets/TicketQuantityControl.tsx +94 -0
  217. package/src/form/{TicketSelection.tsx → tickets/TicketSelection.tsx} +24 -128
  218. package/src/form/{TicketSelectionMap.tsx → tickets/TicketSelectionMap.tsx} +9 -1
  219. package/src/form/tickets/TicketSelectionMobile.tsx +177 -0
  220. package/src/form/{TicketWithMerchandiseSelection.tsx → tickets/TicketWithMerchandiseSelection.tsx} +3 -7
  221. package/src/hooks/useConsentScrollOnDrawerOpen.ts +73 -0
  222. package/src/hooks/useScrollToFirstError.ts +94 -0
  223. package/src/locales/cs.tsx +18 -3
  224. package/src/locales/en.tsx +17 -2
  225. package/src/locales/es.tsx +16 -1
  226. package/src/locales/pl.tsx +16 -1
  227. package/src/locales/sk.tsx +17 -2
  228. package/src/locales/uk.tsx +16 -1
  229. package/src/utils/data/global.ts +1 -0
  230. package/tsconfig.json +2 -1
  231. package/.claude/settings.local.json +0 -9
  232. package/src/form/MerchandiseSelection.tsx +0 -29
  233. package/src/form/ReleaseWithMerchandise.tsx +0 -230
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentOverviewDrawer.js","sources":["../../../src/form/PaymentOverviewDrawer.tsx"],"sourcesContent":["import { Box, Button, SwipeableDrawer, Typography } from '@mui/material';\nimport React, { useEffect } from 'react';\nimport { useRef, useState } from 'react';\nimport PaymentOverviewBox from './PaymentOverviewBox';\nimport { IEvent } from '@utils/types/event.type';\nimport useGlobal from '@hooks/useGlobal';\nimport { fCurrency } from '@utils/formatNumber';\nimport { EVENTLOOK_ORDER_FORM_ID } from '@utils/data/global.ts';\n\ninterface Props {\n event: IEvent;\n totalPrice: number;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst swipeAreaWidth = 56;\n\nconst PaymentOverviewDrawer: React.FC<Props> = ({ event, totalPrice, onOpenChange }) => {\n const { t, lang } = useGlobal();\n const [openDrawer, setOpenDrawer] = useState(false);\n const touchStartYRef = useRef<number | null>(null);\n\n const sentinelRef = useRef<HTMLDivElement>(null);\n const prevYRef = useRef<number>(Number.POSITIVE_INFINITY);\n\n // Opens drawer when scrolling down\n useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (totalPrice <= 0) return;\n const currentY = entry.boundingClientRect.y;\n const isScrollingDown = currentY < prevYRef.current;\n\n if (entry.isIntersecting && isScrollingDown) {\n openDrawerHandler();\n }\n\n prevYRef.current = currentY;\n });\n },\n {\n threshold: 0,\n rootMargin: '0px 0px 0px 0px',\n }\n );\n\n observer.observe(sentinel);\n\n return () => {\n observer.unobserve(sentinel);\n };\n }, [totalPrice]);\n\n const toggleDrawer = () => {\n setOpenDrawer((prev) => {\n const next = !prev;\n onOpenChange?.(next);\n return next;\n });\n };\n\n const openDrawerHandler = () => {\n setOpenDrawer(true);\n onOpenChange?.(true);\n };\n\n const closeDrawerHandler = () => {\n setOpenDrawer(false);\n onOpenChange?.(false);\n };\n\n const handleClosedTabTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\n touchStartYRef.current = event.touches[0]?.clientY ?? null;\n };\n\n const handleClosedTabTouchEnd = (event: React.TouchEvent<HTMLDivElement>) => {\n const startY = touchStartYRef.current;\n const endY = event.changedTouches[0]?.clientY;\n\n if (startY === null || typeof endY !== 'number') {\n touchStartYRef.current = null;\n return;\n }\n\n const swipeDistance = startY - endY;\n if (swipeDistance > 24) {\n openDrawerHandler();\n }\n\n touchStartYRef.current = null;\n };\n\n return (\n <Box sx={{ display: { md: 'none' } }}>\n {/* Sentinel element for intersection observer */}\n <Box ref={sentinelRef} sx={{ height: 1, visibility: 'hidden' }} />\n\n {/* Drawer Tab */}\n {!openDrawer && (\n <Box\n onTouchStart={handleClosedTabTouchStart}\n onTouchEnd={handleClosedTabTouchEnd}\n sx={{\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: (theme) => theme.palette.background.paper,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n boxShadow: '0 -8px 10px 2px rgba(0,0,0,0.2)',\n zIndex: 1300,\n }}\n >\n <Box\n role=\"button\"\n aria-label={t('form.labels.payment_overview_open')}\n onClick={toggleDrawer}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n width: '100%',\n py: 1,\n }}\n >\n <Box\n sx={{\n width: 30,\n height: 6,\n backgroundColor: (theme) => theme.palette.grey[300],\n borderRadius: 3,\n }}\n />\n </Box>\n <Box\n sx={{\n width: '100%',\n px: 2,\n pb: 2,\n }}\n >\n <Typography\n sx={{\n fontWeight: 'bold',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span>{t('form.labels.total')}:</span>\n <span>{fCurrency(totalPrice, lang, event.currency)}</span>\n </Typography>\n\n <Button\n type=\"submit\"\n form={EVENTLOOK_ORDER_FORM_ID}\n variant=\"contained\"\n size=\"large\"\n fullWidth\n sx={{ mt: 1, height: { xs: 36, md: 40 } }}\n >\n {t('buy')}\n </Button>\n </Box>\n </Box>\n )}\n\n {/* Drawer Content */}\n <SwipeableDrawer\n anchor=\"bottom\"\n open={openDrawer}\n onClose={closeDrawerHandler}\n onOpen={openDrawerHandler}\n swipeAreaWidth={swipeAreaWidth}\n disableSwipeToOpen={false}\n keepMounted\n sx={{ display: { md: 'none' } }}\n ModalProps={{\n disableScrollLock: true,\n keepMounted: false,\n BackdropProps: {\n sx: { background: 'rgba(0,0,0,0)' },\n onClick: (event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n },\n },\n }}\n PaperProps={{\n sx: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n boxShadow: '0 -8px 10px 2px rgba(0,0,0,0.2)',\n overflow: 'hidden',\n },\n }}\n >\n <Box\n role=\"button\"\n aria-label={t('form.labels.payment_overview_close')}\n onClick={toggleDrawer}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: (theme) => theme.palette.background.paper,\n cursor: 'pointer',\n py: 1,\n }}\n >\n <Box\n sx={{\n width: 30,\n height: 6,\n backgroundColor: (theme) => theme.palette.grey[300],\n borderRadius: 3,\n }}\n />\n </Box>\n <Box\n sx={{\n height: '100%',\n overflow: 'auto',\n }}\n >\n <PaymentOverviewBox event={event} />\n </Box>\n </SwipeableDrawer>\n </Box>\n );\n};\n\nexport default PaymentOverviewDrawer;\n"],"names":[],"mappings":"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"}
@@ -1,22 +1,24 @@
1
1
  import React, { useState, useCallback } from 'react';
2
- import { Box, Stack, Typography, IconButton, Button } from '@mui/material';
3
- import Iconify from '../components/iconify/Iconify.js';
2
+ import { Box, Stack, Typography } from '@mui/material';
4
3
  import ProductVariantsDialog from './product/ProductVariantsDialog.js';
4
+ import TicketQuantityControl from './tickets/TicketQuantityControl.js';
5
5
  import { useFormContext, useWatch } from 'react-hook-form';
6
6
  import { fCurrency } from '../utils/formatNumber.js';
7
7
  import { getSelectedQuantityByVariant } from '../utils/product.js';
8
8
  import ReleaseExtraFields from './extra-field/ReleaseExtraFields.js';
9
+ import ReleaseDescription from './tickets/ReleaseDescription.js';
9
10
  import useGlobal from '../hooks/useGlobal.js';
10
11
 
11
12
  const ReleaseWithMerchandise = ({ eventId, release, activeReleases, currency, index, }) => {
12
13
  const { t, lang } = useGlobal();
13
14
  const [openVariantDialog, setOpenVariantDialog] = useState(null);
15
+ const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);
14
16
  const { setValue } = useFormContext();
15
17
  const tickets = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });
16
18
  const products = useWatch({ name: `products.${eventId}`, defaultValue: [] });
17
19
  const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);
18
20
  const countTickets = addedRelease?.quantity || 0;
19
- const isReleaseSelected = (id) => !!tickets.find((ticket) => ticket.releaseId === id);
21
+ const getReleaseTitle = (release) => release.releaseCategoryName || release.name || '';
20
22
  const getSelectedQuantity = (id) => tickets.find((ticket) => ticket.releaseId === id)?.quantity || 0;
21
23
  const getAvailableTicketsForRelease = (release) => {
22
24
  const selectedRelease = activeReleases?.find((item) => item.id === release.releaseId);
@@ -29,45 +31,60 @@ const ReleaseWithMerchandise = ({ eventId, release, activeReleases, currency, in
29
31
  return false;
30
32
  return getSelectedQuantity(releaseId) >= getAvailableTicketsForRelease(release);
31
33
  };
32
- const addRelease = (product) => {
34
+ const addRelease = (productsToAdd) => {
35
+ const normalizedProducts = Array.isArray(productsToAdd)
36
+ ? productsToAdd
37
+ : productsToAdd
38
+ ? [productsToAdd]
39
+ : [];
40
+ const quantity = normalizedProducts.length ? normalizedProducts.length : 1;
41
+ const extraFields = release.extraFields?.length
42
+ ? Array.from({ length: quantity }, () => release.extraFields.map((field) => ({
43
+ eventExtraFieldId: field.id,
44
+ value: '',
45
+ })))
46
+ : [];
33
47
  setValue(`tickets.${eventId}`, [
34
48
  ...tickets,
35
49
  {
36
50
  releaseId: release.id,
37
- quantity: 1,
51
+ quantity,
38
52
  itemName: '',
39
53
  price: 0,
40
- products: product ? [product] : [],
41
- extraFields: release.extraFields?.length
42
- ? [
43
- release.extraFields.map((field) => ({
44
- eventExtraFieldId: field.id,
45
- value: '',
46
- })),
47
- ]
48
- : [],
54
+ products: normalizedProducts,
55
+ extraFields,
49
56
  },
50
57
  ]);
51
58
  setOpenVariantDialog(null);
52
59
  };
53
- const increaseQuantity = (product) => {
60
+ const increaseQuantity = (productsToAdd) => {
61
+ const normalizedProducts = Array.isArray(productsToAdd)
62
+ ? productsToAdd
63
+ : productsToAdd
64
+ ? [productsToAdd]
65
+ : [];
54
66
  const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);
55
67
  if (addedRelease) {
56
- const newQuantity = Number(addedRelease.quantity) + 1;
68
+ const increment = normalizedProducts.length ? normalizedProducts.length : 1;
57
69
  const maxQuantity = getAvailableTicketsForRelease(addedRelease);
70
+ const availableIncrement = Math.max(0, Math.min(increment, maxQuantity - Number(addedRelease.quantity)));
71
+ if (availableIncrement === 0)
72
+ return;
73
+ const newQuantity = Number(addedRelease.quantity) + availableIncrement;
74
+ const productsSlice = normalizedProducts.slice(0, availableIncrement);
75
+ const extraFieldsToAdd = release.extraFields?.length
76
+ ? Array.from({ length: availableIncrement }, () => release.extraFields.map((field) => ({
77
+ eventExtraFieldId: field.id,
78
+ value: '',
79
+ })))
80
+ : [];
58
81
  setValue(`tickets.${eventId}`, tickets.map((ticket) => ticket.releaseId === release.id
59
82
  ? {
60
83
  ...ticket,
61
84
  quantity: newQuantity > maxQuantity ? maxQuantity : newQuantity,
62
- products: product ? [...ticket.products, product] : ticket.products,
85
+ products: [...ticket.products, ...productsSlice],
63
86
  extraFields: release.extraFields?.length
64
- ? [
65
- ...ticket.extraFields,
66
- release.extraFields.map((field) => ({
67
- eventExtraFieldId: field.id,
68
- value: '',
69
- })),
70
- ]
87
+ ? [...ticket.extraFields, ...extraFieldsToAdd]
71
88
  : [],
72
89
  }
73
90
  : ticket));
@@ -95,31 +112,23 @@ const ReleaseWithMerchandise = ({ eventId, release, activeReleases, currency, in
95
112
  }
96
113
  }
97
114
  }, [tickets, release.id, setValue]);
98
- return (React.createElement(Box, null,
99
- React.createElement(Stack, { direction: "row", spacing: 1 },
100
- React.createElement(Stack, { direction: "row", spacing: 1, justifyContent: "space-between", alignItems: "center", sx: { width: '100%', backgroundColor: 'grey.200', p: 1, pl: 1.5, borderRadius: 1 } },
101
- React.createElement(Stack, { direction: "row", spacing: 2, alignItems: "center" },
102
- React.createElement(Stack, { direction: "row", spacing: 0.5, alignItems: "center" },
103
- React.createElement(Iconify, { icon: "ion:ticket-outline", color: "primary.main", sx: { width: 24, height: 24 } }),
104
- release.product && (React.createElement(React.Fragment, null,
105
- React.createElement(Typography, { fontSize: 20, lineHeight: 1 }, "+"),
106
- React.createElement(Iconify, { icon: "lucide-lab:shirt-t", color: "primary.main", sx: { width: 24, height: 24 } })))),
107
- React.createElement(Typography, { color: "grey.500" },
108
- release.releaseCategoryName,
109
- " - ",
110
- release.name,
111
- " -",
112
- ' ',
113
- fCurrency(release.price, lang, currency))),
114
- isReleaseSelected(release.id) ? (React.createElement(Stack, { direction: "row", spacing: 1, py: 0.5 },
115
- React.createElement(IconButton, { onClick: () => decreaseQuantity(), size: "small", color: "primary" },
116
- React.createElement(Iconify, { icon: "eva:minus-fill" })),
117
- React.createElement(Typography, { color: "grey.500" }, getSelectedQuantity(release.id)),
118
- React.createElement(IconButton, { onClick: () => release.product ? setOpenVariantDialog('increase') : increaseQuantity(), size: "small", color: "primary", disabled: isMaxQuantity(release.id) },
119
- React.createElement(Iconify, { icon: "eva:plus-fill" })))) : (React.createElement(Button, { onClick: () => !release.locked && (release.product ? setOpenVariantDialog('add') : addRelease()), variant: "contained", disabled: release.locked }, t('add'))))),
120
- React.createElement(Typography, { variant: "caption", content: "div", mt: 2, mb: release.extraFields?.length ? 2 : 0, display: "block" }, release.description),
121
- release.extraFields && release.extraFields.length > 0 && (React.createElement(ReleaseExtraFields, { release: release, eventId: eventId, releaseIndex: index, quantity: countTickets })),
122
- release.product && (React.createElement(ProductVariantsDialog, { eventProduct: release.product, openDialog: !!openVariantDialog, callback: openVariantDialog === 'increase' ? increaseQuantity : addRelease, onClose: () => setOpenVariantDialog(null), selectedQuantityByVariant: getSelectedQuantityByVariant(products, tickets), eventId: eventId }))));
115
+ return (React.createElement(Box, { sx: {
116
+ p: 1,
117
+ pb: 0,
118
+ borderRadius: 1,
119
+ bgcolor: 'grey.100',
120
+ } },
121
+ React.createElement(Stack, { spacing: 0 },
122
+ React.createElement(Box, null,
123
+ React.createElement(Typography, { variant: "subtitle1", fontWeight: 600 }, getReleaseTitle(release))),
124
+ React.createElement(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between" },
125
+ React.createElement(Stack, null,
126
+ React.createElement(Typography, { variant: "body2" }, release.price === 0 ? t('free') : fCurrency(release.price, lang, currency)),
127
+ React.createElement(ReleaseDescription, { description: release.description, isExpanded: isDescriptionExpanded, onToggle: () => setIsDescriptionExpanded((prev) => !prev), moreInfoLabel: t('more_info') })),
128
+ React.createElement(TicketQuantityControl, { quantity: getSelectedQuantity(release.id), isDisabled: release.locked, canAddFirst: !release.locked, canAddMore: !isMaxQuantity(release.id), addLabel: t('add'), onDecrement: () => decreaseQuantity(), onIncrement: () => release.product ? setOpenVariantDialog('increase') : increaseQuantity(), onAddFirst: () => (release.product ? setOpenVariantDialog('add') : addRelease()) })),
129
+ React.createElement(ReleaseDescription, { description: release.description, isExpanded: isDescriptionExpanded, onToggle: () => setIsDescriptionExpanded((prev) => !prev), moreInfoLabel: t('more_info'), showCollapse: true }),
130
+ release.extraFields && release.extraFields.length > 0 && (React.createElement(ReleaseExtraFields, { release: release, eventId: eventId, releaseIndex: index, quantity: countTickets })),
131
+ release.product && (React.createElement(ProductVariantsDialog, { eventProduct: release.product, openDialog: !!openVariantDialog, callback: openVariantDialog === 'increase' ? increaseQuantity : addRelease, onClose: () => setOpenVariantDialog(null), selectedQuantityByVariant: getSelectedQuantityByVariant(products, tickets), eventId: eventId, canAddOnlyOneAtATime: true })))));
123
132
  };
124
133
 
125
134
  export { ReleaseWithMerchandise as default };
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseWithMerchandise.js","sources":["../../../src/form/ReleaseWithMerchandise.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Box, Button, IconButton, Stack, Typography } from '@mui/material';\nimport { Iconify } from '@components/iconify';\nimport ProductVariantsDialog from '@form/product/ProductVariantsDialog';\nimport { IReleaseShort } from '@utils/types/release.type';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { IEventProductForm } from '@utils/types/product.type';\nimport { fCurrency } from '@utils/formatNumber';\nimport { Currencies } from '@utils/data/currency';\nimport { getSelectedQuantityByVariant } from '@utils/product';\nimport ReleaseExtraFields from '@form/extra-field/ReleaseExtraFields';\nimport useGlobal from '@hooks/useGlobal.ts';\n\ninterface Props {\n eventId: number;\n release: IReleaseShort;\n activeReleases: IReleaseShort[];\n currency: Currencies;\n index: number;\n}\n\nconst ReleaseWithMerchandise: React.FC<Props> = ({\n eventId,\n release,\n activeReleases,\n currency,\n index,\n}) => {\n const { t, lang } = useGlobal();\n const [openVariantDialog, setOpenVariantDialog] = useState<'add' | 'increase' | null>(null);\n const { setValue } = useFormContext<ITicketForm>();\n const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });\n const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });\n const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);\n const countTickets = addedRelease?.quantity || 0;\n\n const isReleaseSelected = (id: number) => !!tickets.find((ticket) => ticket.releaseId === id);\n\n const getSelectedQuantity = (id: number) =>\n tickets.find((ticket) => ticket.releaseId === id)?.quantity || 0;\n\n const getAvailableTicketsForRelease = (release: ITicketFormTicket): number => {\n const selectedRelease = activeReleases?.find((item) => item.id === release.releaseId);\n const availableQuantity = selectedRelease ? selectedRelease.availableTickets : 0;\n return availableQuantity > 10 ? 10 : availableQuantity;\n };\n\n const isMaxQuantity = (releaseId: number) => {\n const release = tickets.find((ticket) => ticket.releaseId === releaseId);\n if (!release) return false;\n return getSelectedQuantity(releaseId) >= getAvailableTicketsForRelease(release);\n };\n\n const addRelease = (product?: IEventProductForm) => {\n setValue(`tickets.${eventId}`, [\n ...tickets,\n {\n releaseId: release.id,\n quantity: 1,\n itemName: '',\n price: 0,\n products: product ? [product] : [],\n extraFields: release.extraFields?.length\n ? [\n release.extraFields.map((field) => ({\n eventExtraFieldId: field.id,\n value: '',\n })),\n ]\n : [],\n },\n ]);\n setOpenVariantDialog(null);\n };\n\n const increaseQuantity = (product?: IEventProductForm) => {\n const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);\n if (addedRelease) {\n const newQuantity = Number(addedRelease.quantity) + 1;\n const maxQuantity = getAvailableTicketsForRelease(addedRelease);\n setValue(\n `tickets.${eventId}`,\n tickets.map((ticket) =>\n ticket.releaseId === release.id\n ? {\n ...ticket,\n quantity: newQuantity > maxQuantity ? maxQuantity : newQuantity,\n products: product ? [...ticket.products, product] : ticket.products,\n extraFields: release.extraFields?.length\n ? [\n ...ticket.extraFields,\n release.extraFields.map((field) => ({\n eventExtraFieldId: field.id,\n value: '',\n })),\n ]\n : [],\n }\n : ticket\n )\n );\n setOpenVariantDialog(null);\n }\n };\n\n const decreaseQuantity = useCallback(() => {\n const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);\n if (addedRelease) {\n const newQuantity = Number(addedRelease.quantity) - 1;\n if (newQuantity < 1) {\n setValue(\n `tickets.${eventId}`,\n tickets.filter((ticket) => ticket.releaseId !== release.id)\n );\n } else {\n setValue(\n `tickets.${eventId}`,\n tickets.map((ticket) => {\n if (ticket.releaseId !== release.id) return ticket;\n\n return {\n ...ticket,\n quantity: newQuantity,\n products: ticket?.products?.slice(0, -1), // non-mutating \"pop\"\n extraFields: ticket?.extraFields?.slice(0, -1),\n };\n })\n );\n }\n }\n }, [tickets, release.id, setValue]);\n\n return (\n <Box>\n <Stack direction=\"row\" spacing={1}>\n <Stack\n direction=\"row\"\n spacing={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n sx={{ width: '100%', backgroundColor: 'grey.200', p: 1, pl: 1.5, borderRadius: 1 }}\n >\n <Stack direction=\"row\" spacing={2} alignItems=\"center\">\n <Stack direction=\"row\" spacing={0.5} alignItems=\"center\">\n <Iconify\n icon=\"ion:ticket-outline\"\n color=\"primary.main\"\n sx={{ width: 24, height: 24 }}\n />\n {release.product && (\n <>\n <Typography fontSize={20} lineHeight={1}>\n +\n </Typography>\n <Iconify\n icon=\"lucide-lab:shirt-t\"\n color=\"primary.main\"\n sx={{ width: 24, height: 24 }}\n />\n </>\n )}\n </Stack>\n <Typography color=\"grey.500\">\n {release.releaseCategoryName} - {release.name} -{' '}\n {fCurrency(release.price, lang, currency)}\n </Typography>\n </Stack>\n {isReleaseSelected(release.id) ? (\n <Stack direction=\"row\" spacing={1} py={0.5}>\n <IconButton onClick={() => decreaseQuantity()} size=\"small\" color=\"primary\">\n <Iconify icon=\"eva:minus-fill\" />\n </IconButton>\n <Typography color=\"grey.500\">{getSelectedQuantity(release.id)}</Typography>\n <IconButton\n onClick={() =>\n release.product ? setOpenVariantDialog('increase') : increaseQuantity()\n }\n size=\"small\"\n color=\"primary\"\n disabled={isMaxQuantity(release.id)}\n >\n <Iconify icon=\"eva:plus-fill\" />\n </IconButton>\n </Stack>\n ) : (\n <Button\n onClick={() =>\n !release.locked && (release.product ? setOpenVariantDialog('add') : addRelease())\n }\n variant=\"contained\"\n disabled={release.locked}\n >\n {t('add')}\n </Button>\n )}\n </Stack>\n </Stack>\n <Typography\n variant=\"caption\"\n content=\"div\"\n mt={2}\n mb={release.extraFields?.length ? 2 : 0}\n display=\"block\"\n >\n {release.description}\n </Typography>\n {release.extraFields && release.extraFields.length > 0 && (\n <ReleaseExtraFields\n release={release}\n eventId={eventId}\n releaseIndex={index}\n quantity={countTickets}\n />\n )}\n {release.product && (\n <ProductVariantsDialog\n eventProduct={release.product}\n openDialog={!!openVariantDialog}\n callback={openVariantDialog === 'increase' ? increaseQuantity : addRelease}\n onClose={() => setOpenVariantDialog(null)}\n selectedQuantityByVariant={getSelectedQuantityByVariant(products, tickets)}\n eventId={eventId}\n />\n )}\n </Box>\n );\n};\n\nexport default ReleaseWithMerchandise;\n"],"names":[],"mappings":";;;;;;;;;;AAsBA,MAAM,sBAAsB,GAAoB,CAAC,EAC/C,OAAO,EACP,OAAO,EACP,cAAc,EACd,QAAQ,EACR,KAAK,GACN,KAAI;IACH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE;IAC/B,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAA4B,IAAI,CAAC;AAC3F,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAe;AAClD,IAAA,MAAM,OAAO,GAAwB,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AAC/F,IAAA,MAAM,QAAQ,GAAwB,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA,SAAA,EAAY,OAAO,CAAA,CAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACjG,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC;AAC9E,IAAA,MAAM,YAAY,GAAG,YAAY,EAAE,QAAQ,IAAI,CAAC;IAEhD,MAAM,iBAAiB,GAAG,CAAC,EAAU,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,EAAE,CAAC;IAE7F,MAAM,mBAAmB,GAAG,CAAC,EAAU,KACrC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,QAAQ,IAAI,CAAC;AAElE,IAAA,MAAM,6BAA6B,GAAG,CAAC,OAA0B,KAAY;AAC3E,QAAA,MAAM,eAAe,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC;AACrF,QAAA,MAAM,iBAAiB,GAAG,eAAe,GAAG,eAAe,CAAC,gBAAgB,GAAG,CAAC;QAChF,OAAO,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,iBAAiB;AACxD,KAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,SAAiB,KAAI;AAC1C,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;QAC1B,OAAO,mBAAmB,CAAC,SAAS,CAAC,IAAI,6BAA6B,CAAC,OAAO,CAAC;AACjF,KAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,OAA2B,KAAI;AACjD,QAAA,QAAQ,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,EAAE;AAC7B,YAAA,GAAG,OAAO;AACV,YAAA;gBACE,SAAS,EAAE,OAAO,CAAC,EAAE;AACrB,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;AAClC,gBAAA,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;AAChC,sBAAE;wBACE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;4BAClC,iBAAiB,EAAE,KAAK,CAAC,EAAE;AAC3B,4BAAA,KAAK,EAAE,EAAE;AACV,yBAAA,CAAC,CAAC;AACJ;AACH,sBAAE,EAAE;AACP,aAAA;AACF,SAAA,CAAC;QACF,oBAAoB,CAAC,IAAI,CAAC;AAC5B,KAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAA2B,KAAI;AACvD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9E,IAAI,YAAY,EAAE;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrD,YAAA,MAAM,WAAW,GAAG,6BAA6B,CAAC,YAAY,CAAC;YAC/D,QAAQ,CACN,WAAW,OAAO,CAAA,CAAE,EACpB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KACjB,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC;AAC3B,kBAAE;AACE,oBAAA,GAAG,MAAM;oBACT,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW;AAC/D,oBAAA,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ;AACnE,oBAAA,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;AAChC,0BAAE;4BACE,GAAG,MAAM,CAAC,WAAW;4BACrB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;gCAClC,iBAAiB,EAAE,KAAK,CAAC,EAAE;AAC3B,gCAAA,KAAK,EAAE,EAAE;AACV,6BAAA,CAAC,CAAC;AACJ;AACH,0BAAE,EAAE;AACP;AACH,kBAAE,MAAM,CACX,CACF;YACD,oBAAoB,CAAC,IAAI,CAAC;;AAE9B,KAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAK;AACxC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9E,IAAI,YAAY,EAAE;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrD,YAAA,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,QAAQ,CACN,WAAW,OAAO,CAAA,CAAE,EACpB,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAC5D;;iBACI;AACL,gBAAA,QAAQ,CACN,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,EACpB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACrB,oBAAA,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE;AAAE,wBAAA,OAAO,MAAM;oBAElD,OAAO;AACL,wBAAA,GAAG,MAAM;AACT,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;wBACxC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;qBAC/C;iBACF,CAAC,CACH;;;KAGN,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEnC,QACE,oBAAC,GAAG,EAAA,IAAA;QACF,KAAA,CAAA,aAAA,CAAC,KAAK,IAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC,EAAA;AAC/B,YAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,SAAS,EAAC,KAAK,EACf,OAAO,EAAE,CAAC,EACV,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,EACnB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,EAAA;AAElF,gBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAA;AACpD,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAC,QAAQ,EAAA;wBACtD,KAAA,CAAA,aAAA,CAAC,OAAO,IACN,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAC,cAAc,EACpB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAA,CAC7B;wBACD,OAAO,CAAC,OAAO,KACd,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;4BACE,KAAA,CAAA,aAAA,CAAC,UAAU,IAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAA,EAAA,GAAA,CAE1B;4BACb,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EACN,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAC,cAAc,EACpB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAA,CAC7B,CACD,CACJ,CACK;AACR,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAC,UAAU,EAAA;AACzB,wBAAA,OAAO,CAAC,mBAAmB;;AAAK,wBAAA,OAAO,CAAC,IAAI;;wBAAI,GAAG;wBACnD,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAC9B,CACP;gBACP,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,IAC5B,KAAA,CAAA,aAAA,CAAC,KAAK,IAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAA;AACxC,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAE,MAAM,gBAAgB,EAAE,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,EAAA;AACzE,wBAAA,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,gBAAgB,GAAG,CACtB;AACb,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAC,UAAU,EAAA,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAc;AAC3E,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,OAAO,EAAE,MACP,OAAO,CAAC,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,GAAG,gBAAgB,EAAE,EAEzE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,SAAS,EACf,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA;AAEnC,wBAAA,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,eAAe,EAAA,CAAG,CACrB,CACP,KAER,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,MACP,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,EAEnF,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAA,EAEvB,CAAC,CAAC,KAAK,CAAC,CACF,CACV,CACK,CACF;AACR,QAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,OAAO,EAAC,SAAS,EACjB,OAAO,EAAC,KAAK,EACb,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,EACvC,OAAO,EAAC,OAAO,IAEd,OAAO,CAAC,WAAW,CACT;AACZ,QAAA,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,KACpD,oBAAC,kBAAkB,EAAA,EACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,YAAY,GACtB,CACH;QACA,OAAO,CAAC,OAAO,KACd,KAAA,CAAA,aAAA,CAAC,qBAAqB,EAAA,EACpB,YAAY,EAAE,OAAO,CAAC,OAAO,EAC7B,UAAU,EAAE,CAAC,CAAC,iBAAiB,EAC/B,QAAQ,EAAE,iBAAiB,KAAK,UAAU,GAAG,gBAAgB,GAAG,UAAU,EAC1E,OAAO,EAAE,MAAM,oBAAoB,CAAC,IAAI,CAAC,EACzC,yBAAyB,EAAE,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC1E,OAAO,EAAE,OAAO,EAAA,CAChB,CACH,CACG;AAEV;;;;"}
1
+ {"version":3,"file":"ReleaseWithMerchandise.js","sources":["../../../src/form/ReleaseWithMerchandise.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Box, Stack, Typography } from '@mui/material';\nimport ProductVariantsDialog from '@form/product/ProductVariantsDialog';\nimport TicketQuantityControl from '@form/tickets/TicketQuantityControl';\nimport { IReleaseShort } from '@utils/types/release.type';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { IEventProductForm } from '@utils/types/product.type';\nimport { fCurrency } from '@utils/formatNumber';\nimport { Currencies } from '@utils/data/currency';\nimport { getSelectedQuantityByVariant } from '@utils/product';\nimport ReleaseExtraFields from '@form/extra-field/ReleaseExtraFields';\nimport ReleaseDescription from '@form/tickets/ReleaseDescription';\nimport useGlobal from '@hooks/useGlobal.ts';\n\ninterface Props {\n eventId: number;\n release: IReleaseShort;\n activeReleases: IReleaseShort[];\n currency: Currencies;\n index: number;\n}\n\nconst ReleaseWithMerchandise: React.FC<Props> = ({\n eventId,\n release,\n activeReleases,\n currency,\n index,\n}) => {\n const { t, lang } = useGlobal();\n const [openVariantDialog, setOpenVariantDialog] = useState<'add' | 'increase' | null>(null);\n const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);\n const { setValue } = useFormContext<ITicketForm>();\n const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });\n const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });\n const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);\n const countTickets = addedRelease?.quantity || 0;\n\n const getReleaseTitle = (release: IReleaseShort) =>\n release.releaseCategoryName || release.name || '';\n\n const getSelectedQuantity = (id: number) =>\n tickets.find((ticket) => ticket.releaseId === id)?.quantity || 0;\n\n const getAvailableTicketsForRelease = (release: ITicketFormTicket): number => {\n const selectedRelease = activeReleases?.find((item) => item.id === release.releaseId);\n const availableQuantity = selectedRelease ? selectedRelease.availableTickets : 0;\n return availableQuantity > 10 ? 10 : availableQuantity;\n };\n\n const isMaxQuantity = (releaseId: number) => {\n const release = tickets.find((ticket) => ticket.releaseId === releaseId);\n if (!release) return false;\n return getSelectedQuantity(releaseId) >= getAvailableTicketsForRelease(release);\n };\n\n const addRelease = (productsToAdd?: IEventProductForm[] | IEventProductForm) => {\n const normalizedProducts = Array.isArray(productsToAdd)\n ? productsToAdd\n : productsToAdd\n ? [productsToAdd]\n : [];\n const quantity = normalizedProducts.length ? normalizedProducts.length : 1;\n const extraFields = release.extraFields?.length\n ? Array.from({ length: quantity }, () =>\n release.extraFields!.map((field) => ({\n eventExtraFieldId: field.id,\n value: '',\n }))\n )\n : [];\n\n setValue(`tickets.${eventId}`, [\n ...tickets,\n {\n releaseId: release.id,\n quantity,\n itemName: '',\n price: 0,\n products: normalizedProducts,\n extraFields,\n },\n ]);\n setOpenVariantDialog(null);\n };\n\n const increaseQuantity = (productsToAdd?: IEventProductForm[] | IEventProductForm) => {\n const normalizedProducts = Array.isArray(productsToAdd)\n ? productsToAdd\n : productsToAdd\n ? [productsToAdd]\n : [];\n const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);\n if (addedRelease) {\n const increment = normalizedProducts.length ? normalizedProducts.length : 1;\n const maxQuantity = getAvailableTicketsForRelease(addedRelease);\n const availableIncrement = Math.max(\n 0,\n Math.min(increment, maxQuantity - Number(addedRelease.quantity))\n );\n if (availableIncrement === 0) return;\n\n const newQuantity = Number(addedRelease.quantity) + availableIncrement;\n const productsSlice = normalizedProducts.slice(0, availableIncrement);\n const extraFieldsToAdd = release.extraFields?.length\n ? Array.from({ length: availableIncrement }, () =>\n release.extraFields!.map((field) => ({\n eventExtraFieldId: field.id,\n value: '',\n }))\n )\n : [];\n\n setValue(\n `tickets.${eventId}`,\n tickets.map((ticket) =>\n ticket.releaseId === release.id\n ? {\n ...ticket,\n quantity: newQuantity > maxQuantity ? maxQuantity : newQuantity,\n products: [...ticket.products, ...productsSlice],\n extraFields: release.extraFields?.length\n ? [...ticket.extraFields, ...extraFieldsToAdd]\n : [],\n }\n : ticket\n )\n );\n setOpenVariantDialog(null);\n }\n };\n\n const decreaseQuantity = useCallback(() => {\n const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);\n if (addedRelease) {\n const newQuantity = Number(addedRelease.quantity) - 1;\n if (newQuantity < 1) {\n setValue(\n `tickets.${eventId}`,\n tickets.filter((ticket) => ticket.releaseId !== release.id)\n );\n } else {\n setValue(\n `tickets.${eventId}`,\n tickets.map((ticket) => {\n if (ticket.releaseId !== release.id) return ticket;\n\n return {\n ...ticket,\n quantity: newQuantity,\n products: ticket?.products?.slice(0, -1), // non-mutating \"pop\"\n extraFields: ticket?.extraFields?.slice(0, -1),\n };\n })\n );\n }\n }\n }, [tickets, release.id, setValue]);\n\n return (\n <Box\n sx={{\n p: 1,\n pb: 0,\n borderRadius: 1,\n bgcolor: 'grey.100',\n }}\n >\n <Stack spacing={0}>\n <Box>\n <Typography variant=\"subtitle1\" fontWeight={600}>\n {getReleaseTitle(release)}\n </Typography>\n </Box>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Stack>\n <Typography variant=\"body2\">\n {release.price === 0 ? t('free') : fCurrency(release.price, lang, currency)}\n </Typography>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={isDescriptionExpanded}\n onToggle={() => setIsDescriptionExpanded((prev) => !prev)}\n moreInfoLabel={t('more_info')}\n />\n </Stack>\n\n <TicketQuantityControl\n quantity={getSelectedQuantity(release.id)}\n isDisabled={release.locked}\n canAddFirst={!release.locked}\n canAddMore={!isMaxQuantity(release.id)}\n addLabel={t('add')}\n onDecrement={() => decreaseQuantity()}\n onIncrement={() =>\n release.product ? setOpenVariantDialog('increase') : increaseQuantity()\n }\n onAddFirst={() => (release.product ? setOpenVariantDialog('add') : addRelease())}\n />\n </Stack>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={isDescriptionExpanded}\n onToggle={() => setIsDescriptionExpanded((prev) => !prev)}\n moreInfoLabel={t('more_info')}\n showCollapse\n />\n {release.extraFields && release.extraFields.length > 0 && (\n <ReleaseExtraFields\n release={release}\n eventId={eventId}\n releaseIndex={index}\n quantity={countTickets}\n />\n )}\n {release.product && (\n <ProductVariantsDialog\n eventProduct={release.product}\n openDialog={!!openVariantDialog}\n callback={openVariantDialog === 'increase' ? increaseQuantity : addRelease}\n onClose={() => setOpenVariantDialog(null)}\n selectedQuantityByVariant={getSelectedQuantityByVariant(products, tickets)}\n eventId={eventId}\n canAddOnlyOneAtATime\n />\n )}\n </Stack>\n </Box>\n );\n};\n\nexport default ReleaseWithMerchandise;\n"],"names":[],"mappings":"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"}
@@ -26,7 +26,6 @@ const Shipping = ({ event }) => {
26
26
  });
27
27
  const flatProducts = useMemo(() => Object.values(products).flat(), [products]);
28
28
  const shippingMethodId = watch('shipping.shippingMethodId');
29
- const branchId = watch('shipping.branchId');
30
29
  const [displayBranchName, setDisplayBranchName] = useState(null);
31
30
  const [firstRender, setFirstRender] = useState(true);
32
31
  const filteredShippingMethods = useMemo(() => shippingMethods?.filter((shippingMethod) => !flatProducts?.find((product) => product.excludedShippingMethodIds?.includes(shippingMethod?.id)) &&
@@ -46,9 +45,20 @@ const Shipping = ({ event }) => {
46
45
  setDisplayBranchName(null);
47
46
  }
48
47
  };
48
+ const openPacketaWidget = () => {
49
+ const interval = setInterval(() => {
50
+ if (window.Packeta && window.Packeta.Widget) {
51
+ clearInterval(interval);
52
+ window.Packeta.Widget.pick(options?.packetaApiKey, onSelectBranch, {
53
+ language: lang,
54
+ });
55
+ }
56
+ }, 100);
57
+ };
49
58
  const handleChangeBranch = () => {
50
59
  setValue('shipping.branchId', null);
51
60
  setDisplayBranchName(null);
61
+ openPacketaWidget();
52
62
  };
53
63
  useEffect(() => {
54
64
  if (firstRender && filteredShippingMethods.length === 1) {
@@ -60,19 +70,7 @@ const Shipping = ({ event }) => {
60
70
  const selectedShippingMethod = shippingMethods.find((method) => method.id === Number(shippingMethodId));
61
71
  if (selectedShippingMethod) {
62
72
  setValue('shipping.price', selectedShippingMethod.price);
63
- if (selectedShippingMethod.type === ShippingTypes.PACKETA) {
64
- if (!branchId) {
65
- const interval = setInterval(() => {
66
- if (window.Packeta && window.Packeta.Widget) {
67
- clearInterval(interval);
68
- window.Packeta.Widget.pick(options?.packetaApiKey, onSelectBranch, {
69
- language: lang,
70
- });
71
- }
72
- }, 100);
73
- }
74
- }
75
- else {
73
+ if (selectedShippingMethod.type !== ShippingTypes.PACKETA) {
76
74
  setValue('shipping.branchId', null);
77
75
  setDisplayBranchName(null);
78
76
  }
@@ -80,12 +78,18 @@ const Shipping = ({ event }) => {
80
78
  else {
81
79
  setValue('shipping.price', 0);
82
80
  }
83
- }, [shippingMethodId, shippingMethods, branchId]);
81
+ }, [shippingMethodId, shippingMethods]);
84
82
  return (React.createElement(React.Fragment, null,
85
83
  React.createElement(ScriptLoader, null),
86
84
  React.createElement("div", null, isLoading ? (React.createElement(ShippingSkeleton, null)) : (React.createElement(React.Fragment, null, filteredShippingMethods.length === 0 ? (React.createElement(Typography, { variant: "h4", color: "error" }, t('event.tickets.stepper.5.error'))) : (React.createElement(React.Fragment, null,
87
85
  React.createElement(Controller, { name: "shipping.shippingMethodId", control: control, render: ({ field, fieldState: { error } }) => (React.createElement(FormControl, { component: "fieldset", sx: { width: '100%' } },
88
- React.createElement(RadioGroup, { ...field }, filteredShippingMethods.map((shippingMethod) => (React.createElement(ShippingMethodItem, { key: shippingMethod.id, active: Number(shippingMethodId) === shippingMethod.id },
86
+ React.createElement(RadioGroup, { ...field, onChange: (event, value) => {
87
+ field.onChange(event);
88
+ const selectedShippingMethod = filteredShippingMethods.find((method) => method.id === Number(value));
89
+ if (selectedShippingMethod?.type === ShippingTypes.PACKETA) {
90
+ openPacketaWidget();
91
+ }
92
+ } }, filteredShippingMethods.map((shippingMethod) => (React.createElement(ShippingMethodItem, { key: shippingMethod.id, active: Number(shippingMethodId) === shippingMethod.id, hasError: !!error },
89
93
  React.createElement(FormControlLabel, { value: shippingMethod.id, control: React.createElement(Radio, null), label: React.createElement(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", width: "100%" },
90
94
  React.createElement(Stack, { direction: "row", alignItems: "center" },
91
95
  React.createElement(Box, { sx: {
@@ -97,8 +101,7 @@ const Shipping = ({ event }) => {
97
101
  shippingMethod.id === Number(shippingMethodId) && (React.createElement(Typography, { variant: "caption", sx: { lineHeight: 1 } }, displayBranchName))),
98
102
  paymentImages[shippingMethod.type]),
99
103
  shippingMethod.type === ShippingTypes.PACKETA &&
100
- shippingMethod.id === Number(shippingMethodId) &&
101
- branchId && (React.createElement(Box, null,
104
+ shippingMethod.id === Number(shippingMethodId) && (React.createElement(Box, null,
102
105
  React.createElement(Button, { onClick: handleChangeBranch, variant: "outlined", size: "small" }, t('change'))))), sx: {
103
106
  '&:not(:last-of-type)': {
104
107
  mb: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"Shipping.js","sources":["../../../src/form/Shipping.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport useEventShippingMethods from '@hooks/data/useEventShippingMethods';\nimport { IEvent } from '@utils/types/event.type';\nimport ShippingSkeleton from '@form/shipping/ShippingSkeleton';\nimport {\n Box,\n Button,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n Stack,\n Typography,\n} from '@mui/material';\nimport { ShippingMethodItem } from '@form/style';\nimport { Iconify } from '@components/iconify';\nimport { Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport { ShippingTypes } from '@utils/data/shipping-method';\nimport useGlobal from '@hooks/useGlobal';\nimport ScriptLoader from '@form/ScriptLoader';\nimport { IEventProductForm } from '@utils/types/product.type';\n\ninterface Props {\n event: IEvent;\n}\n\nconst Shipping: React.FC<Props> = ({ event }) => {\n const { t, lang, options } = useGlobal();\n const { data: shippingMethods, isLoading } = useEventShippingMethods(event.id, {\n currency: event.currency,\n });\n const { control, watch, setValue } = useFormContext<ITicketForm>();\n const tickets: Record<string, ITicketFormTicket[]> = useWatch({\n name: 'tickets',\n defaultValue: {},\n });\n const flatTickets: ITicketFormTicket[] = useMemo(() => Object.values(tickets).flat(), [tickets]);\n const products: Record<string, IEventProductForm[]> = useWatch({\n name: 'products',\n defaultValue: {},\n });\n const flatProducts: IEventProductForm[] = useMemo(\n () => Object.values(products).flat(),\n [products]\n );\n const shippingMethodId = watch('shipping.shippingMethodId');\n const branchId = watch('shipping.branchId');\n const [displayBranchName, setDisplayBranchName] = useState<string | null>(null);\n const [firstRender, setFirstRender] = useState<boolean>(true);\n const filteredShippingMethods = useMemo(\n () =>\n shippingMethods?.filter(\n (shippingMethod) =>\n !flatProducts?.find((product) =>\n product.excludedShippingMethodIds?.includes(shippingMethod?.id)\n ) &&\n !flatTickets.find((ticket) =>\n ticket.products.find((product) =>\n product.excludedShippingMethodIds?.includes(shippingMethod?.id)\n )\n )\n ),\n [shippingMethods, shippingMethodId, flatTickets, flatProducts]\n );\n\n const paymentImages = {\n [ShippingTypes.PACKETA]: (\n <Iconify icon=\"arcticons:packeta\" color=\"rgb(186,27,2)\" width={32} height={32} />\n ),\n [ShippingTypes.PICK_UP]: <Iconify icon=\"flowbite:store-solid\" width={32} height={32} />,\n };\n\n const onSelectBranch = (branch: any) => {\n if (branch) {\n setValue('shipping.branchId', branch.id);\n setDisplayBranchName(branch.name);\n } else {\n setValue('shipping.shippingMethodId', null);\n setValue('shipping.branchId', null);\n setDisplayBranchName(null);\n }\n };\n\n const handleChangeBranch = () => {\n setValue('shipping.branchId', null);\n setDisplayBranchName(null);\n };\n\n useEffect(() => {\n if (firstRender && filteredShippingMethods.length === 1) {\n setValue('shipping.shippingMethodId', filteredShippingMethods[0].id);\n setFirstRender(false);\n }\n }, [firstRender, filteredShippingMethods]);\n\n useEffect(() => {\n const selectedShippingMethod = shippingMethods.find(\n (method) => method.id === Number(shippingMethodId)\n );\n\n if (selectedShippingMethod) {\n setValue('shipping.price', selectedShippingMethod.price);\n\n if (selectedShippingMethod.type === ShippingTypes.PACKETA) {\n if (!branchId) {\n const interval = setInterval(() => {\n if (window.Packeta && window.Packeta.Widget) {\n clearInterval(interval);\n window.Packeta.Widget.pick(options?.packetaApiKey, onSelectBranch, {\n language: lang,\n });\n }\n }, 100);\n }\n } else {\n setValue('shipping.branchId', null);\n setDisplayBranchName(null);\n }\n } else {\n setValue('shipping.price', 0);\n }\n }, [shippingMethodId, shippingMethods, branchId]);\n\n return (\n <>\n <ScriptLoader />\n <div>\n {isLoading ? (\n <ShippingSkeleton />\n ) : (\n <>\n {filteredShippingMethods.length === 0 ? (\n <Typography variant=\"h4\" color=\"error\">\n {t('event.tickets.stepper.5.error')}\n </Typography>\n ) : (\n <>\n <Controller\n name=\"shipping.shippingMethodId\"\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormControl component=\"fieldset\" sx={{ width: '100%' }}>\n <RadioGroup {...field}>\n {filteredShippingMethods.map((shippingMethod) => (\n <ShippingMethodItem\n key={shippingMethod.id}\n active={Number(shippingMethodId) === shippingMethod.id}\n >\n <FormControlLabel\n value={shippingMethod.id}\n control={<Radio />}\n label={\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Stack direction=\"row\" alignItems=\"center\">\n <Box\n sx={{\n marginRight: 2,\n }}\n >\n <Typography sx={{ lineHeight: 1.2 }}>\n {t(`shipping_method.types.${shippingMethod.type}`)}\n </Typography>\n {displayBranchName &&\n shippingMethod.type === ShippingTypes.PACKETA &&\n shippingMethod.id === Number(shippingMethodId) && (\n <Typography variant=\"caption\" sx={{ lineHeight: 1 }}>\n {displayBranchName}\n </Typography>\n )}\n </Box>\n {paymentImages[shippingMethod.type]}\n </Stack>\n {shippingMethod.type === ShippingTypes.PACKETA &&\n shippingMethod.id === Number(shippingMethodId) &&\n branchId && (\n <Box>\n <Button\n onClick={handleChangeBranch}\n variant=\"outlined\"\n size=\"small\"\n >\n {t('change')}\n </Button>\n </Box>\n )}\n </Stack>\n }\n sx={{\n '&:not(:last-of-type)': {\n mb: 0,\n },\n '& .MuiFormControlLabel-label': {\n width: '100%',\n mr: 0,\n },\n }}\n />\n </ShippingMethodItem>\n ))}\n </RadioGroup>\n\n {!!error && (\n <FormHelperText error={!!error} sx={{ mx: 0 }}>\n {error?.message}\n </FormHelperText>\n )}\n </FormControl>\n )}\n />\n </>\n )}\n </>\n )}\n </div>\n </>\n );\n};\n\nexport default Shipping;\n"],"names":[],"mappings":";;;;;;;;;;;AA4BA,MAAM,QAAQ,GAAoB,CAAC,EAAE,KAAK,EAAE,KAAI;IAC9C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE;AACxC,IAAA,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE;QAC7E,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACzB,KAAA,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAe;IAClE,MAAM,OAAO,GAAwC,QAAQ,CAAC;AAC5D,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,YAAY,EAAE,EAAE;AACjB,KAAA,CAAC;IACF,MAAM,WAAW,GAAwB,OAAO,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAwC,QAAQ,CAAC;AAC7D,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,EAAE;AACjB,KAAA,CAAC;IACF,MAAM,YAAY,GAAwB,OAAO,CAC/C,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EACpC,CAAC,QAAQ,CAAC,CACX;AACD,IAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,2BAA2B,CAAC;AAC3D,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC;IAC3C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IAC/E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC;AAC7D,IAAA,MAAM,uBAAuB,GAAG,OAAO,CACrC,MACE,eAAe,EAAE,MAAM,CACrB,CAAC,cAAc,KACb,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,OAAO,KAC1B,OAAO,CAAC,yBAAyB,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAChE;QACD,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAC3B,OAAO,CAAC,yBAAyB,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAChE,CACF,CACJ,EACH,CAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAC/D;AAED,IAAA,MAAM,aAAa,GAAG;QACpB,CAAC,aAAa,CAAC,OAAO,IACpB,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,mBAAmB,EAAC,KAAK,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAA,CAAI,CAClF;AACD,QAAA,CAAC,aAAa,CAAC,OAAO,GAAG,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,sBAAsB,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAA,CAAI;KACxF;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,MAAW,KAAI;QACrC,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,CAAC;AACxC,YAAA,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;;aAC5B;AACL,YAAA,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC;AAC3C,YAAA,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC;YACnC,oBAAoB,CAAC,IAAI,CAAC;;AAE9B,KAAC;IAED,MAAM,kBAAkB,GAAG,MAAK;AAC9B,QAAA,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC;QACnC,oBAAoB,CAAC,IAAI,CAAC;AAC5B,KAAC;IAED,SAAS,CAAC,MAAK;QACb,IAAI,WAAW,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,QAAQ,CAAC,2BAA2B,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,cAAc,CAAC,KAAK,CAAC;;AAEzB,KAAC,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAE1C,SAAS,CAAC,MAAK;QACb,MAAM,sBAAsB,GAAG,eAAe,CAAC,IAAI,CACjD,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC,CACnD;QAED,IAAI,sBAAsB,EAAE;AAC1B,YAAA,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,KAAK,CAAC;YAExD,IAAI,sBAAsB,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE;gBACzD,IAAI,CAAC,QAAQ,EAAE;AACb,oBAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;wBAChC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4BAC3C,aAAa,CAAC,QAAQ,CAAC;AACvB,4BAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE;AACjE,gCAAA,QAAQ,EAAE,IAAI;AACf,6BAAA,CAAC;;qBAEL,EAAE,GAAG,CAAC;;;iBAEJ;AACL,gBAAA,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC;gBACnC,oBAAoB,CAAC,IAAI,CAAC;;;aAEvB;AACL,YAAA,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;;KAEhC,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AAEjD,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;AACE,QAAA,KAAA,CAAA,aAAA,CAAC,YAAY,EAAA,IAAA,CAAG;AAChB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EACG,SAAS,IACR,KAAA,CAAA,aAAA,CAAC,gBAAgB,EAAA,IAAA,CAAG,KAEpB,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,uBAAuB,CAAC,MAAM,KAAK,CAAC,IACnC,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,IACnC,CAAC,CAAC,+BAA+B,CAAC,CACxB,KAEb,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;AACE,YAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,2BAA2B,EAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,MACvC,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,UAAU,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA;AACrD,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAA,GAAK,KAAK,EAAA,EAClB,uBAAuB,CAAC,GAAG,CAAC,CAAC,cAAc,MAC1C,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,EACjB,GAAG,EAAE,cAAc,CAAC,EAAE,EACtB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,cAAc,CAAC,EAAE,EAAA;AAEtD,wBAAA,KAAA,CAAA,aAAA,CAAC,gBAAgB,EAAA,EACf,KAAK,EAAE,cAAc,CAAC,EAAE,EACxB,OAAO,EAAE,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,IAAA,CAAG,EAClB,KAAK,EACH,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,SAAS,EAAC,KAAK,EACf,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,EACnB,KAAK,EAAC,MAAM,EAAA;gCAEZ,KAAA,CAAA,aAAA,CAAC,KAAK,IAAC,SAAS,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAA;oCACxC,KAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EACF,EAAE,EAAE;AACF,4CAAA,WAAW,EAAE,CAAC;AACf,yCAAA,EAAA;AAED,wCAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAA,EAChC,CAAC,CAAC,CAAA,sBAAA,EAAyB,cAAc,CAAC,IAAI,CAAA,CAAE,CAAC,CACvC;wCACZ,iBAAiB;AAChB,4CAAA,cAAc,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO;4CAC7C,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC,KAC5C,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,SAAS,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAA,EAChD,iBAAiB,CACP,CACd,CACC;AACL,oCAAA,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAC7B;AACP,gCAAA,cAAc,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO;AAC5C,oCAAA,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC;oCAC9C,QAAQ,KACN,KAAA,CAAA,aAAA,CAAC,GAAG,EAAA,IAAA;oCACF,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,OAAO,EAAA,EAEX,CAAC,CAAC,QAAQ,CAAC,CACL,CACL,CACP,CACG,EAEV,EAAE,EAAE;AACF,gCAAA,sBAAsB,EAAE;AACtB,oCAAA,EAAE,EAAE,CAAC;AACN,iCAAA;AACD,gCAAA,8BAA8B,EAAE;AAC9B,oCAAA,KAAK,EAAE,MAAM;AACb,oCAAA,EAAE,EAAE,CAAC;AACN,iCAAA;6BACF,EAAA,CACD,CACiB,CACtB,CAAC,CACS;AAEZ,oBAAA,CAAC,CAAC,KAAK,KACN,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAC1C,KAAK,EAAE,OAAO,CACA,CAClB,CACW,CACf,EAAA,CACD,CACD,CACJ,CACA,CACJ,CACG,CACL;AAEP;;;;"}
1
+ {"version":3,"file":"Shipping.js","sources":["../../../src/form/Shipping.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport useEventShippingMethods from '@hooks/data/useEventShippingMethods';\nimport { IEvent } from '@utils/types/event.type';\nimport ShippingSkeleton from '@form/shipping/ShippingSkeleton';\nimport {\n Box,\n Button,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n Stack,\n Typography,\n} from '@mui/material';\nimport { ShippingMethodItem } from '@form/style';\nimport { Iconify } from '@components/iconify';\nimport { Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport { ShippingTypes } from '@utils/data/shipping-method';\nimport useGlobal from '@hooks/useGlobal';\nimport ScriptLoader from '@form/ScriptLoader';\nimport { IEventProductForm } from '@utils/types/product.type';\n\ninterface Props {\n event: IEvent;\n}\n\nconst Shipping: React.FC<Props> = ({ event }) => {\n const { t, lang, options } = useGlobal();\n const { data: shippingMethods, isLoading } = useEventShippingMethods(event.id, {\n currency: event.currency,\n });\n const { control, watch, setValue } = useFormContext<ITicketForm>();\n const tickets: Record<string, ITicketFormTicket[]> = useWatch({\n name: 'tickets',\n defaultValue: {},\n });\n const flatTickets: ITicketFormTicket[] = useMemo(() => Object.values(tickets).flat(), [tickets]);\n const products: Record<string, IEventProductForm[]> = useWatch({\n name: 'products',\n defaultValue: {},\n });\n const flatProducts: IEventProductForm[] = useMemo(\n () => Object.values(products).flat(),\n [products]\n );\n const shippingMethodId = watch('shipping.shippingMethodId');\n const [displayBranchName, setDisplayBranchName] = useState<string | null>(null);\n const [firstRender, setFirstRender] = useState<boolean>(true);\n const filteredShippingMethods = useMemo(\n () =>\n shippingMethods?.filter(\n (shippingMethod) =>\n !flatProducts?.find((product) =>\n product.excludedShippingMethodIds?.includes(shippingMethod?.id)\n ) &&\n !flatTickets.find((ticket) =>\n ticket.products.find((product) =>\n product.excludedShippingMethodIds?.includes(shippingMethod?.id)\n )\n )\n ),\n [shippingMethods, shippingMethodId, flatTickets, flatProducts]\n );\n\n const paymentImages = {\n [ShippingTypes.PACKETA]: (\n <Iconify icon=\"arcticons:packeta\" color=\"rgb(186,27,2)\" width={32} height={32} />\n ),\n [ShippingTypes.PICK_UP]: <Iconify icon=\"flowbite:store-solid\" width={32} height={32} />,\n };\n\n const onSelectBranch = (branch: any) => {\n if (branch) {\n setValue('shipping.branchId', branch.id);\n setDisplayBranchName(branch.name);\n } else {\n setValue('shipping.shippingMethodId', null);\n setValue('shipping.branchId', null);\n setDisplayBranchName(null);\n }\n };\n\n const openPacketaWidget = () => {\n const interval = setInterval(() => {\n if (window.Packeta && window.Packeta.Widget) {\n clearInterval(interval);\n window.Packeta.Widget.pick(options?.packetaApiKey, onSelectBranch, {\n language: lang,\n });\n }\n }, 100);\n };\n\n const handleChangeBranch = () => {\n setValue('shipping.branchId', null);\n setDisplayBranchName(null);\n openPacketaWidget();\n };\n\n useEffect(() => {\n if (firstRender && filteredShippingMethods.length === 1) {\n setValue('shipping.shippingMethodId', filteredShippingMethods[0].id);\n setFirstRender(false);\n }\n }, [firstRender, filteredShippingMethods]);\n\n useEffect(() => {\n const selectedShippingMethod = shippingMethods.find(\n (method) => method.id === Number(shippingMethodId)\n );\n\n if (selectedShippingMethod) {\n setValue('shipping.price', selectedShippingMethod.price);\n\n if (selectedShippingMethod.type !== ShippingTypes.PACKETA) {\n setValue('shipping.branchId', null);\n setDisplayBranchName(null);\n }\n } else {\n setValue('shipping.price', 0);\n }\n }, [shippingMethodId, shippingMethods]);\n\n return (\n <>\n <ScriptLoader />\n <div>\n {isLoading ? (\n <ShippingSkeleton />\n ) : (\n <>\n {filteredShippingMethods.length === 0 ? (\n <Typography variant=\"h4\" color=\"error\">\n {t('event.tickets.stepper.5.error')}\n </Typography>\n ) : (\n <>\n <Controller\n name=\"shipping.shippingMethodId\"\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormControl component=\"fieldset\" sx={{ width: '100%' }}>\n <RadioGroup\n {...field}\n onChange={(event, value) => {\n field.onChange(event);\n const selectedShippingMethod = filteredShippingMethods.find(\n (method) => method.id === Number(value)\n );\n\n if (selectedShippingMethod?.type === ShippingTypes.PACKETA) {\n openPacketaWidget();\n }\n }}\n >\n {filteredShippingMethods.map((shippingMethod) => (\n <ShippingMethodItem\n key={shippingMethod.id}\n active={Number(shippingMethodId) === shippingMethod.id}\n hasError={!!error}\n >\n <FormControlLabel\n value={shippingMethod.id}\n control={<Radio />}\n label={\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Stack direction=\"row\" alignItems=\"center\">\n <Box\n sx={{\n marginRight: 2,\n }}\n >\n <Typography sx={{ lineHeight: 1.2 }}>\n {t(`shipping_method.types.${shippingMethod.type}`)}\n </Typography>\n {displayBranchName &&\n shippingMethod.type === ShippingTypes.PACKETA &&\n shippingMethod.id === Number(shippingMethodId) && (\n <Typography variant=\"caption\" sx={{ lineHeight: 1 }}>\n {displayBranchName}\n </Typography>\n )}\n </Box>\n {paymentImages[shippingMethod.type]}\n </Stack>\n {shippingMethod.type === ShippingTypes.PACKETA &&\n shippingMethod.id === Number(shippingMethodId) && (\n <Box>\n <Button\n onClick={handleChangeBranch}\n variant=\"outlined\"\n size=\"small\"\n >\n {t('change')}\n </Button>\n </Box>\n )}\n </Stack>\n }\n sx={{\n '&:not(:last-of-type)': {\n mb: 0,\n },\n '& .MuiFormControlLabel-label': {\n width: '100%',\n mr: 0,\n },\n }}\n />\n </ShippingMethodItem>\n ))}\n </RadioGroup>\n\n {!!error && (\n <FormHelperText error={!!error} sx={{ mx: 0 }}>\n {error?.message}\n </FormHelperText>\n )}\n </FormControl>\n )}\n />\n </>\n )}\n </>\n )}\n </div>\n </>\n );\n};\n\nexport default Shipping;\n"],"names":[],"mappings":"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"}