@getmicdrop/venue-calendar 4.0.5 → 4.0.7
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/README.md +700 -700
- package/dist/{AirbnbSplitMain-BVNtTJc-.js → AirbnbSplitMain-QRE-W2ZL.js} +4 -4
- package/dist/AirbnbSplitMain-QRE-W2ZL.js.map +1 -0
- package/dist/{CarouselView.legacy-B6HtvF8d.js → CarouselView.legacy-DtUAYloL.js} +3 -3
- package/dist/CarouselView.legacy-DtUAYloL.js.map +1 -0
- package/dist/{CartView-DrOhr4Qi.js → CartView-Be1-gajf.js} +158 -149
- package/dist/CartView-Be1-gajf.js.map +1 -0
- package/dist/{Checkout-DB1Aocl-.js → Checkout-DET04TDs.js} +4 -4
- package/dist/Checkout-DET04TDs.js.map +1 -0
- package/dist/{Checkout.legacy-DpcjjHQu.js → Checkout.legacy-Dg8qlXGF.js} +4 -4
- package/dist/Checkout.legacy-Dg8qlXGF.js.map +1 -0
- package/dist/{CheckoutMain-D0_1xfR8.js → CheckoutMain-CddDRMZ6.js} +4 -4
- package/dist/CheckoutMain-CddDRMZ6.js.map +1 -0
- package/dist/{CheckoutTimer-r1HaN6b6.js → CheckoutTimer-12XARKCb.js} +2 -2
- package/dist/CheckoutTimer-12XARKCb.js.map +1 -0
- package/dist/{CollectionView-5OzqEVQg.js → CollectionView-DsNE9b9o.js} +5 -5
- package/dist/CollectionView-DsNE9b9o.js.map +1 -0
- package/dist/{CollectionView.legacy-CabEI40i.js → CollectionView.legacy-C0EfF6bO.js} +3 -3
- package/dist/CollectionView.legacy-C0EfF6bO.js.map +1 -0
- package/dist/{EventDetailsView-CiGPGPz5.js → EventDetailsView-CKpXTip_.js} +2 -2
- package/dist/EventDetailsView-CKpXTip_.js.map +1 -0
- package/dist/{FeaturedView.legacy-tTPbRxSf.js → FeaturedView.legacy-CKANudQ1.js} +2 -2
- package/dist/FeaturedView.legacy-CKANudQ1.js.map +1 -0
- package/dist/{GalleryCard-CBMPmdrM.js → GalleryCard-X_ux5Ig_.js} +2 -2
- package/dist/GalleryCard-X_ux5Ig_.js.map +1 -0
- package/dist/{GalleryView.legacy-4QPpX22O.js → GalleryView.legacy-DiJEEg4a.js} +3 -3
- package/dist/GalleryView.legacy-DiJEEg4a.js.map +1 -0
- package/dist/{GroupedListView.legacy-CPJRLePS.js → GroupedListView.legacy-BlY6IUF7.js} +2 -2
- package/dist/GroupedListView.legacy-BlY6IUF7.js.map +1 -0
- package/dist/OrderSummarySkeleton-dDKUH741.js.map +1 -1
- package/dist/{SeriesPage-IZWQ53xg.js → SeriesPage-AHd2GQvo.js} +5 -5
- package/dist/SeriesPage-AHd2GQvo.js.map +1 -0
- package/dist/{SeriesPage.legacy-4jSF2g-n.js → SeriesPage.legacy-DRoCeh7t.js} +2 -2
- package/dist/SeriesPage.legacy-DRoCeh7t.js.map +1 -0
- package/dist/{Success-DTSn26bg.js → Success-BH-b9NQ-.js} +5 -5
- package/dist/Success-BH-b9NQ-.js.map +1 -0
- package/dist/{Success.legacy--ABrtyII.js → Success.legacy-BuElevkX.js} +2 -2
- package/dist/Success.legacy-BuElevkX.js.map +1 -0
- package/dist/{VenueCalendar-DpZ70okH.js → VenueCalendar-D3g_j17B.js} +18 -15
- package/dist/{VenueCalendar-DpZ70okH.js.map → VenueCalendar-D3g_j17B.js.map} +1 -1
- package/dist/{ViewTicketsEmbed-CgHcn-qh.js → ViewTicketsEmbed-BUIrA7s5.js} +2 -2
- package/dist/ViewTicketsEmbed-BUIrA7s5.js.map +1 -0
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +4 -1
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/types.d.ts +357 -353
- package/dist/colors-BZoMuXdh.js.map +1 -1
- package/dist/{labels-ClcIxHAF.js → labels-CJIz5Cek.js} +2 -2
- package/dist/labels-CJIz5Cek.js.map +1 -0
- package/dist/seo/seo.cjs.map +1 -1
- package/dist/seo/seo.mjs.map +1 -1
- package/dist/seo/types.d.ts +137 -137
- package/dist/{transform-DW3JR-t5.js → transform-CXAZf_M1.js} +2 -2
- package/dist/transform-CXAZf_M1.js.map +1 -0
- package/dist/types/index.d.ts +387 -387
- package/dist/venue-calendar.es.js +1 -1
- package/dist/venue-calendar.iife.js +13 -13
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +13 -13
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/theme.js +222 -222
- package/dist/AirbnbSplitMain-BVNtTJc-.js.map +0 -1
- package/dist/CarouselView.legacy-B6HtvF8d.js.map +0 -1
- package/dist/CartView-DrOhr4Qi.js.map +0 -1
- package/dist/Checkout-DB1Aocl-.js.map +0 -1
- package/dist/Checkout.legacy-DpcjjHQu.js.map +0 -1
- package/dist/CheckoutMain-D0_1xfR8.js.map +0 -1
- package/dist/CheckoutTimer-r1HaN6b6.js.map +0 -1
- package/dist/CollectionView-5OzqEVQg.js.map +0 -1
- package/dist/CollectionView.legacy-CabEI40i.js.map +0 -1
- package/dist/EventDetailsView-CiGPGPz5.js.map +0 -1
- package/dist/FeaturedView.legacy-tTPbRxSf.js.map +0 -1
- package/dist/GalleryCard-CBMPmdrM.js.map +0 -1
- package/dist/GalleryView.legacy-4QPpX22O.js.map +0 -1
- package/dist/GroupedListView.legacy-CPJRLePS.js.map +0 -1
- package/dist/SeriesPage-IZWQ53xg.js.map +0 -1
- package/dist/SeriesPage.legacy-4jSF2g-n.js.map +0 -1
- package/dist/Success-DTSn26bg.js.map +0 -1
- package/dist/Success.legacy--ABrtyII.js.map +0 -1
- package/dist/ViewTicketsEmbed-CgHcn-qh.js.map +0 -1
- package/dist/labels-ClcIxHAF.js.map +0 -1
- package/dist/transform-DW3JR-t5.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-CXAZf_M1.js","sources":["../src/lib/premium-ticket-experience/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\tEventData,\r\n\tEventStatus,\r\n\tTicketTypeData,\r\n\tTicketStatus,\r\n\tVenueData,\r\n\tPerformerData,\r\n\tFAQItem,\r\n\tSeriesOccurrence,\r\n\tCollectionEvent\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\tif (!addressStr) return [];\r\n\tconst parts = addressStr.split(',').map((p) => p.trim());\r\n\tif (parts.length < 2) return [addressStr];\r\n\tconst lastPart = parts[parts.length - 1];\r\n\tconst stateZipMatch = lastPart.match(/^([A-Z]{2})\\s+(\\d{5}(-\\d{4})?)$/);\r\n\tif (stateZipMatch && parts.length >= 3) {\r\n\t\tconst state = stateZipMatch[1];\r\n\t\tconst zip = stateZipMatch[2];\r\n\t\tconst city = parts[parts.length - 2];\r\n\t\tconst lines = parts.slice(0, -2);\r\n\t\tlines.push(`${city}, ${state} ${zip}`);\r\n\t\treturn lines;\r\n\t}\r\n\treturn [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\tif (!address) return '';\r\n\treturn `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\tconst now = new Date();\r\n\tconst remaining = ticket.remainingCapacity ?? ticket.quantityRemaining ?? ticket.quantity ?? 0;\r\n\tconst salesBegin = ticket.salesBegin || ticket.salesStart || ticket.saleBegin || ticket.onSaleStart;\r\n\tconst salesEnd = ticket.salesEnd || ticket.saleEnd || ticket.onSaleEnd;\r\n\r\n\tif (remaining <= 0) return 'sold_out';\r\n\tif (salesEnd && new Date(salesEnd) < now) return 'sales_ended';\r\n\tif (salesBegin && new Date(salesBegin) > now) return 'coming_soon';\r\n\treturn '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(rawStatus: string, tickets: TicketTypeData[]): EventStatus {\r\n\tconst s = (rawStatus || '').toLowerCase().replace(/\\s+/g, '_');\r\n\r\n\tif (s === 'cancelled' || s === 'canceled') return 'cancelled';\r\n\r\n\t// Check if event is past based on end time (handled by caller if needed)\r\n\tif (s === 'past' || s === 'ended') return 'past';\r\n\r\n\t// Derive from ticket states\r\n\tconst publicTickets = tickets.filter((t) => !t.isHidden);\r\n\tif (publicTickets.length > 0) {\r\n\t\tif (publicTickets.every((t) => t.status === 'sold_out')) return 'sold_out';\r\n\t\tif (publicTickets.every((t) => t.status === 'coming_soon')) return 'coming_soon';\r\n\t\tif (publicTickets.every((t) => t.status === 'sales_ended' || t.status === 'sold_out')) return 'sales_ended';\r\n\t}\r\n\r\n\tif (s === 'sold_out' || s === 'soldout') return 'sold_out';\r\n\tif (s === 'coming_soon' || s === 'comingsoon') return 'coming_soon';\r\n\tif (s === 'sales_ended' || s === 'salesended') return 'sales_ended';\r\n\r\n\treturn '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\tconst timezone = getIANATimezone(rawEvent.timeZone || rawEvent.timezone || 'UTC');\r\n\r\n\t// Transform tickets\r\n\tconst rawTickets = rawEvent.availableTickets || [];\r\n\tconst tickets: TicketTypeData[] = rawTickets.map((t: any) => ({\r\n\t\tid: t.id || t.ID,\r\n\t\tname: t.name || t.title || '',\r\n\t\tdescription: t.description || undefined,\r\n\t\tprice: t.price ?? 0,\r\n\t\tfee: t.fee ?? 0,\r\n\t\tquantityAvailable: t.remainingCapacity ?? t.quantityRemaining ?? t.quantity ?? 0,\r\n\t\tquantityTotal: t.totalCapacity ?? t.quantity ?? 0,\r\n\t\tminPerOrder: t.minPerOrder ?? t.minQuantity ?? 1,\r\n\t\tmaxPerOrder: t.maxPerOrder ?? t.maxQuantity ?? 10,\r\n\t\tstatus: mapTicketStatus(t),\r\n\t\tsalesStartDate: t.salesBegin || t.salesStart || t.saleBegin || t.onSaleStart || undefined,\r\n\t\tsalesEndDate: t.salesEnd || t.saleEnd || t.onSaleEnd || undefined,\r\n\t\tisDonation: t.type === 2 || t.ticketType === 2 || t.isDonation === true,\r\n\t\tisHidden: t.visibility === 2 || t.isHidden === true,\r\n\t\tticketType: t.type || t.ticketType || undefined,\r\n\t\tsectionName: t.sectionName || t.section || undefined\r\n\t}));\r\n\r\n\t// Calculate totals from public tickets\r\n\tconst publicTickets = tickets.filter((t) => !t.isHidden && !t.isDonation);\r\n\tconst totalRemaining = publicTickets.reduce((sum, t) => sum + t.quantityAvailable, 0);\r\n\tconst totalCapacity = publicTickets.reduce((sum, t) => sum + t.quantityTotal, 0);\r\n\r\n\t// Determine event status\r\n\tconst status = mapEventStatus(rawEvent.status, tickets);\r\n\r\n\t// Build image URL\r\n\tconst rawImage = rawEvent.image || rawEvent.imageUrl || rawEvent.image_url || '';\r\n\tconst imageUrl = rawImage.startsWith('http') ? rawImage : getImageUrl(rawImage);\r\n\r\n\t// Venue\r\n\tconst rawVenue = rawEvent.venue || {};\r\n\tconst venue: VenueData = {\r\n\t\tid: rawVenue.id || rawVenue.ID || 0,\r\n\t\tname: rawVenue.name || rawVenue.googleLocationNameCache || '',\r\n\t\taddress: rawVenue.address || rawVenue.googleLocationNameCache || '',\r\n\t\ttimezone,\r\n\t\tserviceFeePercentage: rawVenue.serviceFeePercentage ?? rawVenue.fee ?? 0,\r\n\t\tserviceFeeCents: rawVenue.serviceFeeCents ?? 0,\r\n\t\ttaxPercentage: rawVenue.taxPercentage ?? rawVenue.tax ?? 0,\r\n\t\tcontactEmail: rawVenue.contactEmail || rawVenue.email || undefined\r\n\t};\r\n\r\n\t// Performers\r\n\tconst rawPerformers = rawEvent.performers || [];\r\n\tconst performers: PerformerData[] = rawPerformers.map((p: any) => ({\r\n\t\tid: p.id || p.ID,\r\n\t\tdisplayName: p.displayName || p.name || '',\r\n\t\tprofileImage: p.avatar || p.profileImage || undefined,\r\n\t\trole: p.role || undefined\r\n\t}));\r\n\r\n\t// FAQs (may not be in API response)\r\n\tconst faqs: FAQItem[] = (rawEvent.faqs || []).map((f: any) => ({\r\n\t\tquestion: f.question || '',\r\n\t\tanswer: f.answer || ''\r\n\t}));\r\n\r\n\t// Date in venue timezone\r\n\tlet date = '';\r\n\tif (rawEvent.startDateTime) {\r\n\t\tconst dt = new Date(rawEvent.startDateTime);\r\n\t\tdate = formatDateRaw(dt, { timeZone: timezone, year: 'numeric', month: '2-digit', day: '2-digit' }, 'en-CA');\r\n\t}\r\n\r\n\treturn {\r\n\t\tid: rawEvent.id || rawEvent.ID,\r\n\t\ttitle: rawEvent.title || rawEvent.name || '',\r\n\t\tslug: rawEvent.slug || '',\r\n\t\tdescription: rawEvent.description || rawEvent.eventSummary || '',\r\n\t\tdate,\r\n\t\tstartDateTime: rawEvent.startDateTime || '',\r\n\t\tendDateTime: rawEvent.endDateTime || '',\r\n\t\tdoorsOpenTime: rawEvent.doorsOpenTime || '',\r\n\t\ttimezone,\r\n\t\timageUrl,\r\n\t\tvenue,\r\n\t\tperformers,\r\n\t\ttickets,\r\n\t\tfaqs,\r\n\t\tdisclaimer: rawEvent.disclaimer || undefined,\r\n\t\tstatus,\r\n\t\teventSeriesId: rawEvent.eventSeriesId || undefined,\r\n\t\tisPasswordProtected: !!rawEvent.password,\r\n\t\tisRegistrationEvent: rawEvent.ticketType === 1 || rawEvent.eventTicketingType === 1,\r\n\t\ttotalTicketsRemaining: totalRemaining,\r\n\t\ttotalTicketsCapacity: totalCapacity,\r\n\t\tstageName: rawEvent.stage?.name || rawEvent.stageName || undefined,\r\n\t\tageRestriction: rawEvent.ageRestriction || undefined,\r\n\t\tdisplayAgeRestriction: rawEvent.displayAgeRestriction ?? false,\r\n\t\tdisplayStartTime: rawEvent.displayStartTime ?? true,\r\n\t\tdisplayEndTime: rawEvent.displayEndTime ?? true,\r\n\t\tdisplayDoorsTime: rawEvent.displayDoorsTime ?? true,\r\n\t\tcollectionId: rawEvent.collectionId || rawEvent.collection_id || undefined,\r\n\t\tvenueAddressLines: parseAddress(rawVenue.address || rawVenue.googleLocationNameCache || ''),\r\n\t\tgoogleMapsUrl: buildGoogleMapsUrl(rawVenue.address || rawVenue.googleLocationNameCache || '')\r\n\t};\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\tconst timezone = getIANATimezone(series.timeZone || 'UTC');\r\n\r\n\t// Build image URL\r\n\tconst rawImage = series.image || '';\r\n\tconst imageUrl = rawImage.startsWith('http') ? rawImage : rawImage ? getImageUrl(rawImage) : '';\r\n\r\n\t// Map occurrences to SeriesOccurrence[]\r\n\tconst seriesOccurrences: SeriesOccurrence[] = (series.occurrences || []).map((occ) => ({\r\n\t\tid: occ.id,\r\n\t\tslug: occ.slug || '',\r\n\t\tstartDateTime: occ.startDateTime,\r\n\t\tendDateTime: occ.endDateTime || '',\r\n\t\tstatus: (occ.ctaState?.reason === 'sold_out' ? 'sold_out' : 'on_sale') as EventStatus,\r\n\t\tctaText: occ.ctaState?.text || 'Get Tickets',\r\n\t\tctaDisabled: occ.ctaState?.disabled || false\r\n\t}));\r\n\r\n\t// Use first occurrence for date fields\r\n\tconst firstOcc = series.occurrences?.[0];\r\n\tlet date = '';\r\n\tif (firstOcc?.startDateTime) {\r\n\t\tconst dt = new Date(firstOcc.startDateTime);\r\n\t\tdate = formatDateRaw(dt, { timeZone: timezone, year: 'numeric', month: '2-digit', day: '2-digit' }, 'en-CA');\r\n\t}\r\n\r\n\t// Map FAQs\r\n\tconst rawFaq = series.venue?.faq;\r\n\tlet faqs: FAQItem[] = [];\r\n\tif (Array.isArray(rawFaq)) {\r\n\t\tfaqs = rawFaq.map((f) => ({ question: f.question || '', answer: f.answer || '' }));\r\n\t} else if (typeof rawFaq === 'string' && rawFaq) {\r\n\t\tfaqs = [{ question: 'FAQ', answer: rawFaq }];\r\n\t}\r\n\r\n\t// Map performers\r\n\tconst performers: PerformerData[] = (series.performers || []).map((p, index) => ({\r\n\t\tid: index + 1,\r\n\t\tdisplayName: p.displayName || [p.firstName, p.lastName].filter(Boolean).join(' '),\r\n\t\tprofileImage: p.profileImage || undefined\r\n\t}));\r\n\r\n\t// Venue address\r\n\tconst venueAddress = series.venue?.location || series.venue?.googleLocationNameCache || '';\r\n\r\n\treturn {\r\n\t\tid: series.id,\r\n\t\ttitle: series.title || '',\r\n\t\tslug: '',\r\n\t\tdescription: series.description || series.eventSummary || '',\r\n\t\tdate,\r\n\t\tstartDateTime: firstOcc?.startDateTime || '',\r\n\t\tendDateTime: firstOcc?.endDateTime || '',\r\n\t\tdoorsOpenTime: '',\r\n\t\ttimezone,\r\n\t\timageUrl,\r\n\t\tvenue: {\r\n\t\t\tid: series.venue?.id || 0,\r\n\t\t\tname: series.venue?.name || '',\r\n\t\t\taddress: venueAddress,\r\n\t\t\ttimezone,\r\n\t\t\tserviceFeePercentage: 0,\r\n\t\t\tserviceFeeCents: 0,\r\n\t\t\ttaxPercentage: 0\r\n\t\t},\r\n\t\tperformers,\r\n\t\ttickets: [],\r\n\t\tfaqs,\r\n\t\tdisclaimer: series.venue?.disclaimer || undefined,\r\n\t\tstatus: 'on_sale',\r\n\t\teventSeriesId: series.id,\r\n\t\tseriesOccurrences,\r\n\t\tisPasswordProtected: false,\r\n\t\tisRegistrationEvent: false,\r\n\t\ttotalTicketsRemaining: 0,\r\n\t\ttotalTicketsCapacity: 0,\r\n\t\tvenueAddressLines: parseAddress(venueAddress),\r\n\t\tgoogleMapsUrl: buildGoogleMapsUrl(venueAddress)\r\n\t};\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(collection: PublicCollectionData): EventData {\r\n\t// Map collection events to CollectionEvent[]\r\n\tconst collectionEvents: CollectionEvent[] = (collection.events || []).map((ev) => {\r\n\t\tconst rawImg = ev.image || '';\r\n\t\treturn {\r\n\t\t\tid: ev.id,\r\n\t\t\tname: ev.title || '',\r\n\t\t\tslug: ev.slug || '',\r\n\t\t\timage: rawImg.startsWith('http') ? rawImg : rawImg ? getImageUrl(rawImg) : '',\r\n\t\t\tstartDateTime: ev.startDateTime || '',\r\n\t\t\tstatus: ((ev.status || 'on_sale') as EventStatus)\r\n\t\t};\r\n\t});\r\n\r\n\t// Cover image\r\n\tconst rawCover = collection.coverImage || '';\r\n\tconst imageUrl = rawCover.startsWith('http') ? rawCover : rawCover ? getImageUrl(rawCover) : '';\r\n\r\n\treturn {\r\n\t\tid: collection.id,\r\n\t\ttitle: collection.collectionTitle || '',\r\n\t\tslug: '',\r\n\t\tdescription: collection.description || collection.summary || '',\r\n\t\tdate: '',\r\n\t\tstartDateTime: '',\r\n\t\tendDateTime: '',\r\n\t\tdoorsOpenTime: '',\r\n\t\ttimezone: 'UTC',\r\n\t\timageUrl,\r\n\t\tvenue: {\r\n\t\t\tid: 0,\r\n\t\t\tname: '',\r\n\t\t\taddress: '',\r\n\t\t\ttimezone: 'UTC',\r\n\t\t\tserviceFeePercentage: 0,\r\n\t\t\tserviceFeeCents: 0,\r\n\t\t\ttaxPercentage: 0\r\n\t\t},\r\n\t\tperformers: [],\r\n\t\ttickets: [],\r\n\t\tfaqs: [],\r\n\t\tstatus: 'on_sale',\r\n\t\tcollectionId: collection.id,\r\n\t\tcollectionEvents,\r\n\t\tisPasswordProtected: false,\r\n\t\tisRegistrationEvent: false,\r\n\t\ttotalTicketsRemaining: 0,\r\n\t\ttotalTicketsCapacity: 0\r\n\t};\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","publicTickets","t","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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"}
|