@getmicdrop/venue-calendar 4.0.23 → 4.0.25
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/{AirbnbSplitMain-BUYnyuyK.js → AirbnbSplitMain-CDM_Jj-4.js} +4 -4
- package/dist/{AirbnbSplitMain-BUYnyuyK.js.map → AirbnbSplitMain-CDM_Jj-4.js.map} +1 -1
- package/dist/{CarouselView.legacy-DCuD_nfg.js → CarouselView.legacy-BCnk_sPR.js} +3 -3
- package/dist/{CarouselView.legacy-DCuD_nfg.js.map → CarouselView.legacy-BCnk_sPR.js.map} +1 -1
- package/dist/{CartView-B1cD8eJK.js → CartView-CcxFHimp.js} +548 -527
- package/dist/CartView-CcxFHimp.js.map +1 -0
- package/dist/{Checkout-D1tm3-3-.js → Checkout-eHnoyiLt.js} +4 -4
- package/dist/{Checkout-D1tm3-3-.js.map → Checkout-eHnoyiLt.js.map} +1 -1
- package/dist/{Checkout.legacy-CUKj-kTd.js → Checkout.legacy-rkXtfchW.js} +4 -4
- package/dist/{Checkout.legacy-CUKj-kTd.js.map → Checkout.legacy-rkXtfchW.js.map} +1 -1
- package/dist/{CheckoutMain-Cnn5t7im.js → CheckoutMain-DkxO_-du.js} +4 -4
- package/dist/{CheckoutMain-Cnn5t7im.js.map → CheckoutMain-DkxO_-du.js.map} +1 -1
- package/dist/{CheckoutTimer-D3cDi-cN.js → CheckoutTimer-DE8MT4_A.js} +2 -2
- package/dist/{CheckoutTimer-D3cDi-cN.js.map → CheckoutTimer-DE8MT4_A.js.map} +1 -1
- package/dist/CollectionView-B67Gg3E0.js +147 -0
- package/dist/CollectionView-B67Gg3E0.js.map +1 -0
- package/dist/CollectionView.legacy-BqNKpXKj.js +382 -0
- package/dist/CollectionView.legacy-BqNKpXKj.js.map +1 -0
- package/dist/{EventDetailsView-B2jRDwwa.js → EventDetailsView-BeVvl1GT.js} +2 -2
- package/dist/{EventDetailsView-B2jRDwwa.js.map → EventDetailsView-BeVvl1GT.js.map} +1 -1
- package/dist/{FeaturedView.legacy-Bt4IWKhg.js → FeaturedView.legacy-Colp5HBH.js} +19 -19
- package/dist/{FeaturedView.legacy-Bt4IWKhg.js.map → FeaturedView.legacy-Colp5HBH.js.map} +1 -1
- package/dist/{GalleryCard-CMZOB0AF.js → GalleryCard-aFAAmKN7.js} +8 -8
- package/dist/{GalleryCard-CMZOB0AF.js.map → GalleryCard-aFAAmKN7.js.map} +1 -1
- package/dist/{GalleryView.legacy-Bbv0GWhU.js → GalleryView.legacy-BnjAkz76.js} +9 -9
- package/dist/{GalleryView.legacy-Bbv0GWhU.js.map → GalleryView.legacy-BnjAkz76.js.map} +1 -1
- package/dist/{GroupedListView.legacy-DWr2Xk8H.js → GroupedListView.legacy-nkYQcMAt.js} +7 -7
- package/dist/{GroupedListView.legacy-DWr2Xk8H.js.map → GroupedListView.legacy-nkYQcMAt.js.map} +1 -1
- package/dist/{SeriesPage-BiDVIYkg.js → SeriesPage-DHJdQJH9.js} +5 -5
- package/dist/{SeriesPage-BiDVIYkg.js.map → SeriesPage-DHJdQJH9.js.map} +1 -1
- package/dist/{SeriesPage.legacy-Dh_Yx9Sl.js → SeriesPage.legacy-CT5Yh_c1.js} +22 -22
- package/dist/{SeriesPage.legacy-Dh_Yx9Sl.js.map → SeriesPage.legacy-CT5Yh_c1.js.map} +1 -1
- package/dist/{Success-DUkYq4nq.js → Success-Br9Gm0iD.js} +5 -5
- package/dist/{Success-DUkYq4nq.js.map → Success-Br9Gm0iD.js.map} +1 -1
- package/dist/{Success.legacy-BkYsrpZD.js → Success.legacy-B2JxPdrC.js} +2 -2
- package/dist/{Success.legacy-BkYsrpZD.js.map → Success.legacy-B2JxPdrC.js.map} +1 -1
- package/dist/{VenueCalendar-CubKu-BL.js → VenueCalendar-c5GDxqM9.js} +4131 -3890
- package/dist/VenueCalendar-c5GDxqM9.js.map +1 -0
- package/dist/{ViewTicketsEmbed-CYUZCxpY.js → ViewTicketsEmbed-BCQLxR2D.js} +2 -2
- package/dist/{ViewTicketsEmbed-CYUZCxpY.js.map → ViewTicketsEmbed-BCQLxR2D.js.map} +1 -1
- package/dist/{labels-Wt_ttSgK.js → labels-Be0hYWW_.js} +2 -2
- package/dist/{labels-Wt_ttSgK.js.map → labels-Be0hYWW_.js.map} +1 -1
- package/dist/{transform-D8cXm2pJ.js → transform-D7RXKMkr.js} +2 -2
- package/dist/{transform-D8cXm2pJ.js.map → transform-D7RXKMkr.js.map} +1 -1
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +11 -11
- package/dist/venue-calendar.iife.js +46 -46
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +46 -46
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +4 -3
- package/dist/CartView-B1cD8eJK.js.map +0 -1
- package/dist/CollectionView-Be10q2m0.js +0 -142
- package/dist/CollectionView-Be10q2m0.js.map +0 -1
- package/dist/CollectionView.legacy-86tHji7W.js +0 -376
- package/dist/CollectionView.legacy-86tHji7W.js.map +0 -1
- package/dist/VenueCalendar-CubKu-BL.js.map +0 -1
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
import "svelte/internal/disclose-version";
|
|
2
|
-
import * as e from "svelte/internal/client";
|
|
3
|
-
import { onMount as ne, onDestroy as de } from "svelte";
|
|
4
|
-
import { aD as ce, aE as ve, aF as ge, aG as me, aH as ue, a7 as le, N as oe, a2 as fe, e as ie, as as pe, aP as _e, aQ as he } from "./VenueCalendar-CubKu-BL.js";
|
|
5
|
-
import "svelte/internal/flags/legacy";
|
|
6
|
-
import "svelte/transition";
|
|
7
|
-
import "svelte/easing";
|
|
8
|
-
import { G as xe } from "./GalleryCard-CMZOB0AF.js";
|
|
9
|
-
var be = e.from_html('<div class="w-16 min-w-16 py-4 px-2.5 flex flex-col items-center justify-start bg-bg-secondary border-r border-border max-sm:w-12 max-sm:min-w-12 max-sm:py-2.5 max-sm:px-1.5" aria-hidden="true"><span class="text-xs font-semibold text-text-secondary uppercase tracking-tight"> </span> <span class="text-2xl max-sm:text-lg font-bold text-text-primary leading-tight"> </span> <span class="text-xs font-semibold text-text-secondary uppercase tracking-tight"> </span></div>'), we = e.from_html('<p class="event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden svelte-1aw0ssq"> </p>'), ye = e.from_html("<span> </span>"), De = e.from_html('<li class="list-none"><div tabindex="0" role="button"><div class="w-36 h-24 min-w-36 max-sm:w-20 max-sm:h-16 max-sm:min-w-20 rounded-lg overflow-hidden bg-bg-secondary flex items-center justify-center" aria-hidden="true"><img alt="" class="w-full h-full object-contain svelte-1aw0ssq" loading="lazy"/></div> <div class="flex-1 flex flex-col gap-1.5 min-w-0" aria-hidden="true"><h3 class="text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug"> </h3> <time class="text-sm max-sm:text-xs font-medium text-text-secondary"> </time> <!></div> <div class="flex items-start pt-0.5" aria-hidden="true"><!></div></div></li>'), Te = e.from_html('<div class="date-group flex border-b border-border last:border-b-0 svelte-1aw0ssq" role="group"><!> <ul class="events-column flex-1 flex flex-col list-none p-0 m-0 svelte-1aw0ssq"></ul></div>'), ke = e.from_html('<div class="flex justify-center items-center p-6 text-text-secondary" role="status" aria-live="polite"><span class="text-sm"> </span></div>'), qe = e.from_html('<section><h2 class="sr-only svelte-1aw0ssq"> </h2> <!> <!></section>');
|
|
10
|
-
function Ee(K, d) {
|
|
11
|
-
e.push(d, !0);
|
|
12
|
-
let N = e.prop(d, "events", 19, () => []), Q = e.prop(d, "initialCount", 3, 10), W = e.prop(d, "loadMoreCount", 3, 10), g = e.prop(d, "showDateColumn", 3, !0), f = e.prop(d, "filterFutureOnly", 3, !0), p = e.prop(d, "labels", 19, () => ({})), y = e.state(e.proxy(Q())), _ = e.state(void 0), h, P = e.derived(() => f() ? ce(N()) : N()), O = e.derived(() => X(e.get(P).slice(0, e.get(y)))), D = e.derived(() => e.get(y) < e.get(P).length);
|
|
13
|
-
function J() {
|
|
14
|
-
e.set(y, e.get(y) + W());
|
|
15
|
-
}
|
|
16
|
-
ne(() => {
|
|
17
|
-
h = new IntersectionObserver(
|
|
18
|
-
(c) => {
|
|
19
|
-
c[0].isIntersecting && e.get(D) && J();
|
|
20
|
-
},
|
|
21
|
-
{ rootMargin: "100px" }
|
|
22
|
-
), e.get(_) && h.observe(e.get(_));
|
|
23
|
-
}), de(() => {
|
|
24
|
-
h && h.disconnect();
|
|
25
|
-
}), e.user_effect(() => {
|
|
26
|
-
h && e.get(_) && (h.disconnect(), h.observe(e.get(_)));
|
|
27
|
-
});
|
|
28
|
-
function X(c) {
|
|
29
|
-
const l = {};
|
|
30
|
-
for (const n of c) {
|
|
31
|
-
const m = n.date;
|
|
32
|
-
l[m] || (l[m] = []), l[m].push(n);
|
|
33
|
-
}
|
|
34
|
-
return Object.entries(l).sort(([n], [m]) => new Date(n) - new Date(m)).map(([n, m]) => ({ date: n, events: m, formattedDate: Y(m) }));
|
|
35
|
-
}
|
|
36
|
-
function Y(c) {
|
|
37
|
-
const l = c[0];
|
|
38
|
-
if (!l?.startDateTime) return { month: "", day: "", weekday: "" };
|
|
39
|
-
const n = ve(l.startDateTime, l.timeZone);
|
|
40
|
-
return {
|
|
41
|
-
month: n.month.toUpperCase(),
|
|
42
|
-
day: String(n.date).padStart(2, "0"),
|
|
43
|
-
weekday: n.day.toUpperCase()
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function E(c) {
|
|
47
|
-
d.oneventClick?.(c);
|
|
48
|
-
}
|
|
49
|
-
function $(c, l) {
|
|
50
|
-
(c.key === "Enter" || c.key === " ") && (c.preventDefault(), E(l));
|
|
51
|
-
}
|
|
52
|
-
var I = qe();
|
|
53
|
-
let Z;
|
|
54
|
-
var G = e.child(I), z = e.child(G, !0);
|
|
55
|
-
e.reset(G);
|
|
56
|
-
var F = e.sibling(G, 2);
|
|
57
|
-
e.each(F, 17, () => e.get(O), e.index, (c, l) => {
|
|
58
|
-
var n = Te(), m = e.child(n);
|
|
59
|
-
{
|
|
60
|
-
var B = (r) => {
|
|
61
|
-
var a = be(), v = e.child(a), k = e.child(v, !0);
|
|
62
|
-
e.reset(v);
|
|
63
|
-
var u = e.sibling(v, 2), b = e.child(u, !0);
|
|
64
|
-
e.reset(u);
|
|
65
|
-
var w = e.sibling(u, 2), x = e.child(w, !0);
|
|
66
|
-
e.reset(w), e.reset(a), e.template_effect(() => {
|
|
67
|
-
e.set_text(k, e.get(l).formattedDate.month), e.set_text(b, e.get(l).formattedDate.day), e.set_text(x, e.get(l).formattedDate.weekday);
|
|
68
|
-
}), e.append(r, a);
|
|
69
|
-
};
|
|
70
|
-
e.if(m, (r) => {
|
|
71
|
-
g() && r(B);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
var t = e.sibling(m, 2);
|
|
75
|
-
e.each(t, 21, () => e.get(l).events, e.index, (r, a) => {
|
|
76
|
-
const v = e.derived(() => ge(e.get(a))), k = e.derived(() => me(e.get(v)));
|
|
77
|
-
var u = De(), b = e.child(u);
|
|
78
|
-
let w;
|
|
79
|
-
var x = e.child(b), U = e.child(x);
|
|
80
|
-
e.reset(x);
|
|
81
|
-
var j = e.sibling(x, 2), C = e.child(j), S = e.child(C, !0);
|
|
82
|
-
e.reset(C);
|
|
83
|
-
var T = e.sibling(C, 2), q = e.child(T, !0);
|
|
84
|
-
e.reset(T);
|
|
85
|
-
var M = e.sibling(T, 2);
|
|
86
|
-
{
|
|
87
|
-
var A = (s) => {
|
|
88
|
-
var i = we(), o = e.child(i, !0);
|
|
89
|
-
e.reset(i), e.template_effect(() => e.set_text(o, e.get(a).description)), e.append(s, i);
|
|
90
|
-
};
|
|
91
|
-
e.if(M, (s) => {
|
|
92
|
-
e.get(a).description && s(A);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
e.reset(j);
|
|
96
|
-
var H = e.sibling(j, 2), te = e.child(H);
|
|
97
|
-
{
|
|
98
|
-
var ae = (s) => {
|
|
99
|
-
var i = ye(), o = e.child(i, !0);
|
|
100
|
-
e.reset(i), e.template_effect(() => {
|
|
101
|
-
e.set_class(i, 1, `status-badge status-${e.get(v).type ?? ""}`, "svelte-1aw0ssq"), e.set_text(o, e.get(v).text);
|
|
102
|
-
}), e.append(s, i);
|
|
103
|
-
}, se = (s) => {
|
|
104
|
-
{
|
|
105
|
-
let i = e.derived(() => e.get(a).ticketsRemaining ?? 0), o = e.derived(() => e.get(a).ticketsTotal ?? 0);
|
|
106
|
-
fe(s, {
|
|
107
|
-
get remaining() {
|
|
108
|
-
return e.get(i);
|
|
109
|
-
},
|
|
110
|
-
get total() {
|
|
111
|
-
return e.get(o);
|
|
112
|
-
},
|
|
113
|
-
context: "browse",
|
|
114
|
-
get labels() {
|
|
115
|
-
return p();
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
e.if(te, (s) => {
|
|
121
|
-
e.get(v) ? s(ae) : (e.get(a).ticketsTotal > 0 || e.get(a).ticketsRemaining === 0) && s(se, 1);
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
e.reset(H), e.reset(b), e.reset(u), e.template_effect(
|
|
125
|
-
(s, i) => {
|
|
126
|
-
w = e.set_class(b, 1, "event-row flex gap-4 max-sm:gap-2.5 p-5 max-sm:p-3 cursor-pointer transition-colors duration-150 bg-card border-b border-border/50 last:border-b-0 hover:bg-bg-secondary focus:outline-2 focus:outline-brand-primary focus:-outline-offset-2 focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:-outline-offset-2 svelte-1aw0ssq", null, w, { "row-unavailable": e.get(k) }), e.set_attribute(b, "aria-label", s), e.set_attribute(U, "src", e.get(a).image || ue), e.set_text(S, e.get(a).name), e.set_attribute(T, "datetime", e.get(a).startDateTime || e.get(l).date), e.set_text(q, i);
|
|
127
|
-
},
|
|
128
|
-
[
|
|
129
|
-
() => `${e.get(a).name} on ${e.get(a).startDateTime ? le(e.get(a).startDateTime, e.get(a).timeZone) : e.get(l).date} at ${e.get(a).startDateTime ? oe(e.get(a).startDateTime, e.get(a).timeZone) : ""}, ${e.get(v)?.text || e.get(a).status || p().statusOnSale || "On Sale"}. ${p().pressEnterToView || "Press Enter to view details"}`,
|
|
130
|
-
() => e.get(a).startDateTime ? oe(e.get(a).startDateTime, e.get(a).timeZone) : ""
|
|
131
|
-
]
|
|
132
|
-
), e.delegated("click", b, () => E(e.get(a))), e.delegated("keydown", b, (s) => $(s, e.get(a))), e.append(r, u);
|
|
133
|
-
}), e.reset(t), e.reset(n), e.template_effect((r) => e.set_attribute(n, "aria-label", `Events on ${r ?? ""}`), [
|
|
134
|
-
() => e.get(l).events[0]?.startDateTime ? le(e.get(l).events[0].startDateTime, e.get(l).events[0].timeZone) : e.get(l).date
|
|
135
|
-
]), e.append(c, n);
|
|
136
|
-
});
|
|
137
|
-
var ee = e.sibling(F, 2);
|
|
138
|
-
{
|
|
139
|
-
var V = (c) => {
|
|
140
|
-
var l = ke(), n = e.child(l), m = e.child(n, !0);
|
|
141
|
-
e.reset(n), e.reset(l), e.bind_this(l, (B) => e.set(_, B), () => e.get(_)), e.template_effect(() => e.set_text(m, p().loadingMoreEvents || "Loading more events...")), e.append(c, l);
|
|
142
|
-
};
|
|
143
|
-
e.if(ee, (c) => {
|
|
144
|
-
e.get(D) && c(V);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
e.reset(I), e.template_effect(() => {
|
|
148
|
-
Z = e.set_class(I, 1, "flex flex-col gap-0 svelte-1aw0ssq", null, Z, { "no-date-column": !g() }), e.set_attribute(I, "aria-label", p().eventListings || "Event listings"), e.set_text(z, p().eventListGroupedByDate || "Event list grouped by date");
|
|
149
|
-
}), e.append(K, I), e.pop();
|
|
150
|
-
}
|
|
151
|
-
e.delegate(["click", "keydown"]);
|
|
152
|
-
var je = e.from_html('<p class="password-error-text svelte-q3tjav"> </p>'), Ce = e.from_html('<div class="password-container svelte-q3tjav"><div class="password-card svelte-q3tjav"><h2 class="password-title svelte-q3tjav"> </h2> <p class="password-description svelte-q3tjav"> </p> <form class="password-form svelte-q3tjav"><input type="password"/> <!> <button type="submit" class="password-submit svelte-q3tjav"> </button></form></div></div>'), Se = e.from_html('<div class="error-container svelte-q3tjav"><p class="error-text svelte-q3tjav"> </p></div>'), Pe = e.from_html('<div class="cover-image svelte-q3tjav"><div class="cover-blur svelte-q3tjav"></div> <img class="svelte-q3tjav"/></div>'), Ie = e.from_html('<p class="collection-summary svelte-q3tjav"> </p>'), Me = e.from_html('<div class="collection-description svelte-q3tjav"> </div>'), Le = e.from_html('<div class="view-switcher svelte-q3tjav" role="group"><button type="button"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect></svg></button> <button type="button"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg></button></div>'), Re = e.from_html('<div class="events-grid svelte-q3tjav"></div>'), Oe = e.from_html('<!> <div class="collection-header svelte-q3tjav"><h1 class="collection-title svelte-q3tjav"> </h1> <!> <!></div> <div class="events-section svelte-q3tjav"><div class="events-section-header svelte-q3tjav"><h2 class="events-heading svelte-q3tjav"> </h2> <!></div> <!></div>', 1), Ue = e.from_html('<div class="collection-view svelte-q3tjav"><!></div>');
|
|
153
|
-
function ze(K, d) {
|
|
154
|
-
e.push(d, !0), e.prop(d, "organizationId", 3, "");
|
|
155
|
-
let N = e.prop(d, "password", 3, void 0), Q = e.prop(d, "displayMode", 3, "gallery"), W = e.prop(d, "showViewSwitcher", 3, !0), g = e.prop(d, "labels", 19, () => ({})), f = e.state(null), p = e.state(!0), y = e.state(null), _ = e.state(!1), h = e.state(!1), P = e.state(""), O = e.state(!1), D = e.state(e.proxy(Q()));
|
|
156
|
-
function J(t) {
|
|
157
|
-
return {
|
|
158
|
-
id: t.id,
|
|
159
|
-
name: t.title || t.name || "",
|
|
160
|
-
date: t.startDateTime ? t.startDateTime.split("T")[0] : "",
|
|
161
|
-
image: t.image ? ie(t.image) : "",
|
|
162
|
-
timeline: t.startDateTime ? Y(t.startDateTime) : "",
|
|
163
|
-
status: t.status || "on_sale",
|
|
164
|
-
slug: t.slug || "",
|
|
165
|
-
ticketsRemaining: t.ticketsRemaining ?? t.ticketsAvailable,
|
|
166
|
-
ticketsTotal: t.ticketsTotal ?? t.capacity
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
function X(t) {
|
|
170
|
-
return {
|
|
171
|
-
id: t.id,
|
|
172
|
-
name: t.title || t.name || "",
|
|
173
|
-
date: t.startDateTime ? t.startDateTime.split("T")[0] : "",
|
|
174
|
-
startDateTime: t.startDateTime || "",
|
|
175
|
-
image: t.image ? ie(t.image) : "",
|
|
176
|
-
status: t.status || "on_sale",
|
|
177
|
-
slug: t.slug || "",
|
|
178
|
-
description: t.description || "",
|
|
179
|
-
ticketsRemaining: t.ticketsRemaining ?? t.ticketsAvailable,
|
|
180
|
-
ticketsTotal: t.ticketsTotal ?? t.capacity
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
function Y(t) {
|
|
184
|
-
return t ? new Date(t).toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: !0 }) : "";
|
|
185
|
-
}
|
|
186
|
-
let E = e.derived(() => e.get(f) ? G(e.get(f).events || []) : []), $ = e.derived(() => e.get(E).map(J)), I = e.derived(() => e.get(E).map(X)), Z = e.derived(() => W() && e.get(E).length >= 2);
|
|
187
|
-
function G(t) {
|
|
188
|
-
return [...t].sort((r, a) => !r.startDateTime && !a.startDateTime ? 0 : r.startDateTime ? a.startDateTime ? new Date(r.startDateTime).getTime() - new Date(a.startDateTime).getTime() : -1 : 1);
|
|
189
|
-
}
|
|
190
|
-
function z(t) {
|
|
191
|
-
if (d.onNavigateToEvent) {
|
|
192
|
-
const r = t.detail || t;
|
|
193
|
-
d.onNavigateToEvent(r.id, r.slug || "");
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
async function F(t) {
|
|
197
|
-
if (e.get(_)) {
|
|
198
|
-
if (!d.collectionId) {
|
|
199
|
-
e.set(y, g().noCollectionIdProvided || "No collection ID provided", !0), e.set(p, !1);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
e.set(p, !0), e.set(y, null), e.set(O, !1);
|
|
203
|
-
try {
|
|
204
|
-
const r = await pe(d.collectionId, t);
|
|
205
|
-
if (!e.get(_)) return;
|
|
206
|
-
if (r) {
|
|
207
|
-
if (r.passwordRequired || r.error?.code === "PASSWORD_REQUIRED") {
|
|
208
|
-
e.set(h, !0), e.set(p, !1);
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
e.set(f, r, !0), e.set(h, !1);
|
|
212
|
-
} else {
|
|
213
|
-
if (t) {
|
|
214
|
-
e.set(h, !0), e.set(O, !0), e.set(p, !1);
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
e.set(y, g().failedToLoadCollection || "Failed to load collection", !0);
|
|
218
|
-
}
|
|
219
|
-
} catch (r) {
|
|
220
|
-
if (e.get(_)) {
|
|
221
|
-
const a = r.message || "";
|
|
222
|
-
a.includes("401") || a.includes("403") || a.includes("password") ? e.set(h, !0) : e.set(y, a || "Failed to load collection", !0);
|
|
223
|
-
}
|
|
224
|
-
} finally {
|
|
225
|
-
e.get(_) && e.set(p, !1);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
function ee(t) {
|
|
230
|
-
t.preventDefault(), e.get(P).trim() && F(e.get(P));
|
|
231
|
-
}
|
|
232
|
-
ne(async () => {
|
|
233
|
-
e.set(_, !0), await F(N());
|
|
234
|
-
}), de(() => {
|
|
235
|
-
e.set(_, !1);
|
|
236
|
-
});
|
|
237
|
-
var V = Ue(), c = e.child(V);
|
|
238
|
-
{
|
|
239
|
-
var l = (t) => {
|
|
240
|
-
_e(t, { type: "gallery" });
|
|
241
|
-
}, n = (t) => {
|
|
242
|
-
var r = Ce(), a = e.child(r), v = e.child(a), k = e.child(v, !0);
|
|
243
|
-
e.reset(v);
|
|
244
|
-
var u = e.sibling(v, 2), b = e.child(u, !0);
|
|
245
|
-
e.reset(u);
|
|
246
|
-
var w = e.sibling(u, 2), x = e.child(w);
|
|
247
|
-
e.remove_input_defaults(x);
|
|
248
|
-
let U;
|
|
249
|
-
var j = e.sibling(x, 2);
|
|
250
|
-
{
|
|
251
|
-
var C = (q) => {
|
|
252
|
-
var M = je(), A = e.child(M, !0);
|
|
253
|
-
e.reset(M), e.template_effect(() => e.set_text(A, g().incorrectPassword || "Incorrect password. Please try again.")), e.append(q, M);
|
|
254
|
-
};
|
|
255
|
-
e.if(j, (q) => {
|
|
256
|
-
e.get(O) && q(C);
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
var S = e.sibling(j, 2), T = e.child(S, !0);
|
|
260
|
-
e.reset(S), e.reset(w), e.reset(a), e.reset(r), e.template_effect(() => {
|
|
261
|
-
e.set_text(k, g().collectionPrivateTitle || "This collection is private"), e.set_text(b, g().collectionPrivateDescription || "Please enter the password to view this collection."), e.set_attribute(x, "placeholder", g().enterPassword || "Enter password"), U = e.set_class(x, 1, "password-input svelte-q3tjav", null, U, { "password-input-error": e.get(O) }), e.set_text(T, g().viewCollection || "View Collection");
|
|
262
|
-
}), e.event("submit", w, ee), e.bind_value(x, () => e.get(P), (q) => e.set(P, q)), e.append(t, r);
|
|
263
|
-
}, m = (t) => {
|
|
264
|
-
var r = Se(), a = e.child(r), v = e.child(a);
|
|
265
|
-
e.reset(a), e.reset(r), e.template_effect(() => e.set_text(v, `${(g().errorPrefix || "Error:") ?? ""} ${e.get(y) ?? ""}`)), e.append(t, r);
|
|
266
|
-
}, B = (t) => {
|
|
267
|
-
var r = Oe(), a = e.first_child(r);
|
|
268
|
-
{
|
|
269
|
-
var v = (s) => {
|
|
270
|
-
const i = e.derived(() => ie(e.get(f).coverImage));
|
|
271
|
-
var o = Pe(), L = e.child(o), R = e.sibling(L, 2);
|
|
272
|
-
e.reset(o), e.template_effect(() => {
|
|
273
|
-
e.set_style(L, `background-image: url(${e.get(i) ?? ""})`), e.set_attribute(R, "src", e.get(i)), e.set_attribute(R, "alt", e.get(f).collectionTitle);
|
|
274
|
-
}), e.append(s, o);
|
|
275
|
-
};
|
|
276
|
-
e.if(a, (s) => {
|
|
277
|
-
e.get(f).coverImage && s(v);
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
var k = e.sibling(a, 2), u = e.child(k), b = e.child(u, !0);
|
|
281
|
-
e.reset(u);
|
|
282
|
-
var w = e.sibling(u, 2);
|
|
283
|
-
{
|
|
284
|
-
var x = (s) => {
|
|
285
|
-
var i = Ie(), o = e.child(i, !0);
|
|
286
|
-
e.reset(i), e.template_effect(() => e.set_text(o, e.get(f).summary)), e.append(s, i);
|
|
287
|
-
};
|
|
288
|
-
e.if(w, (s) => {
|
|
289
|
-
e.get(f).summary && s(x);
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
var U = e.sibling(w, 2);
|
|
293
|
-
{
|
|
294
|
-
var j = (s) => {
|
|
295
|
-
var i = Me(), o = e.child(i, !0);
|
|
296
|
-
e.reset(i), e.template_effect(() => e.set_text(o, e.get(f).description)), e.append(s, i);
|
|
297
|
-
};
|
|
298
|
-
e.if(U, (s) => {
|
|
299
|
-
e.get(f).description && s(j);
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
e.reset(k);
|
|
303
|
-
var C = e.sibling(k, 2), S = e.child(C), T = e.child(S), q = e.child(T);
|
|
304
|
-
e.reset(T);
|
|
305
|
-
var M = e.sibling(T, 2);
|
|
306
|
-
{
|
|
307
|
-
var A = (s) => {
|
|
308
|
-
var i = Le(), o = e.child(i);
|
|
309
|
-
let L;
|
|
310
|
-
var R = e.sibling(o, 2);
|
|
311
|
-
let re;
|
|
312
|
-
e.reset(i), e.template_effect(() => {
|
|
313
|
-
e.set_attribute(i, "aria-label", g().viewOptions || "Display mode"), L = e.set_class(o, 1, "view-switcher-btn svelte-q3tjav", null, L, {
|
|
314
|
-
"view-switcher-btn-active": e.get(D) === "gallery"
|
|
315
|
-
}), e.set_attribute(o, "aria-label", g().galleryView || "Gallery view"), e.set_attribute(o, "aria-pressed", e.get(D) === "gallery"), re = e.set_class(R, 1, "view-switcher-btn svelte-q3tjav", null, re, {
|
|
316
|
-
"view-switcher-btn-active": e.get(D) === "list"
|
|
317
|
-
}), e.set_attribute(R, "aria-label", g().listView || "List view"), e.set_attribute(R, "aria-pressed", e.get(D) === "list");
|
|
318
|
-
}), e.delegated("click", o, () => e.set(D, "gallery")), e.delegated("click", R, () => e.set(D, "list")), e.append(s, i);
|
|
319
|
-
};
|
|
320
|
-
e.if(M, (s) => {
|
|
321
|
-
e.get(Z) && s(A);
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
e.reset(S);
|
|
325
|
-
var H = e.sibling(S, 2);
|
|
326
|
-
{
|
|
327
|
-
var te = (s) => {
|
|
328
|
-
{
|
|
329
|
-
let i = e.derived(() => g().noUpcomingEvents || "No upcoming events"), o = e.derived(() => g().noUpcomingEventsSubtext || "There are no events in this collection right now. Check back soon!");
|
|
330
|
-
he(s, {
|
|
331
|
-
get message() {
|
|
332
|
-
return e.get(i);
|
|
333
|
-
},
|
|
334
|
-
get subtext() {
|
|
335
|
-
return e.get(o);
|
|
336
|
-
}
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
}, ae = (s) => {
|
|
340
|
-
Ee(s, {
|
|
341
|
-
get events() {
|
|
342
|
-
return e.get(I);
|
|
343
|
-
},
|
|
344
|
-
filterFutureOnly: !1,
|
|
345
|
-
oneventClick: z
|
|
346
|
-
});
|
|
347
|
-
}, se = (s) => {
|
|
348
|
-
var i = Re();
|
|
349
|
-
e.each(i, 21, () => e.get($), (o) => o.id, (o, L) => {
|
|
350
|
-
xe(o, {
|
|
351
|
-
get event() {
|
|
352
|
-
return e.get(L);
|
|
353
|
-
},
|
|
354
|
-
oneventClick: z
|
|
355
|
-
});
|
|
356
|
-
}), e.reset(i), e.append(s, i);
|
|
357
|
-
};
|
|
358
|
-
e.if(H, (s) => {
|
|
359
|
-
e.get(E).length === 0 ? s(te) : e.get(D) === "list" ? s(ae, 1) : s(se, !1);
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
e.reset(C), e.template_effect(() => {
|
|
363
|
-
e.set_text(b, e.get(f).collectionTitle), e.set_text(q, `Events (${e.get(E).length ?? ""})`);
|
|
364
|
-
}), e.append(t, r);
|
|
365
|
-
};
|
|
366
|
-
e.if(c, (t) => {
|
|
367
|
-
e.get(p) ? t(l) : e.get(h) ? t(n, 1) : e.get(y) ? t(m, 2) : e.get(f) && t(B, 3);
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
e.reset(V), e.append(K, V), e.pop();
|
|
371
|
-
}
|
|
372
|
-
e.delegate(["click"]);
|
|
373
|
-
export {
|
|
374
|
-
ze as default
|
|
375
|
-
};
|
|
376
|
-
//# sourceMappingURL=CollectionView.legacy-86tHji7W.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionView.legacy-86tHji7W.js","sources":["../src/components/Calendar/GroupedListView.svelte","../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount, onDestroy } from \"svelte\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\r\n\r\n let {\r\n events = [],\r\n initialCount = 10,\r\n loadMoreCount = 10,\r\n showDateColumn = true,\r\n filterFutureOnly = true,\r\n oneventClick,\r\n labels = {},\r\n } = $props();\r\n\r\n let displayedCount = $state(initialCount);\r\n let loadMoreTrigger = $state();\r\n let observer;\r\n\r\n // Filter to today and future (if enabled), then group by date\r\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\r\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\r\n let hasMore = $derived(displayedCount < filteredEvents.length);\r\n\r\n function loadMore() {\r\n displayedCount += loadMoreCount;\r\n }\r\n\r\n onMount(() => {\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting && hasMore) {\r\n loadMore();\r\n }\r\n },\r\n { rootMargin: '100px' }\r\n );\r\n\r\n if (loadMoreTrigger) {\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n onDestroy(() => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n // Re-observe when trigger element changes\r\n $effect(() => {\r\n if (observer && loadMoreTrigger) {\r\n observer.disconnect();\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n function groupEventsByDate(eventList) {\r\n const groups = {};\r\n\r\n for (const event of eventList) {\r\n const dateKey = event.date; // YYYY-MM-DD format\r\n if (!groups[dateKey]) {\r\n groups[dateKey] = [];\r\n }\r\n groups[dateKey].push(event);\r\n }\r\n\r\n // Convert to array sorted by date\r\n return Object.entries(groups)\r\n .sort(([a], [b]) => new Date(a) - new Date(b))\r\n .map(([date, events]) => ({\r\n date,\r\n events,\r\n formattedDate: formatGroupDate(events),\r\n }));\r\n }\r\n\r\n function formatGroupDate(events) {\r\n // Use the first event in the group to get timezone-aware date parts\r\n const firstEvent = events[0];\r\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\r\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\r\n return {\r\n month: parts.month.toUpperCase(),\r\n day: String(parts.date).padStart(2, '0'),\r\n weekday: parts.day.toUpperCase(),\r\n };\r\n }\r\n\r\n function handleEventClick(event) {\r\n oneventClick?.(event);\r\n }\r\n\r\n function handleKeydown(e, event) {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleEventClick(event);\r\n }\r\n }\r\n</script>\r\n\r\n<section class=\"flex flex-col gap-0\" class:no-date-column={!showDateColumn} aria-label={labels.eventListings || 'Event listings'}>\r\n <h2 class=\"sr-only\">{labels.eventListGroupedByDate || 'Event list grouped by date'}</h2>\r\n {#each groupedEvents as group}\r\n <div class=\"date-group flex border-b border-border last:border-b-0\" role=\"group\" aria-label=\"Events on {group.events[0]?.startDateTime ? formatFullDate(group.events[0].startDateTime, group.events[0].timeZone) : group.date}\">\r\n <!-- Date Column -->\r\n {#if showDateColumn}\r\n <div class=\"w-16 min-w-16 py-4 px-2.5 flex flex-col items-center justify-start bg-bg-secondary border-r border-border max-sm:w-12 max-sm:min-w-12 max-sm:py-2.5 max-sm:px-1.5\" aria-hidden=\"true\">\r\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.month}</span>\r\n <span class=\"text-2xl max-sm:text-lg font-bold text-text-primary leading-tight\">{group.formattedDate.day}</span>\r\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.weekday}</span>\r\n </div>\r\n {/if}\r\n\r\n <!-- Events Column -->\r\n <ul class=\"events-column flex-1 flex flex-col list-none p-0 m-0\">\r\n {#each group.events as event, eventIndex}\r\n {@const eventStatus = getBrowseStatus(event)}\r\n {@const isUnavailable = isEventUnavailable(eventStatus)}\r\n <li class=\"list-none\">\r\n <div\r\n class=\"event-row flex gap-4 max-sm:gap-2.5 p-5 max-sm:p-3 cursor-pointer transition-colors duration-150 bg-card border-b border-border/50 last:border-b-0 hover:bg-bg-secondary focus:outline-2 focus:outline-brand-primary focus:-outline-offset-2 focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:-outline-offset-2\"\r\n class:row-unavailable={isUnavailable}\r\n onclick={() => handleEventClick(event)}\r\n onkeydown={(e) => handleKeydown(e, event)}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label={`${event.name} on ${event.startDateTime ? formatFullDate(event.startDateTime, event.timeZone) : group.date} at ${event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}, ${eventStatus?.text || event.status || labels.statusOnSale || 'On Sale'}. ${labels.pressEnterToView || 'Press Enter to view details'}`}\r\n >\r\n <!-- Event Image -->\r\n <div class=\"w-36 h-24 min-w-36 max-sm:w-20 max-sm:h-16 max-sm:min-w-20 rounded-lg overflow-hidden bg-bg-secondary flex items-center justify-center\" aria-hidden=\"true\">\r\n <img\r\n src={event.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"w-full h-full object-contain\"\r\n loading=\"lazy\"\r\n />\r\n </div>\r\n\r\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\r\n <div class=\"flex-1 flex flex-col gap-1.5 min-w-0\" aria-hidden=\"true\">\r\n <h3 class=\"text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug\">{event.name}</h3>\r\n <time class=\"text-sm max-sm:text-xs font-medium text-text-secondary\" datetime={event.startDateTime || group.date}>{event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}</time>\r\n {#if event.description}\r\n <p class=\"event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden\">{event.description}</p>\r\n {/if}\r\n </div>\r\n\r\n <!-- Status / Scarcity Badge -->\r\n <div class=\"flex items-start pt-0.5\" aria-hidden=\"true\">\r\n {#if eventStatus}\r\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\r\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\r\n <ScarcityBadge\r\n remaining={event.ticketsRemaining ?? 0}\r\n total={event.ticketsTotal ?? 0}\r\n context=\"browse\"\r\n {labels}\r\n />\r\n {/if}\r\n </div>\r\n </div>\r\n </li>\r\n {/each}\r\n </ul>\r\n </div>\r\n {/each}\r\n\r\n <!-- Infinite scroll trigger -->\r\n {#if hasMore}\r\n <div bind:this={loadMoreTrigger} class=\"flex justify-center items-center p-6 text-text-secondary\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"text-sm\">{labels.loadingMoreEvents || 'Loading more events...'}</span>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n /* When no date column, remove left border styling */\r\n .no-date-column .date-group {\r\n border-bottom: 0;\r\n }\r\n\r\n .no-date-column .events-column {\r\n border-left: 0;\r\n }\r\n\r\n .event-description {\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n /* Unavailable row dimming */\r\n .row-unavailable {\r\n opacity: 0.6;\r\n }\r\n\r\n .row-unavailable img {\r\n filter: grayscale(0.5);\r\n }\r\n\r\n /* Status badges -- distinct visual treatments matching gallery cards */\r\n .status-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n font-weight: 700;\r\n padding: 0.25rem 0.625rem;\r\n border-radius: 0.25rem;\r\n white-space: nowrap;\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .status-cancelled {\r\n background-color: hsl(var(--accent-danger) / 10%);\r\n color: hsl(var(--accent-danger));\r\n text-decoration: line-through;\r\n text-decoration-thickness: 1.5px;\r\n\r\n \r\n }\r\n\r\n .status-past {\r\n background-color: hsl(var(--bg-tertiary));\r\n color: hsl(var(--text-tertiary));\r\n\r\n \r\n }\r\n\r\n .status-sold_out {\r\n background-color: hsl(var(--accent-danger) / 10%);\r\n color: hsl(var(--accent-danger));\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n font-size: 0.65rem;\r\n\r\n \r\n }\r\n\r\n .status-sales_ended {\r\n background-color: hsl(var(--bg-tertiary));\r\n color: hsl(var(--text-tertiary));\r\n border: 1px solid hsl(var(--stroke-primary));\r\n\r\n \r\n }\r\n\r\n .status-coming_soon {\r\n background-color: hsl(var(--brand-primary) / 15%);\r\n color: hsl(var(--brand-primary));\r\n\r\n \r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .event-row {\r\n transition: none;\r\n }\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n","<script>\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 { EmptyState } from '@getmicdrop/svelte-components';\r\n import GalleryCard from '../Calendar/GalleryCard.svelte';\r\n import GroupedListView from '../Calendar/GroupedListView.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 date.toLocaleTimeString('en-US', {\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 new Date(a.startDateTime).getTime() - new Date(b.startDateTime).getTime();\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 (msg.includes('401') || msg.includes('403') || msg.includes('password')) {\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\">{labels.collectionPrivateTitle || 'This collection is private'}</h2>\r\n <p class=\"password-description\">{labels.collectionPrivateDescription || 'Please enter the password to view this collection.'}</p>\r\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\r\n <input\r\n type=\"password\"\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || \"Enter password\"}\r\n class=\"password-input\"\r\n class:password-input-error={passwordError}\r\n />\r\n {#if passwordError}\r\n <p class=\"password-error-text\">{labels.incorrectPassword || 'Incorrect password. Please try again.'}</p>\r\n {/if}\r\n <button type=\"submit\" class=\"password-submit\">{labels.viewCollection || 'View Collection'}</button>\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 class=\"view-switcher\" role=\"group\" aria-label={labels.viewOptions || \"Display mode\"}>\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 width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\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 width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\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 || \"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>\r\n"],"names":["events","$","$$props","initialCount","loadMoreCount","showDateColumn","filterFutureOnly","labels","displayedCount","loadMoreTrigger","observer","filteredEvents","filterTodayAndFuture","groupedEvents","groupEventsByDate","hasMore","loadMore","onMount","entries","onDestroy","eventList","groups","event","dateKey","a","b","date","formatGroupDate","firstEvent","parts","getDateParts","handleEventClick","handleKeydown","e","section","root","h2","node","group","div","root_1","div_1","root_2","span","span_1","span_2","$$render","consequent","ul","node_1","eventStatus","getBrowseStatus","isUnavailable","isEventUnavailable","li","root_3","div_2","div_3","img","div_4","h3","time","p","root_4","text_6","consequent_1","div_5","span_3","root_5","text_7","ScarcityBadge","$$anchor","consequent_2","consequent_3","classes_1","$0","PLACEHOLDER_IMAGE","text_4","formatFullDate","formatEventTime","div_6","root_7","span_4","$$value","consequent_4","classes","initialPassword","initialDisplayMode","showViewSwitcher","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","getImageUrl","formatTimeline","toListEvent","iso","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","SkeletonLoader","form","input","p_1","button","p_2","imageUrl","root_6","node_2","h1","p_3","consequent_5","div_7","root_8","consequent_6","div_8","div_9","h2_1","div_10","root_9","button_1","button_2","classes_2","consequent_7","EmptyState","GroupedListView","div_11","root_12","GalleryCard","consequent_8","consequent_9","alternate","text_5","text_8","consequent_10"],"mappings":"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"}
|