@getmicdrop/venue-calendar 3.5.3 → 3.6.0
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 +661 -661
- package/dist/CarouselView.legacy-DeWfW7JT.js +64 -0
- package/dist/CarouselView.legacy-DeWfW7JT.js.map +1 -0
- package/dist/{Checkout.legacy-Btt0uT61.js → Checkout.legacy-CJPThT4I.js} +180 -183
- package/dist/Checkout.legacy-CJPThT4I.js.map +1 -0
- package/dist/{CollectionView.legacy-Bxih-dA-.js → CollectionView.legacy-BG3g7XbI.js} +128 -127
- package/dist/CollectionView.legacy-BG3g7XbI.js.map +1 -0
- package/dist/FeaturedView.legacy-CALzP8EW.js +128 -0
- package/dist/FeaturedView.legacy-CALzP8EW.js.map +1 -0
- package/dist/GalleryView.legacy-DIhYvOQU.js +51 -0
- package/dist/GalleryView.legacy-DIhYvOQU.js.map +1 -0
- package/dist/GroupedListView.legacy-C9dQ_v_d.js +144 -0
- package/dist/GroupedListView.legacy-C9dQ_v_d.js.map +1 -0
- package/dist/{SeriesPage.legacy-Ka81Mn73.js → SeriesPage.legacy-hSI5Sm8W.js} +2 -2
- package/dist/SeriesPage.legacy-hSI5Sm8W.js.map +1 -0
- package/dist/Success.legacy-DEjngxhO.js +191 -0
- package/dist/Success.legacy-DEjngxhO.js.map +1 -0
- package/dist/{VenueCalendar-B5Y29ZJD.js → VenueCalendar-DvT1UOq-.js} +13786 -13474
- package/dist/VenueCalendar-DvT1UOq-.js.map +1 -0
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +278 -266
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/types.d.ts +349 -349
- package/dist/colors-BZoMuXdh.js.map +1 -1
- package/dist/seo/seo.cjs +1 -1
- package/dist/seo/seo.cjs.map +1 -1
- package/dist/seo/seo.mjs +52 -40
- package/dist/seo/seo.mjs.map +1 -1
- package/dist/seo/types.d.ts +136 -135
- package/dist/types/index.d.ts +387 -387
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +2 -2
- package/dist/venue-calendar.iife.js +42 -42
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +42 -42
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +121 -112
- package/src/lib/theme.js +213 -209
- package/dist/CarouselView.legacy-CRHakGOL.js +0 -64
- package/dist/CarouselView.legacy-CRHakGOL.js.map +0 -1
- package/dist/Checkout.legacy-Btt0uT61.js.map +0 -1
- package/dist/CollectionView.legacy-Bxih-dA-.js.map +0 -1
- package/dist/FeaturedView.legacy-CVEXHJBx.js +0 -128
- package/dist/FeaturedView.legacy-CVEXHJBx.js.map +0 -1
- package/dist/GalleryView.legacy-Ci-IHtAe.js +0 -51
- package/dist/GalleryView.legacy-Ci-IHtAe.js.map +0 -1
- package/dist/GroupedListView.legacy-qisy7BOS.js +0 -144
- package/dist/GroupedListView.legacy-qisy7BOS.js.map +0 -1
- package/dist/SeriesPage.legacy-Ka81Mn73.js.map +0 -1
- package/dist/Success.legacy-D72O08IB.js +0 -191
- package/dist/Success.legacy-D72O08IB.js.map +0 -1
- package/dist/VenueCalendar-B5Y29ZJD.js.map +0 -1
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
2
|
import * as e from "svelte/internal/client";
|
|
3
3
|
import { onMount as ne, onDestroy as de } from "svelte";
|
|
4
|
-
import { f as ce, g as ve, a as ge, i as
|
|
4
|
+
import { f as ce, g as ve, a as ge, i as me, P as ue, b as le, c as oe, S as fe, x as ie, z as pe, A as _e, D as he, G as xe } from "./VenueCalendar-DvT1UOq-.js";
|
|
5
|
+
import "svelte/internal/flags/legacy";
|
|
5
6
|
import "svelte/transition";
|
|
6
7
|
import "svelte/easing";
|
|
7
|
-
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-
|
|
8
|
+
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>');
|
|
8
9
|
function Ee(H, d) {
|
|
9
10
|
e.push(d, !0);
|
|
10
|
-
let Z = 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, () => ({})),
|
|
11
|
+
let Z = 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(Z()) : Z()), O = e.derived(() => X(e.get(P).slice(0, e.get(y)))), D = e.derived(() => e.get(y) < e.get(P).length);
|
|
11
12
|
function J() {
|
|
12
|
-
e.set(
|
|
13
|
+
e.set(y, e.get(y) + W());
|
|
13
14
|
}
|
|
14
15
|
ne(() => {
|
|
15
|
-
|
|
16
|
+
h = new IntersectionObserver(
|
|
16
17
|
(c) => {
|
|
17
|
-
c[0].isIntersecting && e.get(
|
|
18
|
+
c[0].isIntersecting && e.get(D) && J();
|
|
18
19
|
},
|
|
19
20
|
{ rootMargin: "100px" }
|
|
20
|
-
), e.get(
|
|
21
|
+
), e.get(_) && h.observe(e.get(_));
|
|
21
22
|
}), de(() => {
|
|
22
|
-
|
|
23
|
+
h && h.disconnect();
|
|
23
24
|
}), e.user_effect(() => {
|
|
24
|
-
|
|
25
|
+
h && e.get(_) && (h.disconnect(), h.observe(e.get(_)));
|
|
25
26
|
});
|
|
26
27
|
function X(c) {
|
|
27
28
|
const l = {};
|
|
28
29
|
for (const n of c) {
|
|
29
|
-
const
|
|
30
|
-
l[
|
|
30
|
+
const m = n.date;
|
|
31
|
+
l[m] || (l[m] = []), l[m].push(n);
|
|
31
32
|
}
|
|
32
|
-
return Object.entries(l).sort(([n], [
|
|
33
|
+
return Object.entries(l).sort(([n], [m]) => new Date(n) - new Date(m)).map(([n, m]) => ({ date: n, events: m, formattedDate: Y(m) }));
|
|
33
34
|
}
|
|
34
35
|
function Y(c) {
|
|
35
36
|
const l = c[0];
|
|
@@ -53,57 +54,57 @@ function Ee(H, d) {
|
|
|
53
54
|
e.reset(G);
|
|
54
55
|
var V = e.sibling(G, 2);
|
|
55
56
|
e.each(V, 17, () => e.get(O), e.index, (c, l) => {
|
|
56
|
-
var n =
|
|
57
|
+
var n = Te(), m = e.child(n);
|
|
57
58
|
{
|
|
58
59
|
var B = (r) => {
|
|
59
|
-
var a = be(), v = e.child(a),
|
|
60
|
+
var a = be(), v = e.child(a), k = e.child(v, !0);
|
|
60
61
|
e.reset(v);
|
|
61
|
-
var
|
|
62
|
-
e.reset(
|
|
63
|
-
var
|
|
64
|
-
e.reset(
|
|
65
|
-
e.set_text(
|
|
62
|
+
var u = e.sibling(v, 2), b = e.child(u, !0);
|
|
63
|
+
e.reset(u);
|
|
64
|
+
var w = e.sibling(u, 2), x = e.child(w, !0);
|
|
65
|
+
e.reset(w), e.reset(a), e.template_effect(() => {
|
|
66
|
+
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);
|
|
66
67
|
}), e.append(r, a);
|
|
67
68
|
};
|
|
68
|
-
e.if(
|
|
69
|
+
e.if(m, (r) => {
|
|
69
70
|
g() && r(B);
|
|
70
71
|
});
|
|
71
72
|
}
|
|
72
|
-
var t = e.sibling(
|
|
73
|
+
var t = e.sibling(m, 2);
|
|
73
74
|
e.each(t, 21, () => e.get(l).events, e.index, (r, a) => {
|
|
74
|
-
const v = e.derived(() => ge(e.get(a))),
|
|
75
|
-
var
|
|
76
|
-
let
|
|
75
|
+
const v = e.derived(() => ge(e.get(a))), k = e.derived(() => me(e.get(v)));
|
|
76
|
+
var u = De(), b = e.child(u);
|
|
77
|
+
let w;
|
|
77
78
|
var x = e.child(b), U = e.child(x);
|
|
78
79
|
e.reset(x);
|
|
79
80
|
var j = e.sibling(x, 2), C = e.child(j), S = e.child(C, !0);
|
|
80
81
|
e.reset(C);
|
|
81
|
-
var
|
|
82
|
-
e.reset(
|
|
83
|
-
var M = e.sibling(
|
|
82
|
+
var T = e.sibling(C, 2), q = e.child(T, !0);
|
|
83
|
+
e.reset(T);
|
|
84
|
+
var M = e.sibling(T, 2);
|
|
84
85
|
{
|
|
85
|
-
var F = (
|
|
86
|
-
var
|
|
87
|
-
e.reset(
|
|
86
|
+
var F = (s) => {
|
|
87
|
+
var i = we(), o = e.child(i, !0);
|
|
88
|
+
e.reset(i), e.template_effect(() => e.set_text(o, e.get(a).description)), e.append(s, i);
|
|
88
89
|
};
|
|
89
|
-
e.if(M, (
|
|
90
|
-
e.get(a).description &&
|
|
90
|
+
e.if(M, (s) => {
|
|
91
|
+
e.get(a).description && s(F);
|
|
91
92
|
});
|
|
92
93
|
}
|
|
93
94
|
e.reset(j);
|
|
94
95
|
var K = e.sibling(j, 2), te = e.child(K);
|
|
95
96
|
{
|
|
96
|
-
var ae = (
|
|
97
|
-
var
|
|
98
|
-
e.reset(
|
|
99
|
-
e.set_class(
|
|
100
|
-
}), e.append(
|
|
101
|
-
},
|
|
97
|
+
var ae = (s) => {
|
|
98
|
+
var i = ye(), o = e.child(i, !0);
|
|
99
|
+
e.reset(i), e.template_effect(() => {
|
|
100
|
+
e.set_class(i, 1, `status-badge status-${e.get(v).type ?? ""}`, "svelte-1aw0ssq"), e.set_text(o, e.get(v).text);
|
|
101
|
+
}), e.append(s, i);
|
|
102
|
+
}, se = (s) => {
|
|
102
103
|
{
|
|
103
|
-
let
|
|
104
|
-
fe(
|
|
104
|
+
let i = e.derived(() => e.get(a).ticketsRemaining ?? 0), o = e.derived(() => e.get(a).ticketsTotal ?? 0);
|
|
105
|
+
fe(s, {
|
|
105
106
|
get remaining() {
|
|
106
|
-
return e.get(
|
|
107
|
+
return e.get(i);
|
|
107
108
|
},
|
|
108
109
|
get total() {
|
|
109
110
|
return e.get(o);
|
|
@@ -115,19 +116,19 @@ function Ee(H, d) {
|
|
|
115
116
|
});
|
|
116
117
|
}
|
|
117
118
|
};
|
|
118
|
-
e.if(te, (
|
|
119
|
-
e.get(v) ?
|
|
119
|
+
e.if(te, (s) => {
|
|
120
|
+
e.get(v) ? s(ae) : (e.get(a).ticketsTotal > 0 || e.get(a).ticketsRemaining === 0) && s(se, 1);
|
|
120
121
|
});
|
|
121
122
|
}
|
|
122
|
-
e.reset(K), e.reset(b), e.reset(
|
|
123
|
-
(
|
|
124
|
-
|
|
123
|
+
e.reset(K), e.reset(b), e.reset(u), e.template_effect(
|
|
124
|
+
(s, i) => {
|
|
125
|
+
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);
|
|
125
126
|
},
|
|
126
127
|
[
|
|
127
128
|
() => `${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"}`,
|
|
128
129
|
() => e.get(a).startDateTime ? oe(e.get(a).startDateTime, e.get(a).timeZone) : ""
|
|
129
130
|
]
|
|
130
|
-
), e.delegated("click", b, () => E(e.get(a))), e.delegated("keydown", b, (
|
|
131
|
+
), e.delegated("click", b, () => E(e.get(a))), e.delegated("keydown", b, (s) => $(s, e.get(a))), e.append(r, u);
|
|
131
132
|
}), e.reset(t), e.reset(n), e.template_effect((r) => e.set_attribute(n, "aria-label", `Events on ${r ?? ""}`), [
|
|
132
133
|
() => e.get(l).events[0]?.startDateTime ? le(e.get(l).events[0].startDateTime, e.get(l).events[0].timeZone) : e.get(l).date
|
|
133
134
|
]), e.append(c, n);
|
|
@@ -135,11 +136,11 @@ function Ee(H, d) {
|
|
|
135
136
|
var ee = e.sibling(V, 2);
|
|
136
137
|
{
|
|
137
138
|
var A = (c) => {
|
|
138
|
-
var l =
|
|
139
|
-
e.reset(n), e.reset(l), e.bind_this(l, (B) => e.set(
|
|
139
|
+
var l = ke(), n = e.child(l), m = e.child(n, !0);
|
|
140
|
+
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);
|
|
140
141
|
};
|
|
141
142
|
e.if(ee, (c) => {
|
|
142
|
-
e.get(
|
|
143
|
+
e.get(D) && c(A);
|
|
143
144
|
});
|
|
144
145
|
}
|
|
145
146
|
e.reset(I), e.template_effect(() => {
|
|
@@ -148,15 +149,15 @@ function Ee(H, d) {
|
|
|
148
149
|
}
|
|
149
150
|
e.delegate(["click", "keydown"]);
|
|
150
151
|
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>');
|
|
151
|
-
function
|
|
152
|
+
function Ne(H, d) {
|
|
152
153
|
e.push(d, !0), e.prop(d, "organizationId", 3, "");
|
|
153
|
-
let Z = 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),
|
|
154
|
+
let Z = 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()));
|
|
154
155
|
function J(t) {
|
|
155
156
|
return {
|
|
156
157
|
id: t.id,
|
|
157
158
|
name: t.title || t.name || "",
|
|
158
159
|
date: t.startDateTime ? t.startDateTime.split("T")[0] : "",
|
|
159
|
-
image: t.image ?
|
|
160
|
+
image: t.image ? ie(t.image) : "",
|
|
160
161
|
timeline: t.startDateTime ? Y(t.startDateTime) : "",
|
|
161
162
|
status: t.status || "on_sale",
|
|
162
163
|
slug: t.slug || "",
|
|
@@ -170,7 +171,7 @@ function Ze(H, d) {
|
|
|
170
171
|
name: t.title || t.name || "",
|
|
171
172
|
date: t.startDateTime ? t.startDateTime.split("T")[0] : "",
|
|
172
173
|
startDateTime: t.startDateTime || "",
|
|
173
|
-
image: t.image ?
|
|
174
|
+
image: t.image ? ie(t.image) : "",
|
|
174
175
|
status: t.status || "on_sale",
|
|
175
176
|
slug: t.slug || "",
|
|
176
177
|
description: t.description || "",
|
|
@@ -192,35 +193,35 @@ function Ze(H, d) {
|
|
|
192
193
|
}
|
|
193
194
|
}
|
|
194
195
|
async function V(t) {
|
|
195
|
-
if (e.get(
|
|
196
|
+
if (e.get(_)) {
|
|
196
197
|
if (!d.collectionId) {
|
|
197
|
-
e.set(
|
|
198
|
+
e.set(y, g().noCollectionIdProvided || "No collection ID provided", !0), e.set(p, !1);
|
|
198
199
|
return;
|
|
199
200
|
}
|
|
200
|
-
e.set(p, !0), e.set(
|
|
201
|
+
e.set(p, !0), e.set(y, null), e.set(O, !1);
|
|
201
202
|
try {
|
|
202
203
|
const r = await pe(d.collectionId, t);
|
|
203
|
-
if (!e.get(
|
|
204
|
+
if (!e.get(_)) return;
|
|
204
205
|
if (r) {
|
|
205
206
|
if (r.passwordRequired || r.error?.code === "PASSWORD_REQUIRED") {
|
|
206
|
-
e.set(
|
|
207
|
+
e.set(h, !0), e.set(p, !1);
|
|
207
208
|
return;
|
|
208
209
|
}
|
|
209
|
-
e.set(f, r, !0), e.set(
|
|
210
|
+
e.set(f, r, !0), e.set(h, !1);
|
|
210
211
|
} else {
|
|
211
212
|
if (t) {
|
|
212
|
-
e.set(
|
|
213
|
+
e.set(h, !0), e.set(O, !0), e.set(p, !1);
|
|
213
214
|
return;
|
|
214
215
|
}
|
|
215
|
-
e.set(
|
|
216
|
+
e.set(y, g().failedToLoadCollection || "Failed to load collection", !0);
|
|
216
217
|
}
|
|
217
218
|
} catch (r) {
|
|
218
|
-
if (e.get(
|
|
219
|
+
if (e.get(_)) {
|
|
219
220
|
const a = r.message || "";
|
|
220
|
-
a.includes("401") || a.includes("403") || a.includes("password") ? e.set(
|
|
221
|
+
a.includes("401") || a.includes("403") || a.includes("password") ? e.set(h, !0) : e.set(y, a || "Failed to load collection", !0);
|
|
221
222
|
}
|
|
222
223
|
} finally {
|
|
223
|
-
e.get(
|
|
224
|
+
e.get(_) && e.set(p, !1);
|
|
224
225
|
}
|
|
225
226
|
}
|
|
226
227
|
}
|
|
@@ -228,20 +229,20 @@ function Ze(H, d) {
|
|
|
228
229
|
t.preventDefault(), e.get(P).trim() && V(e.get(P));
|
|
229
230
|
}
|
|
230
231
|
ne(async () => {
|
|
231
|
-
e.set(
|
|
232
|
+
e.set(_, !0), await V(Z());
|
|
232
233
|
}), de(() => {
|
|
233
|
-
e.set(
|
|
234
|
+
e.set(_, !1);
|
|
234
235
|
});
|
|
235
236
|
var A = Ue(), c = e.child(A);
|
|
236
237
|
{
|
|
237
238
|
var l = (t) => {
|
|
238
|
-
|
|
239
|
+
_e(t, { type: "gallery" });
|
|
239
240
|
}, n = (t) => {
|
|
240
|
-
var r = Ce(), a = e.child(r), v = e.child(a),
|
|
241
|
+
var r = Ce(), a = e.child(r), v = e.child(a), k = e.child(v, !0);
|
|
241
242
|
e.reset(v);
|
|
242
|
-
var
|
|
243
|
-
e.reset(
|
|
244
|
-
var
|
|
243
|
+
var u = e.sibling(v, 2), b = e.child(u, !0);
|
|
244
|
+
e.reset(u);
|
|
245
|
+
var w = e.sibling(u, 2), x = e.child(w);
|
|
245
246
|
e.remove_input_defaults(x);
|
|
246
247
|
let U;
|
|
247
248
|
var j = e.sibling(x, 2);
|
|
@@ -254,107 +255,107 @@ function Ze(H, d) {
|
|
|
254
255
|
e.get(O) && q(C);
|
|
255
256
|
});
|
|
256
257
|
}
|
|
257
|
-
var S = e.sibling(j, 2),
|
|
258
|
-
e.reset(S), e.reset(
|
|
259
|
-
e.set_text(
|
|
260
|
-
}), e.event("submit",
|
|
261
|
-
},
|
|
258
|
+
var S = e.sibling(j, 2), T = e.child(S, !0);
|
|
259
|
+
e.reset(S), e.reset(w), e.reset(a), e.reset(r), e.template_effect(() => {
|
|
260
|
+
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");
|
|
261
|
+
}), e.event("submit", w, ee), e.bind_value(x, () => e.get(P), (q) => e.set(P, q)), e.append(t, r);
|
|
262
|
+
}, m = (t) => {
|
|
262
263
|
var r = Se(), a = e.child(r), v = e.child(a);
|
|
263
|
-
e.reset(a), e.reset(r), e.template_effect(() => e.set_text(v, `${(g().errorPrefix || "Error:") ?? ""} ${e.get(
|
|
264
|
+
e.reset(a), e.reset(r), e.template_effect(() => e.set_text(v, `${(g().errorPrefix || "Error:") ?? ""} ${e.get(y) ?? ""}`)), e.append(t, r);
|
|
264
265
|
}, B = (t) => {
|
|
265
266
|
var r = Oe(), a = e.first_child(r);
|
|
266
267
|
{
|
|
267
|
-
var v = (
|
|
268
|
-
const
|
|
268
|
+
var v = (s) => {
|
|
269
|
+
const i = e.derived(() => ie(e.get(f).coverImage));
|
|
269
270
|
var o = Pe(), L = e.child(o), R = e.sibling(L, 2);
|
|
270
271
|
e.reset(o), e.template_effect(() => {
|
|
271
|
-
e.set_style(L, `background-image: url(${e.get(
|
|
272
|
-
}), e.append(
|
|
272
|
+
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);
|
|
273
|
+
}), e.append(s, o);
|
|
273
274
|
};
|
|
274
|
-
e.if(a, (
|
|
275
|
-
e.get(f).coverImage &&
|
|
275
|
+
e.if(a, (s) => {
|
|
276
|
+
e.get(f).coverImage && s(v);
|
|
276
277
|
});
|
|
277
278
|
}
|
|
278
|
-
var
|
|
279
|
-
e.reset(
|
|
280
|
-
var
|
|
279
|
+
var k = e.sibling(a, 2), u = e.child(k), b = e.child(u, !0);
|
|
280
|
+
e.reset(u);
|
|
281
|
+
var w = e.sibling(u, 2);
|
|
281
282
|
{
|
|
282
|
-
var x = (
|
|
283
|
-
var
|
|
284
|
-
e.reset(
|
|
283
|
+
var x = (s) => {
|
|
284
|
+
var i = Ie(), o = e.child(i, !0);
|
|
285
|
+
e.reset(i), e.template_effect(() => e.set_text(o, e.get(f).summary)), e.append(s, i);
|
|
285
286
|
};
|
|
286
|
-
e.if(
|
|
287
|
-
e.get(f).summary &&
|
|
287
|
+
e.if(w, (s) => {
|
|
288
|
+
e.get(f).summary && s(x);
|
|
288
289
|
});
|
|
289
290
|
}
|
|
290
|
-
var U = e.sibling(
|
|
291
|
+
var U = e.sibling(w, 2);
|
|
291
292
|
{
|
|
292
|
-
var j = (
|
|
293
|
-
var
|
|
294
|
-
e.reset(
|
|
293
|
+
var j = (s) => {
|
|
294
|
+
var i = Me(), o = e.child(i, !0);
|
|
295
|
+
e.reset(i), e.template_effect(() => e.set_text(o, e.get(f).description)), e.append(s, i);
|
|
295
296
|
};
|
|
296
|
-
e.if(U, (
|
|
297
|
-
e.get(f).description &&
|
|
297
|
+
e.if(U, (s) => {
|
|
298
|
+
e.get(f).description && s(j);
|
|
298
299
|
});
|
|
299
300
|
}
|
|
301
|
+
e.reset(k);
|
|
302
|
+
var C = e.sibling(k, 2), S = e.child(C), T = e.child(S), q = e.child(T);
|
|
300
303
|
e.reset(T);
|
|
301
|
-
var
|
|
302
|
-
e.reset(D);
|
|
303
|
-
var M = e.sibling(D, 2);
|
|
304
|
+
var M = e.sibling(T, 2);
|
|
304
305
|
{
|
|
305
|
-
var F = (
|
|
306
|
-
var
|
|
306
|
+
var F = (s) => {
|
|
307
|
+
var i = Le(), o = e.child(i);
|
|
307
308
|
let L;
|
|
308
309
|
var R = e.sibling(o, 2);
|
|
309
310
|
let re;
|
|
310
|
-
e.reset(
|
|
311
|
-
e.set_attribute(
|
|
312
|
-
"view-switcher-btn-active": e.get(
|
|
313
|
-
}), e.set_attribute(o, "aria-label", g().galleryView || "Gallery view"), e.set_attribute(o, "aria-pressed", e.get(
|
|
314
|
-
"view-switcher-btn-active": e.get(
|
|
315
|
-
}), e.set_attribute(R, "aria-label", g().listView || "List view"), e.set_attribute(R, "aria-pressed", e.get(
|
|
316
|
-
}), e.delegated("click", o, () => e.set(
|
|
311
|
+
e.reset(i), e.template_effect(() => {
|
|
312
|
+
e.set_attribute(i, "aria-label", g().viewOptions || "Display mode"), L = e.set_class(o, 1, "view-switcher-btn svelte-q3tjav", null, L, {
|
|
313
|
+
"view-switcher-btn-active": e.get(D) === "gallery"
|
|
314
|
+
}), 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, {
|
|
315
|
+
"view-switcher-btn-active": e.get(D) === "list"
|
|
316
|
+
}), e.set_attribute(R, "aria-label", g().listView || "List view"), e.set_attribute(R, "aria-pressed", e.get(D) === "list");
|
|
317
|
+
}), e.delegated("click", o, () => e.set(D, "gallery")), e.delegated("click", R, () => e.set(D, "list")), e.append(s, i);
|
|
317
318
|
};
|
|
318
|
-
e.if(M, (
|
|
319
|
-
e.get(N) &&
|
|
319
|
+
e.if(M, (s) => {
|
|
320
|
+
e.get(N) && s(F);
|
|
320
321
|
});
|
|
321
322
|
}
|
|
322
323
|
e.reset(S);
|
|
323
324
|
var K = e.sibling(S, 2);
|
|
324
325
|
{
|
|
325
|
-
var te = (
|
|
326
|
+
var te = (s) => {
|
|
326
327
|
{
|
|
327
|
-
let
|
|
328
|
-
|
|
328
|
+
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!");
|
|
329
|
+
he(s, {
|
|
329
330
|
get message() {
|
|
330
|
-
return e.get(
|
|
331
|
+
return e.get(i);
|
|
331
332
|
},
|
|
332
333
|
get subtext() {
|
|
333
334
|
return e.get(o);
|
|
334
335
|
}
|
|
335
336
|
});
|
|
336
337
|
}
|
|
337
|
-
}, ae = (
|
|
338
|
-
Ee(
|
|
338
|
+
}, ae = (s) => {
|
|
339
|
+
Ee(s, {
|
|
339
340
|
get events() {
|
|
340
341
|
return e.get(I);
|
|
341
342
|
},
|
|
342
343
|
filterFutureOnly: !1,
|
|
343
344
|
oneventClick: z
|
|
344
345
|
});
|
|
345
|
-
},
|
|
346
|
-
var
|
|
347
|
-
e.each(
|
|
346
|
+
}, se = (s) => {
|
|
347
|
+
var i = Re();
|
|
348
|
+
e.each(i, 21, () => e.get($), (o) => o.id, (o, L) => {
|
|
348
349
|
xe(o, {
|
|
349
350
|
get event() {
|
|
350
351
|
return e.get(L);
|
|
351
352
|
},
|
|
352
353
|
oneventClick: z
|
|
353
354
|
});
|
|
354
|
-
}), e.reset(
|
|
355
|
+
}), e.reset(i), e.append(s, i);
|
|
355
356
|
};
|
|
356
|
-
e.if(K, (
|
|
357
|
-
e.get(E).length === 0 ?
|
|
357
|
+
e.if(K, (s) => {
|
|
358
|
+
e.get(E).length === 0 ? s(te) : e.get(D) === "list" ? s(ae, 1) : s(se, !1);
|
|
358
359
|
});
|
|
359
360
|
}
|
|
360
361
|
e.reset(C), e.template_effect(() => {
|
|
@@ -362,13 +363,13 @@ function Ze(H, d) {
|
|
|
362
363
|
}), e.append(t, r);
|
|
363
364
|
};
|
|
364
365
|
e.if(c, (t) => {
|
|
365
|
-
e.get(p) ? t(l) : e.get(
|
|
366
|
+
e.get(p) ? t(l) : e.get(h) ? t(n, 1) : e.get(y) ? t(m, 2) : e.get(f) && t(B, 3);
|
|
366
367
|
});
|
|
367
368
|
}
|
|
368
369
|
e.reset(A), e.append(H, A), e.pop();
|
|
369
370
|
}
|
|
370
371
|
e.delegate(["click"]);
|
|
371
372
|
export {
|
|
372
|
-
|
|
373
|
+
Ne as default
|
|
373
374
|
};
|
|
374
|
-
//# sourceMappingURL=CollectionView.legacy-
|
|
375
|
+
//# sourceMappingURL=CollectionView.legacy-BG3g7XbI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollectionView.legacy-BG3g7XbI.js","sources":["../src/components/Calendar/GroupedListView.svelte","../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<script>\n import { onMount, onDestroy } from \"svelte\";\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\n\n let {\n events = [],\n initialCount = 10,\n loadMoreCount = 10,\n showDateColumn = true,\n filterFutureOnly = true,\n oneventClick,\n labels = {},\n } = $props();\n\n let displayedCount = $state(initialCount);\n let loadMoreTrigger = $state();\n let observer;\n\n // Filter to today and future (if enabled), then group by date\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\n let hasMore = $derived(displayedCount < filteredEvents.length);\n\n function loadMore() {\n displayedCount += loadMoreCount;\n }\n\n onMount(() => {\n observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasMore) {\n loadMore();\n }\n },\n { rootMargin: '100px' }\n );\n\n if (loadMoreTrigger) {\n observer.observe(loadMoreTrigger);\n }\n });\n\n onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n // Re-observe when trigger element changes\n $effect(() => {\n if (observer && loadMoreTrigger) {\n observer.disconnect();\n observer.observe(loadMoreTrigger);\n }\n });\n\n function groupEventsByDate(eventList) {\n const groups = {};\n\n for (const event of eventList) {\n const dateKey = event.date; // YYYY-MM-DD format\n if (!groups[dateKey]) {\n groups[dateKey] = [];\n }\n groups[dateKey].push(event);\n }\n\n // Convert to array sorted by date\n return Object.entries(groups)\n .sort(([a], [b]) => new Date(a) - new Date(b))\n .map(([date, events]) => ({\n date,\n events,\n formattedDate: formatGroupDate(events),\n }));\n }\n\n function formatGroupDate(events) {\n // Use the first event in the group to get timezone-aware date parts\n const firstEvent = events[0];\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\n return {\n month: parts.month.toUpperCase(),\n day: String(parts.date).padStart(2, '0'),\n weekday: parts.day.toUpperCase(),\n };\n }\n\n function handleEventClick(event) {\n oneventClick?.(event);\n }\n\n function handleKeydown(e, event) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleEventClick(event);\n }\n }\n</script>\n\n<section class=\"flex flex-col gap-0\" class:no-date-column={!showDateColumn} aria-label={labels.eventListings || 'Event listings'}>\n <h2 class=\"sr-only\">{labels.eventListGroupedByDate || 'Event list grouped by date'}</h2>\n {#each groupedEvents as group}\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}\">\n <!-- Date Column -->\n {#if showDateColumn}\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\">\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.month}</span>\n <span class=\"text-2xl max-sm:text-lg font-bold text-text-primary leading-tight\">{group.formattedDate.day}</span>\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.weekday}</span>\n </div>\n {/if}\n\n <!-- Events Column -->\n <ul class=\"events-column flex-1 flex flex-col list-none p-0 m-0\">\n {#each group.events as event, eventIndex}\n {@const eventStatus = getBrowseStatus(event)}\n {@const isUnavailable = isEventUnavailable(eventStatus)}\n <li class=\"list-none\">\n <div\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\"\n class:row-unavailable={isUnavailable}\n onclick={() => handleEventClick(event)}\n onkeydown={(e) => handleKeydown(e, event)}\n tabindex=\"0\"\n role=\"button\"\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'}`}\n >\n <!-- Event Image -->\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\">\n <img\n src={event.image || PLACEHOLDER_IMAGE}\n alt=\"\"\n class=\"w-full h-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\n <div class=\"flex-1 flex flex-col gap-1.5 min-w-0\" aria-hidden=\"true\">\n <h3 class=\"text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug\">{event.name}</h3>\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>\n {#if event.description}\n <p class=\"event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden\">{event.description}</p>\n {/if}\n </div>\n\n <!-- Status / Scarcity Badge -->\n <div class=\"flex items-start pt-0.5\" aria-hidden=\"true\">\n {#if eventStatus}\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\n <ScarcityBadge\n remaining={event.ticketsRemaining ?? 0}\n total={event.ticketsTotal ?? 0}\n context=\"browse\"\n {labels}\n />\n {/if}\n </div>\n </div>\n </li>\n {/each}\n </ul>\n </div>\n {/each}\n\n <!-- Infinite scroll trigger -->\n {#if hasMore}\n <div bind:this={loadMoreTrigger} class=\"flex justify-center items-center p-6 text-text-secondary\" role=\"status\" aria-live=\"polite\">\n <span class=\"text-sm\">{labels.loadingMoreEvents || 'Loading more events...'}</span>\n </div>\n {/if}\n</section>\n\n<style>\n /* When no date column, remove left border styling */\n .no-date-column .date-group {\n border-bottom: 0;\n }\n\n .no-date-column .events-column {\n border-left: 0;\n }\n\n .event-description {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n /* Unavailable row dimming */\n .row-unavailable {\n opacity: 0.6;\n }\n\n .row-unavailable img {\n filter: grayscale(0.5);\n }\n\n /* Status badges -- distinct visual treatments matching gallery cards */\n .status-badge {\n display: inline-flex;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n padding: 0.25rem 0.625rem;\n border-radius: 0.25rem;\n white-space: nowrap;\n letter-spacing: 0.02em;\n }\n\n .status-cancelled {\n background-color: hsl(var(--accent-danger) / 0.1);\n color: hsl(var(--accent-danger));\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n\n \n }\n\n .status-past {\n background-color: hsl(var(--bg-tertiary));\n color: hsl(var(--text-tertiary));\n\n \n }\n\n .status-sold_out {\n background-color: hsl(var(--accent-danger) / 0.1);\n color: hsl(var(--accent-danger));\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: 0.65rem;\n\n \n }\n\n .status-sales_ended {\n background-color: hsl(var(--bg-tertiary));\n color: hsl(var(--text-tertiary));\n border: 1px solid hsl(var(--stroke-primary));\n\n \n }\n\n .status-coming_soon {\n background-color: hsl(var(--brand-primary) / 0.15);\n color: hsl(var(--brand-primary));\n\n \n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .event-row {\n transition: none;\n }\n }\n\n /* Screen reader only text */\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n</style>\n","<script>\n import { onMount, onDestroy } from 'svelte';\n import { fetchPublicCollection } from '../../lib/api/events.ts';\n import { getImageUrl } from '$lib/utils/utils.js';\n import { EmptyState } from '@getmicdrop/svelte-components';\n import GalleryCard from '../Calendar/GalleryCard.svelte';\n import GroupedListView from '../Calendar/GroupedListView.svelte';\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\n\n let {\n collectionId,\n organizationId = '',\n onNavigateToEvent,\n password: initialPassword = undefined,\n displayMode: initialDisplayMode = 'gallery',\n showViewSwitcher = true,\n labels = {},\n } = $props();\n\n let collection = $state(null);\n let isLoading = $state(true);\n let error = $state(null);\n let isMounted = $state(false);\n let passwordRequired = $state(false);\n let passwordInput = $state('');\n let passwordError = $state(false);\n let activeDisplayMode = $state(initialDisplayMode);\n\n // Transform collection events into the shape GalleryCard expects\n function toGalleryEvent(event) {\n return {\n id: event.id,\n name: event.title || event.name || '',\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\n image: event.image ? getImageUrl(event.image) : '',\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\n status: event.status || 'on_sale',\n slug: event.slug || '',\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\n ticketsTotal: event.ticketsTotal ?? event.capacity,\n };\n }\n\n // Transform collection events into the shape GroupedListView expects\n function toListEvent(event) {\n return {\n id: event.id,\n name: event.title || event.name || '',\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\n startDateTime: event.startDateTime || '',\n image: event.image ? getImageUrl(event.image) : '',\n status: event.status || 'on_sale',\n slug: event.slug || '',\n description: event.description || '',\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\n ticketsTotal: event.ticketsTotal ?? event.capacity,\n };\n }\n\n function formatTimeline(iso) {\n if (!iso) return '';\n const date = new Date(iso);\n return date.toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n }\n\n let displayEvents = $derived(\n collection ? sortByStartTime(collection.events || []) : []\n );\n\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\n let listEvents = $derived(displayEvents.map(toListEvent));\n\n // Only show view switcher when there are 2+ events\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\n\n function sortByStartTime(events) {\n return [...events].sort((a, b) => {\n if (!a.startDateTime && !b.startDateTime) return 0;\n if (!a.startDateTime) return 1;\n if (!b.startDateTime) return -1;\n return new Date(a.startDateTime).getTime() - new Date(b.startDateTime).getTime();\n });\n }\n\n function handleEventClick(galleryEvent) {\n if (onNavigateToEvent) {\n const eventData = galleryEvent.detail || galleryEvent;\n onNavigateToEvent(eventData.id, eventData.slug || '');\n }\n }\n\n async function loadCollection(pwd) {\n if (!isMounted) return;\n if (!collectionId) {\n error = labels.noCollectionIdProvided || 'No collection ID provided';\n isLoading = false;\n return;\n }\n\n isLoading = true;\n error = null;\n passwordError = false;\n\n try {\n const data = await fetchPublicCollection(collectionId, pwd);\n if (!isMounted) return;\n\n if (data) {\n // Check if the response indicates password is required\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\n passwordRequired = true;\n isLoading = false;\n return;\n }\n collection = data;\n passwordRequired = false;\n } else {\n // A null response after providing a password likely means wrong password\n if (pwd) {\n passwordRequired = true;\n passwordError = true;\n isLoading = false;\n return;\n }\n error = labels.failedToLoadCollection || 'Failed to load collection';\n }\n } catch (err) {\n if (isMounted) {\n // Check for password-related error responses\n const msg = err.message || '';\n if (msg.includes('401') || msg.includes('403') || msg.includes('password')) {\n passwordRequired = true;\n } else {\n error = msg || 'Failed to load collection';\n }\n }\n } finally {\n if (isMounted) {\n isLoading = false;\n }\n }\n }\n\n function handlePasswordSubmit(e) {\n e.preventDefault();\n if (!passwordInput.trim()) return;\n loadCollection(passwordInput);\n }\n\n onMount(async () => {\n isMounted = true;\n await loadCollection(initialPassword);\n });\n\n onDestroy(() => {\n isMounted = false;\n });\n</script>\n\n<div class=\"collection-view\">\n {#if isLoading}\n <SkeletonLoader type=\"gallery\" />\n {:else if passwordRequired}\n <div class=\"password-container\">\n <div class=\"password-card\">\n <h2 class=\"password-title\">{labels.collectionPrivateTitle || 'This collection is private'}</h2>\n <p class=\"password-description\">{labels.collectionPrivateDescription || 'Please enter the password to view this collection.'}</p>\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\n <input\n type=\"password\"\n bind:value={passwordInput}\n placeholder={labels.enterPassword || \"Enter password\"}\n class=\"password-input\"\n class:password-input-error={passwordError}\n />\n {#if passwordError}\n <p class=\"password-error-text\">{labels.incorrectPassword || 'Incorrect password. Please try again.'}</p>\n {/if}\n <button type=\"submit\" class=\"password-submit\">{labels.viewCollection || 'View Collection'}</button>\n </form>\n </div>\n </div>\n {:else if error}\n <div class=\"error-container\">\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\n </div>\n {:else if collection}\n <!-- Cover Image with Blur -->\n {#if collection.coverImage}\n {@const imageUrl = getImageUrl(collection.coverImage)}\n <div class=\"cover-image\">\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\n <img src={imageUrl} alt={collection.collectionTitle} />\n </div>\n {/if}\n\n <!-- Collection Header -->\n <div class=\"collection-header\">\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\n {#if collection.summary}\n <p class=\"collection-summary\">{collection.summary}</p>\n {/if}\n {#if collection.description}\n <div class=\"collection-description\">{collection.description}</div>\n {/if}\n </div>\n\n <!-- Events Section -->\n <div class=\"events-section\">\n <div class=\"events-section-header\">\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\n\n {#if canShowSwitcher}\n <div class=\"view-switcher\" role=\"group\" aria-label={labels.viewOptions || \"Display mode\"}>\n <button\n type=\"button\"\n class=\"view-switcher-btn\"\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\n onclick={() => activeDisplayMode = 'gallery'}\n aria-label={labels.galleryView || \"Gallery view\"}\n aria-pressed={activeDisplayMode === 'gallery'}\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"view-switcher-btn\"\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\n onclick={() => activeDisplayMode = 'list'}\n aria-label={labels.listView || \"List view\"}\n aria-pressed={activeDisplayMode === 'list'}\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n {/if}\n </div>\n\n {#if displayEvents.length === 0}\n <EmptyState\n message={labels.noUpcomingEvents || \"No upcoming events\"}\n subtext={labels.noUpcomingEventsSubtext || \"There are no events in this collection right now. Check back soon!\"}\n />\n {:else if activeDisplayMode === 'list'}\n <GroupedListView\n events={listEvents}\n filterFutureOnly={false}\n oneventClick={handleEventClick}\n />\n {:else}\n <div class=\"events-grid\">\n {#each galleryEvents as event (event.id)}\n <GalleryCard {event} oneventClick={handleEventClick} />\n {/each}\n </div>\n {/if}\n </div>\n {/if}\n</div>\n\n<style>\n .collection-view {\n width: 100%;\n max-width: 64rem;\n margin-left: auto;\n margin-right: auto;\n padding-left: 1rem;\n padding-right: 1rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .error-container,\n .password-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 50vh;\n text-align: center;\n }\n\n .error-text {\n color: hsl(var(--status-sold-out, 0 72% 51%));\n }\n\n /* Password gate */\n .password-card {\n border-radius: 0.5rem;\n padding: 2rem;\n max-width: 24rem;\n width: 100%;\n background: hsl(var(--surface-primary, 0 0% 100%));\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\n }\n\n .password-title {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .password-description {\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin-bottom: 1.5rem;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .password-form {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n }\n\n .password-input {\n width: 100%;\n padding: 0.5rem 0.75rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\n color: hsl(var(--text-primary, 0 0% 10%));\n background: hsl(var(--surface-primary, 0 0% 100%));\n }\n\n .password-input:focus {\n outline: none;\n border-color: hsl(var(--brand-primary, 220 90% 56%));\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 0.2);\n }\n\n .password-input-error {\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\n }\n\n .password-error-text {\n font-size: 0.75rem;\n line-height: 1rem;\n color: hsl(var(--status-sold-out, 0 72% 51%));\n }\n\n .password-submit {\n padding: 0.5rem 1rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n background: hsl(var(--brand-primary, 220 90% 56%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n .password-submit:hover {\n filter: brightness(0.95);\n }\n\n /* Cover Image with blur background */\n .cover-image {\n position: relative;\n width: 100%;\n overflow: hidden;\n border-radius: 0.5rem;\n margin-bottom: 2rem;\n height: 350px;\n }\n\n .cover-blur {\n position: absolute;\n inset: 0;\n background-size: cover;\n background-position: center;\n filter: blur(24px) saturate(1.2);\n transform: scale(1.15);\n }\n\n .cover-image img {\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n /* Header */\n .collection-header {\n margin-bottom: 2rem;\n }\n\n .collection-title {\n font-size: 1.875rem;\n line-height: 2.25rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .collection-summary {\n font-size: 1.125rem;\n line-height: 1.75rem;\n margin-bottom: 1rem;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .collection-description {\n line-height: 1.625;\n color: hsl(var(--text-secondary, 0 0% 35%));\n }\n\n /* Events Section */\n .events-section {\n margin-bottom: 2rem;\n }\n\n .events-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n }\n\n .events-heading {\n font-size: 1.5rem;\n line-height: 2rem;\n font-weight: 700;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n /* View Switcher */\n .view-switcher {\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem;\n border-radius: 0.5rem;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n }\n\n .view-switcher-btn {\n padding: 0.375rem;\n border-radius: 0.375rem;\n transition: color 0.15s;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .view-switcher-btn:hover {\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .view-switcher-btn-active {\n color: hsl(var(--text-primary, 0 0% 10%));\n background: hsl(var(--surface-primary, 0 0% 100%));\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\n }\n\n .events-grid {\n display: grid;\n gap: 1.5rem;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n }\n\n /* Responsive */\n @media (max-width: 640px) {\n .cover-image {\n height: 250px;\n }\n\n .collection-title {\n font-size: 1.5rem;\n line-height: 2rem;\n }\n\n .events-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 400px) {\n .events-grid {\n grid-template-columns: 1fr;\n }\n }\n</style>\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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"}
|