@getmicdrop/venue-calendar 4.0.79 → 4.0.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +173 -128
  2. package/dist/{CarouselView.legacy-CsMGxVbb.js → CarouselView.legacy-Bn76lnuH.js} +3 -3
  3. package/dist/{CarouselView.legacy-CsMGxVbb.js.map → CarouselView.legacy-Bn76lnuH.js.map} +1 -1
  4. package/dist/{CartView-BOaZufWZ.js → CartView-lR1zLxmN.js} +277 -280
  5. package/dist/CartView-lR1zLxmN.js.map +1 -0
  6. package/dist/{Checkout-bkXNpxIB.js → Checkout-D5mXj5zN.js} +69 -73
  7. package/dist/Checkout-D5mXj5zN.js.map +1 -0
  8. package/dist/Checkout-KyLZlwLk.js +1673 -0
  9. package/dist/Checkout-KyLZlwLk.js.map +1 -0
  10. package/dist/{Checkout.legacy-BOPwZMyO.js → Checkout.legacy-Dl8Oh7y3.js} +95 -99
  11. package/dist/Checkout.legacy-Dl8Oh7y3.js.map +1 -0
  12. package/dist/CheckoutTimer-Deo1mLnO.js +141 -0
  13. package/dist/CheckoutTimer-Deo1mLnO.js.map +1 -0
  14. package/dist/CollectionView-C1O9xfVC.js +338 -0
  15. package/dist/CollectionView-C1O9xfVC.js.map +1 -0
  16. package/dist/{CollectionView.legacy-Dw-J6Ycd.js → CollectionView.legacy-DK_mCA_g.js} +21 -24
  17. package/dist/{CollectionView.legacy-Dw-J6Ycd.js.map → CollectionView.legacy-DK_mCA_g.js.map} +1 -1
  18. package/dist/Event-B5WRygEf.js +2240 -0
  19. package/dist/Event-B5WRygEf.js.map +1 -0
  20. package/dist/EventPage-f1AOk4Jb.js +577 -0
  21. package/dist/EventPage-f1AOk4Jb.js.map +1 -0
  22. package/dist/{EventPage.legacy-Br2M8N9-.js → EventPage.legacy-Bk3PJyJs.js} +408 -411
  23. package/dist/EventPage.legacy-Bk3PJyJs.js.map +1 -0
  24. package/dist/{FeaturedView.legacy-B86kMzvH.js → FeaturedView.legacy-BzCt1X1W.js} +18 -18
  25. package/dist/{FeaturedView.legacy-B86kMzvH.js.map → FeaturedView.legacy-BzCt1X1W.js.map} +1 -1
  26. package/dist/{GalleryCard-CTsYUZu6.js → GalleryCard-C1EKGErR.js} +14 -14
  27. package/dist/{GalleryCard-CTsYUZu6.js.map → GalleryCard-C1EKGErR.js.map} +1 -1
  28. package/dist/{GalleryView.legacy-uIexOsl5.js → GalleryView.legacy-BmQtZKl7.js} +3 -3
  29. package/dist/{GalleryView.legacy-uIexOsl5.js.map → GalleryView.legacy-BmQtZKl7.js.map} +1 -1
  30. package/dist/{GroupedListView.legacy-DMAwHQ9T.js → GroupedListView.legacy-D72fbNfA.js} +21 -21
  31. package/dist/{GroupedListView.legacy-DMAwHQ9T.js.map → GroupedListView.legacy-D72fbNfA.js.map} +1 -1
  32. package/dist/Heading-Bwevh2c4.js +81 -0
  33. package/dist/Heading-Bwevh2c4.js.map +1 -0
  34. package/dist/ModalHeader-DKwE5ZYZ.js +22 -0
  35. package/dist/ModalHeader-DKwE5ZYZ.js.map +1 -0
  36. package/dist/OrderSummarySkeleton-DKWKZNLL.js +632 -0
  37. package/dist/OrderSummarySkeleton-DKWKZNLL.js.map +1 -0
  38. package/dist/{ScarcityBadge-D9RzN3Tz.js → ScarcityBadge-3cFxTOCh.js} +25 -29
  39. package/dist/{ScarcityBadge-D9RzN3Tz.js.map → ScarcityBadge-3cFxTOCh.js.map} +1 -1
  40. package/dist/{SeriesPage-D0pf6VuS.js → SeriesPage-Cq4Q8Vah.js} +17 -21
  41. package/dist/{SeriesPage-D0pf6VuS.js.map → SeriesPage-Cq4Q8Vah.js.map} +1 -1
  42. package/dist/{SeriesPage.legacy-VYpfyT7B.js → SeriesPage.legacy-zvgW0S_y.js} +67 -71
  43. package/dist/SeriesPage.legacy-zvgW0S_y.js.map +1 -0
  44. package/dist/{Success-Dxgbo_Ct.js → Success-kyiEO6_Z.js} +186 -175
  45. package/dist/{Success-Dxgbo_Ct.js.map → Success-kyiEO6_Z.js.map} +1 -1
  46. package/dist/{Success.legacy-umzUtow7.js → Success.legacy-BxKYmXgz.js} +53 -57
  47. package/dist/{Success.legacy-umzUtow7.js.map → Success.legacy-BxKYmXgz.js.map} +1 -1
  48. package/dist/Text-_bLxSPv-.js +158 -0
  49. package/dist/Text-_bLxSPv-.js.map +1 -0
  50. package/dist/{VenueCalendar-D9TCV_XB.js → VenueCalendar-d8u6MKEu.js} +8131 -22680
  51. package/dist/VenueCalendar-d8u6MKEu.js.map +1 -0
  52. package/dist/ViewTicketsEmbed-DquJJVIK.js +2081 -0
  53. package/dist/ViewTicketsEmbed-DquJJVIK.js.map +1 -0
  54. package/dist/__SKIP_NAVIGATION__-CmipjatL.js +18 -0
  55. package/dist/__SKIP_NAVIGATION__-CmipjatL.js.map +1 -0
  56. package/dist/api/api.cjs +1 -1
  57. package/dist/api/api.cjs.map +1 -1
  58. package/dist/api/api.mjs +482 -374
  59. package/dist/api/api.mjs.map +1 -1
  60. package/dist/api/cta.d.ts +2 -10
  61. package/dist/api/transformers/address.d.ts +18 -0
  62. package/dist/api/transformers/cart.d.ts +19 -0
  63. package/dist/api/transformers/collection.d.ts +12 -0
  64. package/dist/api/transformers/event.d.ts +50 -1
  65. package/dist/api/transformers/giftCard.d.ts +11 -0
  66. package/dist/api/transformers/index.d.ts +10 -3
  67. package/dist/api/transformers/performer.d.ts +8 -0
  68. package/dist/api/transformers/series.d.ts +12 -0
  69. package/dist/api/types.d.ts +423 -383
  70. package/dist/api-BzICORqy.js +6 -0
  71. package/dist/{api-DFMsiBOR.js.map → api-BzICORqy.js.map} +1 -1
  72. package/dist/colors-CmP-sSZD.js.map +1 -1
  73. package/dist/{data-toggle-store.svelte-DtDqN-QD.js → data-toggle-store.svelte-BGbzblUJ.js} +10 -15
  74. package/dist/data-toggle-store.svelte-BGbzblUJ.js.map +1 -0
  75. package/dist/index-BsWecoW1.js +63 -0
  76. package/dist/index-BsWecoW1.js.map +1 -0
  77. package/dist/labels-Bj_cocb1.js +966 -0
  78. package/dist/labels-Bj_cocb1.js.map +1 -0
  79. package/dist/seo/seo.cjs +1 -1
  80. package/dist/seo/seo.cjs.map +1 -1
  81. package/dist/seo/seo.mjs +131 -122
  82. package/dist/seo/seo.mjs.map +1 -1
  83. package/dist/transform-D7Oe8jUp.js +276 -0
  84. package/dist/transform-D7Oe8jUp.js.map +1 -0
  85. package/dist/types/index.d.ts +45 -0
  86. package/dist/venue-calendar.css +1 -1
  87. package/dist/venue-calendar.es.js +31 -37
  88. package/dist/venue-calendar.es.js.map +1 -1
  89. package/dist/venue-calendar.iife.js +40 -107
  90. package/dist/venue-calendar.iife.js.map +1 -1
  91. package/dist/venue-calendar.umd.js +38 -125
  92. package/dist/venue-calendar.umd.js.map +1 -1
  93. package/package.json +170 -169
  94. package/dist/CartView-BOaZufWZ.js.map +0 -1
  95. package/dist/Checkout-DD6ZTUh-.js +0 -1531
  96. package/dist/Checkout-DD6ZTUh-.js.map +0 -1
  97. package/dist/Checkout-bkXNpxIB.js.map +0 -1
  98. package/dist/Checkout.legacy-BOPwZMyO.js.map +0 -1
  99. package/dist/CheckoutTimer-CHoKjZyH.js +0 -35
  100. package/dist/CheckoutTimer-CHoKjZyH.js.map +0 -1
  101. package/dist/CollectionView-Ce-OAEC4.js +0 -148
  102. package/dist/CollectionView-Ce-OAEC4.js.map +0 -1
  103. package/dist/Event-rdstzev0.js +0 -1910
  104. package/dist/Event-rdstzev0.js.map +0 -1
  105. package/dist/EventPage-B8VRC83d.js +0 -336
  106. package/dist/EventPage-B8VRC83d.js.map +0 -1
  107. package/dist/EventPage.legacy-Br2M8N9-.js.map +0 -1
  108. package/dist/Heading-AFd3o0xt.js +0 -44
  109. package/dist/Heading-AFd3o0xt.js.map +0 -1
  110. package/dist/OrderSummarySkeleton-dDKUH741.js +0 -16
  111. package/dist/OrderSummarySkeleton-dDKUH741.js.map +0 -1
  112. package/dist/SeriesPage.legacy-VYpfyT7B.js.map +0 -1
  113. package/dist/Text-CXR2fhx6.js +0 -54
  114. package/dist/Text-CXR2fhx6.js.map +0 -1
  115. package/dist/VenueCalendar-D9TCV_XB.js.map +0 -1
  116. package/dist/ViewTicketsEmbed-Bt05E5Ex.js +0 -2039
  117. package/dist/ViewTicketsEmbed-Bt05E5Ex.js.map +0 -1
  118. package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js +0 -7
  119. package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js.map +0 -1
  120. package/dist/api-DFMsiBOR.js +0 -12
  121. package/dist/data-toggle-store.svelte-DtDqN-QD.js.map +0 -1
  122. package/dist/labels-CClq3Rb9.js +0 -659
  123. package/dist/labels-CClq3Rb9.js.map +0 -1
  124. package/dist/transform-CWf-YI_e.js +0 -275
  125. package/dist/transform-CWf-YI_e.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionView.legacy-Dw-J6Ycd.js","sources":["../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<!-- native-element-exception: VC is an embeddable widget — native <button>s are intentional here (widget-controlled styling on calendar cells, date selectors, checkout/nav CTAs). -->\r\n<script>\r\n // @ts-nocheck legacy fallback (legacy=1 path), slated for deletion after VC finalization — not type-maintained\r\n import { onMount, onDestroy } from 'svelte';\r\n import { fetchPublicCollection } from '../../lib/api/events.ts';\r\n import { getImageUrl } from '$lib/utils/utils.js';\r\n import {\r\n EmptyState,\r\n PasswordInput,\r\n formatTime,\r\n } from '@getmicdrop/svelte-components';\r\n import GalleryCard from '../Calendar/GalleryCard.svelte';\r\n import GroupedListView from '../Calendar/GroupedListView.legacy.svelte';\r\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\r\n\r\n let {\r\n collectionId,\r\n organizationId = '',\r\n onNavigateToEvent,\r\n password: initialPassword = undefined,\r\n displayMode: initialDisplayMode = 'gallery',\r\n showViewSwitcher = true,\r\n labels = {},\r\n } = $props();\r\n\r\n let collection = $state(null);\r\n let isLoading = $state(true);\r\n let error = $state(null);\r\n let isMounted = $state(false);\r\n let passwordRequired = $state(false);\r\n let passwordInput = $state('');\r\n let passwordError = $state(false);\r\n let activeDisplayMode = $state(initialDisplayMode);\r\n\r\n // Transform collection events into the shape GalleryCard expects\r\n function toGalleryEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n // Transform collection events into the shape GroupedListView expects\r\n function toListEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n startDateTime: event.startDateTime || '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n description: event.description || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n function formatTimeline(iso) {\r\n if (!iso) return '';\r\n const date = new Date(iso);\r\n return formatTime(date, {\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n\r\n let displayEvents = $derived(\r\n collection ? sortByStartTime(collection.events || []) : []\r\n );\r\n\r\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\r\n let listEvents = $derived(displayEvents.map(toListEvent));\r\n\r\n // Only show view switcher when there are 2+ events\r\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\r\n\r\n function sortByStartTime(events) {\r\n return [...events].sort((a, b) => {\r\n if (!a.startDateTime && !b.startDateTime) return 0;\r\n if (!a.startDateTime) return 1;\r\n if (!b.startDateTime) return -1;\r\n return (\r\n new Date(a.startDateTime).getTime() -\r\n new Date(b.startDateTime).getTime()\r\n );\r\n });\r\n }\r\n\r\n function handleEventClick(galleryEvent) {\r\n if (onNavigateToEvent) {\r\n const eventData = galleryEvent.detail || galleryEvent;\r\n onNavigateToEvent(eventData.id, eventData.slug || '');\r\n }\r\n }\r\n\r\n async function loadCollection(pwd) {\r\n if (!isMounted) return;\r\n if (!collectionId) {\r\n error = labels.noCollectionIdProvided || 'No collection ID provided';\r\n isLoading = false;\r\n return;\r\n }\r\n\r\n isLoading = true;\r\n error = null;\r\n passwordError = false;\r\n\r\n try {\r\n const data = await fetchPublicCollection(collectionId, pwd);\r\n if (!isMounted) return;\r\n\r\n if (data) {\r\n // Check if the response indicates password is required\r\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\r\n passwordRequired = true;\r\n isLoading = false;\r\n return;\r\n }\r\n collection = data;\r\n passwordRequired = false;\r\n } else {\r\n // A null response after providing a password likely means wrong password\r\n if (pwd) {\r\n passwordRequired = true;\r\n passwordError = true;\r\n isLoading = false;\r\n return;\r\n }\r\n error = labels.failedToLoadCollection || 'Failed to load collection';\r\n }\r\n } catch (err) {\r\n if (isMounted) {\r\n // Check for password-related error responses\r\n const msg = err.message || '';\r\n if (\r\n msg.includes('401') ||\r\n msg.includes('403') ||\r\n msg.includes('password')\r\n ) {\r\n passwordRequired = true;\r\n } else {\r\n error = msg || 'Failed to load collection';\r\n }\r\n }\r\n } finally {\r\n if (isMounted) {\r\n isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n function handlePasswordSubmit(e) {\r\n e.preventDefault();\r\n if (!passwordInput.trim()) return;\r\n loadCollection(passwordInput);\r\n }\r\n\r\n onMount(async () => {\r\n isMounted = true;\r\n await loadCollection(initialPassword);\r\n });\r\n\r\n onDestroy(() => {\r\n isMounted = false;\r\n });\r\n</script>\r\n\r\n<div class=\"collection-view\">\r\n {#if isLoading}\r\n <SkeletonLoader type=\"gallery\" />\r\n {:else if passwordRequired}\r\n <div class=\"password-container\">\r\n <div class=\"password-card\">\r\n <h2 class=\"password-title\">\r\n {labels.collectionPrivateTitle || 'This collection is private'}\r\n </h2>\r\n <p class=\"password-description\">\r\n {labels.collectionPrivateDescription ||\r\n 'Please enter the password to view this collection.'}\r\n </p>\r\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\r\n <PasswordInput\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || 'Enter password'}\r\n autocomplete=\"current-password\"\r\n error={passwordError\r\n ? labels.incorrectPassword ||\r\n 'Incorrect password. Please try again.'\r\n : ''}\r\n />\r\n <button type=\"submit\" class=\"password-submit\"\r\n >{labels.viewCollection || 'View Collection'}</button\r\n >\r\n </form>\r\n </div>\r\n </div>\r\n {:else if error}\r\n <div class=\"error-container\">\r\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n </div>\r\n {:else if collection}\r\n <!-- Cover Image with Blur -->\r\n {#if collection.coverImage}\r\n {@const imageUrl = getImageUrl(collection.coverImage)}\r\n <div class=\"cover-image\">\r\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\r\n <img src={imageUrl} alt={collection.collectionTitle} />\r\n </div>\r\n {/if}\r\n\r\n <!-- Collection Header -->\r\n <div class=\"collection-header\">\r\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\r\n {#if collection.summary}\r\n <p class=\"collection-summary\">{collection.summary}</p>\r\n {/if}\r\n {#if collection.description}\r\n <div class=\"collection-description\">{collection.description}</div>\r\n {/if}\r\n </div>\r\n\r\n <!-- Events Section -->\r\n <div class=\"events-section\">\r\n <div class=\"events-section-header\">\r\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\r\n\r\n {#if canShowSwitcher}\r\n <div\r\n class=\"view-switcher\"\r\n role=\"group\"\r\n aria-label={labels.viewOptions || 'Display mode'}\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\r\n onclick={() => (activeDisplayMode = 'gallery')}\r\n aria-label={labels.galleryView || 'Gallery view'}\r\n aria-pressed={activeDisplayMode === 'gallery'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\r\n onclick={() => (activeDisplayMode = 'list')}\r\n aria-label={labels.listView || 'List view'}\r\n aria-pressed={activeDisplayMode === 'list'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\r\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\r\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\r\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n </div>\r\n\r\n {#if displayEvents.length === 0}\r\n <EmptyState\r\n message={labels.noUpcomingEvents || 'No upcoming events'}\r\n subtext={labels.noUpcomingEventsSubtext ||\r\n 'There are no events in this collection right now. Check back soon!'}\r\n />\r\n {:else if activeDisplayMode === 'list'}\r\n <GroupedListView\r\n events={listEvents}\r\n filterFutureOnly={false}\r\n oneventClick={handleEventClick}\r\n />\r\n {:else}\r\n <div class=\"events-grid\">\r\n {#each galleryEvents as event (event.id)}\r\n <GalleryCard {event} oneventClick={handleEventClick} />\r\n {/each}\r\n </div>\r\n {/if}\r\n </div>\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n .collection-view {\r\n width: 100%;\r\n max-width: 64rem;\r\n margin-left: auto;\r\n margin-right: auto;\r\n padding-left: 1rem;\r\n padding-right: 1rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .error-container,\r\n .password-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 50vh;\r\n text-align: center;\r\n }\r\n\r\n .error-text {\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n /* Password gate */\r\n .password-card {\r\n border-radius: 0.5rem;\r\n padding: 2rem;\r\n max-width: 24rem;\r\n width: 100%;\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n }\r\n\r\n .password-title {\r\n font-size: 1.25rem;\r\n line-height: 1.75rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .password-description {\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n margin-bottom: 1.5rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .password-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.75rem;\r\n }\r\n\r\n .password-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n }\r\n\r\n .password-input:focus {\r\n outline: none;\r\n border-color: hsl(var(--brand-primary, 220 90% 56%));\r\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 20%);\r\n }\r\n\r\n .password-input-error {\r\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-error-text {\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-submit {\r\n padding: 0.5rem 1rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n font-weight: 600;\r\n background: hsl(var(--brand-primary, 220 90% 56%));\r\n color: hsl(var(--text-on-primary, 0 0% 100%));\r\n }\r\n\r\n .password-submit:hover {\r\n filter: brightness(0.95);\r\n }\r\n\r\n /* Cover Image with blur background */\r\n .cover-image {\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n border-radius: 0.5rem;\r\n margin-bottom: 2rem;\r\n height: 350px;\r\n }\r\n\r\n .cover-blur {\r\n position: absolute;\r\n inset: 0;\r\n background-size: cover;\r\n background-position: center;\r\n filter: blur(24px) saturate(1.2);\r\n transform: scale(1.15);\r\n }\r\n\r\n .cover-image img {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n /* Header */\r\n .collection-header {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.875rem;\r\n line-height: 2.25rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .collection-summary {\r\n font-size: 1.125rem;\r\n line-height: 1.75rem;\r\n margin-bottom: 1rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .collection-description {\r\n line-height: 1.625;\r\n color: hsl(var(--text-secondary, 0 0% 35%));\r\n }\r\n\r\n /* Events Section */\r\n .events-section {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .events-section-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .events-heading {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n font-weight: 700;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n /* View Switcher */\r\n .view-switcher {\r\n display: flex;\r\n gap: 0.25rem;\r\n padding: 0.25rem;\r\n border-radius: 0.5rem;\r\n background: hsl(var(--surface-secondary, 0 0% 96%));\r\n }\r\n\r\n .view-switcher-btn {\r\n padding: 0.375rem;\r\n border-radius: 0.375rem;\r\n transition: color 0.15s;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .view-switcher-btn:hover {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .view-switcher-btn-active {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\r\n }\r\n\r\n .events-grid {\r\n display: grid;\r\n gap: 1.5rem;\r\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\r\n }\r\n\r\n /* Responsive */\r\n @media (width <= 640px) {\r\n .cover-image {\r\n height: 250px;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n }\r\n\r\n .events-grid {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n }\r\n\r\n @media (width <= 400px) {\r\n .events-grid {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n</style>"],"names":["initialPassword","initialDisplayMode","showViewSwitcher","labels","$","$$props","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","event","getImageUrl","formatTimeline","toListEvent","iso","date","formatTime","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","events","a","b","handleEventClick","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","onMount","onDestroy","div","root","SkeletonLoader","$$anchor","div_1","root_2","div_2","h2","p","form","PasswordInput","node_1","$$value","button","div_3","root_3","p_1","text_3","imageUrl","div_4","root_5","div_5","img","$$render","consequent_3","div_6","node_2","h1","p_2","root_6","text_5","consequent_4","div_7","root_7","text_6","consequent_5","div_8","div_9","h2_1","div_10","root_8","button_1","button_2","classes","classes_1","consequent_6","EmptyState","GroupedListView","div_11","root_11","GalleryCard","consequent_7","consequent_8","alternate","text_4","text_7","consequent","consequent_1","consequent_9"],"mappings":"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"}
