{"version":3,"file":"static/chunks/pages/index-7163307577658414.js","mappings":"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","sources":["webpack://_N_E/./assets/svg/close.svg","webpack://_N_E/./assets/svg/rastel_coin.svg","webpack://_N_E/","webpack://_N_E/./components/common/Button/Button.tsx","webpack://_N_E/./graphql/stripe/subscriptionPlan/getCurrentUserSubscriptions.ts","webpack://_N_E/./utils/utilsDistance.ts","webpack://_N_E/./components/common/CardParkingListItem/Skeleton.tsx","webpack://_N_E/./components/common/CardParkingListItem/CardParkingList.tsx","webpack://_N_E/./assets/svg/id_document.svg","webpack://_N_E/./assets/svg/rastel_coin.svg?cf57","webpack://_N_E/./assets/svg/requires_approval.svg","webpack://_N_E/./assets/svg/unlock.svg?4b88","webpack://_N_E/./utils/utilsUser.ts","webpack://_N_E/./utils/utilsParking.ts","webpack://_N_E/./features/parkings/GateSelector/GateSelector.tsx","webpack://_N_E/./graphql/events/latestEventQuery.ts","webpack://_N_E/./graphql/parkings/getParkingByIdQuery.ts","webpack://_N_E/./graphql/parkings/getParkingsWithinDistance.ts","webpack://_N_E/./graphql/parkings/requestAccessToParkingMutation.ts","webpack://_N_E/./graphql/parkings/unlockParkingByIdMutation.ts","webpack://_N_E/./graphql/stripe/subscriptionPlan/subscribeToPlanMutation.ts","webpack://_N_E/./assets/svg/info.svg","webpack://_N_E/./components/common/CardParkingDetail/Skeleton.tsx","webpack://_N_E/./assets/svg/unlock.svg","webpack://_N_E/./slices/usePaymentPlanDetailsSlice.ts","webpack://_N_E/./components/common/CardParkingDetail/utils.ts","webpack://_N_E/./components/common/CardParkingDetail/CardParkingDetail.tsx","webpack://_N_E/./utils/utilsString.ts","webpack://_N_E/./utils/utilsQuests.ts","webpack://_N_E/./graphql/vendors/createVendorClaimMutation.ts","webpack://_N_E/./assets/svg/leave_a_comment.svg","webpack://_N_E/./components/common/CardVendorDetail/CardVendorDetail.tsx","webpack://_N_E/./components/common/Drawer/Drawer.tsx","webpack://_N_E/./hooks/useParkings.tsx","webpack://_N_E/./assets/svg/star_empty.svg","webpack://_N_E/./components/common/Map/Map.tsx","webpack://_N_E/./assets/svg/star_filled.svg","webpack://_N_E/./graphql/reviews/createReviewMutation.ts","webpack://_N_E/./components/common/FeedbackModal/FeedbackModal.tsx","webpack://_N_E/./components/common/StatusPopup/utils/inferTypes.ts","webpack://_N_E/./components/common/StatusPopup/StatusPopup.tsx","webpack://_N_E/./graphql/stripe/identity/createIdentityVerificationSession.ts","webpack://_N_E/./components/common/IdentityPopup/IdentityPopup.tsx","webpack://_N_E/./graphql/sessions/getOngoingParkingSessionQuery.ts","webpack://_N_E/./graphql/vendors/getAllVendorsQuery.ts","webpack://_N_E/./graphql/vendors/getVendorByIdQuery.ts","webpack://_N_E/./graphql/events/updateEventMutation.ts","webpack://_N_E/./graphql/rewards/createRewardCustomMutation.ts","webpack://_N_E/./graphql/parkingIssues/createParkingIssueMutation.ts","webpack://_N_E/./components/common/ReportIssueModal/ReportIssueModal.tsx","webpack://_N_E/./graphql/sessions/startParkingSessionMutation.ts","webpack://_N_E/./graphql/sessions/endParkingsessionMutation.ts","webpack://_N_E/./components/common/UnlockModal/UnlockModal.tsx","webpack://_N_E/./components/common/SubscriptionPlanModal/SubscriptionPlanModal.tsx","webpack://_N_E/./components/common/SessionTimer/SessionTimer.tsx","webpack://_N_E/./utils/utilsTime.ts","webpack://_N_E/./pages/index.tsx","webpack://_N_E/./hooks/useVendors.tsx","webpack://_N_E/./utils/utilsDocumentRenderers.tsx","webpack://_N_E/./utils/utilsToast.ts","webpack://_N_E/./assets/styles/pages/BrowsePage.module.sass"],"sourcesContent":["var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgClose = function SvgClose(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 1.611 13.49 0 7.5 6.389 1.51 0 0 1.611 5.99 8 0 14.389 1.51 16 7.5 9.611 13.49 16 15 14.389 9.01 8 15 1.611Z\"\n })));\n};\n\nexport default SvgClose;","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgRastelCoin = function SvgRastelCoin(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 22,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5 10.534c0 5.543-4.479 10.033-10 10.033s-10-4.49-10-10.033C.5 4.99 4.979.5 10.5.5s10 4.49 10 10.034Z\",\n fill: \"#fff\",\n stroke: \"#2B0088\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.036 6.727V4.74h6.14c1.531 0 2.178 1.325 2.31 1.987v3.312c0 1.43-1.188 1.965-1.783 2.053l2.047 4.503h-2.575l-1.914-4.503H9.412v4.503H7.036v-4.503h-2.31v-2.053h2.31V8.913h-2.31V6.727h2.31Z\",\n fill: \"#2B0088\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.214 9.64V6.728h3.103c.476 0 .594.353.594.53.022.552.04 1.722-.066 1.987a.676.676 0 0 1-.462.397H9.214Z\",\n fill: \"#fff\"\n })));\n};\n\nexport default SvgRastelCoin;","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/\",\n function () {\n return require(\"private-next-pages/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/\"])\n });\n }\n ","import { Loader } from '../../Loader';\nimport { ButtonProps } from './props';\n\nexport const Button = ({\n className = '',\n type = 'primary',\n Icon,\n disabled = false,\n loading = false,\n onClick,\n children,\n}: ButtonProps) => {\n return (\n \n
\n {loading ? (\n \n ) : (\n <>\n {Icon && (\n
{}
\n )}\n {children}\n \n )}\n
\n \n );\n};\n","import { gql } from '@apollo/client';\n\nexport const GetCurrentUserSubscriptionsQuery = gql`\n query GetMySubscriptions {\n getCurrentUserSubscriptionsStripe\n }\n`;\n","import { getDistance } from \"geolib\";\n\nexport const withinRegion = (position: any, radius: any) => {\n const to = { latitude: position.lat, longitude: position.lng };\n\n return (point: any) => {\n const from = { latitude: point.lat, longitude: point.lng };\n return getDistance(from, to) <= radius;\n };\n};\n\nexport const distanceBetweenTwoPoints = (point1: any, point2: any) => {\n const to = {\n latitude: parseFloat(point1.lat),\n longitude: parseFloat(point1.lng),\n };\n const from = {\n latitude: parseFloat(point2.lat),\n longitude: parseFloat(point2.lng),\n };\n\n return getDistance(from, to);\n};\n","import Skeleton from 'react-loading-skeleton';\n\nexport const AllCardParkingLoadingSkeleton = () => (\n
\n {Array.from(Array(3).keys()).map((x, i) => (\n
\n \n \n \n
\n ))}\n
\n);\n","import Image from 'next/image';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport 'swiper/css';\nimport { distanceBetweenTwoPoints } from '../../../utils/utilsDistance';\nimport { ParkingType } from '../../../utils/utilTypes';\nimport { AllCardParkingLoadingSkeleton } from './Skeleton';\nimport { CardParkingListItemProps } from './props';\nimport { useTranslation } from 'react-i18next';\nimport { useQuery } from '@apollo/client';\nimport { GetOngoingParkingSessionQuery } from '../../../graphql/sessions/getOngoingParkingSessionQuery';\nexport const CardParkingList = ({\n center,\n parkings,\n isLoading,\n latestEvent,\n ongoingSession,\n onClick,\n}: CardParkingListItemProps) => {\n const { t } = useTranslation();\n\n if (isLoading) {\n return ;\n }\n\n const sorterParkings = parkings\n .map((x) => ({\n ...x,\n distance: distanceBetweenTwoPoints(center, { lat: x.lat, lng: x.lng }),\n }))\n .filter((p) => {\n return !p.referenceParking;\n })\n .sort((a, b) => a.distance - b.distance);\n\n return (\n \n {sorterParkings\n .map((parking: ParkingType) => {\n const isParkingInSession =\n ongoingSession?.parking?.id === parking.id ||\n ongoingSession?.parking?.referenceParking?.id === parking.id;\n\n return {\n ...parking,\n isParkingInSession,\n isDisabled: false,\n };\n })\n .sort(\n (a: ParkingType, b: ParkingType) =>\n Number(b.isParkingInSession) - Number(a.isParkingInSession)\n )\n .map((parking: ParkingType) => {\n return (\n !parking.isDisabled && onClick(parking)}\n >\n \n {parking?.photo && (\n <>\n \n\n \n \n )}\n
\n {parking.capacity - parking.occupied} {t('availableSpots')}\n
\n \n
\n {parking.name}\n
\n
\n {parking.full_address || t('noAddress')}\n
\n \n );\n })}\n \n );\n};\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgIdDocument = function SvgIdDocument(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 19,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.2 17.5v.833h1.6V17.5H3.2Zm8 0v.833h1.6V17.5h-1.6Zm-6.4 0v-.833H3.2v.833h1.6Zm6.4-.833v.833h1.6v-.833h-1.6ZM8 13.333c.849 0 1.663.351 2.263.977.6.625.937 1.473.937 2.357h1.6a5.108 5.108 0 0 0-1.406-3.536A4.705 4.705 0 0 0 8 11.667v1.666Zm-3.2 3.334c0-.884.337-1.732.937-2.357A3.137 3.137 0 0 1 8 13.333v-1.666a4.705 4.705 0 0 0-3.394 1.464A5.108 5.108 0 0 0 3.2 16.667h1.6ZM8 3.333c-.849 0-1.663.352-2.263.977A3.405 3.405 0 0 0 4.8 6.667h1.6c0-.442.169-.866.469-1.179C7.169 5.176 7.576 5 8 5V3.333Zm3.2 3.334c0-.884-.337-1.732-.937-2.357A3.136 3.136 0 0 0 8 3.333V5c.424 0 .831.176 1.131.488.3.313.469.737.469 1.179h1.6ZM8 10c.849 0 1.663-.351 2.263-.976.6-.625.937-1.473.937-2.357H9.6c0 .442-.169.866-.469 1.178-.3.313-.707.488-1.131.488V10Zm0-1.667c-.424 0-.831-.175-1.131-.488A1.703 1.703 0 0 1 6.4 6.667H4.8c0 .884.337 1.732.937 2.357.6.625 1.414.976 2.263.976V8.333ZM2.4 1.667h19.2V0H2.4v1.667Zm20 .833v13.333H24V2.5h-1.6Zm-.8 14.167H2.4v1.666h19.2v-1.666Zm-20-.834V2.5H0v13.333h1.6Zm.8.834a.784.784 0 0 1-.566-.244.851.851 0 0 1-.234-.59H0c0 .663.253 1.3.703 1.768.45.469 1.06.732 1.697.732v-1.666Zm20-.834a.852.852 0 0 1-.234.59.784.784 0 0 1-.566.244v1.666c.636 0 1.247-.263 1.697-.732.45-.469.703-1.105.703-1.768h-1.6Zm-.8-14.166c.212 0 .416.087.566.244.15.156.234.368.234.589H24c0-.663-.253-1.299-.703-1.768A2.352 2.352 0 0 0 21.6 0v1.667ZM2.4 0C1.763 0 1.153.263.703.732A2.554 2.554 0 0 0 0 2.5h1.6c0-.221.084-.433.234-.59a.784.784 0 0 1 .566-.243V0Zm12 6.667h4.8V5h-4.8v1.667Zm0 5h4.8V10h-4.8v1.667Z\",\n fill: \"#fff\"\n })));\n};\n\nexport default SvgIdDocument;","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgRastelCoin = function SvgRastelCoin(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 22,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5 10.534c0 5.543-4.479 10.033-10 10.033s-10-4.49-10-10.033C.5 4.99 4.979.5 10.5.5s10 4.49 10 10.034Z\",\n fill: \"#fff\",\n stroke: \"#2B0088\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.036 6.727V4.74h6.14c1.531 0 2.178 1.325 2.31 1.987v3.312c0 1.43-1.188 1.965-1.783 2.053l2.047 4.503h-2.575l-1.914-4.503H9.412v4.503H7.036v-4.503h-2.31v-2.053h2.31V8.913h-2.31V6.727h2.31Z\",\n fill: \"#2B0088\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.214 9.64V6.728h3.103c.476 0 .594.353.594.53.022.552.04 1.722-.066 1.987a.676.676 0 0 1-.462.397H9.214Z\",\n fill: \"#fff\"\n })));\n};\n\nexport default SvgRastelCoin;","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgRequiresApproval = function SvgRequiresApproval(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 4 12 14.01l-3-3\"\n })));\n};\n\nexport default SvgRequiresApproval;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgUnlock = function SvgUnlock(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 23,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.208 17.332a2.173 2.173 0 0 0 2.167-2.166 2.173 2.173 0 0 0-2.167-2.167 2.173 2.173 0 0 0-2.166 2.167c0 1.191.975 2.166 2.166 2.166Zm6.5-9.75h-1.083V5.417A5.419 5.419 0 0 0 9.208 0a5.418 5.418 0 0 0-5.416 5.416H5.85a3.361 3.361 0 0 1 3.358-3.358 3.361 3.361 0 0 1 3.359 3.358v2.167H2.708A2.173 2.173 0 0 0 .542 9.749v10.833c0 1.192.975 2.167 2.166 2.167h13a2.173 2.173 0 0 0 2.167-2.167V9.75a2.173 2.173 0 0 0-2.167-2.166Zm0 13h-13V9.75h13v10.833Z\",\n fill: \"#fff\"\n })));\n};\n\nexport default SvgUnlock;","import { ParkingType, UserType } from './utilTypes';\n\nexport const isUserIdentityVerified = (user: UserType | null) => {\n if (!user) {\n return false;\n }\n\n if (user.stripeVerificationSession) {\n return user.stripeVerificationSession.status === 'verified';\n }\n\n return false;\n};\n\nexport const isUserParkingRequestApproved = (\n user: UserType | null,\n parking: ParkingType\n) => {\n if (!user) {\n return false;\n }\n\n if (user.userParkings) {\n const foundParking = user.userParkings.find(\n (userParking) => userParking.parking.id === parking.id\n );\n\n if (!foundParking) {\n return false;\n }\n\n return foundParking.status === 'approved';\n }\n\n return false;\n};\n","import { act } from 'react-dom/test-utils';\nimport {\n GateOption,\n GateType,\n LatestEventType,\n ParkingSession,\n ParkingType,\n ParkingTypeEnum,\n UserType,\n} from './utilTypes';\nimport {\n isUserIdentityVerified,\n isUserParkingRequestApproved,\n} from './utilsUser';\n\nexport const isRequestInexistent = (\n user: UserType | null,\n parking: ParkingType\n) => {\n return (\n parking.requiresApproval && !isUserParkingRequestApproved(user, parking)\n );\n};\n\nexport const isRequestPendingApproval = (parking: ParkingType) => {\n return parking?.requiresApproval && parking?.status === 'pending';\n};\n\nexport const isIDValidationCase = (\n user: UserType | null,\n parking: ParkingType\n) => {\n return parking.requiresIdVerification && !isUserIdentityVerified(user);\n};\n\nexport const isSubscriptionCase = (\n user: UserType | null,\n parking: ParkingType,\n userSubscriptions: any[] = []\n) => {\n if (!user || parking.subscriptionPlans?.length === 0) {\n return false;\n }\n\n const hasActiveSubscription = parking.subscriptionPlans.some((plan) => {\n const foundMatchingSubscription = userSubscriptions.find(\n (s) => s.metadata.subscriptionPlanId === plan.id\n );\n\n if (!foundMatchingSubscription) {\n return false;\n }\n\n return foundMatchingSubscription.status === 'active';\n });\n\n return !hasActiveSubscription;\n};\n\nexport const getParkingGatesCount = (parking: ParkingType) => {\n if (!parking?.devices) {\n return 0;\n }\n\n if (parking?.devices.length === 0) {\n return 1;\n }\n\n return parking.devices.reduce((acc, device) => {\n return acc + device.gatesCount;\n }, 0);\n};\n\nexport const buildParkingGateOptions = (\n parking: ParkingType,\n currentUser: UserType | null\n) => {\n const gateOptions: GateOption[] = [];\n\n if (!parking?.devices) {\n return gateOptions;\n }\n\n let count = 0;\n\n const activeSession = getActiveSession(parking, currentUser);\n\n parking.devices.forEach((device, idx) => {\n for (let i = 1; i <= device.gates.length; i++) {\n const currentGate = device.gates[i - 1];\n gateOptions.push({\n value: `${device.mqttId}/${currentGate.order}`,\n label: currentGate.alias,\n capacity: currentGate.capacity,\n isSingularGate: checkIfGateIsSingular(currentGate),\n canUnlock: checkIfCanUnlockGate(\n currentGate,\n currentUser,\n activeSession\n ),\n hasSessionInFuture: checkIfHasSessionInFuture(\n currentGate,\n activeSession\n ),\n });\n }\n count = device.gatesCount;\n });\n\n return gateOptions;\n};\n\nexport const checkIfGateIsSingular = (gate: GateType) => {\n return gate?.capacity === 1;\n};\n\nexport const isOwnerOfSession = (\n session: ParkingSession,\n user: UserType | null\n) => {\n return session.user.id === user?.id;\n};\n\nexport const checkIfCanUnlockGate = (\n gate: GateType,\n user: UserType | null,\n activeSession: ParkingSession | null\n) => {\n // if there's any active session, but in the future, any user can unlock the gate (long-term booking)\n if (activeSession && new Date(activeSession.startedAt) > new Date()) {\n return true;\n }\n\n if (activeSession && activeSession.gate.id !== gate.id) {\n return false;\n }\n\n const isGateSingular = checkIfGateIsSingular(gate);\n\n if (!isGateSingular || gate.sessions.length === 0) {\n return gate.status === 'available';\n }\n\n // Singular gate checks below\n\n const orderedSessions = gate.sessions.sort((a, b) => {\n return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();\n });\n\n const latestSession = orderedSessions[0];\n\n if (!latestSession) return true;\n\n const isOngoingSession =\n new Date(latestSession.startedAt) < new Date() && !latestSession.endedAt;\n\n const isOwner = isOwnerOfSession(latestSession, user);\n if (isOngoingSession && isOwner) return true;\n if (isOngoingSession && !isOwner) return false;\n\n return true;\n};\n\nconst getActiveSession = (\n parking: ParkingType,\n currentUser: UserType | null\n) => {\n if (!parking?.devices) return null;\n\n const sessions = parking.devices.flatMap((device) => {\n return device.gates.flatMap((gate) => {\n return gate.sessions.filter((session) => {\n return (\n session.endedAt === null &&\n isOwnerOfSession(session, currentUser) &&\n checkIfGateIsSingular(gate)\n );\n });\n });\n });\n\n return sessions[sessions.length - 1] || null;\n};\n\nconst checkIfHasSessionInFuture = (\n gate: GateType,\n activeSession: ParkingSession | null\n) => {\n if (!activeSession) return false;\n\n if (activeSession.gate.id !== gate.id) return false;\n\n return new Date(activeSession.startedAt) > new Date();\n};\n\nexport const getActiveSessionFromLatestEvent = (\n event: LatestEventType,\n currentUser: UserType | null\n) => {\n if (!event || !event.gate || !event.gate.sessions) return null;\n\n const sessions = event.gate.sessions.filter((session) => {\n return (\n session.endedAt === null &&\n isOwnerOfSession(session, currentUser) &&\n checkIfGateIsSingular(event.gate) &&\n new Date(session.startedAt) < new Date()\n );\n });\n\n return sessions[sessions.length - 1] || null;\n};\n\nexport const getLabelsForParkingType = (\n t: any,\n type: ParkingTypeEnum\n): Record<'lock' | 'unlock' | 'title' | 'description', string | null> => {\n const DEFAULT_LABELS = {\n unlock: t('parkCase'),\n lock: t('pickUpCase'),\n title: t('gatesAreOpenTitle'),\n description: t('gatesAreOpenDescription'),\n };\n\n const labels: Record<\n ParkingTypeEnum,\n Record<'lock' | 'unlock' | 'title' | 'description', string | null>\n > = {\n parking: {\n unlock: t('parkCase'),\n lock: t('pickUpCase'),\n title: t('gatesAreOpenTitle'),\n description: t('gatesAreOpenDescription'),\n },\n rental: {\n unlock: t('rentalStartCase'),\n lock: t('rentalEndCase'),\n title: t('chainIsOpenTitle'),\n description: null,\n },\n };\n\n if (!labels[type]) {\n return DEFAULT_LABELS;\n }\n\n return labels[type];\n};\n","import { useTranslation } from 'react-i18next';\nimport { GateSelectorProps } from './props';\nimport {\n buildParkingGateOptions,\n getParkingGatesCount,\n} from '../../../utils/utilsParking';\nimport { useAuth } from '../../../lib/auth';\n\nexport const GateSelector = ({\n parking,\n selectedGate,\n onSelectGate,\n}: GateSelectorProps) => {\n const { t } = useTranslation();\n const { currentUser } = useAuth();\n\n return (\n
\n
\n
{t('selectGate')}
\n {parking.bookingLink && (\n \n {t('bookInAdvance')}\n \n )}\n
\n
\n {buildParkingGateOptions(parking, currentUser).map((gate) => {\n return (\n onSelectGate(gate)}\n key={gate.value}\n className={`flex justify-center transition-all items-center rounded-full font-mono shrink-0 w-12 h-12 \n ${\n gate.value === selectedGate?.value\n ? 'bg-primary text-white'\n : 'bg-secondary text-black'\n }\n ${\n !gate.canUnlock\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-primary hover:text-white'\n }\n ${gate.hasSessionInFuture ? 'animate-pulse' : ''}\n `}\n >\n {gate.label}\n \n );\n })}\n
\n
\n );\n};\n","import { gql } from '@apollo/client';\n\nexport const LatestEventQuery = gql`\n query latestEvent {\n latestEvent {\n id\n status\n type\n twilioCallSid\n twilioCallResponse\n gate {\n id\n alias\n order\n capacity\n sessions {\n id\n user {\n id\n email\n }\n startedAt\n endedAt\n }\n }\n parking {\n id\n type\n }\n user {\n email\n }\n updatedAt\n isAknowledgedByUser\n completedQuests {\n id\n createdAt\n quest {\n id\n title\n reward\n description\n }\n }\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const GetParkingByIdQuery = gql`\n query GetParkingByIdQuery($id: ID, $alias: String) {\n parkings(\n where: { OR: [{ id: { equals: $id } }, { alias: { equals: $alias } }] }\n ) {\n id\n name\n lat\n lng\n full_address\n layoutType\n networkingType\n capacity\n gatesCount\n occupied\n type\n devices(orderBy: { order: asc }) {\n mqttId\n gatesCount\n order\n gates(orderBy: { order: asc }) {\n id\n alias\n order\n capacity\n status\n sessions {\n id\n user {\n id\n }\n gate {\n id\n }\n startedAt\n endedAt\n createdAt\n }\n }\n }\n bookingLink\n photo {\n altText\n image {\n publicUrl\n }\n altText\n }\n\n campaigns {\n id\n startsAt\n endsAt\n }\n parkingQuests(where: { quest: { isActive: { equals: true } } }) {\n quest {\n id\n title\n description\n reward\n }\n }\n subscriptionPlans {\n id\n name\n price\n interval\n currency\n description {\n document\n }\n }\n isUnavailable\n requiresApproval\n requiresIdVerification\n status\n isInUnlockRadius @client\n isSelected @client\n\n referencedBy {\n id\n }\n referenceParking {\n id\n }\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const GetParkingsWithinDistance = gql`\n query GetParkingsNearLocation($lat: Float!, $lng: Float!) {\n parkingsNearLocation(lat: $lat, lng: $lng) {\n id\n name\n lat\n lng\n full_address\n photo {\n altText\n image {\n publicUrl\n }\n altText\n }\n capacity\n occupied\n isSelected @client\n isInUnlockRadius @client\n isUnavailable\n requiresIdVerification\n referenceParking {\n id\n name\n }\n }\n }\n`;\n","import { gql } from \"@apollo/client\";\n\nexport const RequestAccessToParkingMutation = gql`\n mutation requestAccess($parkingId: ID!) {\n requestAccess(parkingId: $parkingId) {\n id\n status\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const UnlockParkingByIdMutation = gql`\n mutation UnlockParkingById($parkingId: ID!, $type: String!, $gate: String) {\n unlock(parkingId: $parkingId, type: $type, gate: $gate) {\n id\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const SubscribeToPlanMutation = gql`\n mutation SubscribeToPlan(\n $subscriptionPlanId: ID!\n $parkingSpotId: ID!\n $locale: String!\n ) {\n subscribeToPlan(\n subscriptionPlanId: $subscriptionPlanId\n parkingSpotId: $parkingSpotId\n locale: $locale\n )\n }\n`;\n","var _circle, _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgInfo = function SvgInfo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 24,\n cy: 24,\n r: 24,\n fill: \"#300096\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 0C10.752 0 0 10.752 0 24s10.752 24 24 24 24-10.752 24-24S37.248 0 24 0Zm2.4 36h-4.8V21.6h4.8V36Zm0-19.2h-4.8V12h4.8v4.8Z\",\n fill: \"#E7DBFF\"\n })));\n};\n\nexport default SvgInfo;","import Skeleton from 'react-loading-skeleton';\n\nexport const CardParkingDetailLoadingSkeleton = () => (\n
\n
\n \n \n \n \n
\n
\n);\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgUnlock = function SvgUnlock(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 23,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.208 17.332a2.173 2.173 0 0 0 2.167-2.166 2.173 2.173 0 0 0-2.167-2.167 2.173 2.173 0 0 0-2.166 2.167c0 1.191.975 2.166 2.166 2.166Zm6.5-9.75h-1.083V5.417A5.419 5.419 0 0 0 9.208 0a5.418 5.418 0 0 0-5.416 5.416H5.85a3.361 3.361 0 0 1 3.358-3.358 3.361 3.361 0 0 1 3.359 3.358v2.167H2.708A2.173 2.173 0 0 0 .542 9.749v10.833c0 1.192.975 2.167 2.166 2.167h13a2.173 2.173 0 0 0 2.167-2.167V9.75a2.173 2.173 0 0 0-2.167-2.166Zm0 13h-13V9.75h13v10.833Z\",\n fill: \"#fff\"\n })));\n};\n\nexport default SvgUnlock;","import { create } from 'zustand';\nimport { SubscriptionPlanType } from '../utils/utilTypes';\n\ntype StateType = {\n paymentPlan: SubscriptionPlanType | null;\n handleSelectPlan: (plan: SubscriptionPlanType) => void;\n clearSelectedPlan: () => void;\n};\n\nexport const usePaymentPlanDetailsSlice = create((set) => ({\n paymentPlan: null,\n handleSelectPlan: (plan) => set({ paymentPlan: plan }),\n clearSelectedPlan: () => set({ paymentPlan: null }),\n}));\n","export const getCurrencySymbol = (currency: string) => {\n switch (currency) {\n case \"eur\":\n return \"€\";\n case \"usd\":\n return \"$\";\n case \"chf\":\n return \"CHF\";\n default:\n return \"RON\";\n }\n};\n","/// \n\nimport { useLazyQuery, useMutation, useQuery } from '@apollo/client';\nimport Image from 'next/image';\nimport { useRouter } from 'next/router';\nimport { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport CreditCardIcon from '../../../assets/svg/credit_card.svg?react';\nimport IdDocumentIcon from '../../../assets/svg/id_document.svg?react';\nimport RastelCoinIcon from '../../../assets/svg/rastel_coin.svg?react';\nimport RequiresApprovalIcon from '../../../assets/svg/requires_approval.svg?react';\nimport UnlockIcon from '../../../assets/svg/unlock.svg?react';\nimport { GateSelector } from '../../../features/parkings/GateSelector';\nimport { LatestEventQuery } from '../../../graphql/events/latestEventQuery';\nimport { GetParkingByIdQuery } from '../../../graphql/parkings/getParkingByIdQuery';\nimport { GetParkingsWithinDistance } from '../../../graphql/parkings/getParkingsWithinDistance';\nimport { RequestAccessToParkingMutation } from '../../../graphql/parkings/requestAccessToParkingMutation';\nimport { UnlockParkingByIdMutation } from '../../../graphql/parkings/unlockParkingByIdMutation';\nimport { SubscribeToPlanMutation } from '../../../graphql/stripe/subscriptionPlan/subscribeToPlanMutation';\nimport { useAuth } from '../../../lib/auth';\nimport {\n CompletedQuestType,\n GateOption,\n ParkingQuest,\n ParkingType,\n SubscriptionPlanType,\n} from '../../../utils/utilTypes';\nimport {\n buildParkingGateOptions,\n isIDValidationCase,\n isRequestInexistent,\n isRequestPendingApproval,\n isSubscriptionCase,\n} from '../../../utils/utilsParking';\nimport { calculateIfQuestIsCompleted } from '../../../utils/utilsQuests';\nimport { shortenText } from '../../../utils/utilsString';\nimport { toastManager } from '../../../utils/utilsToast';\nimport { Button } from '../Button';\nimport { CardParkingDetailLoadingSkeleton } from './Skeleton';\nimport { CardParkingDetailProps } from './props';\nimport { GetCurrentUserSubscriptionsQuery } from '../../../graphql/stripe/subscriptionPlan/getCurrentUserSubscriptions';\nimport { SubscriptionPlanModal } from '../SubscriptionPlanModal';\nimport InfoIcon from '../../../assets/svg/info.svg';\nimport { usePaymentPlanDetailsSlice } from '../../../slices/usePaymentPlanDetailsSlice';\nimport { getCurrencySymbol } from './utils';\nimport Link from 'next/link';\n\nexport const CardParkingDetail = ({\n parking,\n isLoading,\n handleStartPolling,\n isPollingForUnlockEvent,\n userSubscriptions,\n ongoingSession,\n}: CardParkingDetailProps) => {\n const [unlockParkingById, { data, loading: isLoadingUnlocking, error }] =\n useMutation(UnlockParkingByIdMutation);\n const [requestAccess, { loading: isLoadingRequestAccess }] = useMutation(\n RequestAccessToParkingMutation\n );\n const [\n subscribe,\n { data: subscribeData, loading: isLoadingSubscribe, error: subscribeError },\n ] = useMutation(SubscribeToPlanMutation);\n\n const subscriptionPlans = parking?.subscriptionPlans || [];\n const isParkingSpotWithSubscriptionPlan = subscriptionPlans.length > 0;\n\n const router = useRouter();\n const { currentUser } = useAuth();\n const { t, i18n } = useTranslation();\n const activeLanguage = i18n.language;\n const gateAlias = router.query.gate as String;\n const { handleSelectPlan } = usePaymentPlanDetailsSlice();\n\n // Initialize selectedGate based on gateAlias\n const initialSelectedGate = useMemo(() => {\n if (gateAlias) {\n return buildParkingGateOptions(parking, currentUser).find(\n (o) => o.label.toString() === gateAlias.toString()\n );\n }\n return null;\n }, [parking, currentUser, gateAlias]);\n\n const [selectedGate, setSelectedGate] = useState<\n GateOption | null | undefined\n >(initialSelectedGate);\n\n const [selectedSubscriptionPlan, setSelectedSubscriptionPlan] = useState<\n string | null\n >(null);\n\n if (isLoading || !parking) return ;\n\n const isSingularLayout =\n parking?.layoutType === 'singular' ||\n parking?.layoutType === 'internal_testing_purposes';\n\n const parkingQuests = parking?.parkingQuests || [];\n const hasAnyRequirements =\n parking.requiresApproval ||\n parking.requiresIdVerification ||\n subscriptionPlans?.length > 0;\n\n const userHasActiveSubscriptionPlan = subscriptionPlans.some((sp) => {\n return userSubscriptions.some((sub) => {\n return (\n sub.metadata.subscriptionPlanId === sp.id && sub.status === 'active'\n );\n });\n });\n const hasParkingQuests = parkingQuests.length > 0;\n const canShowGateSelector = () => {\n if (isSingularLayout) {\n return false;\n }\n\n if (parking.isInUnlockRadius) {\n if (isParkingSpotWithSubscriptionPlan) {\n return userHasActiveSubscriptionPlan;\n }\n return true;\n }\n\n return false;\n };\n\n const getGateValue = (\n selectedGate: GateOption | null | undefined,\n parking: ParkingType\n ) => {\n if (selectedGate) {\n return selectedGate.value;\n }\n\n if (\n parking.layoutType === 'singular' &&\n parking.networkingType === 'mqtt'\n ) {\n const options = buildParkingGateOptions(parking, currentUser);\n return options[0].value;\n }\n };\n\n const handleShowInfoForPlanClick = (subscription: SubscriptionPlanType) => {\n handleSelectPlan(subscription);\n };\n\n const handleSelectedGate = (gate: GateOption) => {\n setSelectedGate(gate);\n };\n\n const handleUnlock = async () => {\n if (!currentUser) {\n console.log('User is not logged in');\n return null;\n }\n\n try {\n await unlockParkingById({\n variables: {\n parkingId: parking.id,\n type: 'manual',\n gate: getGateValue(selectedGate, parking),\n },\n refetchQueries: [LatestEventQuery, GetParkingsWithinDistance],\n });\n\n if (parking.networkingType === 'sim') {\n handleStartPolling();\n }\n } catch (err) {\n console.error(err);\n }\n };\n\n const onRequestAccess = async () => {\n try {\n await requestAccess({\n variables: {\n parkingId: parking.id,\n },\n refetchQueries: [GetParkingByIdQuery],\n });\n // TODO: Start polling for parking status?\n toastManager.requestAccessSuccess();\n } catch (err) {\n console.log(err);\n }\n };\n\n const onSubscribeClick = async () => {\n try {\n console.log('subscribing to subscription plan');\n const {\n data: { subscribeToPlan: checkoutLink },\n } = await subscribe({\n variables: {\n subscriptionPlanId: selectedSubscriptionPlan,\n parkingSpotId: parking.id,\n locale: activeLanguage.split('-')[0],\n },\n });\n\n if (checkoutLink.includes('https://')) {\n router.push(checkoutLink);\n } else {\n toastManager.subscriptionCreationError(checkoutLink);\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n const onPickSubscriptionPlan = (subscriptionPlan: SubscriptionPlanType) => {\n if (\n selectedSubscriptionPlan === subscriptionPlan.id ||\n userHasActiveSubscriptionPlan\n ) {\n return;\n }\n setSelectedSubscriptionPlan(subscriptionPlan.id);\n };\n\n const renderQuestCard = (\n pq: ParkingQuest,\n userCompletedQuests: CompletedQuestType[]\n ) => {\n const isCompleted = calculateIfQuestIsCompleted(pq, userCompletedQuests);\n\n return (\n \n
\n
\n {pq.quest.title} {isCompleted &&
}\n
\n
\n {pq.quest.reward}x \n
\n
\n
\n Description {shortenText(pq.quest.description, 30)}\n
\n \n );\n };\n\n const renderButtonsSection = () => {\n if (isRequestPendingApproval(parking)) {\n return (\n {}}\n type=\"primary\"\n >\n {t('pendingApproval')}...\n \n );\n }\n\n if (parking.isUnavailable) {\n return (\n {}}\n type=\"primary\"\n >\n {t('unavailable')}\n \n );\n }\n\n if (isRequestInexistent(currentUser, parking)) {\n return (\n onRequestAccess()}\n type=\"primary\"\n >\n {t('requestAccess')}\n \n );\n }\n\n if (isIDValidationCase(currentUser, parking)) {\n return (\n \n );\n }\n\n if (isSubscriptionCase(currentUser, parking, userSubscriptions)) {\n return (\n onSubscribeClick()}\n type=\"primary\"\n disabled={!selectedSubscriptionPlan}\n >\n {t('subscribeToUnlock')}\n \n );\n }\n\n return (\n
\n \n {parking.isInUnlockRadius\n ? `${t('unlock')} ${\n isSingularLayout\n ? ''\n : !isSingularLayout && !selectedGate\n ? ''\n : selectedGate?.label\n }`\n : t('tooFarAway')}\n \n
\n );\n };\n\n const renderRequirementsSection = () => {\n return (\n
\n
\n {t('requires')}\n {':'}\n
\n {hasAnyRequirements ? (\n
\n {parking.requiresApproval && (\n
\n
\n \n
\n \n {t('parkingRequirements.approval')}\n \n
\n )}\n {parking.requiresIdVerification && (\n
\n
\n \n
\n \n {t('parkingRequirements.document')}\n \n
\n )}\n {subscriptionPlans.length > 0 && (\n
\n
\n \n
\n \n {t('parkingRequirements.subscription')}\n \n
\n )}\n
\n ) : (\n
{t('no_requirements_for_unlocking')}
\n )}\n
\n );\n };\n\n const renderSubscritionPlans = () => {\n return subscriptionPlans\n .map((sp) => {\n const isActive = userSubscriptions.some((sub: any) => {\n return (\n sub.metadata.subscriptionPlanId === sp.id && sub.status === 'active'\n );\n });\n\n return {\n ...sp,\n isActive,\n };\n })\n .sort((a, b) => {\n if (a.isActive) return -1;\n if (b.isActive) return 1;\n return 0;\n })\n .map((sp) => {\n const isSelected = selectedSubscriptionPlan === sp.id;\n return (\n onPickSubscriptionPlan(sp)}\n >\n
\n
\n
\n
{sp.name}
\n
\n
\n {sp.price}{' '}\n {getCurrencySymbol(String(sp.currency.toLowerCase()))} /{' '}\n {t(`subscriptions.interval.${sp.interval}`)}{' '}\n {sp.isActive && '✅'}\n
\n
\n handleShowInfoForPlanClick(sp)}\n >\n \n
\n \n \n );\n });\n };\n\n return (\n
\n
\n {parking?.photo && (\n \n )}\n
\n
\n
\n
\n {parking.name}\n
\n
\n
\n
\n {parking.full_address || t('noAddressProvided')}\n
\n
\n {t('availableSpots')}\n {':'}{' '}\n \n {parking.capacity - parking.occupied}\n \n
\n
\n\n
\n
\n \n {' '}\n {t('getDirections')}{' '}\n \n
\n {isSingularLayout && parking.bookingLink && (\n \n {t('bookInAdvance')}\n \n )}\n
\n {/*
\n {renderRequirementsSection()}\n
*/}\n
\n
\n
\n\n
\n {hasParkingQuests && (\n <>\n
\n
\n \n {hasParkingQuests ? t('parkingQuests') : null}\n \n \n {parkingQuests?.map((pq) =>\n renderQuestCard(pq, currentUser?.completedQuests || [])\n )}\n
\n
\n \n )}\n {subscriptionPlans.length > 0 ? (\n
\n
\n {subscriptionPlans?.length > 0 && (\n
\n {t('subscriptions.cardTitle')}\n
\n )}\n
\n
\n {renderSubscritionPlans()}\n
\n
\n ) : null}\n\n {canShowGateSelector() ? (\n
\n \n
\n ) : null}\n
\n {renderButtonsSection()}\n {error && (\n
\n {/* {t('errorUnlockingParking')}\n {':'} */}\n {error.message}\n
\n )}\n
\n
\n
\n );\n};\n","export function snakeToNormal(str: string) {\n return str.replace(/_/g, ' ').replace(/(?:^|\\s)\\S/g, function (a) {\n return a.toUpperCase();\n });\n}\n\nexport function shortenText(str: string, length: number) {\n return str.length > length ? str.substring(0, length) + '...' : str;\n}\n","import { CompletedQuestType, ParkingQuest } from './utilTypes';\n\nexport const calculateIfQuestIsCompleted = (\n pq: ParkingQuest,\n completedQuests: CompletedQuestType[]\n) => {\n // NOTE: this works only for daily quests\n if (!pq.quest) return false;\n\n const relevantCompletedQuests = completedQuests.filter(\n (cq) => cq.quest.id === pq.quest.id\n );\n // @ts-ignore\n const dailyQuest = relevantCompletedQuests.findLast(\n (cq: CompletedQuestType) => cq.quest.id === pq.quest.id\n );\n\n if (!dailyQuest) return false;\n\n const isCompletedDailyQuest =\n new Date(dailyQuest?.createdAt).toDateString() ===\n new Date().toDateString();\n\n return isCompletedDailyQuest;\n};\n","import { gql } from '@apollo/client';\n\nexport const CreateVendorClaimMutation = gql`\n mutation createVendorClaimCustom($vendorRewardId: ID!) {\n createVendorClaimCustom(vendorRewardId: $vendorRewardId) {\n id\n }\n }\n`;\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgLeaveAComment = function SvgLeaveAComment(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 42,\n height: 42,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.979 4.2c0-2.31-1.869-4.2-4.179-4.2H4.2C1.89 0 0 1.89 0 4.2v25.2c0 2.31 1.89 4.2 4.2 4.2h29.4L42 42l-.021-37.8Zm-4.179 0v27.657L35.343 29.4H4.2V4.2h33.6ZM8.4 21h25.2v4.2H8.4V21Zm0-6.3h25.2v4.2H8.4v-4.2Zm0-6.3h25.2v4.2H8.4V8.4Z\",\n fill: \"#000\"\n })));\n};\n\nexport default SvgLeaveAComment;","import Image from 'next/image';\nimport { CardVendorDetailProps } from './props';\nimport CloseIcon from '../../../assets/svg/close.svg';\nimport { snakeToNormal } from '../../../utils/utilsString';\nimport { useAuth } from '../../../lib/auth';\nimport RastelCoinIcon from '../../../assets/svg/rastel_coin.svg';\nimport UnlockIcon from '../../../assets/svg/unlock.svg';\nimport { VendorRewardType } from '../../../utils/utilTypes';\nimport { Button } from '../Button';\nimport { useState } from 'react';\nimport { useMutation } from '@apollo/client';\nimport { CreateVendorClaimMutation } from '../../../graphql/vendors/createVendorClaimMutation';\nimport { toastManager } from '../../../utils/utilsToast';\nimport { useRouter } from 'next/router';\nimport { useTranslation } from 'react-i18next';\n\nexport const CardVendorDetail = ({\n vendor,\n isLoading,\n onCollapseDrawerClick,\n}: CardVendorDetailProps) => {\n const { currentUser } = useAuth();\n const router = useRouter();\n const userBalance = currentUser?.walletBalance || 0;\n const [selectedRewardId, setSelectedRewardId] = useState(null);\n const [claimVendorReward, { loading, error }] = useMutation(\n CreateVendorClaimMutation\n );\n const { t } = useTranslation();\n\n if (isLoading) return
Loading...
;\n\n const selectedReward = vendor.rewards.find(\n (reward) => reward.id === selectedRewardId\n );\n\n const handleClaimClick = async () => {\n console.log('Claiming');\n try {\n const {\n data: { createVendorClaimCustom: claimData },\n } = await claimVendorReward({\n variables: {\n vendorRewardId: selectedRewardId,\n },\n });\n console.log('Finished claimin', claimData);\n router.push(`/vendor-claims/${claimData.id}`);\n } catch (err) {\n toastManager.couldNotCreateVendorClaim();\n console.error(err);\n }\n };\n\n const renderHeader = () => {\n return (\n <>\n
\n \n
\n
\n

{vendor.name}

\n

{vendor.full_address}

\n
\n {snakeToNormal(vendor.type)}\n
\n
\n \n );\n };\n\n const renderReward = (reward: VendorRewardType) => {\n let baseClass = 'flex items-center justify-between border rounded-xl p-1';\n const isSelected = selectedRewardId === reward.id;\n const canClaim = reward.cost <= userBalance;\n\n if (canClaim) {\n baseClass += ' border-primary cursor-pointer';\n } else {\n baseClass += ' opacity-50 cursor-not-allowed';\n }\n\n if (isSelected) {\n baseClass += ' bg-ternary';\n } else {\n baseClass += ' bg-white';\n }\n\n return (\n canClaim && setSelectedRewardId(reward.id)}\n >\n
\n
\n \n
\n
\n
\n \n {reward.title}\n \n \n {reward.cost}{' '}\n
\n \n
\n

\n
\n

{reward.description}

\n
\n
\n \n );\n };\n\n return (\n
\n \n \n
\n
\n {renderHeader()}\n
\n
\n
\n

\n {t('vendorDetail.rewards')}\n

\n

\n {t('vendorDetail.yourBalance')} {currentUser?.walletBalance}{' '}\n \n

\n
\n
\n

\n {vendor.rewards.length === 0\n ? t('vendorDetail.noRewards')\n : t('vendorDetail.rewardsDescription')}\n

\n
\n
\n {vendor.rewards.map(renderReward)}\n {vendor.rewards.length > 0 &&
}\n {vendor.rewards.length > 0 && (\n
\n \n
\n \n
\n
\n {t('vendorDetail.claim')} {selectedReward?.title}\n
\n \n
\n )}\n
\n
\n \n );\n};\n","import { CardParkingList } from '../CardParkingListItem';\nimport 'react-loading-skeleton/dist/skeleton.css';\n\nimport { CardParkingDetail } from '../CardParkingDetail';\nimport { DrawerProps } from './props';\nimport { CardVendorDetail } from '../CardVendorDetail';\nimport CloseIcon from '../../../assets/svg/close.svg';\n\nimport { useTranslation } from 'react-i18next';\nexport const Drawer = ({\n detailViewType,\n\n isDrawerExpanded,\n isLoadingParkings,\n isLoadingParkingDetail,\n isLoadingVendorDetail,\n\n isUserLocationLoaded = false,\n center,\n parkings,\n parkingDetail,\n vendorDetail,\n onCollapseDrawerClick,\n onListItemClick,\n latestEvent,\n ongoingSession,\n handleStartPolling,\n isPollingForUnlockEvent,\n userSubscriptions,\n}: DrawerProps) => {\n const { t } = useTranslation();\n const renderDetailContainer = () => {\n if (detailViewType === 'vendor') {\n return (\n
\n \n
\n );\n }\n\n if (detailViewType === 'parking') {\n return (\n
\n \n \n
\n \n \n );\n }\n };\n\n const renderListContainer = () => {\n if (\n !isLoadingParkings &&\n (!parkings || !parkings.length) &&\n isUserLocationLoaded\n ) {\n return (\n
\n {t('noParkingFound')}\n
\n );\n }\n\n return (\n
\n

\n {t('nearbyParkingSpots')}\n

\n
\n \n
\n
\n );\n };\n\n return (\n \n {isDrawerExpanded ? renderDetailContainer() : renderListContainer()}\n \n );\n};\n","import { ReactiveVar } from \"@apollo/client\";\nimport {\n currentSelectedParkingId,\n parkingsInUnlockRadius,\n} from \"../lib/apollo\";\n\nexport function useParkings() {\n const toggleSelectedParking = (parkingId: string) => {\n currentSelectedParkingId(parkingId);\n };\n\n const clearSelectedParking = () => {\n currentSelectedParkingId(null);\n };\n\n const setParkingsInRadius = (parkingsId: string[]) => {\n parkingsInUnlockRadius(parkingsId);\n };\n\n return {\n operations: {\n toggleSelectedParking,\n clearSelectedParking,\n setParkingsInRadius,\n },\n };\n}\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgStarEmpty = function SvgStarEmpty(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 36,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m38 13.718-13.661-1.175L19 0l-5.339 12.562L0 13.718l10.374 8.962L7.258 36 19 28.933 30.742 36l-3.097-13.32L38 13.718ZM19 25.39l-7.144 4.3 1.9-8.109-6.308-5.457 8.322-.72L19 7.768l3.249 7.655 8.322.72-6.308 5.457 1.9 8.11L19 25.39Z\",\n fill: \"#000\"\n })));\n};\n\nexport default SvgStarEmpty;","import 'mapbox-gl/dist/mapbox-gl.css';\nimport React, { useCallback, useRef } from 'react';\nimport {\n GeolocateControl,\n GeolocateControlRef,\n Map as MapGL,\n MapRef,\n Marker,\n} from 'react-map-gl';\nimport LeaveACommentIcon from '../../../assets/svg/leave_a_comment.svg';\nimport { useParkings } from '../../../hooks/useParkings';\nimport { ParkingType, VendorType } from '../../../utils/utilTypes';\nimport { withinRegion } from '../../../utils/utilsDistance';\nimport { Loader } from '../../Loader';\nimport { Button } from '../Button';\nimport { useTranslation } from 'react-i18next';\nimport { MapProps } from './props';\nimport Image from 'next/image';\nimport { useQuery } from '@apollo/client';\nimport { GetOngoingParkingSessionQuery } from '../../../graphql/sessions/getOngoingParkingSessionQuery';\n\nexport const Map = React.memo(function MapWithoutMemoization({\n isUserLocationLoaded = false,\n isGeolocationDenied,\n center,\n zoom,\n parkingMarkers = [],\n vendorMarkers = [],\n onParkingMarkerClick,\n onVendorMarkerClick,\n latestEvent,\n onMapLoad,\n ongoingSession,\n onLeaveACommentClick,\n}: MapProps) {\n const { t } = useTranslation();\n const {\n operations: { setParkingsInRadius },\n } = useParkings();\n\n const mapRef = useRef(null);\n const geolocateControlRef = useRef(null);\n\n const fitBounds = useCallback(({ longitude, latitude }: any) => {\n mapRef.current?.flyTo({\n center: [longitude, latitude],\n zoom: 8,\n duration: 2000,\n });\n }, []);\n\n const computeMarkersInRadius = (position: any) => {\n const parkingsThatQualifyInRadius: string[] = [];\n\n parkingMarkers.forEach((m: ParkingType) => {\n const markerPoint = { lat: m.lat, lng: m.lng };\n\n if (\n withinRegion(\n position,\n process.env.NEXT_PUBLIC_GEOFENCE_RADIUS_IN_METERS\n )(markerPoint)\n ) {\n parkingsThatQualifyInRadius.push(m.id);\n }\n });\n\n setParkingsInRadius(parkingsThatQualifyInRadius);\n };\n\n const renderParkingMarker = (marker: ParkingType, index: number) => {\n const isParkingInSession =\n ongoingSession?.parking?.id === marker.id ||\n ongoingSession?.parking?.referenceParking?.id === marker.id;\n\n return (\n \n {/* \n {marker.name} {isParkingInSession ? '(In session)' : ''}\n */}\n
\n {\n fitBounds({ latitude: marker.lat, longitude: marker.lng });\n onParkingMarkerClick(marker);\n }}\n >\n <>{marker.capacity - marker.occupied}\n \n
\n \n );\n };\n\n const renderVendorMarker = (marker: VendorType, index: number) => {\n return (\n \n {\n fitBounds({ latitude: marker.lat, longitude: marker.lng });\n onVendorMarkerClick(marker);\n }}\n >\n \n \n \n );\n };\n\n const renderContainer = () => {\n if (isGeolocationDenied) {\n return (\n
\n
\n {t('locationWarning')}\n
\n
\n {\n window.location.reload();\n }}\n type=\"primary\"\n >\n {t('refresh')}\n \n
\n
\n );\n }\n if (!isUserLocationLoaded) {\n return ;\n }\n\n return (\n <>\n {\n geolocateControlRef.current?.trigger();\n onMapLoad(mapRef);\n }}\n >\n {\n if (position.coords) {\n computeMarkersInRadius({\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n });\n }\n }}\n style={{\n backgroundColor: 'white',\n width: '48px',\n height: '48px',\n borderRadius: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n />\n svg]:scale-[.6]\"\n onClick={onLeaveACommentClick}\n >\n \n \n {parkingMarkers\n .filter((marker) => !marker.referenceParking)\n .map((marker: ParkingType, index: number) => {\n return renderParkingMarker(marker, index);\n })}\n {vendorMarkers.map((marker: VendorType, index: number) => {\n return renderVendorMarker(marker, index);\n })}\n \n \n );\n };\n\n return (\n
\n {renderContainer()}\n
\n );\n});\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgStarFilled = function SvgStarFilled(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 36,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 28.933 30.71 36l-3.108-13.32 10.345-8.962-13.623-1.156L19 0l-5.324 12.562L.053 13.718l10.345 8.962L7.291 36 19 28.933Z\",\n fill: \"#2B0088\"\n })));\n};\n\nexport default SvgStarFilled;","import { gql } from \"@apollo/client\";\n\nexport const CreateReviewMutation = gql`\n mutation CreateReviewMutation(\n $rating: Int!\n $description: String\n $userId: ID!\n ) {\n createReview(\n data: {\n rating: $rating\n description: $description\n user: { connect: { id: $userId } }\n }\n ) {\n rating\n description\n }\n }\n`;\n","import HyperModal from 'react-hyper-modal';\nimport Rating from 'react-rating';\nimport StarEmptyIcon from '../../../assets/svg/star_empty.svg';\nimport StarFilledIcon from '../../../assets/svg/star_filled.svg';\nimport { Button } from '../Button';\nimport { Controller, useForm } from 'react-hook-form';\nimport { ReviewType } from '../../../utils/utilTypes';\nimport { CreateReviewMutation } from '../../../graphql/reviews/createReviewMutation';\nimport { useMutation } from '@apollo/client';\nimport { useAuth } from '../../../lib/auth';\nimport { FeedbackModalProps } from './props';\nimport { useTranslation } from 'react-i18next';\n\nexport const FeedbackModal = ({ isOpen, onClose }: FeedbackModalProps) => {\n const {\n register,\n handleSubmit,\n control,\n formState: { isValid, isDirty, errors },\n reset,\n } = useForm({\n mode: 'onChange',\n defaultValues: {\n rating: null,\n description: '',\n },\n });\n const { t } = useTranslation();\n const { currentUser } = useAuth();\n\n const [createReview, { loading }] = useMutation(CreateReviewMutation);\n\n const handleClose = () => {\n reset();\n onClose();\n };\n\n const onSubmit = async ({ description, rating }: ReviewType) => {\n try {\n if (!currentUser) {\n return;\n }\n await createReview({\n variables: {\n description,\n rating,\n userId: currentUser.id,\n },\n });\n handleClose();\n } catch (err: any) {\n console.log(err.message);\n }\n };\n\n return (\n \n
\n
\n
\n

\n {t('reviewModalTitle')}\n

\n

\n {t('reviewModalDescription')}\n

\n
\n\n
\n

\n {\"1. \"} {t('reviewStep1')}\n

\n (\n // @ts-ignore\n }\n fullSymbol={}\n />\n )}\n />\n
\n\n
\n

{\"2.\"} {t('reviewStep2')}

\n \n
\n\n
button]:w-full\">\n { }}\n disabled={!isValid || loading}\n >\n {t('submitReview')}\n \n
\n
\n
\n
\n );\n};\n","import { TFunction } from 'i18next';\nimport { isDateOlderThan } from '../../../../utils/utilDates';\nimport {\n LatestEventType,\n ParkingType,\n Subscription,\n UserType,\n} from '../../../../utils/utilTypes';\nimport { isSubscriptionCase } from '../../../../utils/utilsParking';\nimport { isUserParkingRequestApproved } from '../../../../utils/utilsUser';\n\nexport const SHOW_GATES_OPEN_TIMEOUT_IN_MS = 15_000;\n\nconst possibleTypes = (t: TFunction) => {\n return {\n selectedParking: () => ({\n type: 'selectedParking',\n title: t('selectedParkingTitle'),\n description: t('selectedParkingDescription', {\n radius: process.env.NEXT_PUBLIC_GEOFENCE_RADIUS_IN_METERS,\n }),\n }),\n withinParkingRadius: () => ({\n type: 'withinParkingRadius',\n title: t('withinParkingRadiusTitle'),\n description: t('withinParkingRadiusDescription'),\n }),\n unlockingSelectedParking: () => ({\n type: 'unlockingSelectedParking',\n title: t('unlockingSelectedParkingTitle'),\n description: t('unlockingSelectedParkingDescription'),\n }),\n // gatesAreOpen: () => ({\n // type: 'gatesAreOpen',\n // title: t('gatesAreOpenTitle'),\n // description: t('gatesAreOpenDescription'),\n // }),\n unavailable: () => ({\n type: 'unavailable',\n title: t('unavailableTitle'),\n description: t('unavailableDescription'),\n }),\n subscription: () => ({\n type: 'subscription',\n title: t('subscriptionTitle'),\n description: t('subscriptionDescription'),\n }),\n requiresApproval: () => ({\n type: 'requiresApproval',\n title: t('requiresApprovalTitle'),\n description: t('requiresApprovalDescription'),\n }),\n };\n};\n\nexport const inferParkingModal = (\n currentUser: UserType | null,\n t: TFunction,\n userSubscriptions: Subscription[],\n parking?: ParkingType,\n latestEvent?: LatestEventType\n) => {\n if (parking?.isUnavailable) {\n return possibleTypes(t).unavailable();\n }\n\n if (\n parking?.requiresApproval &&\n !isUserParkingRequestApproved(currentUser, parking)\n ) {\n return possibleTypes(t).requiresApproval();\n }\n\n if (parking && isSubscriptionCase(currentUser, parking, userSubscriptions)) {\n return possibleTypes(t).subscription();\n }\n\n if (\n latestEvent?.status === 'sim_pending' &&\n latestEvent?.twilioCallResponse === false\n ) {\n return possibleTypes(t).unlockingSelectedParking();\n }\n\n // if (\n // latestEvent?.twilioCallResponse &&\n // isDateOlderThan(latestEvent.updatedAt, SHOW_GATES_OPEN_TIMEOUT_IN_MS)\n // ) {\n // return possibleTypes(t).gatesAreOpen();\n // }\n\n if (parking?.isInUnlockRadius && parking?.isSelected) {\n return possibleTypes(t).withinParkingRadius();\n }\n\n if (parking?.isSelected) {\n return possibleTypes(t).selectedParking();\n }\n\n return null;\n};\n","import { useEffect, useState } from 'react';\n\nimport InfoIcon from '../../../assets/svg/info.svg';\nimport { useAuth } from '../../../lib/auth';\nimport { StatusPopupProps } from './props';\nimport { inferParkingModal } from './utils/inferTypes';\n\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from 'next/router';\n\nexport const StatusPopup = ({\n parking,\n latestEvent,\n userSubscriptions,\n}: StatusPopupProps) => {\n const { t } = useTranslation();\n const router = useRouter();\n const [hideModal, setHideModal] = useState(false);\n const { currentUser } = useAuth();\n\n let selectedModalType = inferParkingModal(\n currentUser,\n t,\n userSubscriptions,\n parking,\n latestEvent\n );\n\n // useEffect(() => {\n // if (latestEvent?.twilioCallResponse) {\n // setHideModal(false);\n // } else {\n // setHideModal(true);\n // }\n // }, [latestEvent?.twilioCallResponse, latestEvent?.updatedAt]);\n\n if (!selectedModalType) {\n return null;\n }\n\n return (\n \n
\n \n
\n
\n
\n {selectedModalType.title}\n
\n \n
\n\n {/* {selectedModalType.type === 'unavailable' && (\n setHideModal(true)}\n type=\"primary\"\n >\n Ok\n \n )} */}\n \n );\n};\n","import { gql } from '@apollo/client';\n\nexport const CREATE_IDENTITY_VERIFICATION_MUTATION = gql`\n mutation createVerificationSession {\n createVerificationSession\n }\n`;\n","import { useLazyQuery, useMutation } from '@apollo/client';\nimport { stripe } from '../../../lib/stripe';\nimport { Button } from '../Button';\nimport { CREATE_IDENTITY_VERIFICATION_MUTATION } from '../../../graphql/stripe/identity/createIdentityVerificationSession';\nimport { useAuth } from '../../../lib/auth';\nimport { useTranslation } from 'react-i18next';\n\nexport const IdentityPopup = () => {\n const { t } = useTranslation();\n const [createVerificationSession, { loading, error }] = useMutation(\n CREATE_IDENTITY_VERIFICATION_MUTATION\n );\n\n const { getCurrentUser } = useAuth();\n\n const handleIdentityVerificationClick = async () => {\n try {\n const {\n data: { createVerificationSession: client_secret },\n } = await createVerificationSession();\n\n const result = await stripe?.verifyIdentity(client_secret);\n\n if (result?.error) {\n // TODO: getAll with where.equals\n // TODO: update found one with the errored status\n console.log('error', result.error);\n } else {\n console.log('success', result);\n }\n } catch (err) {\n console.log(err);\n } finally {\n await getCurrentUser();\n }\n };\n\n return (\n
\n
\n {t('confirmYourIdentity')}\n
\n
\n {t('pleaseConfirmYourIdentity')}\n
\n\n \n {t('continue')}\n \n
\n );\n};\n","import { gql } from '@apollo/client';\n\nexport const GetOngoingParkingSessionQuery = gql`\n query GetOngoingParkingSession {\n getOngoingParkingSession {\n id\n endedAt\n startedAt\n parking {\n id\n\n referenceParking {\n id\n }\n }\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const GetAllVendorsQuery = gql`\n query getAllVendorsQuery {\n vendors {\n isAvailable\n full_address\n id\n image {\n id\n image {\n publicUrl\n }\n }\n lat\n lng\n isSelected @client\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const GetVendorByIdQuery = gql`\n query GetVendorByIdQuery($id: ID) {\n vendor(where: { id: $id }) {\n id\n full_address\n isAvailable\n lat\n lng\n name\n type\n image {\n id\n image {\n publicUrl\n }\n }\n rewards {\n id\n description\n cost\n title\n image {\n image {\n publicUrl\n }\n }\n }\n isSelected @client\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const UpdateEventMutation = gql`\n mutation ($id: ID!, $data: EventUpdateInput!) {\n updateEvent(where: { id: $id }, data: $data) {\n id\n twilioCallSid\n twilioCallResponse\n parking {\n id\n referenceParking {\n id\n }\n referencedBy {\n id\n }\n }\n user {\n email\n }\n updatedAt\n isAknowledgedByUser\n completedQuests {\n id\n createdAt\n quest {\n id\n title\n reward\n description\n }\n }\n }\n }\n`;\n","import { gql } from \"@apollo/client\";\n\nexport const CreateRewardCustomMutation = gql`\n mutation createRewardCustom($campaignId: ID!) {\n createRewardCustom(campaignId: $campaignId) {\n id\n isClaimed\n user {\n name\n }\n }\n }\n`;\n","import { gql } from \"@apollo/client\";\n\nexport const CreateParkingIssueMutation = gql`\n mutation CreateParkingIssueMutation(\n $reason: String\n $userId: ID!\n $parkingId: ID!\n ) {\n createParkingIssue(\n data: {\n reason: $reason\n user: { connect: { id: $userId } }\n parking: { connect: { id: $parkingId } }\n }\n ) {\n reason\n }\n }\n`;\n","import { useMutation } from \"@apollo/client\";\nimport { useForm } from \"react-hook-form\";\nimport HyperModal from \"react-hyper-modal\";\nimport { CreateParkingIssueMutation } from \"../../../graphql/parkingIssues/createParkingIssueMutation\";\nimport { LatestEventQuery } from \"../../../graphql/events/latestEventQuery\";\nimport { useAuth } from \"../../../lib/auth\";\nimport { IssueType } from \"../../../utils/utilTypes\";\nimport { Button } from \"../Button\";\nimport { ReportIssueModalProps } from \"./props\";\nimport { useTranslation } from \"react-i18next\";\nimport { useQuery } from \"@apollo/client\";\n\nexport const ReportIssueModal = ({\n isOpen,\n onClose,\n}: ReportIssueModalProps) => {\n const {\n register,\n handleSubmit,\n control,\n formState: { isValid, isDirty, errors },\n reset,\n } = useForm({\n mode: \"onChange\",\n defaultValues: {\n reason: \"\",\n },\n });\n const { currentUser } = useAuth();\n const { data: latestEventData } = useQuery(LatestEventQuery);\n const { t } = useTranslation();\n\n const [createIssue, { loading }] = useMutation(CreateParkingIssueMutation);\n\n const handleClose = () => {\n reset();\n onClose();\n };\n\n const onSubmit = async ({ reason }: IssueType) => {\n try {\n if (!currentUser) {\n return;\n }\n await createIssue({\n variables: {\n reason,\n userId: currentUser.id,\n parkingId: latestEventData?.latestEvent?.parking?.id,\n },\n });\n handleClose();\n } catch (err: any) {\n console.log(err.message);\n }\n };\n\n return (\n \n
\n
\n
\n

\n {t(\"reportIssueTitle\")}\n

\n

\n {t(\"reportIssueDescription\")}\n

\n
\n\n
\n \n
\n\n
button]:w-full\">\n {}}\n disabled={!isValid || loading}\n >\n {t(\"submitIssue\")}\n \n
\n
\n
\n
\n );\n};\n","import { gql } from '@apollo/client';\n\nexport const StartParkingSessionMutation = gql`\n mutation StartParkingSessionMutation(\n $gateId: ID!\n $parkingId: ID!\n $userId: ID!\n ) {\n startParkingSession(\n gateId: $gateId\n parkingId: $parkingId\n userId: $userId\n ) {\n id\n startedAt\n endedAt\n gate {\n id\n }\n parking {\n id\n }\n user {\n id\n email\n }\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const EndParkingSessionMutation = gql`\n mutation ($id: ID!) {\n endParkingSession(id: $id) {\n id\n startedAt\n endedAt\n gate {\n id\n }\n parking {\n id\n }\n user {\n id\n email\n }\n }\n }\n`;\n","import { useMutation, useQuery } from '@apollo/client';\nimport { useRouter } from 'next/router';\nimport { useState } from 'react';\nimport HyperModal from 'react-hyper-modal';\nimport { useTranslation } from 'react-i18next';\nimport Lottie from 'react-lottie';\nimport * as unlockAnimationData from '../../../assets/lottie/unlock.json';\nimport * as chainAnimationData from '../../../assets/lottie/chain-lock.json';\nimport { LatestEventQuery } from '../../../graphql/events/latestEventQuery';\nimport { UpdateEventMutation } from '../../../graphql/events/updateEventMutation';\nimport { GetOngoingParkingSessionQuery } from '../../../graphql/sessions/getOngoingParkingSessionQuery';\nimport { CreateRewardCustomMutation } from '../../../graphql/rewards/createRewardCustomMutation';\nimport { useAuth } from '../../../lib/auth';\nimport {\n LatestEventType,\n ParkingSession,\n ParkingTypeEnum,\n} from '../../../utils/utilTypes';\nimport {\n checkIfGateIsSingular,\n getActiveSessionFromLatestEvent,\n getLabelsForParkingType,\n} from '../../../utils/utilsParking';\nimport { toastManager } from '../../../utils/utilsToast';\nimport { AppHero } from '../AppHero';\nimport { Button } from '../Button';\nimport { ReportIssueModal } from '../ReportIssueModal';\nimport { UnlockModalProps } from './props';\nimport { StartParkingSessionMutation } from '../../../graphql/sessions/startParkingSessionMutation';\nimport { GetParkingByIdQuery } from '../../../graphql/parkings/getParkingByIdQuery';\nimport { EndParkingSessionMutation } from '../../../graphql/sessions/endParkingsessionMutation';\nimport { GetParkingsWithinDistance } from '../../../graphql/parkings/getParkingsWithinDistance';\n\nexport const UnlockModal = ({ parkingDetail, onClose }: UnlockModalProps) => {\n const router = useRouter();\n const { currentUser, getCurrentUser } = useAuth();\n const [isParkingIssueModalShown, setIsParkingIssueModalShown] =\n useState(false);\n const { t } = useTranslation();\n\n const { data: latestEventData } = useQuery(LatestEventQuery);\n const [updateEvent] = useMutation(UpdateEventMutation);\n const [createReward, { loading: isLoadingRewardCreate }] = useMutation(\n CreateRewardCustomMutation\n );\n const [startParkingSesssion, { loading: isLoadingStartParkingSession }] =\n useMutation(StartParkingSessionMutation, {\n refetchQueries: [\n GetParkingByIdQuery,\n GetOngoingParkingSessionQuery,\n GetParkingsWithinDistance,\n ],\n });\n\n const [endParkingSession, { loading: isLoadingParkingSessionUpdate }] =\n useMutation(EndParkingSessionMutation, {\n refetchQueries: [\n GetParkingByIdQuery,\n GetOngoingParkingSessionQuery,\n GetParkingsWithinDistance,\n ],\n });\n\n const acknowledgeParkingEvent = async (): Promise<\n LatestEventType | undefined\n > => {\n try {\n const response = await updateEvent({\n variables: {\n id: latestEventData.latestEvent.id,\n data: {\n isAknowledgedByUser: true,\n },\n },\n });\n\n await getCurrentUser();\n\n return response.data.updateEvent as LatestEventType;\n } catch (err: any) {\n toastManager.couldNotAcknowledgeParkingEvent();\n }\n };\n\n const handleCloseIssueModal = async () => {\n setIsParkingIssueModalShown(false);\n await acknowledgeParkingEvent();\n };\n\n const handlePostUnlock = async (\n updatedEvent: LatestEventType | undefined\n ) => {\n if (parkingDetail.referencedBy.length > 0) {\n const [nextParking] = parkingDetail.referencedBy;\n await router.push(`/?parkingId=${nextParking.id}`);\n return;\n }\n\n if (updatedEvent && updatedEvent?.completedQuests.length > 0) {\n const uncollectedQuest = updatedEvent.completedQuests[0];\n await router.push(`/quest-rewards/${uncollectedQuest?.id}`);\n return;\n\n // // TODO: same as with reward\n // console.log('REDIRECT TO QUEST REWARD: ', uncollectedQuest);\n // if (uncollectedQuest) {\n // await router.push(`/quest-rewards/${uncollectedQuest?.id}`);\n // return;\n // }\n }\n\n // Single Gate -> Multi Gate Flow (close modal and clear cache as it is confusing to keep it on)\n if (\n updatedEvent?.parking?.referenceParking ||\n !parkingDetail.referenceParking\n ) {\n await onClose();\n }\n\n // const isParkingCampaignActive = parkingDetail?.campaigns?.find(\n // (campaign: CampaignType) => {\n // const now = new Date();\n // const startDate = new Date(campaign.startsAt);\n // const endDate = new Date(campaign.endsAt);\n // return now > startDate && now < endDate;\n // }\n // );\n // if (isParkingCampaignActive) {\n // const resp = await createReward({\n // variables: {\n // campaignId: isParkingCampaignActive.id,\n // },\n // });\n // if (resp?.data?.createRewardCustom?.id) {\n // await router.push(`/rewards/${resp?.data?.createRewardCustom.id}`);\n // }\n // }\n };\n\n const handleAcknowledgeEvent = async () => {\n try {\n const updatedEvent = await acknowledgeParkingEvent();\n await handlePostUnlock(updatedEvent);\n } catch (err) {\n console.log(err);\n } finally {\n // setHideModal(true);\n }\n };\n\n const handleStartParkingSessionOnSingularGateClick = async () => {\n await startParkingSesssion({\n variables: {\n parkingId: latestEventData?.latestEvent?.parking?.id,\n gateId: latestEventData?.latestEvent?.gate?.id,\n userId: currentUser?.id,\n },\n });\n\n const updatedEvent = await acknowledgeParkingEvent();\n await handlePostUnlock(updatedEvent);\n };\n\n const handleEndParkingSessionOnSingularGateClick = async (\n ongoingSession: ParkingSession\n ) => {\n await endParkingSession({\n variables: {\n id: ongoingSession.id,\n },\n });\n\n const updatedEvent = await acknowledgeParkingEvent();\n await handlePostUnlock(updatedEvent);\n };\n\n const renderAcknowledgeButton = () => {\n return (\n \n {t('confirm')}\n \n );\n };\n\n const renderHeaders = () => {\n const ongoingSession = getActiveSessionFromLatestEvent(\n latestEventData?.latestEvent,\n currentUser\n );\n\n const labels = getLabelsForParkingType(\n t,\n latestEventData?.latestEvent?.parking?.type as ParkingTypeEnum\n );\n\n let content = null;\n\n if (ongoingSession) {\n content = (\n <>\n
\n {labels.title}\n
\n {labels.description && (\n \n )}\n \n );\n } else {\n content = (\n <>\n
\n {labels.title}\n
\n {labels.description && (\n \n )}\n \n );\n }\n\n return (\n <>\n
\n
\n \n
\n
\n\n {content}\n \n );\n };\n\n const renderSingleGateFlowButtons = () => {\n const ongoingSession = getActiveSessionFromLatestEvent(\n latestEventData?.latestEvent,\n currentUser\n );\n\n const labels = getLabelsForParkingType(\n t,\n latestEventData?.latestEvent?.parking?.type as ParkingTypeEnum\n );\n\n if (ongoingSession) {\n return (\n
\n \n handleEndParkingSessionOnSingularGateClick(ongoingSession)\n }\n >\n {labels.lock}\n \n \n {t('close')}\n \n {parkingDetail?.type === 'rental' && (\n

\n {t('rentalCaseNote')}\n

\n )}\n
\n );\n }\n\n return (\n
\n \n {labels.unlock}\n \n {parkingDetail?.type === 'parking' && (\n

\n {t('parkCaseNote')}\n

\n )}\n \n {t('close')}\n \n {parkingDetail?.type === 'rental' && (\n

\n {t('rentalCaseNote')}\n

\n )}\n
\n );\n };\n\n if (!latestEventData) {\n return null;\n }\n\n let canShow = false;\n\n if (latestEventData?.latestEvent) {\n const le = latestEventData.latestEvent;\n\n if (le.type === 'manual') {\n if (\n (le.status === 'mqtt' ||\n le.status === 'sim_completed' ||\n le.status === 'internal_testing_purposes') &&\n !le.isAknowledgedByUser\n ) {\n canShow = true;\n }\n }\n }\n\n const isSingleGateFlow = checkIfGateIsSingular(\n latestEventData?.latestEvent?.gate\n );\n\n return (\n {}}\n closeOnCloseIconClick={false}\n isFullscreen={true}\n renderCloseIcon={() => null}\n closeOnEscClick={false}\n >\n
\n
\n \n
\n\n {renderHeaders()}\n\n
\n {isSingleGateFlow\n ? renderSingleGateFlowButtons()\n : renderAcknowledgeButton()}\n\n setIsParkingIssueModalShown(true)}\n >\n {t('somethingIsWrong')}\n \n
\n
\n \n \n );\n};\n","import HyperModal from 'react-hyper-modal';\nimport { SubscriptionPlanModalProps } from './props';\nimport InfoIcon from '../../../assets/svg/info.svg';\nimport { useTranslation } from 'react-i18next';\nimport { DocumentRenderer } from '@keystone-6/document-renderer';\nimport { Button } from '../Button';\nimport { renderers } from '../../../utils/utilsDocumentRenderers';\n\nexport const SubscriptionPlanModal = ({\n isOpen,\n onClose,\n subscriptionPlan,\n}: SubscriptionPlanModalProps) => {\n const { t } = useTranslation();\n\n const isEmptyDescrition =\n !subscriptionPlan ||\n subscriptionPlan?.description?.document[0]?.children[0]?.text === '';\n\n return (\n \n
\n
\n
\n \n
\n
\n
\n

{subscriptionPlan?.name}

\n
\n {subscriptionPlan?.price}\n {subscriptionPlan?.currency} / {subscriptionPlan?.interval}{' '}\n
\n
\n {!isEmptyDescrition && (\n
\n
{t('subscriptions.whatYouGet')}:
\n
\n \n
\n
\n )}\n
\n \n
\n
\n
\n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { formatTimeElapsed } from '../../../utils/utilsTime';\nimport { SessionTimerProps } from './props';\nimport { useRouter } from 'next/router';\nimport { useTranslation } from 'react-i18next';\n\nexport const SessionTimer = ({ session }: SessionTimerProps) => {\n const [elapsedTime, setElapsedTime] = useState('');\n const router = useRouter();\n const { t } = useTranslation();\n\n const handleTimerClick = useCallback(() => {\n if (session && session.parking) {\n router.push(`?parkingId=${session.parking.id}`);\n }\n }, [session, router]);\n\n useEffect(() => {\n if (!session || session.endedAt) {\n return;\n }\n\n const updateTimer = () => {\n setElapsedTime(formatTimeElapsed(session.startedAt));\n };\n\n updateTimer();\n\n const interval = setInterval(updateTimer, 1000);\n\n return () => clearInterval(interval);\n }, [session]);\n\n if (!session || session.endedAt) {\n return null;\n }\n\n return (\n \n \n {new Date(session.startedAt) < new Date()\n ? t('activeSessionLabel')\n : 'Booking starts in'}\n {':'} {elapsedTime}\n \n \n );\n};\n","interface TimeUnit {\n value: number;\n suffix: string;\n}\n\nexport const formatTimeElapsed = (startDate: string): string => {\n const calculateTimeDifference = (date1: Date, date2: Date): number => {\n return Math.abs(date2.getTime() - date1.getTime());\n };\n\n const getTimeUnits = (milliseconds: number): TimeUnit[] => {\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n return [\n { value: days, suffix: 'd' },\n { value: hours % 24, suffix: 'h' },\n { value: minutes % 60, suffix: 'm' },\n { value: seconds % 60, suffix: 's' },\n ];\n };\n\n const formatUnits = (units: TimeUnit[]): string => {\n const firstNonZeroIndex = units.findIndex((unit) => unit.value > 0);\n if (firstNonZeroIndex === -1) return '0s';\n\n return units\n .slice(firstNonZeroIndex)\n .map(({ value, suffix }) => `${value}${suffix}`)\n .join(' ');\n };\n\n const start = new Date(startDate);\n const now = new Date();\n const elapsed = calculateTimeDifference(start, now);\n const timeUnits = getTimeUnits(elapsed);\n return formatUnits(timeUnits);\n};\n","import React from 'react';\nimport { useLazyQuery, useQuery } from '@apollo/client';\nimport { NextPage } from 'next';\nimport { useRouter } from 'next/router';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePosition } from 'use-position';\nimport styles from '../assets/styles/pages/BrowsePage.module.sass';\nimport { Drawer } from '../components/common/Drawer';\nimport { Map } from '../components/common/Map';\nimport { FeedbackModal } from '../components/common/FeedbackModal';\nimport { StatusPopup } from '../components/common/StatusPopup';\nimport { IdentityPopup } from '../components/common/IdentityPopup';\nimport { LatestEventQuery } from '../graphql/events/latestEventQuery';\nimport { GetOngoingParkingSessionQuery } from '../graphql/sessions/getOngoingParkingSessionQuery';\nimport { GetParkingsWithinDistance } from '../graphql/parkings/getParkingsWithinDistance';\nimport { GetParkingByIdQuery } from '../graphql/parkings/getParkingByIdQuery';\nimport { GetAllVendorsQuery } from '../graphql/vendors/getAllVendorsQuery';\nimport { GetVendorByIdQuery } from '../graphql/vendors/getVendorByIdQuery';\nimport { useParkings } from '../hooks/useParkings';\nimport { useVendors } from '../hooks/useVendors';\nimport { DetailViewTypes, ParkingType, VendorType } from '../utils/utilTypes';\nimport { useAuth } from '../lib/auth';\nimport { isUserIdentityVerified } from '../utils/utilsUser';\nimport { UnlockModal } from '../components/common/UnlockModal';\nimport { isDateOlderThan } from '../utils/utilDates';\nimport { SHOW_GATES_OPEN_TIMEOUT_IN_MS } from '../components/common/StatusPopup/utils/inferTypes';\nimport { GetCurrentUserSubscriptionsQuery } from '../graphql/stripe/subscriptionPlan/getCurrentUserSubscriptions';\nimport { usePaymentPlanDetailsSlice } from '../slices/usePaymentPlanDetailsSlice';\nimport { SubscriptionPlanModal } from '../components/common/SubscriptionPlanModal';\nimport { SessionTimer } from '../components/common/SessionTimer';\n\nconst POLLING_INTERVAL_IN_MILLISECONDS = 1000;\nconst ZOOM = 16;\nconst WATCH_INTERVAL: number = Number(\n process.env.NEXT_PUBLIC_WATCH_POSITION_TIMEOUT_IN_MILLISECONDS\n);\n\nconst BrowsePage: NextPage = () => {\n const [map, setMap] = useState(null);\n const watchPosition = true;\n\n const { currentUser } = useAuth();\n const router = useRouter();\n const { parkingId, vendorId, ref } = router.query;\n\n const [isGelocationDenied, setIsGelocationDenied] = useState(false);\n const [isUserLocationLoaded, setIsUserLocationLoaded] = useState(false);\n const [showFeedbackModal, setShowFeedbackModal] = useState(false);\n const [isPollingForUnlockEvent, setIsPollingForUnlockEvent] = useState(false);\n const [isDrawerExpanded, setIsDrawerExpanded] = useState(false);\n const [detailViewType, setDetailViewType] = useState(\n parkingId || ref ? 'parking' : vendorId ? 'vendor' : null\n );\n const { paymentPlan: selectedPaymentPlanDetail, clearSelectedPlan } =\n usePaymentPlanDetailsSlice();\n const {\n operations: { toggleSelectedParking, clearSelectedParking },\n } = useParkings();\n const {\n operations: { toggleSelectedVendor, clearSelectedVendor },\n } = useVendors();\n const { data: currentUserSubscriptions } = useQuery(\n GetCurrentUserSubscriptionsQuery,\n {\n skip: !currentUser,\n }\n );\n const userSubscriptions =\n currentUserSubscriptions?.getCurrentUserSubscriptionsStripe || [];\n\n const [mapRef, setMapRef] = useState(null);\n\n // TODO: Incorrect types definitions, ex: errorMessage is not defined on the usePosition output, use error instead\n const {\n latitude: lat,\n longitude: lng,\n error,\n } = usePosition(watchPosition, {\n enableHighAccuracy: true,\n maximumAge: WATCH_INTERVAL,\n });\n\n const focusMapOnMarker = useCallback(\n (lat, lng) => {\n if (mapRef && lat && lng) {\n mapRef.current?.flyTo({\n center: [lng, lat],\n zoom: ZOOM,\n duration: 2000,\n });\n }\n },\n [mapRef]\n );\n\n const [\n getParkingById,\n {\n loading: isLoadingParkingDetail,\n data: foundParkings,\n error: getByIdError,\n },\n ] = useLazyQuery(GetParkingByIdQuery);\n\n const parkingDetailData = foundParkings && foundParkings.parkings[0];\n\n const [\n getVendorById,\n {\n loading: isLoadingVendorDetail,\n data: vendorDetailData,\n error: getVendorByIdError,\n },\n ] = useLazyQuery(GetVendorByIdQuery);\n\n const getParkingFromQueryParam = useCallback(\n async (parkingId) => {\n try {\n const {\n data: { parkings },\n } = await getParkingById({\n variables: { id: parkingId },\n fetchPolicy: 'network-only',\n });\n const parking = parkings[0];\n focusMapOnMarker(parking.lat, parking.lng);\n setIsDrawerExpanded(true);\n toggleSelectedParking(parkingId);\n } catch (error) {\n console.log('error', error);\n }\n },\n [focusMapOnMarker, getParkingById, toggleSelectedParking]\n );\n\n const getParkingFromRefParam = useCallback(\n async (ref) => {\n try {\n const {\n data: { parkings },\n } = await getParkingById({\n variables: { alias: ref },\n fetchPolicy: 'network-only',\n });\n const parking = parkings[0];\n focusMapOnMarker(parking.lat, parking.lng);\n setIsDrawerExpanded(true);\n toggleSelectedParking(parking.id);\n } catch (error) {\n console.log('error', error);\n }\n },\n [focusMapOnMarker, getParkingById, toggleSelectedParking]\n );\n\n const getVendorFromQueryParam = useCallback(\n async (vendorId) => {\n try {\n const {\n data: { vendor },\n } = await getVendorById({\n variables: { id: vendorId },\n fetchPolicy: 'network-only',\n });\n focusMapOnMarker(vendor.lat, vendor.lng);\n setIsDrawerExpanded(true);\n toggleSelectedVendor(vendorId);\n } catch (error) {\n console.log('error', error);\n }\n },\n [focusMapOnMarker, getVendorById, toggleSelectedVendor]\n );\n\n const [\n loadParkingsNear,\n {\n loading: isLoadingParkings,\n data: parkingsListData,\n error: parkingsDataError,\n },\n ] = useLazyQuery(GetParkingsWithinDistance, {\n onCompleted: async () => {\n if (\n (parkingId && parkingId !== parkingDetailData?.id) ||\n (ref && ref !== parkingDetailData?.alias)\n ) {\n if (parkingId) {\n await getParkingFromQueryParam(parkingId);\n return;\n }\n if (ref) {\n await getParkingFromRefParam(ref);\n }\n }\n },\n });\n\n const {\n loading: isLoadingVendors,\n error: vendorsDataError,\n data: vendorsData,\n } = useQuery(GetAllVendorsQuery, {\n onCompleted: async () => {\n if (vendorId && vendorId !== vendorDetailData?.vendor?.id) {\n await getVendorFromQueryParam(vendorId);\n }\n },\n });\n\n const {\n data: latestEventData,\n startPolling,\n stopPolling,\n } = useQuery(LatestEventQuery);\n\n const { data: ongoingParkingSession } = useQuery(\n GetOngoingParkingSessionQuery\n );\n\n const parkingList = parkingsListData?.parkingsNearLocation.map(\n (p: ParkingType) => ({\n ...p,\n isAtFullCapacity: p.capacity - p.occupied === 0,\n })\n );\n\n const vendorsList =\n vendorsData?.vendors\n .map((v: VendorType) => ({\n ...v,\n }))\n .filter((v: VendorType) => v.isAvailable) || [];\n\n const onParkingClick = useCallback(\n async ({ id, lat = '', lng = '' }: ParkingType) => {\n router.push(`?parkingId=${id}`, undefined, { shallow: true });\n setDetailViewType('parking');\n focusMapOnMarker(lat, lng);\n setIsDrawerExpanded(true);\n await getParkingById({\n variables: { id },\n fetchPolicy: 'network-only',\n });\n toggleSelectedParking(id);\n },\n [focusMapOnMarker, getParkingById, toggleSelectedParking, router]\n );\n\n const onVendorClick = useCallback(\n async ({ id, lat = '', lng = '' }: VendorType) => {\n router.push(`?vendorId=${id}`, undefined, { shallow: true });\n setDetailViewType('vendor');\n focusMapOnMarker(lat, lng);\n setIsDrawerExpanded(true);\n await getVendorById({ variables: { id }, fetchPolicy: 'network-only' });\n toggleSelectedVendor(id);\n },\n [focusMapOnMarker, router]\n );\n\n const onClearClick = () => {\n setIsDrawerExpanded(false);\n clearSelectedParking();\n clearSelectedVendor();\n\n router.push('/', undefined, { shallow: true });\n };\n\n const handleStartPolling = () => {\n startPolling(POLLING_INTERVAL_IN_MILLISECONDS);\n setIsPollingForUnlockEvent(true);\n };\n\n const renderPopups = () => {\n if (!currentUser) {\n return null;\n }\n\n if (!isDrawerExpanded || detailViewType === 'vendor') {\n return null;\n }\n\n if (\n !isUserIdentityVerified(currentUser) &&\n parkingDetailData &&\n parkingDetailData?.requiresIdVerification &&\n !parkingDetailData?.isUnavailable\n ) {\n return ;\n }\n\n return (\n \n );\n };\n\n useEffect(() => {\n if (parkingId) {\n getParkingFromQueryParam(parkingId);\n }\n }, [parkingId]);\n\n useEffect(() => {\n if (latestEventData?.latestEvent?.twilioCallResponse === true) {\n stopPolling();\n setIsPollingForUnlockEvent(false);\n }\n }, [latestEventData?.latestEvent, stopPolling]);\n\n useEffect(() => {\n if (error) {\n setIsGelocationDenied(true);\n }\n }, [error]);\n\n useEffect(() => {\n if (lat && lng && !isUserLocationLoaded) {\n loadParkingsNear({\n variables: {\n lat,\n lng,\n },\n });\n setIsUserLocationLoaded(true);\n }\n }, [lat, lng]);\n\n if (parkingsDataError) {\n return (\n
\n Error fetching parkings data {parkingsDataError.message}:(\n
\n );\n }\n\n if (vendorsDataError) {\n return (\n
\n Error fetching vendor data {vendorsDataError.message}:(\n
\n );\n }\n\n return (\n
\n {renderPopups()}\n setShowFeedbackModal(true)}\n />\n \n setShowFeedbackModal(false)}\n />\n\n \n\n \n\n \n
\n );\n};\n\nexport default BrowsePage;\n","import { ReactiveVar } from '@apollo/client';\nimport { currentSelectedVendorId, parkingsInUnlockRadius } from '../lib/apollo';\n\nexport function useVendors() {\n const toggleSelectedVendor = (vendorId: string) => {\n currentSelectedVendorId(vendorId);\n };\n\n const clearSelectedVendor = () => {\n currentSelectedVendorId(null);\n };\n\n return {\n operations: {\n toggleSelectedVendor,\n clearSelectedVendor,\n },\n };\n}\n","import { DocumentRendererProps } from '@keystone-6/document-renderer';\n\nexport const renderers: DocumentRendererProps['renderers'] = {\n // use your editor's autocomplete to see what other renderers you can override\n inline: {\n bold: ({ children }) => {\n return {children};\n },\n },\n block: {\n paragraph: ({ children, textAlign }) => {\n return

{children}

;\n },\n list: ({ type, children }) => {\n return (\n
    \n {children.map((child, index) => (\n
  • {child}
  • \n ))}\n
\n );\n },\n },\n};\n","import { toast } from 'react-hot-toast';\n\nexport const toastManager = {\n acceptedInviteSuccess(message: string) {\n toast.success(`${message}\\nRedirecting...`, {\n duration: 3_000,\n });\n },\n acceptedInviteError() {\n toast.error('Error accepting invite, please try again later');\n },\n companyNotFound() {\n toast.error('Company not found ❌');\n },\n smsValidated() {\n toast.success('SMS validated\\nRedirecting...');\n },\n passwordChanged() {\n toast.success('Password changed \\nRedirecting...');\n },\n requestAccessSuccess() {\n toast.success('We will review the request and get back to you soon');\n },\n couldNotCreateVendorClaim() {\n toast.error('Could not create vendor claim');\n },\n claimInvalidCode() {\n toast.error('Code is invalid');\n },\n claimCodeExpired() {\n toast.error('Code expired');\n },\n claimInsufficientBalance() {\n toast.error('User does not have enough rastel coins');\n },\n couldNotAcknowledgeParkingEvent() {\n toast.error('Could not acknowledge parking event');\n },\n subscriptionCancelled() {\n toast.success('Subscription cancelled');\n },\n subscriptionCreationError(message: string) {\n toast.error(`Error creating subscription ${message}`);\n },\n zenUnlockedParkingSuccess(parkingName: string) {\n toast.success(`Parcarea ${parkingName} deblocata cu succes!`);\n },\n zenUnlockedParkingError(parkingName: string) {\n toast.error(`Eroare la deblocarea parcarii ${parkingName}`);\n },\n zenUnlockedBlocatorError(message: string) {\n toast.error(message);\n },\n zenUnlockedBlocatorSuccess(message: string, isSuccess: boolean) {\n if (!isSuccess) {\n toast.error(message);\n return;\n }\n\n toast.success(message);\n },\n zenUnlockedBlocatorDecodeError() {\n toast.error('Error decoding unlock response');\n },\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"browsePage\":\"BrowsePage_browsePage__mWcWK\"};"],"names":["_path","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","props","width","height","xmlns","d","_path2","_path3","fill","stroke","window","__NEXT_P","push","Button","className","type","Icon","disabled","loading","onClick","children","button","div","Loader","size","isInverted","GetCurrentUserSubscriptionsQuery","gql","distanceBetweenTwoPoints","point1","point2","to","latitude","parseFloat","lat","longitude","lng","from","getDistance","AllCardParkingLoadingSkeleton","Array","keys","map","x","Skeleton","CardParkingList","center","parkings","isLoading","ongoingSession","latestEvent","useTranslation","t","sorterParkings","distance","filter","p","referenceParking","sort","a","b","Swiper","spaceBetween","slidesPerView","scrollbar","draggable","parking","isParkingInSession","id","isDisabled","Number","SwiperSlide","style","photo","Image","priority","src","image","publicUrl","layout","objectFit","alt","altText","capacity","occupied","name","full_address","isUserIdentityVerified","user","stripeVerificationSession","status","isUserParkingRequestApproved","userParkings","foundParking","find","userParking","isSubscriptionCase","userSubscriptions","subscriptionPlans","hasActiveSubscription","some","plan","foundMatchingSubscription","s","metadata","subscriptionPlanId","buildParkingGateOptions","currentUser","gateOptions","devices","activeSession","getActiveSession","forEach","device","idx","gates","currentGate","value","mqttId","order","label","alias","isSingularGate","checkIfGateIsSingular","canUnlock","checkIfCanUnlockGate","hasSessionInFuture","checkIfHasSessionInFuture","gatesCount","gate","isOwnerOfSession","session","Date","startedAt","sessions","latestSession","createdAt","getTime","isOngoingSession","endedAt","isOwner","flatMap","getActiveSessionFromLatestEvent","event","getLabelsForParkingType","DEFAULT_LABELS","unlock","lock","title","description","labels","rental","GateSelector","selectedGate","onSelectGate","useAuth","bookingLink","href","rel","LatestEventQuery","GetParkingByIdQuery","GetParkingsWithinDistance","RequestAccessToParkingMutation","UnlockParkingByIdMutation","SubscribeToPlanMutation","_circle","CardParkingDetailLoadingSkeleton","data-testid","viewBox","cx","cy","r","usePaymentPlanDetailsSlice","create","set","paymentPlan","handleSelectPlan","clearSelectedPlan","getCurrencySymbol","currency","CardParkingDetail","handleStartPolling","isPollingForUnlockEvent","useMutation","unlockParkingById","data","error","requestAccess","subscribe","isParkingSpotWithSubscriptionPlan","router","useRouter","activeLanguage","i18n","language","gateAlias","query","initialSelectedGate","useMemo","o","toString","useState","setSelectedGate","selectedSubscriptionPlan","setSelectedSubscriptionPlan","isSingularLayout","layoutType","parkingQuests","userHasActiveSubscriptionPlan","requiresApproval","requiresIdVerification","sp","sub","hasParkingQuests","getGateValue","networkingType","handleUnlock","console","log","variables","parkingId","refetchQueries","onRequestAccess","toastManager","onSubscribeClick","checkoutLink","parkingSpotId","locale","split","subscribeToPlan","includes","renderQuestCard","pq","userCompletedQuests","str","isCompleted","completedQuests","quest","dailyQuest","cq","findLast","toDateString","calculateIfQuestIsCompleted","reward","RastelCoinIcon","substring","span","isActive","isSelected","subscriptionPlan","price","String","toLowerCase","interval","InfoIcon","isInUnlockRadius","isRequestPendingApproval","isUnavailable","isRequestInexistent","isLoadingRequestAccess","isIDValidationCase","isLoadingUnlocking","UnlockIcon","message","CreateVendorClaimMutation","CardVendorDetail","vendor","onCollapseDrawerClick","userBalance","walletBalance","selectedRewardId","setSelectedRewardId","claimVendorReward","selectedReward","rewards","handleClaimClick","claimData","vendorRewardId","createVendorClaimCustom","CloseIcon","h1","replace","toUpperCase","renderHeader","h2","baseClass","canClaim","cost","scale","Drawer","detailViewType","isDrawerExpanded","isLoadingParkings","isLoadingParkingDetail","isLoadingVendorDetail","isUserLocationLoaded","parkingDetail","vendorDetail","onListItemClick","useParkings","operations","toggleSelectedParking","currentSelectedParkingId","clearSelectedParking","setParkingsInRadius","parkingsId","parkingsInUnlockRadius","Map","React","isGeolocationDenied","zoom","parkingMarkers","vendorMarkers","onParkingMarkerClick","onVendorMarkerClick","onMapLoad","onLeaveACommentClick","mapRef","useRef","geolocateControlRef","fitBounds","useCallback","current","flyTo","duration","computeMarkersInRadius","position","parkingsThatQualifyInRadius","m","markerPoint","radius","point","withinRegion","process","location","reload","MapGL","initialViewState","attributionControl","mapboxAccessToken","mapStyle","ref","onLoad","trigger","GeolocateControl","trackUserLocation","showUserLocation","onGeolocate","coords","backgroundColor","borderRadius","display","justifyContent","alignItems","LeaveACommentIcon","marker","index","Marker","offset","isAtFullCapacity","renderParkingMarker","renderVendorMarker","text","CreateReviewMutation","FeedbackModal","isOpen","onClose","useForm","mode","defaultValues","rating","register","handleSubmit","control","formState","isValid","reset","isDirty","errors","createReview","handleClose","onSubmit","userId","err","HyperModal","requestClose","form","h4","Controller","rules","required","render","field","Rating","initialRating","stop","emptySymbol","StarEmptyIcon","fullSymbol","StarFilledIcon","textarea","rows","possibleTypes","selectedParking","withinParkingRadius","unlockingSelectedParking","unavailable","subscription","StatusPopup","selectedModalType","twilioCallResponse","inferParkingModal","dangerouslySetInnerHTML","__html","CREATE_IDENTITY_VERIFICATION_MUTATION","IdentityPopup","createVerificationSession","getCurrentUser","handleIdentityVerificationClick","client_secret","result","stripe","GetOngoingParkingSessionQuery","GetAllVendorsQuery","GetVendorByIdQuery","UpdateEventMutation","CreateRewardCustomMutation","CreateParkingIssueMutation","ReportIssueModal","reason","useQuery","createIssue","latestEventData","StartParkingSessionMutation","EndParkingSessionMutation","UnlockModal","isParkingIssueModalShown","setIsParkingIssueModalShown","updateEvent","startParkingSesssion","endParkingSession","acknowledgeParkingEvent","response","isAknowledgedByUser","handleCloseIssueModal","handlePostUnlock","updatedEvent","nextParking","uncollectedQuest","referencedBy","handleAcknowledgeEvent","handleStartParkingSessionOnSingularGateClick","gateId","handleEndParkingSessionOnSingularGateClick","canShow","le","isSingleGateFlow","closeOnCloseIconClick","isFullscreen","renderCloseIcon","closeOnEscClick","AppHero","inverted","content","Lottie","options","loop","autoplay","animationData","chainAnimationData","unlockAnimationData","renderHeaders","isLoadingRewardCreate","renderSingleGateFlowButtons","SubscriptionPlanModal","isEmptyDescrition","document","DocumentRenderer","renderers","SessionTimer","elapsedTime","setElapsedTime","handleTimerClick","useEffect","updateTimer","startDate","date1","date2","start","now","units","firstNonZeroIndex","findIndex","unit","slice","suffix","join","formatUnits","milliseconds","seconds","Math","floor","minutes","hours","getTimeUnits","abs","formatTimeElapsed","setInterval","clearInterval","WATCH_INTERVAL","setMap","vendorId","isGelocationDenied","setIsGelocationDenied","setIsUserLocationLoaded","showFeedbackModal","setShowFeedbackModal","setIsPollingForUnlockEvent","setIsDrawerExpanded","setDetailViewType","useVendors","toggleSelectedVendor","currentSelectedVendorId","clearSelectedVendor","skip","currentUserSubscriptions","getCurrentUserSubscriptionsStripe","setMapRef","usePosition","enableHighAccuracy","maximumAge","focusMapOnMarker","useLazyQuery","getParkingById","parkingDetailData","foundParkings","getVendorById","getParkingFromQueryParam","fetchPolicy","getParkingFromRefParam","getVendorFromQueryParam","onCompleted","loadParkingsNear","vendorDetailData","startPolling","stopPolling","parkingList","parkingsListData","parkingsNearLocation","vendorsList","vendorsData","vendors","v","isAvailable","onParkingClick","undefined","shallow","onVendorClick","onClearClick","parkingsDataError","styles","vendorsDataError","onMapClick","ongoingParkingSession","getOngoingParkingSession","selectedPaymentPlanDetail","inline","bold","strong","block","paragraph","textAlign","fontSize","margin","list","ul","child","li","acceptedInviteSuccess","toast","acceptedInviteError","companyNotFound","smsValidated","passwordChanged","requestAccessSuccess","couldNotCreateVendorClaim","claimInvalidCode","claimCodeExpired","claimInsufficientBalance","couldNotAcknowledgeParkingEvent","subscriptionCancelled","subscriptionCreationError","zenUnlockedParkingSuccess","parkingName","zenUnlockedParkingError","zenUnlockedBlocatorError","zenUnlockedBlocatorSuccess","isSuccess","zenUnlockedBlocatorDecodeError","module","exports"],"sourceRoot":""}