@getmicdrop/venue-calendar 4.0.55 → 4.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CarouselView.legacy-D_KBySD4.js → CarouselView.legacy-DLjBpVG1.js} +3 -3
- package/dist/{CarouselView.legacy-D_KBySD4.js.map → CarouselView.legacy-DLjBpVG1.js.map} +1 -1
- package/dist/{CartView-heiLdEDm.js → CartView-D4ftcVcx.js} +3 -3
- package/dist/{CartView-heiLdEDm.js.map → CartView-D4ftcVcx.js.map} +1 -1
- package/dist/{Checkout-CYAhUyEU.js → Checkout-BWJ9WpZL.js} +4 -4
- package/dist/Checkout-BWJ9WpZL.js.map +1 -0
- package/dist/{Checkout-Cp18RJw9.js → Checkout-CZAK-lUU.js} +5 -5
- package/dist/Checkout-CZAK-lUU.js.map +1 -0
- package/dist/{Checkout.legacy-D96u7uS7.js → Checkout.legacy-Cgq5wi0A.js} +4 -4
- package/dist/{Checkout.legacy-D96u7uS7.js.map → Checkout.legacy-Cgq5wi0A.js.map} +1 -1
- package/dist/{CheckoutTimer-petYTscT.js → CheckoutTimer-B7Ih9Bix.js} +2 -2
- package/dist/{CheckoutTimer-petYTscT.js.map → CheckoutTimer-B7Ih9Bix.js.map} +1 -1
- package/dist/{CollectionView-DPR07VJZ.js → CollectionView-BL2uCKkc.js} +5 -5
- package/dist/{CollectionView-DPR07VJZ.js.map → CollectionView-BL2uCKkc.js.map} +1 -1
- package/dist/{CollectionView.legacy-BK4EEvJx.js → CollectionView.legacy-CzoENFwT.js} +3 -3
- package/dist/{CollectionView.legacy-BK4EEvJx.js.map → CollectionView.legacy-CzoENFwT.js.map} +1 -1
- package/dist/{Event-uS3ph5or.js → Event-PWzLHUe6.js} +3 -3
- package/dist/{Event-uS3ph5or.js.map → Event-PWzLHUe6.js.map} +1 -1
- package/dist/{EventDetailsView-kqOjtpZ8.js → EventDetailsView-Ceul1C69.js} +2 -2
- package/dist/{EventDetailsView-kqOjtpZ8.js.map → EventDetailsView-Ceul1C69.js.map} +1 -1
- package/dist/{FeaturedView.legacy-DKdUJ2Ej.js → FeaturedView.legacy-Q45gwPHx.js} +2 -2
- package/dist/{FeaturedView.legacy-DKdUJ2Ej.js.map → FeaturedView.legacy-Q45gwPHx.js.map} +1 -1
- package/dist/{GalleryCard-iALKN4kk.js → GalleryCard-DTvizp8a.js} +2 -2
- package/dist/{GalleryCard-iALKN4kk.js.map → GalleryCard-DTvizp8a.js.map} +1 -1
- package/dist/{GalleryView.legacy-DJCqGeai.js → GalleryView.legacy-C1CgF85P.js} +3 -3
- package/dist/{GalleryView.legacy-DJCqGeai.js.map → GalleryView.legacy-C1CgF85P.js.map} +1 -1
- package/dist/{GroupedListView.legacy-DPdFAzE4.js → GroupedListView.legacy-0Zsyzz5-.js} +2 -2
- package/dist/{GroupedListView.legacy-DPdFAzE4.js.map → GroupedListView.legacy-0Zsyzz5-.js.map} +1 -1
- package/dist/{SeriesPage-4omN9GAl.js → SeriesPage-C5QaNFdO.js} +5 -5
- package/dist/{SeriesPage-4omN9GAl.js.map → SeriesPage-C5QaNFdO.js.map} +1 -1
- package/dist/{SeriesPage.legacy-C6_ho_uU.js → SeriesPage.legacy-qfnbzGja.js} +2 -2
- package/dist/{SeriesPage.legacy-C6_ho_uU.js.map → SeriesPage.legacy-qfnbzGja.js.map} +1 -1
- package/dist/{Success-DX7Tn5PP.js → Success-6UcB4WqM.js} +6 -6
- package/dist/Success-6UcB4WqM.js.map +1 -0
- package/dist/{Success.legacy-Cgi6H7MF.js → Success.legacy-Cl4MqEW4.js} +2 -2
- package/dist/{Success.legacy-Cgi6H7MF.js.map → Success.legacy-Cl4MqEW4.js.map} +1 -1
- package/dist/{VenueCalendar-Q4cIEDO8.js → VenueCalendar-CeAdp4Ja.js} +14 -14
- package/dist/{VenueCalendar-Q4cIEDO8.js.map → VenueCalendar-CeAdp4Ja.js.map} +1 -1
- package/dist/{ViewTicketsEmbed-DhN1Bhg0.js → ViewTicketsEmbed-CgdU5UCM.js} +2 -2
- package/dist/{ViewTicketsEmbed-DhN1Bhg0.js.map → ViewTicketsEmbed-CgdU5UCM.js.map} +1 -1
- package/dist/{data-toggle-store.svelte-BQsbP-w1.js → data-toggle-store.svelte-w9BHGrbU.js} +2 -2
- package/dist/{data-toggle-store.svelte-BQsbP-w1.js.map → data-toggle-store.svelte-w9BHGrbU.js.map} +1 -1
- package/dist/{labels-DuhnYeCn.js → labels-C9B4Of2f.js} +2 -2
- package/dist/{labels-DuhnYeCn.js.map → labels-C9B4Of2f.js.map} +1 -1
- package/dist/{transform-DOUt0thq.js → transform-C3jlIoJO.js} +2 -2
- package/dist/{transform-DOUt0thq.js.map → transform-C3jlIoJO.js.map} +1 -1
- package/dist/venue-calendar.es.js +1 -1
- package/dist/venue-calendar.iife.js +1 -1
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +1 -1
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +2 -2
- package/dist/Checkout-CYAhUyEU.js.map +0 -1
- package/dist/Checkout-Cp18RJw9.js.map +0 -1
- package/dist/Success-DX7Tn5PP.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-DOUt0thq.js","sources":["../src/lib/public-calendar-flow/transform.ts"],"sourcesContent":["import { formatDateRaw } from '@getmicdrop/svelte-components';\r\n// Premium Ticket Experience — API → EventData Transformer\r\n// Maps raw API event responses to our clean EventData interface.\r\n// Used when plugging in real API data. The showcase continues using mock-data.ts directly.\r\n\r\nimport { getImageUrl } from '$lib/utils/utils.js';\r\nimport { getIANATimezone } from '$lib/utils/datetime.js';\r\nimport type {\r\n EventData,\r\n EventStatus,\r\n TicketTypeData,\r\n TicketStatus,\r\n VenueData,\r\n PerformerData,\r\n FAQItem,\r\n SeriesOccurrence,\r\n CollectionEvent,\r\n} from './types';\r\nimport type { SeriesPageData, PublicCollectionData } from '$lib/api/types';\r\n\r\n/**\r\n * Parse a single-line address string into display lines.\r\n * E.g. \"123 Main St, Los Angeles, CA 90012\" → [\"123 Main St\", \"Los Angeles, CA 90012\"]\r\n */\r\nfunction parseAddress(addressStr: string): string[] {\r\n if (!addressStr) return [];\r\n const parts = addressStr.split(',').map(p => p.trim());\r\n if (parts.length < 2) return [addressStr];\r\n const lastPart = parts[parts.length - 1];\r\n const stateZipMatch = lastPart.match(/^([A-Z]{2})\\s+(\\d{5}(-\\d{4})?)$/);\r\n if (stateZipMatch && parts.length >= 3) {\r\n const state = stateZipMatch[1];\r\n const zip = stateZipMatch[2];\r\n const city = parts[parts.length - 2];\r\n const lines = parts.slice(0, -2);\r\n lines.push(`${city}, ${state} ${zip}`);\r\n return lines;\r\n }\r\n return [parts[0], parts.slice(1).join(', ')];\r\n}\r\n\r\n/**\r\n * Build a Google Maps search URL from an address string.\r\n */\r\nfunction buildGoogleMapsUrl(address: string): string {\r\n if (!address) return '';\r\n return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;\r\n}\r\n\r\n/**\r\n * Map a raw API ticket status/state to our TicketStatus union.\r\n */\r\nfunction mapTicketStatus(ticket: any): TicketStatus {\r\n const now = new Date();\r\n const remaining =\r\n ticket.remainingCapacity ??\r\n ticket.quantityRemaining ??\r\n ticket.quantity ??\r\n 0;\r\n const salesBegin =\r\n ticket.salesBegin ||\r\n ticket.salesStart ||\r\n ticket.saleBegin ||\r\n ticket.onSaleStart;\r\n const salesEnd = ticket.salesEnd || ticket.saleEnd || ticket.onSaleEnd;\r\n\r\n if (remaining <= 0) return 'sold_out';\r\n if (salesEnd && new Date(salesEnd) < now) return 'sales_ended';\r\n if (salesBegin && new Date(salesBegin) > now) return 'coming_soon';\r\n return 'on_sale';\r\n}\r\n\r\n/**\r\n * Map a raw API event status string to our EventStatus union.\r\n */\r\nfunction mapEventStatus(\r\n rawStatus: string,\r\n tickets: TicketTypeData[]\r\n): EventStatus {\r\n const s = (rawStatus || '').toLowerCase().replace(/\\s+/g, '_');\r\n\r\n if (s === 'cancelled' || s === 'canceled') return 'cancelled';\r\n\r\n // Check if event is past based on end time (handled by caller if needed)\r\n if (s === 'past' || s === 'ended') return 'past';\r\n\r\n // MIC-1039: if any hidden ticket is still on sale, the event is \"on_sale\"\r\n // regardless of visible-ticket states — the user just needs a promo code.\r\n const hasPurchasableHiddenTickets = tickets.some(\r\n t => t.isHidden && t.status === 'on_sale'\r\n );\r\n if (hasPurchasableHiddenTickets) return 'on_sale';\r\n\r\n // Derive from ticket states\r\n const publicTickets = tickets.filter(t => !t.isHidden);\r\n if (publicTickets.length > 0) {\r\n if (publicTickets.every(t => t.status === 'sold_out')) return 'sold_out';\r\n if (publicTickets.every(t => t.status === 'coming_soon'))\r\n return 'coming_soon';\r\n if (\r\n publicTickets.every(\r\n t => t.status === 'sales_ended' || t.status === 'sold_out'\r\n )\r\n )\r\n return 'sales_ended';\r\n }\r\n\r\n if (s === 'sold_out' || s === 'soldout') return 'sold_out';\r\n if (s === 'coming_soon' || s === 'comingsoon') return 'coming_soon';\r\n if (s === 'sales_ended' || s === 'salesended') return 'sales_ended';\r\n\r\n return 'on_sale';\r\n}\r\n\r\n/**\r\n * Transform a raw API event response into our clean EventData interface.\r\n * This is the bridge between the API and our premium ticket experience components.\r\n */\r\nexport function transformApiEvent(rawEvent: any): EventData {\r\n const timezone = getIANATimezone(\r\n rawEvent.timeZone || rawEvent.timezone || 'UTC'\r\n );\r\n\r\n // Transform tickets\r\n const rawTickets = rawEvent.availableTickets || [];\r\n const tickets: TicketTypeData[] = rawTickets.map((t: any) => ({\r\n id: t.id || t.ID,\r\n name: t.name || t.title || '',\r\n description: t.description || undefined,\r\n price: t.price ?? 0,\r\n fee: t.fee ?? 0,\r\n quantityAvailable:\r\n t.remainingCapacity ?? t.quantityRemaining ?? t.quantity ?? 0,\r\n quantityTotal: t.totalCapacity ?? t.quantity ?? 0,\r\n minPerOrder: t.minPerOrder ?? t.minQuantity ?? 1,\r\n maxPerOrder: t.maxPerOrder ?? t.maxQuantity ?? 10,\r\n status: mapTicketStatus(t),\r\n salesStartDate:\r\n t.salesBegin || t.salesStart || t.saleBegin || t.onSaleStart || undefined,\r\n salesEndDate: t.salesEnd || t.saleEnd || t.onSaleEnd || undefined,\r\n isDonation: t.type === 2 || t.ticketType === 2 || t.isDonation === true,\r\n isHidden: t.visibility === 2 || t.isHidden === true,\r\n ticketType: t.type || t.ticketType || undefined,\r\n sectionName: t.sectionName || t.section || undefined,\r\n }));\r\n\r\n // Calculate totals from public tickets\r\n const publicTickets = tickets.filter(t => !t.isHidden && !t.isDonation);\r\n const totalRemaining = publicTickets.reduce(\r\n (sum, t) => sum + t.quantityAvailable,\r\n 0\r\n );\r\n const totalCapacity = publicTickets.reduce(\r\n (sum, t) => sum + t.quantityTotal,\r\n 0\r\n );\r\n\r\n // Determine event status\r\n const status = mapEventStatus(rawEvent.status, tickets);\r\n\r\n // Build image URL\r\n const rawImage =\r\n rawEvent.image || rawEvent.imageUrl || rawEvent.image_url || '';\r\n const imageUrl = rawImage.startsWith('http')\r\n ? rawImage\r\n : getImageUrl(rawImage);\r\n\r\n // Venue\r\n const rawVenue = rawEvent.venue || {};\r\n const venue: VenueData = {\r\n id: rawVenue.id || rawVenue.ID || 0,\r\n name: rawVenue.name || rawVenue.googleLocationNameCache || '',\r\n address: rawVenue.address || rawVenue.googleLocationNameCache || '',\r\n timezone,\r\n serviceFeePercentage: rawVenue.serviceFeePercentage ?? rawVenue.fee ?? 0,\r\n serviceFeeCents: rawVenue.serviceFeeCents ?? 0,\r\n taxPercentage: rawVenue.taxPercentage ?? rawVenue.tax ?? 0,\r\n contactEmail: rawVenue.contactEmail || rawVenue.email || undefined,\r\n };\r\n\r\n // Performers\r\n const rawPerformers = rawEvent.performers || [];\r\n const performers: PerformerData[] = rawPerformers.map((p: any) => ({\r\n id: p.id || p.ID,\r\n displayName: p.displayName || p.name || '',\r\n profileImage: p.avatar || p.profileImage || undefined,\r\n role: p.role || undefined,\r\n }));\r\n\r\n // FAQs (may not be in API response)\r\n const faqs: FAQItem[] = (rawEvent.faqs || []).map((f: any) => ({\r\n question: f.question || '',\r\n answer: f.answer || '',\r\n }));\r\n\r\n // Date in venue timezone\r\n let date = '';\r\n if (rawEvent.startDateTime) {\r\n const dt = new Date(rawEvent.startDateTime);\r\n date = formatDateRaw(\r\n dt,\r\n { timeZone: timezone, year: 'numeric', month: '2-digit', day: '2-digit' },\r\n 'en-CA'\r\n );\r\n }\r\n\r\n return {\r\n id: rawEvent.id || rawEvent.ID,\r\n title: rawEvent.title || rawEvent.name || '',\r\n slug: rawEvent.slug || '',\r\n description: rawEvent.description || rawEvent.eventSummary || '',\r\n date,\r\n startDateTime: rawEvent.startDateTime || '',\r\n endDateTime: rawEvent.endDateTime || '',\r\n doorsOpenTime: rawEvent.doorsOpenTime || '',\r\n timezone,\r\n imageUrl,\r\n venue,\r\n performers,\r\n tickets,\r\n faqs,\r\n disclaimer: rawEvent.disclaimer || undefined,\r\n status,\r\n eventSeriesId: rawEvent.eventSeriesId || undefined,\r\n isPasswordProtected: !!rawEvent.password,\r\n isRegistrationEvent:\r\n rawEvent.ticketType === 1 || rawEvent.eventTicketingType === 1,\r\n totalTicketsRemaining: totalRemaining,\r\n totalTicketsCapacity: totalCapacity,\r\n stageName: rawEvent.stage?.name || rawEvent.stageName || undefined,\r\n ageRestriction: rawEvent.ageRestriction || undefined,\r\n displayAgeRestriction: rawEvent.displayAgeRestriction ?? false,\r\n displayStartTime: rawEvent.displayStartTime ?? true,\r\n displayEndTime: rawEvent.displayEndTime ?? true,\r\n displayDoorsTime: rawEvent.displayDoorsTime ?? true,\r\n collectionId: rawEvent.collectionId || rawEvent.collection_id || undefined,\r\n venueAddressLines: parseAddress(\r\n rawVenue.address || rawVenue.googleLocationNameCache || ''\r\n ),\r\n googleMapsUrl: buildGoogleMapsUrl(\r\n rawVenue.address || rawVenue.googleLocationNameCache || ''\r\n ),\r\n };\r\n}\r\n\r\n/**\r\n * Transform SeriesPageData (from the series API) into our clean EventData interface.\r\n * Sets eventSeriesId so AirbnbSplitMain renders in full-width series mode.\r\n */\r\nexport function transformSeriesPageData(series: SeriesPageData): EventData {\r\n const timezone = getIANATimezone(series.timeZone || 'UTC');\r\n\r\n // Build image URL\r\n const rawImage = series.image || '';\r\n const imageUrl = rawImage.startsWith('http')\r\n ? rawImage\r\n : rawImage\r\n ? getImageUrl(rawImage)\r\n : '';\r\n\r\n // Map occurrences to SeriesOccurrence[]\r\n const seriesOccurrences: SeriesOccurrence[] = (series.occurrences || []).map(\r\n occ => ({\r\n id: occ.id,\r\n slug: occ.slug || '',\r\n startDateTime: occ.startDateTime,\r\n endDateTime: occ.endDateTime || '',\r\n status: (occ.ctaState?.reason === 'sold_out'\r\n ? 'sold_out'\r\n : 'on_sale') as EventStatus,\r\n ctaText: occ.ctaState?.text || 'Get Tickets',\r\n ctaDisabled: occ.ctaState?.disabled || false,\r\n })\r\n );\r\n\r\n // Use first occurrence for date fields\r\n const firstOcc = series.occurrences?.[0];\r\n let date = '';\r\n if (firstOcc?.startDateTime) {\r\n const dt = new Date(firstOcc.startDateTime);\r\n date = formatDateRaw(\r\n dt,\r\n { timeZone: timezone, year: 'numeric', month: '2-digit', day: '2-digit' },\r\n 'en-CA'\r\n );\r\n }\r\n\r\n // Map FAQs\r\n const rawFaq = series.venue?.faq;\r\n let faqs: FAQItem[] = [];\r\n if (Array.isArray(rawFaq)) {\r\n faqs = rawFaq.map(f => ({\r\n question: f.question || '',\r\n answer: f.answer || '',\r\n }));\r\n } else if (typeof rawFaq === 'string' && rawFaq) {\r\n faqs = [{ question: 'FAQ', answer: rawFaq }];\r\n }\r\n\r\n // Map performers\r\n const performers: PerformerData[] = (series.performers || []).map(\r\n (p, index) => ({\r\n id: index + 1,\r\n displayName:\r\n p.displayName || [p.firstName, p.lastName].filter(Boolean).join(' '),\r\n profileImage: p.profileImage || undefined,\r\n })\r\n );\r\n\r\n // Venue address\r\n const venueAddress =\r\n series.venue?.location || series.venue?.googleLocationNameCache || '';\r\n\r\n return {\r\n id: series.id,\r\n title: series.title || '',\r\n slug: '',\r\n description: series.description || series.eventSummary || '',\r\n date,\r\n startDateTime: firstOcc?.startDateTime || '',\r\n endDateTime: firstOcc?.endDateTime || '',\r\n doorsOpenTime: '',\r\n timezone,\r\n imageUrl,\r\n venue: {\r\n id: series.venue?.id || 0,\r\n name: series.venue?.name || '',\r\n address: venueAddress,\r\n timezone,\r\n serviceFeePercentage: 0,\r\n serviceFeeCents: 0,\r\n taxPercentage: 0,\r\n },\r\n performers,\r\n tickets: [],\r\n faqs,\r\n disclaimer: series.venue?.disclaimer || undefined,\r\n status: 'on_sale',\r\n eventSeriesId: series.id,\r\n seriesOccurrences,\r\n isPasswordProtected: false,\r\n isRegistrationEvent: false,\r\n totalTicketsRemaining: 0,\r\n totalTicketsCapacity: 0,\r\n venueAddressLines: parseAddress(venueAddress),\r\n googleMapsUrl: buildGoogleMapsUrl(venueAddress),\r\n };\r\n}\r\n\r\n/**\r\n * Transform PublicCollectionData (from the collection API) into our clean EventData interface.\r\n * Sets collectionId so AirbnbSplitMain renders in full-width collection mode.\r\n */\r\nexport function transformCollectionData(\r\n collection: PublicCollectionData\r\n): EventData {\r\n // Map collection events to CollectionEvent[]\r\n const collectionEvents: CollectionEvent[] = (collection.events || []).map(\r\n ev => {\r\n const rawImg = ev.image || '';\r\n return {\r\n id: ev.id,\r\n name: ev.title || '',\r\n slug: ev.slug || '',\r\n image: rawImg.startsWith('http')\r\n ? rawImg\r\n : rawImg\r\n ? getImageUrl(rawImg)\r\n : '',\r\n startDateTime: ev.startDateTime || '',\r\n status: (ev.status || 'on_sale') as EventStatus,\r\n };\r\n }\r\n );\r\n\r\n // Cover image\r\n const rawCover = collection.coverImage || '';\r\n const imageUrl = rawCover.startsWith('http')\r\n ? rawCover\r\n : rawCover\r\n ? getImageUrl(rawCover)\r\n : '';\r\n\r\n return {\r\n id: collection.id,\r\n title: collection.collectionTitle || '',\r\n slug: '',\r\n description: collection.description || collection.summary || '',\r\n date: '',\r\n startDateTime: '',\r\n endDateTime: '',\r\n doorsOpenTime: '',\r\n timezone: 'UTC',\r\n imageUrl,\r\n venue: {\r\n id: 0,\r\n name: '',\r\n address: '',\r\n timezone: 'UTC',\r\n serviceFeePercentage: 0,\r\n serviceFeeCents: 0,\r\n taxPercentage: 0,\r\n },\r\n performers: [],\r\n tickets: [],\r\n faqs: [],\r\n status: 'on_sale',\r\n collectionId: collection.id,\r\n collectionEvents,\r\n isPasswordProtected: false,\r\n isRegistrationEvent: false,\r\n totalTicketsRemaining: 0,\r\n totalTicketsCapacity: 0,\r\n };\r\n}\r\n"],"names":["parseAddress","addressStr","parts","p","stateZipMatch","state","zip","city","lines","buildGoogleMapsUrl","address","mapTicketStatus","ticket","now","remaining","salesBegin","salesEnd","mapEventStatus","rawStatus","tickets","t","publicTickets","transformApiEvent","rawEvent","timezone","getIANATimezone","totalRemaining","sum","totalCapacity","status","rawImage","imageUrl","getImageUrl","rawVenue","venue","performers","faqs","f","date","dt","formatDateRaw","transformSeriesPageData","series","seriesOccurrences","occ","firstOcc","rawFaq","index","venueAddress","transformCollectionData","collection","collectionEvents","ev","rawImg","rawCover"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform-C3jlIoJO.js","sources":["../src/lib/public-calendar-flow/transform.ts"],"sourcesContent":["import { formatDateRaw } from '@getmicdrop/svelte-components';\r\n// Premium Ticket Experience — API → EventData Transformer\r\n// Maps raw API event responses to our clean EventData interface.\r\n// Used when plugging in real API data. The showcase continues using mock-data.ts directly.\r\n\r\nimport { getImageUrl } from '$lib/utils/utils.js';\r\nimport { getIANATimezone } from '$lib/utils/datetime.js';\r\nimport type {\r\n EventData,\r\n EventStatus,\r\n TicketTypeData,\r\n TicketStatus,\r\n VenueData,\r\n PerformerData,\r\n FAQItem,\r\n SeriesOccurrence,\r\n CollectionEvent,\r\n} from './types';\r\nimport type { SeriesPageData, PublicCollectionData } from '$lib/api/types';\r\n\r\n/**\r\n * Parse a single-line address string into display lines.\r\n * E.g. \"123 Main St, Los Angeles, CA 90012\" → [\"123 Main St\", \"Los Angeles, CA 90012\"]\r\n */\r\nfunction parseAddress(addressStr: string): string[] {\r\n if (!addressStr) return [];\r\n const parts = addressStr.split(',').map(p => p.trim());\r\n if (parts.length < 2) return [addressStr];\r\n const lastPart = parts[parts.length - 1];\r\n const stateZipMatch = lastPart.match(/^([A-Z]{2})\\s+(\\d{5}(-\\d{4})?)$/);\r\n if (stateZipMatch && parts.length >= 3) {\r\n const state = stateZipMatch[1];\r\n const zip = stateZipMatch[2];\r\n const city = parts[parts.length - 2];\r\n const lines = parts.slice(0, -2);\r\n lines.push(`${city}, ${state} ${zip}`);\r\n return lines;\r\n }\r\n return [parts[0], parts.slice(1).join(', ')];\r\n}\r\n\r\n/**\r\n * Build a Google Maps search URL from an address string.\r\n */\r\nfunction buildGoogleMapsUrl(address: string): string {\r\n if (!address) return '';\r\n return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;\r\n}\r\n\r\n/**\r\n * Map a raw API ticket status/state to our TicketStatus union.\r\n */\r\nfunction mapTicketStatus(ticket: any): TicketStatus {\r\n const now = new Date();\r\n const remaining =\r\n ticket.remainingCapacity ??\r\n ticket.quantityRemaining ??\r\n ticket.quantity ??\r\n 0;\r\n const salesBegin =\r\n ticket.salesBegin ||\r\n ticket.salesStart ||\r\n ticket.saleBegin ||\r\n ticket.onSaleStart;\r\n const salesEnd = ticket.salesEnd || ticket.saleEnd || ticket.onSaleEnd;\r\n\r\n if (remaining <= 0) return 'sold_out';\r\n if (salesEnd && new Date(salesEnd) < now) return 'sales_ended';\r\n if (salesBegin && new Date(salesBegin) > now) return 'coming_soon';\r\n return 'on_sale';\r\n}\r\n\r\n/**\r\n * Map a raw API event status string to our EventStatus union.\r\n */\r\nfunction mapEventStatus(\r\n rawStatus: string,\r\n tickets: TicketTypeData[]\r\n): EventStatus {\r\n const s = (rawStatus || '').toLowerCase().replace(/\\s+/g, '_');\r\n\r\n if (s === 'cancelled' || s === 'canceled') return 'cancelled';\r\n\r\n // Check if event is past based on end time (handled by caller if needed)\r\n if (s === 'past' || s === 'ended') return 'past';\r\n\r\n // MIC-1039: if any hidden ticket is still on sale, the event is \"on_sale\"\r\n // regardless of visible-ticket states — the user just needs a promo code.\r\n const hasPurchasableHiddenTickets = tickets.some(\r\n t => t.isHidden && t.status === 'on_sale'\r\n );\r\n if (hasPurchasableHiddenTickets) return 'on_sale';\r\n\r\n // Derive from ticket states\r\n const publicTickets = tickets.filter(t => !t.isHidden);\r\n if (publicTickets.length > 0) {\r\n if (publicTickets.every(t => t.status === 'sold_out')) return 'sold_out';\r\n if (publicTickets.every(t => t.status === 'coming_soon'))\r\n return 'coming_soon';\r\n if (\r\n publicTickets.every(\r\n t => t.status === 'sales_ended' || t.status === 'sold_out'\r\n )\r\n )\r\n return 'sales_ended';\r\n }\r\n\r\n if (s === 'sold_out' || s === 'soldout') return 'sold_out';\r\n if (s === 'coming_soon' || s === 'comingsoon') return 'coming_soon';\r\n if (s === 'sales_ended' || s === 'salesended') return 'sales_ended';\r\n\r\n return 'on_sale';\r\n}\r\n\r\n/**\r\n * Transform a raw API event response into our clean EventData interface.\r\n * This is the bridge between the API and our premium ticket experience components.\r\n */\r\nexport function transformApiEvent(rawEvent: any): EventData {\r\n const timezone = getIANATimezone(\r\n rawEvent.timeZone || rawEvent.timezone || 'UTC'\r\n );\r\n\r\n // Transform tickets\r\n const rawTickets = rawEvent.availableTickets || [];\r\n const tickets: TicketTypeData[] = rawTickets.map((t: any) => ({\r\n id: t.id || t.ID,\r\n name: t.name || t.title || '',\r\n description: t.description || undefined,\r\n price: t.price ?? 0,\r\n fee: t.fee ?? 0,\r\n quantityAvailable:\r\n t.remainingCapacity ?? t.quantityRemaining ?? t.quantity ?? 0,\r\n quantityTotal: t.totalCapacity ?? t.quantity ?? 0,\r\n minPerOrder: t.minPerOrder ?? t.minQuantity ?? 1,\r\n maxPerOrder: t.maxPerOrder ?? t.maxQuantity ?? 10,\r\n status: mapTicketStatus(t),\r\n salesStartDate:\r\n t.salesBegin || t.salesStart || t.saleBegin || t.onSaleStart || undefined,\r\n salesEndDate: t.salesEnd || t.saleEnd || t.onSaleEnd || undefined,\r\n isDonation: t.type === 2 || t.ticketType === 2 || t.isDonation === true,\r\n isHidden: t.visibility === 2 || t.isHidden === true,\r\n ticketType: t.type || t.ticketType || undefined,\r\n sectionName: t.sectionName || t.section || undefined,\r\n }));\r\n\r\n // Calculate totals from public tickets\r\n const publicTickets = tickets.filter(t => !t.isHidden && !t.isDonation);\r\n const totalRemaining = publicTickets.reduce(\r\n (sum, t) => sum + t.quantityAvailable,\r\n 0\r\n );\r\n const totalCapacity = publicTickets.reduce(\r\n (sum, t) => sum + t.quantityTotal,\r\n 0\r\n );\r\n\r\n // Determine event status\r\n const status = mapEventStatus(rawEvent.status, tickets);\r\n\r\n // Build image URL\r\n const rawImage =\r\n rawEvent.image || rawEvent.imageUrl || rawEvent.image_url || '';\r\n const imageUrl = rawImage.startsWith('http')\r\n ? rawImage\r\n : getImageUrl(rawImage);\r\n\r\n // Venue\r\n const rawVenue = rawEvent.venue || {};\r\n const venue: VenueData = {\r\n id: rawVenue.id || rawVenue.ID || 0,\r\n name: rawVenue.name || rawVenue.googleLocationNameCache || '',\r\n address: rawVenue.address || rawVenue.googleLocationNameCache || '',\r\n timezone,\r\n serviceFeePercentage: rawVenue.serviceFeePercentage ?? rawVenue.fee ?? 0,\r\n serviceFeeCents: rawVenue.serviceFeeCents ?? 0,\r\n taxPercentage: rawVenue.taxPercentage ?? rawVenue.tax ?? 0,\r\n contactEmail: rawVenue.contactEmail || rawVenue.email || undefined,\r\n };\r\n\r\n // Performers\r\n const rawPerformers = rawEvent.performers || [];\r\n const performers: PerformerData[] = rawPerformers.map((p: any) => ({\r\n id: p.id || p.ID,\r\n displayName: p.displayName || p.name || '',\r\n profileImage: p.avatar || p.profileImage || undefined,\r\n role: p.role || undefined,\r\n }));\r\n\r\n // FAQs (may not be in API response)\r\n const faqs: FAQItem[] = (rawEvent.faqs || []).map((f: any) => ({\r\n question: f.question || '',\r\n answer: f.answer || '',\r\n }));\r\n\r\n // Date in venue timezone\r\n let date = '';\r\n if (rawEvent.startDateTime) {\r\n const dt = new Date(rawEvent.startDateTime);\r\n date = formatDateRaw(\r\n dt,\r\n { timeZone: timezone, year: 'numeric', month: '2-digit', day: '2-digit' },\r\n 'en-CA'\r\n );\r\n }\r\n\r\n return {\r\n id: rawEvent.id || rawEvent.ID,\r\n title: rawEvent.title || rawEvent.name || '',\r\n slug: rawEvent.slug || '',\r\n description: rawEvent.description || rawEvent.eventSummary || '',\r\n date,\r\n startDateTime: rawEvent.startDateTime || '',\r\n endDateTime: rawEvent.endDateTime || '',\r\n doorsOpenTime: rawEvent.doorsOpenTime || '',\r\n timezone,\r\n imageUrl,\r\n venue,\r\n performers,\r\n tickets,\r\n faqs,\r\n disclaimer: rawEvent.disclaimer || undefined,\r\n status,\r\n eventSeriesId: rawEvent.eventSeriesId || undefined,\r\n isPasswordProtected: !!rawEvent.password,\r\n isRegistrationEvent:\r\n rawEvent.ticketType === 1 || rawEvent.eventTicketingType === 1,\r\n totalTicketsRemaining: totalRemaining,\r\n totalTicketsCapacity: totalCapacity,\r\n stageName: rawEvent.stage?.name || rawEvent.stageName || undefined,\r\n ageRestriction: rawEvent.ageRestriction || undefined,\r\n displayAgeRestriction: rawEvent.displayAgeRestriction ?? false,\r\n displayStartTime: rawEvent.displayStartTime ?? true,\r\n displayEndTime: rawEvent.displayEndTime ?? true,\r\n displayDoorsTime: rawEvent.displayDoorsTime ?? true,\r\n collectionId: rawEvent.collectionId || rawEvent.collection_id || undefined,\r\n venueAddressLines: parseAddress(\r\n rawVenue.address || rawVenue.googleLocationNameCache || ''\r\n ),\r\n googleMapsUrl: buildGoogleMapsUrl(\r\n rawVenue.address || rawVenue.googleLocationNameCache || ''\r\n ),\r\n };\r\n}\r\n\r\n/**\r\n * Transform SeriesPageData (from the series API) into our clean EventData interface.\r\n * Sets eventSeriesId so AirbnbSplitMain renders in full-width series mode.\r\n */\r\nexport function transformSeriesPageData(series: SeriesPageData): EventData {\r\n const timezone = getIANATimezone(series.timeZone || 'UTC');\r\n\r\n // Build image URL\r\n const rawImage = series.image || '';\r\n const imageUrl = rawImage.startsWith('http')\r\n ? rawImage\r\n : rawImage\r\n ? getImageUrl(rawImage)\r\n : '';\r\n\r\n // Map occurrences to SeriesOccurrence[]\r\n const seriesOccurrences: SeriesOccurrence[] = (series.occurrences || []).map(\r\n occ => ({\r\n id: occ.id,\r\n slug: occ.slug || '',\r\n startDateTime: occ.startDateTime,\r\n endDateTime: occ.endDateTime || '',\r\n status: (occ.ctaState?.reason === 'sold_out'\r\n ? 'sold_out'\r\n : 'on_sale') as EventStatus,\r\n ctaText: occ.ctaState?.text || 'Get Tickets',\r\n ctaDisabled: occ.ctaState?.disabled || false,\r\n })\r\n );\r\n\r\n // Use first occurrence for date fields\r\n const firstOcc = series.occurrences?.[0];\r\n let date = '';\r\n if (firstOcc?.startDateTime) {\r\n const dt = new Date(firstOcc.startDateTime);\r\n date = formatDateRaw(\r\n dt,\r\n { timeZone: timezone, year: 'numeric', month: '2-digit', day: '2-digit' },\r\n 'en-CA'\r\n );\r\n }\r\n\r\n // Map FAQs\r\n const rawFaq = series.venue?.faq;\r\n let faqs: FAQItem[] = [];\r\n if (Array.isArray(rawFaq)) {\r\n faqs = rawFaq.map(f => ({\r\n question: f.question || '',\r\n answer: f.answer || '',\r\n }));\r\n } else if (typeof rawFaq === 'string' && rawFaq) {\r\n faqs = [{ question: 'FAQ', answer: rawFaq }];\r\n }\r\n\r\n // Map performers\r\n const performers: PerformerData[] = (series.performers || []).map(\r\n (p, index) => ({\r\n id: index + 1,\r\n displayName:\r\n p.displayName || [p.firstName, p.lastName].filter(Boolean).join(' '),\r\n profileImage: p.profileImage || undefined,\r\n })\r\n );\r\n\r\n // Venue address\r\n const venueAddress =\r\n series.venue?.location || series.venue?.googleLocationNameCache || '';\r\n\r\n return {\r\n id: series.id,\r\n title: series.title || '',\r\n slug: '',\r\n description: series.description || series.eventSummary || '',\r\n date,\r\n startDateTime: firstOcc?.startDateTime || '',\r\n endDateTime: firstOcc?.endDateTime || '',\r\n doorsOpenTime: '',\r\n timezone,\r\n imageUrl,\r\n venue: {\r\n id: series.venue?.id || 0,\r\n name: series.venue?.name || '',\r\n address: venueAddress,\r\n timezone,\r\n serviceFeePercentage: 0,\r\n serviceFeeCents: 0,\r\n taxPercentage: 0,\r\n },\r\n performers,\r\n tickets: [],\r\n faqs,\r\n disclaimer: series.venue?.disclaimer || undefined,\r\n status: 'on_sale',\r\n eventSeriesId: series.id,\r\n seriesOccurrences,\r\n isPasswordProtected: false,\r\n isRegistrationEvent: false,\r\n totalTicketsRemaining: 0,\r\n totalTicketsCapacity: 0,\r\n venueAddressLines: parseAddress(venueAddress),\r\n googleMapsUrl: buildGoogleMapsUrl(venueAddress),\r\n };\r\n}\r\n\r\n/**\r\n * Transform PublicCollectionData (from the collection API) into our clean EventData interface.\r\n * Sets collectionId so AirbnbSplitMain renders in full-width collection mode.\r\n */\r\nexport function transformCollectionData(\r\n collection: PublicCollectionData\r\n): EventData {\r\n // Map collection events to CollectionEvent[]\r\n const collectionEvents: CollectionEvent[] = (collection.events || []).map(\r\n ev => {\r\n const rawImg = ev.image || '';\r\n return {\r\n id: ev.id,\r\n name: ev.title || '',\r\n slug: ev.slug || '',\r\n image: rawImg.startsWith('http')\r\n ? rawImg\r\n : rawImg\r\n ? getImageUrl(rawImg)\r\n : '',\r\n startDateTime: ev.startDateTime || '',\r\n status: (ev.status || 'on_sale') as EventStatus,\r\n };\r\n }\r\n );\r\n\r\n // Cover image\r\n const rawCover = collection.coverImage || '';\r\n const imageUrl = rawCover.startsWith('http')\r\n ? rawCover\r\n : rawCover\r\n ? getImageUrl(rawCover)\r\n : '';\r\n\r\n return {\r\n id: collection.id,\r\n title: collection.collectionTitle || '',\r\n slug: '',\r\n description: collection.description || collection.summary || '',\r\n date: '',\r\n startDateTime: '',\r\n endDateTime: '',\r\n doorsOpenTime: '',\r\n timezone: 'UTC',\r\n imageUrl,\r\n venue: {\r\n id: 0,\r\n name: '',\r\n address: '',\r\n timezone: 'UTC',\r\n serviceFeePercentage: 0,\r\n serviceFeeCents: 0,\r\n taxPercentage: 0,\r\n },\r\n performers: [],\r\n tickets: [],\r\n faqs: [],\r\n status: 'on_sale',\r\n collectionId: collection.id,\r\n collectionEvents,\r\n isPasswordProtected: false,\r\n isRegistrationEvent: false,\r\n totalTicketsRemaining: 0,\r\n totalTicketsCapacity: 0,\r\n };\r\n}\r\n"],"names":["parseAddress","addressStr","parts","p","stateZipMatch","state","zip","city","lines","buildGoogleMapsUrl","address","mapTicketStatus","ticket","now","remaining","salesBegin","salesEnd","mapEventStatus","rawStatus","tickets","t","publicTickets","transformApiEvent","rawEvent","timezone","getIANATimezone","totalRemaining","sum","totalCapacity","status","rawImage","imageUrl","getImageUrl","rawVenue","venue","performers","faqs","f","date","dt","formatDateRaw","transformSeriesPageData","series","seriesOccurrences","occ","firstOcc","rawFaq","index","venueAddress","transformCollectionData","collection","collectionEvents","ev","rawImg","rawCover"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
})();
|
|
13
|
-
import { b5 as n, b6 as o, b7 as u, b8 as m, b9 as c, ba as h, bb as C, bc as l, bd as p, be as V, bf as w, bg as d, bh as k, bi as g, bj as S, bk as T, bl as f, bm as E, bn as v, bo as x, bp as D, bq as M, br as j, bs as q, bt as y, bu as P, bv as z } from "./VenueCalendar-
|
|
13
|
+
import { b5 as n, b6 as o, b7 as u, b8 as m, b9 as c, ba as h, bb as C, bc as l, bd as p, be as V, bf as w, bg as d, bh as k, bi as g, bj as S, bk as T, bl as f, bm as E, bn as v, bo as x, bp as D, bq as M, br as j, bs as q, bt as y, bu as P, bv as z } from "./VenueCalendar-CeAdp4Ja.js";
|
|
14
14
|
import "svelte/internal/disclose-version";
|
|
15
15
|
import "svelte/internal/client";
|
|
16
16
|
import "svelte/transition";
|