1
+ {"version":3,"file":"CollectionView.legacy-DK_mCA_g.js","sources":["../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<!-- native-element-exception: VC is an embeddable widget — native <button>s are intentional here (widget-controlled styling on calendar cells, date selectors, checkout/nav CTAs). -->\r\n<script>\r\n // @ts-nocheck legacy fallback (legacy=1 path), slated for deletion after VC finalization — not type-maintained\r\n import { onMount, onDestroy } from 'svelte';\r\n import { fetchPublicCollection } from '../../lib/api/events.ts';\r\n import { getImageUrl } from '$lib/utils/utils.js';\r\n import {\r\n EmptyState,\r\n PasswordInput,\r\n formatTime,\r\n } from '@getmicdrop/svelte-components';\r\n import GalleryCard from '../Calendar/GalleryCard.svelte';\r\n import GroupedListView from '../Calendar/GroupedListView.legacy.svelte';\r\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\r\n\r\n let {\r\n collectionId,\r\n organizationId = '',\r\n onNavigateToEvent,\r\n password: initialPassword = undefined,\r\n displayMode: initialDisplayMode = 'gallery',\r\n showViewSwitcher = true,\r\n labels = {},\r\n } = $props();\r\n\r\n let collection = $state(null);\r\n let isLoading = $state(true);\r\n let error = $state(null);\r\n let isMounted = $state(false);\r\n let passwordRequired = $state(false);\r\n let passwordInput = $state('');\r\n let passwordError = $state(false);\r\n let activeDisplayMode = $state(initialDisplayMode);\r\n\r\n // Transform collection events into the shape GalleryCard expects\r\n function toGalleryEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n // Transform collection events into the shape GroupedListView expects\r\n function toListEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n startDateTime: event.startDateTime || '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n description: event.description || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n function formatTimeline(iso) {\r\n if (!iso) return '';\r\n const date = new Date(iso);\r\n return formatTime(date, {\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n\r\n let displayEvents = $derived(\r\n collection ? sortByStartTime(collection.events || []) : []\r\n );\r\n\r\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\r\n let listEvents = $derived(displayEvents.map(toListEvent));\r\n\r\n // Only show view switcher when there are 2+ events\r\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\r\n\r\n function sortByStartTime(events) {\r\n return [...events].sort((a, b) => {\r\n if (!a.startDateTime && !b.startDateTime) return 0;\r\n if (!a.startDateTime) return 1;\r\n if (!b.startDateTime) return -1;\r\n return (\r\n new Date(a.startDateTime).getTime() -\r\n new Date(b.startDateTime).getTime()\r\n );\r\n });\r\n }\r\n\r\n function handleEventClick(galleryEvent) {\r\n if (onNavigateToEvent) {\r\n const eventData = galleryEvent.detail || galleryEvent;\r\n onNavigateToEvent(eventData.id, eventData.slug || '');\r\n }\r\n }\r\n\r\n async function loadCollection(pwd) {\r\n if (!isMounted) return;\r\n if (!collectionId) {\r\n error = labels.noCollectionIdProvided || 'No collection ID provided';\r\n isLoading = false;\r\n return;\r\n }\r\n\r\n isLoading = true;\r\n error = null;\r\n passwordError = false;\r\n\r\n try {\r\n const data = await fetchPublicCollection(collectionId, pwd);\r\n if (!isMounted) return;\r\n\r\n if (data) {\r\n // Check if the response indicates password is required\r\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\r\n passwordRequired = true;\r\n isLoading = false;\r\n return;\r\n }\r\n collection = data;\r\n passwordRequired = false;\r\n } else {\r\n // A null response after providing a password likely means wrong password\r\n if (pwd) {\r\n passwordRequired = true;\r\n passwordError = true;\r\n isLoading = false;\r\n return;\r\n }\r\n error = labels.failedToLoadCollection || 'Failed to load collection';\r\n }\r\n } catch (err) {\r\n if (isMounted) {\r\n // Check for password-related error responses\r\n const msg = err.message || '';\r\n if (\r\n msg.includes('401') ||\r\n msg.includes('403') ||\r\n msg.includes('password')\r\n ) {\r\n passwordRequired = true;\r\n } else {\r\n error = msg || 'Failed to load collection';\r\n }\r\n }\r\n } finally {\r\n if (isMounted) {\r\n isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n function handlePasswordSubmit(e) {\r\n e.preventDefault();\r\n if (!passwordInput.trim()) return;\r\n loadCollection(passwordInput);\r\n }\r\n\r\n onMount(async () => {\r\n isMounted = true;\r\n await loadCollection(initialPassword);\r\n });\r\n\r\n onDestroy(() => {\r\n isMounted = false;\r\n });\r\n</script>\r\n\r\n<div class=\"collection-view\">\r\n {#if isLoading}\r\n <SkeletonLoader type=\"gallery\" />\r\n {:else if passwordRequired}\r\n <div class=\"password-container\">\r\n <div class=\"password-card\">\r\n <h2 class=\"password-title\">\r\n {labels.collectionPrivateTitle || 'This collection is private'}\r\n </h2>\r\n <p class=\"password-description\">\r\n {labels.collectionPrivateDescription ||\r\n 'Please enter the password to view this collection.'}\r\n </p>\r\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\r\n <PasswordInput\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || 'Enter password'}\r\n autocomplete=\"current-password\"\r\n error={passwordError\r\n ? labels.incorrectPassword ||\r\n 'Incorrect password. Please try again.'\r\n : ''}\r\n />\r\n <button type=\"submit\" class=\"password-submit\"\r\n >{labels.viewCollection || 'View Collection'}</button\r\n >\r\n </form>\r\n </div>\r\n </div>\r\n {:else if error}\r\n <div class=\"error-container\">\r\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n </div>\r\n {:else if collection}\r\n <!-- Cover Image with Blur -->\r\n {#if collection.coverImage}\r\n {@const imageUrl = getImageUrl(collection.coverImage)}\r\n <div class=\"cover-image\">\r\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\r\n <img src={imageUrl} alt={collection.collectionTitle} />\r\n </div>\r\n {/if}\r\n\r\n <!-- Collection Header -->\r\n <div class=\"collection-header\">\r\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\r\n {#if collection.summary}\r\n <p class=\"collection-summary\">{collection.summary}</p>\r\n {/if}\r\n {#if collection.description}\r\n <div class=\"collection-description\">{collection.description}</div>\r\n {/if}\r\n </div>\r\n\r\n <!-- Events Section -->\r\n <div class=\"events-section\">\r\n <div class=\"events-section-header\">\r\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\r\n\r\n {#if canShowSwitcher}\r\n <div\r\n class=\"view-switcher\"\r\n role=\"group\"\r\n aria-label={labels.viewOptions || 'Display mode'}\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\r\n onclick={() => (activeDisplayMode = 'gallery')}\r\n aria-label={labels.galleryView || 'Gallery view'}\r\n aria-pressed={activeDisplayMode === 'gallery'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\r\n onclick={() => (activeDisplayMode = 'list')}\r\n aria-label={labels.listView || 'List view'}\r\n aria-pressed={activeDisplayMode === 'list'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\r\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\r\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\r\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n </div>\r\n\r\n {#if displayEvents.length === 0}\r\n <EmptyState\r\n message={labels.noUpcomingEvents || 'No upcoming events'}\r\n subtext={labels.noUpcomingEventsSubtext ||\r\n 'There are no events in this collection right now. Check back soon!'}\r\n />\r\n {:else if activeDisplayMode === 'list'}\r\n <GroupedListView\r\n events={listEvents}\r\n filterFutureOnly={false}\r\n oneventClick={handleEventClick}\r\n />\r\n {:else}\r\n <div class=\"events-grid\">\r\n {#each galleryEvents as event (event.id)}\r\n <GalleryCard {event} oneventClick={handleEventClick} />\r\n {/each}\r\n </div>\r\n {/if}\r\n </div>\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n .collection-view {\r\n width: 100%;\r\n max-width: 64rem;\r\n margin-left: auto;\r\n margin-right: auto;\r\n padding-left: 1rem;\r\n padding-right: 1rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .error-container,\r\n .password-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 50vh;\r\n text-align: center;\r\n }\r\n\r\n .error-text {\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n /* Password gate */\r\n .password-card {\r\n border-radius: 0.5rem;\r\n padding: 2rem;\r\n max-width: 24rem;\r\n width: 100%;\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n }\r\n\r\n .password-title {\r\n font-size: 1.25rem;\r\n line-height: 1.75rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .password-description {\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n margin-bottom: 1.5rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .password-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.75rem;\r\n }\r\n\r\n .password-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n }\r\n\r\n .password-input:focus {\r\n outline: none;\r\n border-color: hsl(var(--brand-primary, 220 90% 56%));\r\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 20%);\r\n }\r\n\r\n .password-input-error {\r\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-error-text {\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-submit {\r\n padding: 0.5rem 1rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n font-weight: 600;\r\n background: hsl(var(--brand-primary, 220 90% 56%));\r\n color: hsl(var(--text-on-primary, 0 0% 100%));\r\n }\r\n\r\n .password-submit:hover {\r\n filter: brightness(0.95);\r\n }\r\n\r\n /* Cover Image with blur background */\r\n .cover-image {\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n border-radius: 0.5rem;\r\n margin-bottom: 2rem;\r\n height: 350px;\r\n }\r\n\r\n .cover-blur {\r\n position: absolute;\r\n inset: 0;\r\n background-size: cover;\r\n background-position: center;\r\n filter: blur(24px) saturate(1.2);\r\n transform: scale(1.15);\r\n }\r\n\r\n .cover-image img {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n /* Header */\r\n .collection-header {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.875rem;\r\n line-height: 2.25rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .collection-summary {\r\n font-size: 1.125rem;\r\n line-height: 1.75rem;\r\n margin-bottom: 1rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .collection-description {\r\n line-height: 1.625;\r\n color: hsl(var(--text-secondary, 0 0% 35%));\r\n }\r\n\r\n /* Events Section */\r\n .events-section {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .events-section-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .events-heading {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n font-weight: 700;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n /* View Switcher */\r\n .view-switcher {\r\n display: flex;\r\n gap: 0.25rem;\r\n padding: 0.25rem;\r\n border-radius: 0.5rem;\r\n background: hsl(var(--surface-secondary, 0 0% 96%));\r\n }\r\n\r\n .view-switcher-btn {\r\n padding: 0.375rem;\r\n border-radius: 0.375rem;\r\n transition: color 0.15s;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .view-switcher-btn:hover {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .view-switcher-btn-active {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\r\n }\r\n\r\n .events-grid {\r\n display: grid;\r\n gap: 1.5rem;\r\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\r\n }\r\n\r\n /* Responsive */\r\n @media (width <= 640px) {\r\n .cover-image {\r\n height: 250px;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n }\r\n\r\n .events-grid {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n }\r\n\r\n @media (width <= 400px) {\r\n .events-grid {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n</style>"],"names":["$","$$props","initialPassword","initialDisplayMode","showViewSwitcher","labels","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","event","getImageUrl","formatTimeline","toListEvent","iso","date","formatTime","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","events","a","b","handleEventClick","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","onMount","onDestroy","div","root_8","SkeletonLoader","$$anchor","div_1","root","div_2","h2","p","form","PasswordInput","node_1","$$value","button","div_3","root_1","p_1","text_3","imageUrl","div_4","root_2","div_5","img","$$render","consequent_3","div_6","node_2","h1","p_2","root_3","text_5","consequent_4","div_7","root_4","text_6","consequent_5","div_8","div_9","h2_1","div_10","root_5","button_1","button_2","classes","classes_1","consequent_6","EmptyState","GroupedListView","div_11","root_6","GalleryCard","consequent_7","consequent_8","alternate","text_4","text_7","consequent","consequent_1","consequent_9"],"mappings":"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"}