@getmicdrop/venue-calendar 4.0.81 → 4.0.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/CartView-DBrUqLSR.js +2365 -0
  2. package/dist/CartView-DBrUqLSR.js.map +1 -0
  3. package/dist/{Checkout-KyLZlwLk.js → Checkout-BAtOdBIM.js} +466 -470
  4. package/dist/Checkout-BAtOdBIM.js.map +1 -0
  5. package/dist/Checkout-BEcmGOZm.js +789 -0
  6. package/dist/Checkout-BEcmGOZm.js.map +1 -0
  7. package/dist/{CheckoutTimer-Deo1mLnO.js → CheckoutTimer-CayvrAa9.js} +13 -13
  8. package/dist/{CheckoutTimer-Deo1mLnO.js.map → CheckoutTimer-CayvrAa9.js.map} +1 -1
  9. package/dist/CollectionView-kk90OMFq.js +299 -0
  10. package/dist/CollectionView-kk90OMFq.js.map +1 -0
  11. package/dist/{Event-B5WRygEf.js → Event-N959l6uT.js} +1875 -1249
  12. package/dist/Event-N959l6uT.js.map +1 -0
  13. package/dist/EventPage-DaEMiLjY.js +529 -0
  14. package/dist/EventPage-DaEMiLjY.js.map +1 -0
  15. package/dist/{Heading-Bwevh2c4.js → Heading-A_nixT3L.js} +2 -2
  16. package/dist/{Heading-Bwevh2c4.js.map → Heading-A_nixT3L.js.map} +1 -1
  17. package/dist/{ModalHeader-DKwE5ZYZ.js → ModalHeader-CxMVzApa.js} +2 -2
  18. package/dist/{ModalHeader-DKwE5ZYZ.js.map → ModalHeader-CxMVzApa.js.map} +1 -1
  19. package/dist/ScarcityBadge-CiF-JsPl.js +90 -0
  20. package/dist/ScarcityBadge-CiF-JsPl.js.map +1 -0
  21. package/dist/SeriesPage-CQJHrpTH.js +33 -0
  22. package/dist/SeriesPage-CQJHrpTH.js.map +1 -0
  23. package/dist/Success-R-1NhLjx.js +729 -0
  24. package/dist/{Success-kyiEO6_Z.js.map → Success-R-1NhLjx.js.map} +1 -1
  25. package/dist/{Text-_bLxSPv-.js → Text-F6D2QvI6.js} +16 -16
  26. package/dist/{Text-_bLxSPv-.js.map → Text-F6D2QvI6.js.map} +1 -1
  27. package/dist/{VenueCalendar-d8u6MKEu.js → VenueCalendar-DdRkxjxd.js} +3822 -4112
  28. package/dist/VenueCalendar-DdRkxjxd.js.map +1 -0
  29. package/dist/{ViewTicketsEmbed-DquJJVIK.js → ViewTicketsEmbed-BwvS8VgE.js} +31 -31
  30. package/dist/{ViewTicketsEmbed-DquJJVIK.js.map → ViewTicketsEmbed-BwvS8VgE.js.map} +1 -1
  31. package/dist/api/api.cjs.map +1 -1
  32. package/dist/api/api.mjs +3 -6
  33. package/dist/api/api.mjs.map +1 -1
  34. package/dist/{data-toggle-store.svelte-BGbzblUJ.js → data-toggle-store.svelte-D9XyVwDW.js} +2 -2
  35. package/dist/{data-toggle-store.svelte-BGbzblUJ.js.map → data-toggle-store.svelte-D9XyVwDW.js.map} +1 -1
  36. package/dist/{labels-Bj_cocb1.js → labels-DG5wh_vD.js} +29 -30
  37. package/dist/{labels-Bj_cocb1.js.map → labels-DG5wh_vD.js.map} +1 -1
  38. package/dist/seo/seo.cjs +1 -1
  39. package/dist/seo/seo.cjs.map +1 -1
  40. package/dist/seo/seo.mjs +79 -58
  41. package/dist/seo/seo.mjs.map +1 -1
  42. package/dist/{transform-D7Oe8jUp.js → transform-C5S2acqv.js} +2 -4
  43. package/dist/{transform-D7Oe8jUp.js.map → transform-C5S2acqv.js.map} +1 -1
  44. package/dist/venue-calendar.css +1 -1
  45. package/dist/venue-calendar.es.js +18 -18
  46. package/dist/venue-calendar.iife.js +31 -41
  47. package/dist/venue-calendar.iife.js.map +1 -1
  48. package/dist/venue-calendar.umd.js +24 -34
  49. package/dist/venue-calendar.umd.js.map +1 -1
  50. package/package.json +171 -170
  51. package/dist/CarouselView.legacy-Bn76lnuH.js +0 -65
  52. package/dist/CarouselView.legacy-Bn76lnuH.js.map +0 -1
  53. package/dist/CartView-lR1zLxmN.js +0 -1744
  54. package/dist/CartView-lR1zLxmN.js.map +0 -1
  55. package/dist/Checkout-D5mXj5zN.js +0 -831
  56. package/dist/Checkout-D5mXj5zN.js.map +0 -1
  57. package/dist/Checkout-KyLZlwLk.js.map +0 -1
  58. package/dist/Checkout.legacy-Dl8Oh7y3.js +0 -1156
  59. package/dist/Checkout.legacy-Dl8Oh7y3.js.map +0 -1
  60. package/dist/CollectionView-C1O9xfVC.js +0 -338
  61. package/dist/CollectionView-C1O9xfVC.js.map +0 -1
  62. package/dist/CollectionView.legacy-DK_mCA_g.js +0 -241
  63. package/dist/CollectionView.legacy-DK_mCA_g.js.map +0 -1
  64. package/dist/Event-B5WRygEf.js.map +0 -1
  65. package/dist/EventPage-f1AOk4Jb.js +0 -577
  66. package/dist/EventPage-f1AOk4Jb.js.map +0 -1
  67. package/dist/EventPage.legacy-Bk3PJyJs.js +0 -1324
  68. package/dist/EventPage.legacy-Bk3PJyJs.js.map +0 -1
  69. package/dist/FeaturedView.legacy-BzCt1X1W.js +0 -128
  70. package/dist/FeaturedView.legacy-BzCt1X1W.js.map +0 -1
  71. package/dist/GalleryCard-C1EKGErR.js +0 -93
  72. package/dist/GalleryCard-C1EKGErR.js.map +0 -1
  73. package/dist/GalleryView.legacy-BmQtZKl7.js +0 -52
  74. package/dist/GalleryView.legacy-BmQtZKl7.js.map +0 -1
  75. package/dist/GroupedListView.legacy-D72fbNfA.js +0 -145
  76. package/dist/GroupedListView.legacy-D72fbNfA.js.map +0 -1
  77. package/dist/OrderSummarySkeleton-DKWKZNLL.js +0 -632
  78. package/dist/OrderSummarySkeleton-DKWKZNLL.js.map +0 -1
  79. package/dist/ScarcityBadge-3cFxTOCh.js +0 -77
  80. package/dist/ScarcityBadge-3cFxTOCh.js.map +0 -1
  81. package/dist/SeriesPage-Cq4Q8Vah.js +0 -54
  82. package/dist/SeriesPage-Cq4Q8Vah.js.map +0 -1
  83. package/dist/SeriesPage.legacy-zvgW0S_y.js +0 -193
  84. package/dist/SeriesPage.legacy-zvgW0S_y.js.map +0 -1
  85. package/dist/Success-kyiEO6_Z.js +0 -748
  86. package/dist/Success.legacy-BxKYmXgz.js +0 -192
  87. package/dist/Success.legacy-BxKYmXgz.js.map +0 -1
  88. package/dist/VenueCalendar-d8u6MKEu.js.map +0 -1
  89. package/dist/__SKIP_NAVIGATION__-CmipjatL.js +0 -18
  90. package/dist/__SKIP_NAVIGATION__-CmipjatL.js.map +0 -1
  91. package/dist/api-BzICORqy.js +0 -6
  92. package/dist/api-BzICORqy.js.map +0 -1
  93. package/dist/colors-CmP-sSZD.js +0 -56
  94. package/dist/colors-CmP-sSZD.js.map +0 -1
@@ -1,1744 +0,0 @@
1
- import "svelte/internal/disclose-version";
2
- import * as e from "svelte/internal/client";
3
- import { onMount as pt, onDestroy as bt } from "svelte";
4
- import { g as lt } from "./__SKIP_NAVIGATION__-CmipjatL.js";
5
- import { m as qe, a2 as yt, Q as xe, a3 as xt, a4 as kt, a5 as mt, a6 as ot, h as ht, a7 as Oe, v as Tt, a8 as Qe, a1 as De, A as wt, T as It, a9 as Dt, aa as St, O as Ct, ab as Et, ac as At, E as it, ad as Pt, a0 as Ot, q as dt, f as Mt, ae as st, u as Ft, e as Lt, af as Qt, x as qt, k as ct, ag as Bt, l as ut } from "./VenueCalendar-d8u6MKEu.js";
6
- import { S as Nt } from "./ScarcityBadge-3cFxTOCh.js";
7
- import { O as zt, a as Rt } from "./OrderSummarySkeleton-DKWKZNLL.js";
8
- import { M as nt, C as Ht } from "./CheckoutTimer-Deo1mLnO.js";
9
- import { I as jt } from "./Text-_bLxSPv-.js";
10
- const Ut = {
11
- /** Percent remaining at or below which a ticket is "urgent" (exact count). */
12
- URGENT_PCT: 10,
13
- /** Percent remaining at or below which a ticket is "low" (vague badge). */
14
- LOW_PCT: 25,
15
- /** Absolute cap on exact-count copy; above this we fall back to vague badge. */
16
- MAX_EXACT_COUNT: 20
17
- };
18
- function Gt(J, t) {
19
- if (J <= 0) return "sold-out";
20
- if (t <= 0) return "plenty";
21
- const E = J / t * 100, { URGENT_PCT: _, LOW_PCT: k, MAX_EXACT_COUNT: s } = Ut;
22
- return E <= _ && J <= s ? "urgent" : E <= k ? "low" : "plenty";
23
- }
24
- function Vt(J, t) {
25
- if (!J || typeof J != "object") return {};
26
- if (!Array.isArray(t) || t.length === 0) {
27
- const k = {};
28
- for (const [s, y] of Object.entries(J))
29
- typeof y == "number" && y > 0 && (k[s] = y);
30
- return k;
31
- }
32
- const E = /* @__PURE__ */ new Map();
33
- for (const k of t)
34
- k && k.ID !== void 0 && k.ID !== null && E.set(String(k.ID), k);
35
- const _ = {};
36
- for (const [k, s] of Object.entries(J)) {
37
- if (typeof s != "number" || !Number.isFinite(s) || s <= 0) continue;
38
- const y = E.get(String(k));
39
- let a = s;
40
- if (y) {
41
- const C = y.remainingCapacity;
42
- typeof C == "number" && Number.isFinite(C) && (a = Math.min(a, Math.max(0, C)));
43
- const R = y.maxQuantity;
44
- typeof R == "number" && Number.isFinite(R) && R > 0 && (a = Math.min(a, R));
45
- }
46
- a > 0 && (_[k] = a);
47
- }
48
- return _;
49
- }
50
- var Wt = e.from_html('<div role="group"><!> <span class="qty-display svelte-12zmutv" aria-live="polite" aria-atomic="true" role="status"><span class="sr-only"> </span> </span> <!></div>'), Zt = e.from_html('<span class="sold-out-pill text-xs whitespace-nowrap svelte-12zmutv" role="status"> </span>'), Jt = e.from_html('<span class="sales-start-badge text-xs text-secondary whitespace-nowrap svelte-12zmutv" role="status"> </span>'), Yt = e.from_html('<span class="sr-only" role="alert"> </span>'), Xt = e.from_html('<div class="donation-input-wrapper svelte-12zmutv"><!> <!></div>'), Kt = e.from_html('<span class="price-lg text-primary svelte-12zmutv"> </span> <span class="price-strikethrough"><span class="sr-only"> </span> </span> <span class="price-fee" aria-hidden="true"> </span> <span class="sr-only"> </span>', 1), $t = e.from_html('<span class="price-lg text-primary svelte-12zmutv"> </span>'), ea = e.from_html('<span class="price-lg text-primary svelte-12zmutv"> </span> <span class="price-fee" aria-hidden="true"> </span> <span class="sr-only"> </span>', 1), ta = e.from_html('<span class="badge badge-discount"> </span>'), aa = e.from_html('<span class="badge badge-unlocked"> </span>'), ra = e.from_html('<div class="flex-row-2 mb-2 flex-wrap" role="status" aria-live="polite"><!> <!></div>'), ia = e.from_html('<p class="text-sm text-secondary mb-3 svelte-12zmutv"> </p>'), sa = e.from_html("<span> </span>"), na = e.from_html('<p class="sales-end-text text-xs svelte-12zmutv" role="status"> </p>'), la = e.from_html('<article><div class="p-4 pb-0"><div class="vc-flex-between-start gap-4"><div class="flex-1 min-w-0"><h3 class="font-medium text-primary svelte-12zmutv"> </h3></div> <!></div></div> <hr class="divider-line my-3 svelte-12zmutv" aria-hidden="true"/> <div class="p-4 pt-0"><div class="flex-row-2 mb-2"><!></div> <!> <!> <div class="flex-row-2 mb-2 flex-wrap" role="status"><!> <!></div> <!></div></article>');
51
- function oa(J, t) {
52
- e.push(t, !0);
53
- let E = e.prop(t, "fee", 3, "0.00"), _ = e.prop(t, "quantity", 3, 0), k = e.prop(t, "soldOut", 3, !1), s = e.prop(t, "status", 3, null), y = e.prop(t, "salesBegin", 3, null), a = e.prop(t, "salesEnd", 3, null), C = e.prop(t, "remainingCapacity", 3, null), R = e.prop(
54
- t,
55
- "totalCapacity",
56
- 3,
57
- null
58
- // Total ticket capacity for percentage calculation
59
- );
60
- e.prop(
61
- t,
62
- "minQuantity",
63
- 3,
64
- 1
65
- // Minimum quantity per order (default 1)
66
- );
67
- let M = e.prop(
68
- t,
69
- "maxQuantity",
70
- 3,
71
- null
72
- // Maximum quantity per order (null = unlimited)
73
- ), se = e.prop(
74
- t,
75
- "discountedPrice",
76
- 3,
77
- null
78
- // Discounted price when promo applied
79
- ), ie = e.prop(
80
- t,
81
- "isRevealed",
82
- 3,
83
- !1
84
- // Badge: Unlocked via promo
85
- ), B = e.prop(
86
- t,
87
- "isDiscounted",
88
- 3,
89
- !1
90
- // Badge: Discount applied
91
- ), ce = e.prop(
92
- t,
93
- "ticketType",
94
- 3,
95
- 0
96
- // 0 = paid/standard, 1 = registration/free, 2 = donation
97
- ), Y = e.prop(
98
- t,
99
- "donationAmount",
100
- 3,
101
- ""
102
- // User-entered donation amount (string for input binding)
103
- ), ve = e.prop(t, "syncing", 3, !1), g = e.prop(t, "labels", 19, () => ({}));
104
- const V = e.derived(() => ce() === 2), w = e.derived(() => parseFloat(Y()) || 0), G = e.derived(() => e.get(V) && Y() !== "" && e.get(w) < 1 ? g().minimumDonation || "Minimum $1.00" : ""), ue = e.derived(() => !e.get(V) || Y() !== "" && e.get(w) >= 1), $ = e.derived(() => parseFloat(t.price) || 0), h = e.derived(() => e.get($) === 0 ? 0 : parseFloat(E()) || 0), p = e.derived(() => qe(e.get($) + e.get(h))), x = e.derived(() => qe(e.get(h))), S = e.derived(() => se() ? parseFloat(se()) : null), v = e.derived(() => e.get(S) === null || e.get(S) === 0 ? 0 : parseFloat(E()) || 0), c = e.derived(() => e.get(S) !== null ? qe(e.get(S) + e.get(v)) : null), I = e.derived(() => R() ?? C() ?? 0), m = e.derived(() => {
105
- const o = C() ?? 0, l = e.get(I);
106
- if (l === 0 || s() === "scheduled" || s() === "sales_ended" || e.get(
107
- $
108
- // no scarcity on free tickets
109
- ) === 0) return null;
110
- const f = Gt(o, l);
111
- return f === "sold-out" ? { text: "Sold out", type: "sold-out" } : f === "urgent" ? {
112
- text: `Only ${o} left`,
113
- type: "scarcity",
114
- showFlame: !0
115
- } : f === "low" ? { text: "Few tickets left", type: "scarcity", showFlame: !0 } : null;
116
- }), T = e.derived(() => e.get(m) != null && e.get(m).type === "scarcity");
117
- function N(o) {
118
- return o ? yt(o, { year: void 0, timeZone: "UTC" }) : "";
119
- }
120
- function te(o) {
121
- const l = /* @__PURE__ */ new Date(), f = new Date(l);
122
- return f.setDate(f.getDate() + 1), o.toDateString() === f.toDateString();
123
- }
124
- function _e(o) {
125
- const l = /* @__PURE__ */ new Date(), H = (o.getTime() - l.getTime()) / (1e3 * 60 * 60 * 24);
126
- return H > 0 && H <= 7;
127
- }
128
- function ke(o) {
129
- if (!o) return { text: "", preposition: "" };
130
- const l = new Date(o), f = /* @__PURE__ */ new Date(), H = l.getTime() - f.getTime(), j = Math.round(H / (1e3 * 60)), L = H / (1e3 * 60 * 60), Q = g().locale || "en-US";
131
- if (j > 0 && j < 60) {
132
- const F = Math.max(1, j);
133
- return { text: (F === 1 ? g().inNMinute || "in {n} minute" : g().inNMinutes || "in {n} minutes").replace("{n}", String(F)), preposition: "" };
134
- }
135
- if (L > 0 && L < 24) {
136
- const F = Math.max(1, Math.round(L));
137
- return {
138
- text: (F === 1 ? g().inNHour || "in {n} hour" : g().inNHours || "in {n} hours").replace("{n}", String(F)),
139
- preposition: ""
140
- };
141
- }
142
- if (te(l)) {
143
- const F = ot(o, { timeZone: "UTC" });
144
- return {
145
- text: (g().tomorrowAtTime || "tomorrow at {time}").replace("{time}", F),
146
- preposition: ""
147
- };
148
- }
149
- if (_e(l)) {
150
- const F = new Intl.DateTimeFormat(Q, { weekday: "long" }).format(l), oe = ot(o, { timeZone: "UTC" });
151
- return {
152
- text: (g().onDayAtTime || "on {day} at {time}").replace("{day}", F).replace("{time}", oe),
153
- preposition: ""
154
- };
155
- }
156
- const Z = new Intl.DateTimeFormat(Q, { month: "short", day: "numeric" }).format(l);
157
- return {
158
- text: (g().onDate || "on {date}").replace("{date}", Z),
159
- preposition: ""
160
- };
161
- }
162
- function Te(o) {
163
- const { text: l } = ke(o);
164
- return l;
165
- }
166
- function ne(o) {
167
- return ke(o);
168
- }
169
- const W = e.derived(() => (() => {
170
- if (!s()) return null;
171
- switch (s()) {
172
- case "scheduled":
173
- return {
174
- showAsMessage: !0,
175
- // Display as inline message instead of badge
176
- message: (g().salesStart || "Sales start {salesStart}").replace("{salesStart}", Te(y()))
177
- };
178
- case "on_sale":
179
- return null;
180
- case // Don't show badge for normal on-sale status
181
- "sales_ended":
182
- return {
183
- badge: g().statusSalesEnded || "Sales ended",
184
- badgeClass: "badge-ended",
185
- label: "Ended",
186
- date: N(a())
187
- };
188
- default:
189
- return null;
190
- }
191
- })());
192
- var X = la();
193
- let le;
194
- var b = e.child(X), ge = e.child(b), fe = e.child(ge), Se = e.child(fe), we = e.child(Se, !0);
195
- e.reset(Se), e.reset(fe);
196
- var je = e.sibling(fe, 2);
197
- {
198
- var Ue = (o) => {
199
- var l = Wt();
200
- let f;
201
- var H = e.child(l);
202
- {
203
- let oe = e.derived(() => _() === 0 || ve()), Pe = e.derived(() => (g().decreaseQuantity || "Decrease quantity for {title}").replace("{title}", t.title));
204
- xe(H, {
205
- variant: "icon",
206
- onclick: () => t.ondecrement?.(),
207
- get disabled() {
208
- return e.get(oe);
209
- },
210
- get "aria-label"() {
211
- return e.get(Pe);
212
- },
213
- class: "qty-btn",
214
- children: (Le, He) => {
215
- xt(Le, { size: 20, "aria-hidden": "true" });
216
- },
217
- $$slots: { default: !0 }
218
- });
219
- }
220
- var j = e.sibling(H, 2), L = e.child(j), Q = e.child(L, !0);
221
- e.reset(L);
222
- var Z = e.sibling(L);
223
- e.reset(j);
224
- var F = e.sibling(j, 2);
225
- {
226
- let oe = e.derived(() => M() !== null && _() >= M() || C() !== null && _() >= C() || !e.get(ue) || ve()), Pe = e.derived(() => (g().increaseQuantity || "Increase quantity for {title}").replace("{title}", t.title));
227
- xe(F, {
228
- variant: "icon",
229
- onclick: () => t.onincrement?.(),
230
- get disabled() {
231
- return e.get(oe);
232
- },
233
- get "aria-label"() {
234
- return e.get(Pe);
235
- },
236
- class: "qty-btn",
237
- children: (Le, He) => {
238
- kt(Le, { size: 20, "aria-hidden": "true" });
239
- },
240
- $$slots: { default: !0 }
241
- });
242
- }
243
- e.reset(l), e.template_effect(
244
- (oe) => {
245
- f = e.set_class(l, 1, "flex items-center quantity-selector svelte-12zmutv", null, f, { active: _() > 0 }), e.set_attribute(l, "aria-label", oe), e.set_text(Q, g().quantity || "Quantity:"), e.set_text(Z, ` ${_() ?? ""}`);
246
- },
247
- [
248
- () => (g().quantitySelector || "Quantity selector for {title}").replace("{title}", t.title)
249
- ]
250
- ), e.append(o, l);
251
- }, Ge = (o) => {
252
- var l = Zt(), f = e.child(l, !0);
253
- e.reset(l), e.template_effect(() => {
254
- e.set_attribute(l, "aria-label", g().statusSoldOut || "Sold out"), e.set_text(f, g().statusSoldOut || "Sold out");
255
- }), e.append(o, l);
256
- }, Ve = (o) => {
257
- var l = Jt(), f = e.child(l, !0);
258
- e.reset(l), e.template_effect(() => e.set_text(f, e.get(W).message)), e.append(o, l);
259
- };
260
- e.if(je, (o) => {
261
- !k() && s() !== "scheduled" && s() !== "sales_ended" ? o(Ue) : k() ? o(Ge, 1) : s() === "scheduled" && e.get(W)?.message && o(Ve, 2);
262
- });
263
- }
264
- e.reset(ge), e.reset(b);
265
- var Ce = e.sibling(b, 4), Ee = e.child(Ce), Be = e.child(Ee);
266
- {
267
- var Ie = (o) => {
268
- var l = Xt(), f = e.child(l);
269
- {
270
- let L = e.derived(() => g().donationAmountLabel || "Donation amount in dollars"), Q = e.derived(() => k() || s() === "scheduled" || s() === "sales_ended"), Z = e.derived(() => e.get(G) ? "donation-error-" + t.title?.replace(/\s+/g, "-").toLowerCase() : void 0);
271
- mt(f, {
272
- get label() {
273
- return e.get(L);
274
- },
275
- size: "lg",
276
- type: "text",
277
- inputmode: "decimal",
278
- placeholder: "0.00",
279
- get value() {
280
- return Y();
281
- },
282
- oninputchange: (F) => t.ondonationchange?.(F),
283
- get disabled() {
284
- return e.get(Q);
285
- },
286
- get errorText() {
287
- return e.get(G);
288
- },
289
- get "aria-describedby"() {
290
- return e.get(Z);
291
- }
292
- });
293
- }
294
- var H = e.sibling(f, 2);
295
- {
296
- var j = (L) => {
297
- var Q = Yt(), Z = e.child(Q, !0);
298
- e.reset(Q), e.template_effect(
299
- (F) => {
300
- e.set_attribute(Q, "id", `donation-error-${F ?? ""}`), e.set_text(Z, e.get(G));
301
- },
302
- [() => t.title?.replace(/\s+/g, "-").toLowerCase()]
303
- ), e.append(L, Q);
304
- };
305
- e.if(H, (L) => {
306
- e.get(G) && L(j);
307
- });
308
- }
309
- e.reset(l), e.append(o, l);
310
- }, Ae = (o) => {
311
- var l = Kt(), f = e.first_child(l), H = e.child(f, !0);
312
- e.reset(f);
313
- var j = e.sibling(f, 2), L = e.child(j), Q = e.child(L, !0);
314
- e.reset(L);
315
- var Z = e.sibling(L, 1, !0);
316
- e.reset(j);
317
- var F = e.sibling(j, 2), oe = e.child(F, !0);
318
- e.reset(F);
319
- var Pe = e.sibling(F, 2), Le = e.child(Pe, !0);
320
- e.reset(Pe), e.template_effect(
321
- (He, Ke) => {
322
- e.set_attribute(f, "aria-label", `Discounted price ${e.get(c) ?? ""}`), e.set_text(H, e.get(c)), e.set_attribute(j, "aria-label", `Original price ${e.get(p) ?? ""}`), e.set_text(Q, g().originalPrice || "Original price:"), e.set_text(Z, e.get(p)), e.set_text(oe, He), e.set_text(Le, Ke);
323
- },
324
- [
325
- () => (g().inclFee || "incl. {fee} fee").replace("{fee}", e.get(x)),
326
- () => (g().includingFee || "including {fee} service fee").replace("{fee}", e.get(x))
327
- ]
328
- ), e.append(o, l);
329
- }, Ne = (o) => {
330
- var l = $t(), f = e.child(l, !0);
331
- e.reset(l), e.template_effect(() => e.set_text(f, g().free || "Free")), e.append(o, l);
332
- }, Me = (o) => {
333
- var l = ea(), f = e.first_child(l), H = e.child(f, !0);
334
- e.reset(f);
335
- var j = e.sibling(f, 2), L = e.child(j, !0);
336
- e.reset(j);
337
- var Q = e.sibling(j, 2), Z = e.child(Q, !0);
338
- e.reset(Q), e.template_effect(
339
- (F, oe) => {
340
- e.set_attribute(f, "aria-label", `Price ${e.get(p) ?? ""}`), e.set_text(H, e.get(p)), e.set_text(L, F), e.set_text(Z, oe);
341
- },
342
- [
343
- () => (g().inclFee || "incl. {fee} fee").replace("{fee}", e.get(x)),
344
- () => (g().includingFee || "including {fee} service fee").replace("{fee}", e.get(x))
345
- ]
346
- ), e.append(o, l);
347
- };
348
- e.if(Be, (o) => {
349
- e.get(V) ? o(Ie) : e.get(c) !== null ? o(Ae, 1) : e.get($) === 0 ? o(Ne, 2) : o(Me, -1);
350
- });
351
- }
352
- e.reset(Ee);
353
- var ze = e.sibling(Ee, 2);
354
- {
355
- var Fe = (o) => {
356
- var l = ra(), f = e.child(l);
357
- {
358
- var H = (Q) => {
359
- var Z = ta(), F = e.child(Z, !0);
360
- e.reset(Z), e.template_effect(() => e.set_text(F, g().discountApplied || "Discount applied")), e.append(Q, Z);
361
- };
362
- e.if(f, (Q) => {
363
- B() && Q(H);
364
- });
365
- }
366
- var j = e.sibling(f, 2);
367
- {
368
- var L = (Q) => {
369
- var Z = aa(), F = e.child(Z, !0);
370
- e.reset(Z), e.template_effect(() => e.set_text(F, g().unlocked || "Unlocked")), e.append(Q, Z);
371
- };
372
- e.if(j, (Q) => {
373
- ie() && Q(L);
374
- });
375
- }
376
- e.reset(l), e.append(o, l);
377
- };
378
- e.if(ze, (o) => {
379
- (B() || ie()) && o(Fe);
380
- });
381
- }
382
- var Re = e.sibling(ze, 2);
383
- {
384
- var Je = (o) => {
385
- var l = ia(), f = e.child(l, !0);
386
- e.reset(l), e.template_effect(
387
- (H) => {
388
- e.set_attribute(l, "id", `ticket-desc-${H ?? ""}`), e.set_text(f, t.description);
389
- },
390
- [
391
- () => t.title?.replace(/\s+/g, "-").toLowerCase() || "ticket"
392
- ]
393
- ), e.append(o, l);
394
- };
395
- e.if(Re, (o) => {
396
- t.description && o(Je);
397
- });
398
- }
399
- var We = e.sibling(Re, 2), ye = e.child(We);
400
- {
401
- var ae = (o) => {
402
- var l = sa(), f = e.child(l, !0);
403
- e.reset(l), e.template_effect(() => {
404
- e.set_class(l, 1, `badge ${e.get(W).badgeClass ?? ""}`, "svelte-12zmutv"), e.set_attribute(l, "aria-label", `${(g().statusLabel || "Status:") ?? ""} ${e.get(W).badge ?? ""}`), e.set_text(f, e.get(W).badge);
405
- }), e.append(o, l);
406
- };
407
- e.if(ye, (o) => {
408
- e.get(W) && e.get(W).badge && o(ae);
409
- });
410
- }
411
- var Ye = e.sibling(ye, 2);
412
- {
413
- var Xe = (o) => {
414
- {
415
- let l = e.derived(() => C() ?? 0);
416
- Nt(o, {
417
- get remaining() {
418
- return e.get(l);
419
- },
420
- get total() {
421
- return e.get(I);
422
- },
423
- context: "ticket",
424
- get labels() {
425
- return g();
426
- }
427
- });
428
- }
429
- };
430
- e.if(Ye, (o) => {
431
- e.get(T) && o(Xe);
432
- });
433
- }
434
- e.reset(We);
435
- var $e = e.sibling(We, 2);
436
- {
437
- var et = (o) => {
438
- const l = e.derived(() => ne(a()));
439
- var f = na(), H = e.child(f);
440
- e.reset(f), e.template_effect(() => e.set_text(H, `${(g().salesEndPrefix || "Sales end") ?? ""}
441
- ${e.get(l).text ?? ""}`)), e.append(o, f);
442
- };
443
- e.if($e, (o) => {
444
- a() && s() !== "sales_ended" && s() !== "scheduled" && o(et);
445
- });
446
- }
447
- e.reset(Ce), e.reset(X), e.template_effect(
448
- (o, l, f) => {
449
- le = e.set_class(X, 1, `ticket-block rounded-lg border transition-all ${_() > 0 ? "shadow-sm" : ""}`, "svelte-12zmutv", le, {
450
- selected: _() > 0,
451
- "disabled-ticket": k() || s() === "scheduled" || s() === "sales_ended"
452
- }), e.set_attribute(X, "aria-label", `${o ?? ""}${(k() ? g().ticketSoldOutSuffix || ", sold out" : "") ?? ""}${(s() === "scheduled" ? g().ticketSalesNotStartedSuffix || ", sales not yet started" : "") ?? ""}${(s() === "sales_ended" ? g().ticketSalesEndedSuffix || ", sales ended" : "") ?? ""}`), e.set_attribute(Se, "id", `ticket-title-${l ?? ""}`), e.set_text(we, t.title), e.set_attribute(Ee, "id", `ticket-price-${f ?? ""}`);
453
- },
454
- [
455
- () => (g().ticketAriaLabel || "{title} ticket").replace("{title}", t.title),
456
- () => t.title?.replace(/\s+/g, "-").toLowerCase() || "ticket",
457
- () => t.title?.replace(/\s+/g, "-").toLowerCase() || "ticket"
458
- ]
459
- ), e.append(J, X), e.pop();
460
- }
461
- var da = e.from_html('<div class="rounded-lg overflow-hidden animate-pulse bg-surface-primary border-default" role="status" aria-busy="true"><span class="sr-only svelte-1hpsukj">Loading ticket...</span> <div class="px-3 py-2.5 rounded-t-lg border-t border-l border-r border-border" aria-hidden="true"><div class="skeleton h-4 w-2/3 mb-2"></div> <div class="skeleton h-3 w-1/2"></div></div> <div class="flex items-center gap-2" aria-hidden="true"><div class="border w-6 rounded-full h-6 -ml-3 -mt-0.5 bg-card border-border"></div> <hr class="skeleton-divider w-full my-3 svelte-1hpsukj"/> <div class="border w-6 rounded-full h-6 -mr-3 -mt-0.5 bg-card border-border"></div></div> <div class="flex justify-between items-center px-3 py-2.5 rounded-b-lg -mt-0.5 border-b border-l border-r border-border" aria-hidden="true"><div class="space-y-1"><div class="h-4 rounded w-16 bg-bg-tertiary"></div> <div class="h-3 rounded w-20 bg-muted"></div></div> <div class="flex items-center gap-2"><div class="w-10 h-10 rounded-md bg-bg-tertiary"></div> <div class="w-10 h-10 rounded-md bg-muted"></div> <div class="w-10 h-10 rounded-md bg-bg-tertiary"></div></div></div></div>');
462
- function ca(J, t) {
463
- e.push(t, !0);
464
- let E = e.prop(t, "labels", 19, () => ({}));
465
- var _ = da();
466
- e.template_effect(() => e.set_attribute(_, "aria-label", E().loadingTicketInfo || "Loading ticket information")), e.append(J, _), e.pop();
467
- }
468
- var ua = e.from_html('<div class="empty-state flex flex-col items-center justify-center py-12 px-6 text-center" role="status"><div class="empty-state-icon text-muted-foreground mb-4" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"></path><path d="M13 5v2"></path><path d="M13 17v2"></path><path d="M13 11v2"></path></svg></div> <h3 class="text-lg font-semibold text-text-primary mb-2"> </h3> <p class="text-sm text-text-secondary max-w-72"> </p></div>'), va = e.from_html('<div class="section-header bg-bg-secondary px-5 py-3"><h2 class="text-text-primary text-md font-semibold"> </h2></div>'), ga = e.from_html('<div role="group"><!> <div role="list"><!></div></div>'), fa = e.from_html("<section></section>");
469
- function pa(J, t) {
470
- e.push(t, !0);
471
- let E = e.prop(t, "venueFeesReady", 3, !1), _ = e.prop(t, "tickets", 19, () => []), k = e.prop(t, "quantities", 19, () => ({})), s = e.prop(t, "donationAmounts", 19, () => ({})), y = e.prop(t, "revealHiddenTickets", 3, !1), a = e.prop(t, "revealTicketIds", 19, () => []), C = e.prop(
472
- t,
473
- "currentPromoRule",
474
- 3,
475
- null
476
- // Current applied promo code rule
477
- ), R = e.prop(
478
- t,
479
- "syncing",
480
- 3,
481
- !1
482
- // True while a cart-sync network call is in flight
483
- ), M = e.prop(t, "labels", 19, () => ({}));
484
- function se(h) {
485
- const p = /* @__PURE__ */ new Date(), x = h.salesBegin || h.salesStart || h.saleBegin || h.saleStart || h.onSaleStart, S = h.salesEnd || h.saleEnd || h.onSaleEnd;
486
- return x && new Date(x) > p ? "scheduled" : S && new Date(S) < p ? "sales_ended" : "on_sale";
487
- }
488
- function ie(h) {
489
- return h.salesBegin || h.salesStart || h.saleBegin || h.saleStart || h.onSaleStart || null;
490
- }
491
- const B = e.derived(() => _().filter((h) => h.visibility === 0 || y() ? !0 : a()?.includes(h.ID)));
492
- function ce(h) {
493
- const p = [], x = [];
494
- for (const S of h) {
495
- const v = se(S), c = S.minQuantity ?? 1, I = S.remainingCapacity, m = S.soldOut || I != null && c > I;
496
- v === "on_sale" && !m ? p.push(S) : x.push(S);
497
- }
498
- return [...p, ...x];
499
- }
500
- function Y(h) {
501
- const p = {};
502
- for (const x of h) {
503
- const S = x.TicketSection?.name || M().other || "Other";
504
- p[S] || (p[S] = []), p[S].push(x);
505
- }
506
- for (const x of Object.keys(p))
507
- p[x] = ce(p[x]);
508
- return p;
509
- }
510
- const ve = e.derived(() => Y(e.get(B))), g = e.derived(() => M().other || "Other"), V = e.derived(() => Object.keys(e.get(ve)).filter((h) => h !== e.get(g)).length > 0);
511
- var w = e.comment(), G = e.first_child(w);
512
- {
513
- var ue = (h) => {
514
- var p = ua(), x = e.sibling(e.child(p), 2), S = e.child(x, !0);
515
- e.reset(x);
516
- var v = e.sibling(x, 2), c = e.child(v, !0);
517
- e.reset(v), e.reset(p), e.template_effect(() => {
518
- e.set_attribute(p, "aria-label", M().noTicketsAvailable || "No tickets available"), e.set_text(S, M().noTicketsAvailable || "No tickets available"), e.set_text(c, M().noTicketsAvailableDescription || "There are currently no tickets available for this event.");
519
- }), e.append(h, p);
520
- }, $ = (h) => {
521
- var p = fa();
522
- e.each(p, 21, () => Object.entries(e.get(ve)), e.index, (x, S) => {
523
- var v = e.derived(() => e.to_array(e.get(S), 2));
524
- let c = () => e.get(v)[0], I = () => e.get(v)[1];
525
- var m = ga(), T = e.child(m);
526
- {
527
- var N = (ne) => {
528
- var W = va(), X = e.child(W), le = e.child(X, !0);
529
- e.reset(X), e.reset(W), e.template_effect(
530
- (b) => {
531
- e.set_attribute(X, "id", `section-${b ?? ""}`), e.set_text(le, c());
532
- },
533
- [() => c().replace(/\s+/g, "-").toLowerCase()]
534
- ), e.append(ne, W);
535
- };
536
- e.if(T, (ne) => {
537
- e.get(V) && c() !== e.get(g) && ne(N);
538
- });
539
- }
540
- var te = e.sibling(T, 2), _e = e.child(te);
541
- {
542
- var ke = (ne) => {
543
- var W = e.comment(), X = e.first_child(W);
544
- e.each(X, 17, I, e.index, (le, b) => {
545
- const ge = e.derived(() => e.get(b).visibility >= 2 && y() || a().includes(e.get(b).ID)), fe = e.derived(() => C()?.discountTicketIds || []), Se = e.derived(() => e.get(fe).length === 0 || e.get(fe).includes(e.get(b).ID)), we = e.derived(() => C()?.provideDiscount && e.get(Se) && (C()?.discountType === "%" || C()?.discountType === "$")), je = e.derived(() => (() => {
546
- if (!e.get(we)) return null;
547
- const Ie = parseFloat(e.get(b).price) || 0, Ae = parseFloat(C()?.amount || "0") || 0;
548
- return C().discountType === "%" ? (Ie * (1 - Ae / 100)).toFixed(2) : C().discountType === "$" ? Math.max(0, Ie - Ae).toFixed(2) : null;
549
- })()), Ue = e.derived(() => se(e.get(b))), Ge = e.derived(() => ie(e.get(b))), Ve = e.derived(() => e.get(b).minQuantity ?? 1), Ce = e.derived(() => e.get(b).remainingCapacity), Ee = e.derived(() => e.get(b).soldOut || e.get(Ce) !== null && e.get(Ce) !== void 0 && e.get(Ve) > e.get(Ce)), Be = e.derived(() => e.get(b).type ?? 0);
550
- e.derived(() => e.get(Be) === 2);
551
- {
552
- let Ie = e.derived(() => k()[e.get(b).ID] ?? 0), Ae = e.derived(() => e.get(b).totalCapacity ?? e.get(b).quantity ?? e.get(b).remainingCapacity), Ne = e.derived(() => e.get(b).minQuantity ?? 1), Me = e.derived(() => e.get(b).maxQuantity ?? null), ze = e.derived(() => s()[e.get(b).ID] ?? "");
553
- oa(le, {
554
- get labels() {
555
- return M();
556
- },
557
- get title() {
558
- return e.get(b).name;
559
- },
560
- get description() {
561
- return e.get(b).description;
562
- },
563
- get price() {
564
- return e.get(b).price;
565
- },
566
- get discountedPrice() {
567
- return e.get(je);
568
- },
569
- get quantity() {
570
- return e.get(Ie);
571
- },
572
- get soldOut() {
573
- return e.get(Ee);
574
- },
575
- get status() {
576
- return e.get(Ue);
577
- },
578
- get salesBegin() {
579
- return e.get(Ge);
580
- },
581
- get salesEnd() {
582
- return e.get(b).salesEnd;
583
- },
584
- get remainingCapacity() {
585
- return e.get(b).remainingCapacity;
586
- },
587
- get totalCapacity() {
588
- return e.get(Ae);
589
- },
590
- get minQuantity() {
591
- return e.get(Ne);
592
- },
593
- get maxQuantity() {
594
- return e.get(Me);
595
- },
596
- get isRevealed() {
597
- return e.get(ge);
598
- },
599
- get isDiscounted() {
600
- return e.get(we);
601
- },
602
- get ticketType() {
603
- return e.get(Be);
604
- },
605
- get donationAmount() {
606
- return e.get(ze);
607
- },
608
- onincrement: () => t.handleQuantityChange(e.get(b).ID, 1),
609
- ondecrement: () => t.handleQuantityChange(e.get(b).ID, -1),
610
- ondonationchange: (Fe) => t.handleDonationChange?.(e.get(b).ID, Fe),
611
- get syncing() {
612
- return R();
613
- }
614
- });
615
- }
616
- }), e.append(ne, W);
617
- }, Te = (ne) => {
618
- var W = e.comment(), X = e.first_child(W);
619
- e.each(X, 16, () => Array(2), e.index, (le, b) => {
620
- ca(le, {});
621
- }), e.append(ne, W);
622
- };
623
- e.if(_e, (ne) => {
624
- E() ? ne(ke) : ne(Te, -1);
625
- });
626
- }
627
- e.reset(te), e.reset(m), e.template_effect(
628
- (ne, W) => {
629
- e.set_class(m, 1, e.clsx(e.get(V) && c() !== e.get(g) ? "ticket-section-group border border-border rounded-lg overflow-hidden" : "")), e.set_attribute(m, "aria-labelledby", ne), e.set_class(te, 1, `space-y-4 ${e.get(V) && c() !== e.get(g) ? "p-4" : ""}`), e.set_attribute(te, "aria-label", W);
630
- },
631
- [
632
- () => e.get(V) && c() !== e.get(g) ? `section-${c().replace(/\s+/g, "-").toLowerCase()}` : void 0,
633
- () => (M().ticketsInSection || "Tickets in {section}").replace("{section}", c())
634
- ]
635
- ), e.append(x, m);
636
- }), e.reset(p), e.template_effect(() => e.set_attribute(p, "aria-label", M().availableTickets || "Available tickets")), e.append(h, p);
637
- };
638
- e.if(G, (h) => {
639
- E() && e.get(B).length === 0 ? h(ue) : h($, -1);
640
- });
641
- }
642
- e.append(J, w), e.pop();
643
- }
644
- const ma = ht("PromocodeInput");
645
- var ha = e.from_html('<p id="promo-hint" class="promo-message success mt-2 body-sm text-accent-success" role="status" aria-live="polite"> </p>'), _a = e.from_html('<p id="promo-error" class="sr-only svelte-ztoygy" role="alert"> </p>'), ba = e.from_html('<div class="promo-section p-4 md:p-5" role="group" aria-labelledby="promo-label"><span id="promo-label" class="sr-only svelte-ztoygy"> </span> <div class="promo-input-wrapper flex gap-2 items-start"><div class="flex-1"><!></div> <!></div> <!> <!></div>');
646
- function ya(J, t) {
647
- e.push(t, !0);
648
- let E = e.prop(t, "eventID", 3, ""), _ = e.prop(t, "labels", 19, () => ({})), k = e.state(""), s = e.state(!1), y = e.state(""), a = e.state(""), C = e.state(!1), R = e.state(!1);
649
- const M = async () => {
650
- const v = e.get(k).trim().toUpperCase();
651
- if (e.set(y, ""), e.set(a, ""), e.set(C, !1), !v) {
652
- e.set(y, _().pleaseEnterPromoCode || "Please enter a promo code.", !0), e.set(s, !0);
653
- return;
654
- }
655
- e.set(R, !0);
656
- try {
657
- const c = await Tt(E(), v);
658
- if (c.valid) {
659
- e.set(C, !0);
660
- let I = 0;
661
- const m = [];
662
- if (c.revealHiddenTickets && m.push(_().hiddenTicketsVisible || "Hidden tickets are now visible."), c.provideDiscount) {
663
- const N = parseFloat(String(c.amount || "0")) || 0;
664
- I = N, c.discountType === "fixed" ? m.push((_().dollarDiscountAvailable || "A {amount} discount is available.").replace("{amount}", qe(
665
- N
666
- /* FIXME(canonical-cleanup:toFixed): heuristic guess — verify this is USD (not cents); when migrating to TS, add `as USD` brand cast at the API-response-transform layer. */
667
- ))) : c.discountType === "percentage" && m.push((_().percentDiscountAvailable || "A {amount}% discount is available.").replace("{amount}", String(N)));
668
- }
669
- e.set(
670
- a,
671
- m.length > 0 ? `${(_().promoApplied || "{code} applied.").replace("{code}", v)} ${m.join(" ")}` : (_().promoApplied || "{code} applied.").replace("{code}", v),
672
- !0
673
- );
674
- const T = { expires: 1, secure: !0, sameSite: "none", path: "/" };
675
- Qe(`checkout-promocode-${E()}`, v, T), Qe("checkout-promo-discount", I.toString(), T), Qe(`checkout-promo-reveal-${E()}`, c.revealHiddenTickets ? "1" : "0", T), Qe(`checkout-promo-reveal-ids-${E()}`, JSON.stringify(c.revealTicketIds || []), T), Qe(`checkout-promo-discount-type-${E()}`, c.discountType || "", T), t.onpromoChange?.({
676
- code: v,
677
- error: "",
678
- hint: e.get(a),
679
- discount: I,
680
- provideDiscount: c.provideDiscount || !1,
681
- discountType: c.discountType || "",
682
- discountTicketIds: (
683
- /** @type {any} */
684
- c.discountTicketIds || []
685
- ),
686
- // Which tickets the discount applies to
687
- revealHiddenTickets: c.revealHiddenTickets || !1,
688
- revealTicketIds: c.revealTicketIds || [],
689
- isApplied: !0
690
- });
691
- } else
692
- e.set(y, _().invalidOrExpiredPromoCode || "Invalid or expired promo code.", !0), e.set(s, !0), t.onpromoChange?.({
693
- code: v,
694
- error: e.get(y),
695
- hint: "",
696
- discount: 0,
697
- provideDiscount: !1,
698
- discountType: "",
699
- discountTicketIds: [],
700
- revealHiddenTickets: !1,
701
- revealTicketIds: [],
702
- isApplied: !1
703
- });
704
- } catch (c) {
705
- ma.error("Error validating promo code:", c), e.set(y, _().unableToValidatePromoCode || "Unable to validate promo code. Please try again.", !0), e.set(s, !0);
706
- } finally {
707
- e.set(R, !1);
708
- }
709
- }, se = () => {
710
- e.set(k, ""), e.set(y, ""), e.set(a, ""), e.set(C, !1), e.set(s, !1), De(`checkout-promocode-${E()}`), De("checkout-promo-discount"), De(`checkout-promo-reveal-${E()}`), De(`checkout-promo-reveal-ids-${E()}`), De(`checkout-promo-discount-type-${E()}`), t.onpromoChange?.({
711
- code: "",
712
- error: "",
713
- hint: "",
714
- discount: 0,
715
- provideDiscount: !1,
716
- discountType: "",
717
- discountTicketIds: [],
718
- revealHiddenTickets: !1,
719
- revealTicketIds: [],
720
- isApplied: !1
721
- });
722
- }, ie = (v) => {
723
- e.set(k, v.target.value, !0), e.get(y) && e.set(y, "");
724
- }, B = (v) => {
725
- v.key === "Enter" && (v.preventDefault(), M());
726
- };
727
- pt(() => {
728
- const v = Oe(`checkout-promocode-${E()}`);
729
- v && (e.set(k, v, !0), M());
730
- });
731
- var ce = ba(), Y = e.child(ce), ve = e.child(Y, !0);
732
- e.reset(Y);
733
- var g = e.sibling(Y, 2), V = e.child(g), w = e.child(V);
734
- {
735
- let v = e.derived(() => _().promoCode || "Promo code"), c = e.derived(() => e.get(C) || e.get(R)), I = e.derived(() => e.get(s) ? e.get(y) : ""), m = e.derived(() => e.get(a) ? "promo-hint" : e.get(y) ? "promo-error" : void 0);
736
- mt(w, {
737
- get label() {
738
- return e.get(v);
739
- },
740
- size: "lg",
741
- type: "text",
742
- oninputchange: ie,
743
- onkeydown: B,
744
- onblur: () => e.set(s, !0),
745
- get disabled() {
746
- return e.get(c);
747
- },
748
- get errorText() {
749
- return e.get(I);
750
- },
751
- get "aria-describedby"() {
752
- return e.get(m);
753
- },
754
- get value() {
755
- return e.get(k);
756
- },
757
- set value(T) {
758
- e.set(k, T, !0);
759
- }
760
- });
761
- }
762
- e.reset(V);
763
- var G = e.sibling(V, 2);
764
- {
765
- var ue = (v) => {
766
- {
767
- let c = e.derived(() => _().removePromoCode || "Remove promo code"), I = e.derived(() => e.get(k));
768
- xe(v, {
769
- variant: "outline",
770
- onclick: se,
771
- class: "h-10 self-start mt-5",
772
- get "aria-label"() {
773
- return `${e.get(c) ?? ""} ${e.get(I) ?? ""}`;
774
- },
775
- children: (m, T) => {
776
- e.next();
777
- var N = e.text();
778
- e.template_effect(() => e.set_text(N, _().remove || "Remove")), e.append(m, N);
779
- },
780
- $$slots: { default: !0 }
781
- });
782
- }
783
- }, $ = (v) => {
784
- {
785
- let c = e.derived(() => e.get(R) ? _().checkingPromoCode || "Checking promo code" : _().applyPromoCode || "Apply promo code");
786
- xe(v, {
787
- onclick: M,
788
- get disabled() {
789
- return e.get(R);
790
- },
791
- class: "h-10 self-start mt-5",
792
- get "aria-label"() {
793
- return e.get(c);
794
- },
795
- children: (I, m) => {
796
- e.next();
797
- var T = e.text();
798
- e.template_effect(() => e.set_text(T, e.get(R) ? _().checking || "Checking..." : _().apply || "Apply")), e.append(I, T);
799
- },
800
- $$slots: { default: !0 }
801
- });
802
- }
803
- };
804
- e.if(G, (v) => {
805
- e.get(C) ? v(ue) : v($, -1);
806
- });
807
- }
808
- e.reset(g);
809
- var h = e.sibling(g, 2);
810
- {
811
- var p = (v) => {
812
- var c = ha(), I = e.child(c, !0);
813
- e.reset(c), e.template_effect(() => e.set_text(I, e.get(a))), e.append(v, c);
814
- };
815
- e.if(h, (v) => {
816
- e.get(a) && v(p);
817
- });
818
- }
819
- var x = e.sibling(h, 2);
820
- {
821
- var S = (v) => {
822
- var c = _a(), I = e.child(c, !0);
823
- e.reset(c), e.template_effect(() => e.set_text(I, e.get(y))), e.append(v, c);
824
- };
825
- e.if(x, (v) => {
826
- e.get(y) && e.get(s) && v(S);
827
- });
828
- }
829
- e.reset(ce), e.template_effect(() => e.set_text(ve, _().promoCodeEntry || "Promo code entry")), e.append(J, ce), e.pop();
830
- }
831
- var xa = e.from_html('<div class="w-14 h-14 shrink-0 rounded-md overflow-hidden bg-bg-secondary" aria-hidden="true"><!></div>'), ka = e.from_html("<p> </p>"), Ta = e.from_html('<div class="flex-row-2 shrink-0"><span class="price-md"> </span> <button type="button" class="sc-btn-icon btn-icon-ghost w-7 h-7"><!></button></div>'), wa = e.from_html('<header class="flex items-center gap-3 px-4 md:px-5 py-4 border-b border-border"><button type="button" class="p-2 -ml-2 rounded-full transition-colors shrink-0 text-text-secondary hover:bg-bg-secondary"><!></button> <!> <div class="flex-1 min-w-0"><h1 class="heading-lg break-words"> </h1> <div class="body-sm text-text-secondary"><p><time> </time></p> <p> </p> <!></div></div> <!></header>');
832
- function Ia(J, t) {
833
- e.push(t, !0);
834
- let E = e.prop(t, "variant", 3, "tickets"), _ = e.prop(t, "total", 3, 0), k = e.prop(t, "onCancel", 3, () => {
835
- }), s = e.prop(t, "onInfoClick", 3, () => {
836
- }), y = e.prop(t, "labels", 19, () => ({})), a = e.derived(() => t.event.timeZone || t.event.timezone || wt()), C = e.derived(() => t.event.displayEndTime === !0), R = e.derived(() => t.event.displayDoorsTime === !0), M = e.derived(() => E() === "checkout"), se = e.derived(() => _() > 0 ? `${qe(_())}` : (
837
- /* FIXME(canonical-cleanup:toFixed): heuristic guess — verify this is USD (not cents); when migrating to TS, add `as USD` brand cast at the API-response-transform layer. */
838
- y().free || "Free"
839
- ));
840
- var ie = wa(), B = e.child(ie), ce = e.child(B);
841
- It(ce, { size: 20, "aria-hidden": "true" }), e.reset(B);
842
- var Y = e.sibling(B, 2);
843
- {
844
- var ve = (m) => {
845
- var T = xa(), N = e.child(T);
846
- jt(N, {
847
- get src() {
848
- return t.event.image;
849
- },
850
- alt: "",
851
- class: "w-full h-full"
852
- }), e.reset(T), e.append(m, T);
853
- };
854
- e.if(Y, (m) => {
855
- t.event.image && m(ve);
856
- });
857
- }
858
- var g = e.sibling(Y, 2), V = e.child(g), w = e.child(V, !0);
859
- e.reset(V);
860
- var G = e.sibling(V, 2), ue = e.child(G), $ = e.child(ue), h = e.child($, !0);
861
- e.reset($), e.reset(ue);
862
- var p = e.sibling(ue, 2), x = e.child(p, !0);
863
- e.reset(p);
864
- var S = e.sibling(p, 2);
865
- {
866
- var v = (m) => {
867
- var T = ka(), N = e.child(T, !0);
868
- e.reset(T), e.template_effect((te) => e.set_text(N, te), [
869
- () => (y().doorsOpen || "Doors open {time}").replace("{time}", Et(t.event.doorsOpenTime, e.get(a)))
870
- ]), e.append(m, T);
871
- };
872
- e.if(S, (m) => {
873
- e.get(R) && t.event.doorsOpenTime && m(v);
874
- });
875
- }
876
- e.reset(G), e.reset(g);
877
- var c = e.sibling(g, 2);
878
- {
879
- var I = (m) => {
880
- var T = Ta(), N = e.child(T), te = e.child(N, !0);
881
- e.reset(N);
882
- var _e = e.sibling(N, 2), ke = e.child(_e);
883
- At(ke, { size: 20, "aria-hidden": "true" }), e.reset(_e), e.reset(T), e.template_effect(
884
- (Te) => {
885
- e.set_attribute(N, "aria-label", Te), e.set_text(te, e.get(se)), e.set_attribute(_e, "aria-label", y().viewOrderDetails || "View order details");
886
- },
887
- [
888
- () => (y().ariaOrderTotal || "Order total: {total}").replace("{total}", e.get(se))
889
- ]
890
- ), e.delegated("click", _e, function(...Te) {
891
- s()?.apply(this, Te);
892
- }), e.append(m, T);
893
- };
894
- e.if(c, (m) => {
895
- e.get(M) && m(I);
896
- });
897
- }
898
- e.reset(ie), e.template_effect(
899
- (m, T) => {
900
- e.set_attribute(B, "aria-label", e.get(M) ? y().goBackToTicketSelection || "Go back to ticket selection" : y().goBackToEventDetails || "Go back to event details"), e.set_text(w, t.event.name), e.set_attribute(G, "aria-label", y().ariaEventDateTime || "Event date and time"), e.set_attribute($, "datetime", t.event.startDateTime), e.set_text(h, m), e.set_text(x, T);
901
- },
902
- [
903
- () => Dt(t.event.startDateTime, e.get(a)),
904
- () => e.get(C) && t.event.endDateTime ? St(t.event.startDateTime, t.event.endDateTime, e.get(a)) : Ct(t.event.startDateTime, e.get(a))
905
- ]
906
- ), e.delegated("click", B, function(...m) {
907
- k()?.apply(this, m);
908
- }), e.append(J, ie), e.pop();
909
- }
910
- e.delegate(["click"]);
911
- const he = ht("CartView");
912
- var Da = e.from_html('<div class="flex items-center justify-center py-12" aria-live="polite"><p class="text-text-secondary"> </p></div>'), Sa = e.from_html('<div class="text-center py-8" role="alert"><p class="text-accent-danger mb-2"> </p> <button class="go-back-btn text-white mt-4 px-4 py-2 rounded-lg svelte-19g9ni4"> </button></div>'), Ca = e.from_html('<div class="text-center py-12" role="alert"><p class="text-xl font-semibold text-text-primary mb-2"> </p> <p class="text-text-secondary mb-6"> </p> <button class="go-back-btn text-white px-4 py-2 rounded-lg svelte-19g9ni4"> </button></div>'), Ea = e.from_html('<div class="text-center py-12" role="alert"><p class="text-xl font-semibold text-text-primary mb-2">This event has ended</p> <p class="text-text-secondary mb-6">Tickets are no longer available for this event.</p> <button class="go-back-btn px-4 py-2 rounded-lg svelte-19g9ni4" aria-label="Go back to event details">Go back</button></div>'), vt = e.from_html('<div class="px-4 md:px-5 pt-3"><!></div>'), Aa = e.from_html('<div class="hidden md:block w-80 h-[calc(100vh-40px)]"></div>'), Pa = e.from_html('<div class="w-full flex md:gap-5 flex-wrap"><div class="flex-1 pb-16 md:pb-0"><div class="bg-card border-border rounded-lg md:shadow md:border py-3"><!> <!> <!> <div class="space-y-4 md:px-5"><!></div></div></div> <!> <div><!></div></div>'), Oa = e.from_html('<h3 id="error-modal-title" class="heading-lg"><!></h3>'), gt = e.from_html('<p class="body-sm"> </p> <p class="text-text-secondary mt-2"> </p>', 1), Ma = e.from_html('<div id="error-modal-description"><!></div>'), Fa = e.from_html("<!> <!>", 1), La = e.from_html('<div role="group" aria-label="Error modal actions"><!></div>'), Qa = e.from_html('<h3 id="expired-modal-title" class="heading-lg"> </h3>'), qa = e.from_html('<p id="expired-modal-description" class="body-sm text-text-secondary"> </p>'), Ba = e.from_html('<h3 id="availability-modal-title" class="heading-lg"> </h3>'), Na = e.from_html('<li class="text-text-secondary text-sm"><span class="font-medium"> </span> <!></li>'), ft = e.from_html('<p class="text-text-secondary mt-4"> </p>'), za = e.from_html('<div id="availability-modal-description"><p class="text-text-secondary mb-4"> </p> <ul class="space-y-2"></ul> <!></div>'), Ra = e.from_html('<div role="group" aria-label="Availability modal actions"><!> <!></div>'), Ha = e.from_html('<div class="px-5 md:px-10 py-12 bg-card"><!></div> <!> <!> <!>', 1);
913
- function Xa(J, t) {
914
- e.push(t, !0);
915
- let E = e.prop(t, "organizationId", 3, ""), _ = e.prop(t, "venueId", 3, ""), k = e.prop(t, "initialEventData", 3, null), s = e.prop(t, "labels", 19, () => ({})), y = e.state(!1), a = e.state(null), C = e.state(null), R = e.state(e.proxy([])), M = e.state(!1), se = e.state(!0), ie = e.state(null), B = e.state(!1), ce = e.state(!1), Y = e.state(!1), ve = e.state(0), g = e.state(void 0), V = e.state(void 0), w = e.state(e.proxy({})), G = e.state(""), ue = e.state(""), $ = e.state(0), h = e.state(!1), p = e.state(0), x = e.state(!1), S = null, v = null, c = e.state(!1), I = e.state(!1), m = e.state(
916
- "cart_failed"
917
- // 'cart_failed' | 'cart_success_network_error'
918
- ), T = e.state(!1), N = e.state(!1), te = e.state(e.proxy(
919
- []
920
- // Array of {ticketId, ticketName, requestedQty, availableQty}
921
- )), _e = e.state(0), ke = e.state(0), Te = e.derived(() => e.get(a)?.availableTickets?.filter(
922
- /** @param {any} t */
923
- (i) => i.visibility === 0
924
- )?.every(
925
- /** @param {any} t */
926
- (i) => i.price === 0
927
- )), ne = e.derived(() => e.get(Te) ? 0 : it(Object.entries(e.get(w)).reduce(
928
- (i, [r, n]) => {
929
- const u = e.get(a)?.availableTickets?.find((d) => d.id == r);
930
- return u ? i + it(n * u.price) : i;
931
- },
932
- 0
933
- ))), W = 0, X = e.state(0), le = e.state(0), b = e.state(!1), ge = null;
934
- e.derived(() => it(e.get(ne) + W + e.get(X)));
935
- let fe = e.state(!1), Se = !1, we = e.state(!1);
936
- async function je(i, r) {
937
- if (e.get(we) || e.get(fe))
938
- return;
939
- const n = {
940
- ...e.get(w),
941
- [i]: Math.max(0, (e.get(w)[i] ?? 0) + r)
942
- }, u = Object.values(n).reduce((d, D) => d + D, 0);
943
- if (e.set(w, n, !0), e.get(a) && ct({
944
- eventID: e.get(a).eventID,
945
- quantities: e.get(w),
946
- promocode: e.get(G),
947
- promoDiscountAmount: e.get($),
948
- tickets: e.get(a).availableTickets
949
- }), u > 0 && !e.get(x))
950
- await Ue();
951
- else if (e.get(x)) {
952
- const d = typeof document < "u" ? Oe("checkout-cartid") ?? null : null;
953
- if (!d) return;
954
- e.set(we, !0);
955
- try {
956
- await Bt(d, e.get(w)) || he.warn("Cart quantity sync failed; UI may not match server");
957
- } finally {
958
- e.set(we, !1);
959
- }
960
- }
961
- }
962
- async function Ue() {
963
- if (!(e.get(fe) || e.get(x))) {
964
- e.set(fe, !0);
965
- try {
966
- const i = await ut({
967
- eventID: e.get(a).eventID,
968
- quantities: e.get(w),
969
- promoCode: e.get(G) || void 0
970
- });
971
- i?.success && i.uuid && (Se = !0, Xe());
972
- } catch (i) {
973
- he.error("Error creating cart on ticket select:", i);
974
- } finally {
975
- e.set(fe, !1);
976
- }
977
- }
978
- }
979
- function Ge() {
980
- if (!e.get(a)?.availableTickets) return;
981
- const r = e.get(a).availableTickets.filter((n) => n.visibility === 0).map((n) => Number(n.price) || 0);
982
- if (r.length === 0) {
983
- e.set(_e, e.set(ke, 0), !0);
984
- return;
985
- }
986
- e.set(_e, qe(
987
- Math.min(...r)
988
- /* FIXME(canonical-cleanup:toFixed): heuristic guess — verify this is USD (not cents); when migrating to TS, add `as USD` brand cast at the API-response-transform layer. */
989
- ), !0), e.set(ke, qe(
990
- Math.max(...r)
991
- /* FIXME(canonical-cleanup:toFixed): heuristic guess — verify this is USD (not cents); when migrating to TS, add `as USD` brand cast at the API-response-transform layer. */
992
- ), !0);
993
- }
994
- async function Ve() {
995
- const i = [];
996
- for (const [r, n] of Object.entries(e.get(w))) {
997
- if (n <= 0) continue;
998
- const u = e.get(a)?.availableTickets?.find((d) => d.ID == r);
999
- !u || u.price === 0 || i.push({
1000
- amountCents: Math.round(u.price * 100) * n,
1001
- reference: `ticket-${r}`,
1002
- quantity: n
1003
- });
1004
- }
1005
- if (i.length === 0) {
1006
- e.set(le, 0), e.set(X, 0), e.set(b, !1);
1007
- return;
1008
- }
1009
- ge && ge.abort(), ge = new AbortController(), e.set(b, !0);
1010
- try {
1011
- const r = await fetch("https://get-micdrop.com/api/v2/public/tax-preview", {
1012
- method: "POST",
1013
- headers: { "Content-Type": "application/json" },
1014
- signal: ge.signal,
1015
- body: JSON.stringify({ venueId: Number(e.get(a).venueID), lineItems: i })
1016
- });
1017
- if (!r.ok) {
1018
- r.status === 422 ? he.debug("Tax preview: venue has no tax address, falling back to 0") : he.error("Tax preview failed:", r.status), e.set(le, 0), e.set(X, 0), e.set(b, !1);
1019
- return;
1020
- }
1021
- const n = await r.json();
1022
- e.set(le, (n.taxTotal ?? 0) / 100), e.set(X, e.get(le), !0);
1023
- } catch (r) {
1024
- if (r.name === "AbortError") return;
1025
- he.error("Tax preview error:", r), e.set(le, 0), e.set(X, 0);
1026
- } finally {
1027
- ge?.signal?.aborted || e.set(b, !1);
1028
- }
1029
- }
1030
- function Ce() {
1031
- if (!e.get(a)) return;
1032
- e.set(G, Oe(`checkout-promocode-${e.get(a).eventID}`) || "", !0);
1033
- const i = parseFloat(Oe("checkout-promo-discount") || "0");
1034
- e.set(ue, e.get(G) ? `${e.get(G)} applied.` : "", !0), e.set($, i, !0);
1035
- }
1036
- async function Ee() {
1037
- try {
1038
- const i = await st(t.eventId), r = [];
1039
- for (const [n, u] of Object.entries(e.get(w))) {
1040
- if (u <= 0) continue;
1041
- const d = (
1042
- /** @type {any} */
1043
- i.find((U) => String(U.id) === String(n))
1044
- );
1045
- if (!d) continue;
1046
- const D = d.remainingCapacity ?? d.quantity ?? 1 / 0;
1047
- if (D < u) {
1048
- const U = e.get(a)?.availableTickets?.find((ee) => String(ee.id) === String(n));
1049
- r.push({
1050
- ticketId: n,
1051
- ticketName: U?.name || d?.name || "Ticket",
1052
- requestedQty: u,
1053
- availableQty: Math.max(0, D)
1054
- });
1055
- }
1056
- }
1057
- return r;
1058
- } catch (i) {
1059
- return he.error("Error checking ticket availability:", i), [];
1060
- }
1061
- }
1062
- async function Be() {
1063
- if (!e.get(a)) return;
1064
- e.set(M, !0), e.set(T, !1);
1065
- const i = await Ee();
1066
- if (i.length > 0) {
1067
- e.set(M, !1), e.set(te, i, !0), e.set(N, !0);
1068
- return;
1069
- }
1070
- await Ie();
1071
- }
1072
- async function Ie() {
1073
- if (e.set(M, !0), ct({
1074
- eventID: e.get(a).eventID,
1075
- quantities: e.get(w),
1076
- promocode: e.get(G),
1077
- promoDiscountAmount: e.get($),
1078
- tickets: e.get(a).availableTickets
1079
- }), typeof document < "u" ? Oe("checkout-cartid") ?? null : null)
1080
- e.set(T, !0);
1081
- else
1082
- try {
1083
- if (!await ut({
1084
- eventID: e.get(a).eventID,
1085
- quantities: e.get(w),
1086
- promoCode: e.get(G) || void 0
1087
- })) {
1088
- e.set(M, !1), e.set(m, "cart_failed"), e.set(I, !0);
1089
- return;
1090
- }
1091
- e.set(T, !0);
1092
- } catch (r) {
1093
- he.error("Order initiation failed:", r), e.set(M, !1), e.set(m, "cart_failed"), e.set(I, !0);
1094
- return;
1095
- }
1096
- try {
1097
- if (t.onNavigateToCheckout) {
1098
- t.onNavigateToCheckout(t.eventId, e.get(a)), e.set(M, !1);
1099
- return;
1100
- }
1101
- const r = new URLSearchParams();
1102
- E() && r.set("orgId", E()), _() && r.set("venueId", _()), r.set("event_id", t.eventId), r.set("subroute", "checkout");
1103
- const n = `/?${r.toString()}`;
1104
- lt(n, { noScroll: !1 }), e.set(M, !1);
1105
- } catch (r) {
1106
- he.error("Navigation failed after cart creation:", r), e.set(M, !1), e.set(m, "cart_success_network_error"), e.set(I, !0);
1107
- }
1108
- }
1109
- function Ae() {
1110
- for (const r of e.get(te))
1111
- r.availableQty > 0 ? e.get(w)[r.ticketId] = r.availableQty : delete e.get(w)[r.ticketId];
1112
- e.set(w, { ...e.get(
1113
- w
1114
- // Trigger reactivity
1115
- ) }, !0), e.set(N, !1), e.set(te, [], !0), Object.values(e.get(w)).reduce((r, n) => r + n, 0) > 0 ? Ie() : ye();
1116
- }
1117
- function Ne() {
1118
- e.set(N, !1), e.set(te, [], !0), ye();
1119
- }
1120
- function Me() {
1121
- e.set(I, !1), e.get(m) === "cart_failed" && ye();
1122
- }
1123
- function ze() {
1124
- e.set(I, !1), window.location.reload();
1125
- }
1126
- function Fe() {
1127
- e.set(ce, window.innerWidth < 767);
1128
- }
1129
- let Re = !1;
1130
- function Je() {
1131
- Re || (window.requestAnimationFrame(() => {
1132
- We(), Re = !1;
1133
- }), Re = !0);
1134
- }
1135
- function We() {
1136
- if (e.get(ce) || !e.get(V) || !e.get(g)) {
1137
- e.set(Y, !1);
1138
- return;
1139
- }
1140
- const i = e.get(V).getBoundingClientRect();
1141
- if (e.set(Y, i.top <= 20), e.get(Y)) {
1142
- const r = e.get(g).getBoundingClientRect();
1143
- e.set(ve, r.left + r.width - 340 - 40);
1144
- }
1145
- }
1146
- function ye() {
1147
- if (e.get(a) && Ot(e.get(a).eventID), t.onNavigateBack)
1148
- t.onNavigateBack();
1149
- else {
1150
- const i = new URLSearchParams(window.location.search);
1151
- i.set("subroute", "details");
1152
- const r = `/?${i.toString()}`;
1153
- lt(r, {});
1154
- }
1155
- }
1156
- let ae = null;
1157
- async function Ye() {
1158
- ae && localStorage.removeItem(`checkout-expiry-${ae}`), De("checkout-cartid"), ae = null, e.set(x, !1), e.set(p, 0), e.set(c, !0);
1159
- }
1160
- async function Xe() {
1161
- if (e.get(x)) return;
1162
- if (e.set(x, !0), ae = typeof document < "u" ? Oe("checkout-cartid") ?? null : null, e.set(p, 900), ae) {
1163
- const n = localStorage.getItem(
1164
- // @storage-escape: cart checkout-expiry persistence (intentional raw localStorage)
1165
- `checkout-expiry-${ae}`
1166
- );
1167
- if (n) {
1168
- const u = Math.max(0, Math.floor((parseInt(n, 10) - Date.now()) / 1e3));
1169
- if (u > 0)
1170
- e.set(p, u, !0);
1171
- else {
1172
- await Ye();
1173
- return;
1174
- }
1175
- } else if (Se)
1176
- e.set(p, 900), localStorage.setItem(
1177
- // @storage-escape: cart checkout-expiry persistence (intentional raw localStorage)
1178
- `checkout-expiry-${ae}`,
1179
- String(Date.now() + 900 * 1e3)
1180
- );
1181
- else {
1182
- await Ye();
1183
- return;
1184
- }
1185
- }
1186
- const i = () => {
1187
- if (!ae) return;
1188
- const n = parseInt(
1189
- localStorage.getItem(`checkout-expiry-${ae}`) || "0",
1190
- // @storage-escape: cart checkout-expiry persistence (intentional raw localStorage)
1191
- 10
1192
- );
1193
- n && e.set(p, Math.max(0, Math.floor((n - Date.now()) / 1e3)), !0);
1194
- };
1195
- S = setInterval(
1196
- () => {
1197
- i(), e.get(p) <= 0 && (clearInterval(S), e.set(x, !1), e.set(c, !0), ae && localStorage.removeItem(`checkout-expiry-${ae}`));
1198
- },
1199
- 1e3
1200
- ), v = () => {
1201
- typeof document < "u" && document.visibilityState === "visible" && i();
1202
- }, typeof document < "u" && document.addEventListener("visibilitychange", v), typeof window < "u" && window.addEventListener("pageshow", v);
1203
- const r = setInterval(
1204
- async () => {
1205
- if (!e.get(x) || !ae) {
1206
- clearInterval(r);
1207
- return;
1208
- }
1209
- try {
1210
- const n = await qt(ae);
1211
- if (n.notFound) {
1212
- clearInterval(r);
1213
- const u = ae;
1214
- e.set(x, !1), e.set(c, !0), localStorage.removeItem(`checkout-expiry-${u}`), De("checkout-cartid"), ae = null;
1215
- return;
1216
- }
1217
- if (!n.error && n.expiresAt) {
1218
- const u = Math.max(0, Math.floor((new Date(n.expiresAt).getTime() - Date.now()) / 1e3));
1219
- e.set(p, u, !0), localStorage.setItem(
1220
- // @storage-escape: cart checkout-expiry persistence (intentional raw localStorage)
1221
- `checkout-expiry-${ae}`,
1222
- String(new Date(n.expiresAt).getTime())
1223
- );
1224
- }
1225
- } catch {
1226
- }
1227
- },
1228
- 6e4
1229
- );
1230
- }
1231
- async function $e(i) {
1232
- const r = i?.detail ?? i, { code: n, discount: u } = r;
1233
- if (e.set(G, n || "", !0), e.set($, u || 0, !0), e.set(ue, n ? `${n} applied.` : "", !0), r.revealHiddenTickets !== void 0 && e.get(a) && (Qe(`checkout-promo-reveal-${e.get(a).eventID}`, r.revealHiddenTickets ? "1" : "0", { path: "/" }), r.revealTicketIds?.length && Qe(`checkout-promo-reveal-ids-${e.get(a).eventID}`, JSON.stringify(r.revealTicketIds), { path: "/" }), n && r.revealHiddenTickets))
1234
- try {
1235
- const d = await st(t.eventId);
1236
- d.length > 0 && e.get(a) && e.set(a, { ...e.get(a), availableTickets: d }, !0);
1237
- } catch (d) {
1238
- he.error("Error re-fetching tickets with promo:", d);
1239
- }
1240
- }
1241
- let et = e.derived(() => e.get(a) ? Oe(`checkout-promo-reveal-${e.get(a).eventID}`) === "1" : !1), o = e.derived(() => {
1242
- if (!e.get(a)) return [];
1243
- try {
1244
- const i = Oe(`checkout-promo-reveal-ids-${e.get(a).eventID}`);
1245
- return i ? JSON.parse(i) : [];
1246
- } catch {
1247
- return [];
1248
- }
1249
- }), l = e.derived(() => {
1250
- if (!e.get(a)) return !1;
1251
- const i = e.get(a).endDateTime || e.get(a).startDateTime;
1252
- return i ? new Date(i) < /* @__PURE__ */ new Date() : !1;
1253
- });
1254
- async function f() {
1255
- if (e.get(B)) {
1256
- if (!t.eventId) {
1257
- e.set(ie, s().noEventIdProvided || "No event ID provided", !0), e.set(se, !1);
1258
- return;
1259
- }
1260
- e.set(se, !0), e.set(ie, null);
1261
- try {
1262
- if (k()) {
1263
- if (e.set(C, k()), !e.get(B)) return;
1264
- e.set(a, dt(e.get(C)), !0), e.set(R, e.get(a).availableTickets || [], !0);
1265
- } else {
1266
- try {
1267
- if (e.set(C, await Mt(t.eventId), !0), !e.get(B)) return;
1268
- e.set(a, dt(e.get(C)), !0);
1269
- } catch (n) {
1270
- he.error("Event fetch failed:", n), e.set(ie, s().failedToLoadEvent || "Failed to load event", !0), e.set(se, !1);
1271
- return;
1272
- }
1273
- try {
1274
- if (e.set(R, await st(t.eventId), !0), !e.get(B)) return;
1275
- e.get(R).length > 0 && (e.get(a).availableTickets = e.get(R));
1276
- } catch (n) {
1277
- if (!e.get(B)) return;
1278
- he.error("Error fetching tickets:", n), e.set(R, e.get(a).availableTickets || [], !0);
1279
- }
1280
- }
1281
- e.get(a).availableTickets && e.get(a).availableTickets.forEach((n) => e.get(w)[n.ID] = 0);
1282
- const i = Ft(e.get(a).eventID);
1283
- if (e.set(w, Vt(i.quantities || {}, e.get(a).availableTickets), !0), e.set(G, i.promocode || "", !0), e.set($, i.promoDiscountAmount || 0, !0), e.get(a).eventID && (await Lt(e.get(a).eventID), !e.get(B)))
1284
- return;
1285
- e.set(y, !0), Ge(), Object.values(e.get(w)).reduce((n, u) => n + u, 0) > 0 && Xe(), Ce(), await Qt(String(e.get(a).eventID));
1286
- } catch (i) {
1287
- e.get(B) && (he.error("Error loading event:", i), e.set(ie, i.message || s().failedToLoadEvent || "Failed to load event", !0));
1288
- } finally {
1289
- e.get(B) && e.set(se, !1);
1290
- }
1291
- }
1292
- }
1293
- pt(async () => {
1294
- e.set(B, !0), Fe(), window.addEventListener("resize", Fe), window.addEventListener("scroll", Je), await f(), Pt(t.eventId).then((i) => {
1295
- e.set(h, i, !0);
1296
- }).catch(() => {
1297
- e.set(h, !0);
1298
- });
1299
- }), bt(() => {
1300
- e.set(B, !1), window.removeEventListener("resize", Fe), window.removeEventListener("scroll", Je), S && clearInterval(S), v && (typeof document < "u" && document.removeEventListener("visibilitychange", v), typeof window < "u" && window.removeEventListener("pageshow", v), v = null), ge && ge.abort();
1301
- });
1302
- let H = null;
1303
- e.user_effect(() => {
1304
- e.get(B) && t.eventId && t.eventId !== H && (H = t.eventId, f());
1305
- }), e.user_effect(() => {
1306
- const i = Object.values(e.get(w)).reduce((r, n) => r + n, 0);
1307
- e.get(y) && e.get(a) && i > 0 ? Ve() : i === 0 && (e.set(le, 0), e.set(X, 0), e.set(b, !1));
1308
- });
1309
- var j = Ha(), L = e.first_child(j), Q = e.child(L);
1310
- {
1311
- var Z = (i) => {
1312
- var r = Da(), n = e.child(r), u = e.child(n, !0);
1313
- e.reset(n), e.reset(r), e.template_effect(() => e.set_text(u, s().loadingEvent || "Loading event...")), e.append(i, r);
1314
- }, F = (i) => {
1315
- var r = Sa(), n = e.child(r), u = e.child(n);
1316
- e.reset(n);
1317
- var d = e.sibling(n, 2), D = e.child(d, !0);
1318
- e.reset(d), e.reset(r), e.template_effect(() => {
1319
- e.set_text(u, `${(s().errorPrefix || "Error:") ?? ""}
1320
- ${e.get(ie) ?? ""}`), e.set_attribute(d, "aria-label", s().goBackToEventDetails || "Go back to event details"), e.set_text(D, s().goBack || "Go back");
1321
- }), e.delegated("click", d, ye), e.append(i, r);
1322
- }, oe = (i) => {
1323
- var r = Ca(), n = e.child(r), u = e.child(n, !0);
1324
- e.reset(n);
1325
- var d = e.sibling(n, 2), D = e.child(d, !0);
1326
- e.reset(d);
1327
- var U = e.sibling(d, 2), ee = e.child(U, !0);
1328
- e.reset(U), e.reset(r), e.template_effect(() => {
1329
- e.set_text(u, s().thisEventHasEnded || "This event has ended"), e.set_text(D, s().ticketsNoLongerAvailable || "Tickets are no longer available for this event."), e.set_attribute(U, "aria-label", s().goBackToEventDetails || "Go back to event details"), e.set_text(ee, s().goBack || "Go back");
1330
- }), e.delegated("click", U, ye), e.append(i, r);
1331
- }, Pe = (i) => {
1332
- var r = Ea(), n = e.sibling(e.child(r), 4);
1333
- e.reset(r), e.delegated("click", n, ye), e.append(i, r);
1334
- }, Le = (i) => {
1335
- var r = Pa(), n = e.child(r), u = e.child(n), d = e.child(u);
1336
- Ia(d, {
1337
- get event() {
1338
- return e.get(a);
1339
- },
1340
- onCancel: ye,
1341
- get labels() {
1342
- return s();
1343
- }
1344
- });
1345
- var D = e.sibling(d, 2);
1346
- {
1347
- var U = (z) => {
1348
- var re = vt(), be = e.child(re);
1349
- {
1350
- let Ze = e.derived(() => e.get(p) <= 300);
1351
- Ht(be, {
1352
- get seconds() {
1353
- return e.get(p);
1354
- },
1355
- get isUrgent() {
1356
- return e.get(Ze);
1357
- },
1358
- get labels() {
1359
- return s();
1360
- }
1361
- });
1362
- }
1363
- e.reset(re), e.append(z, re);
1364
- };
1365
- e.if(D, (z) => {
1366
- e.get(x) && e.get(p) > 0 && z(U);
1367
- });
1368
- }
1369
- var ee = e.sibling(D, 2);
1370
- {
1371
- var q = (z) => {
1372
- var re = vt(), be = e.child(re);
1373
- ya(be, {
1374
- get eventID() {
1375
- return t.eventId;
1376
- },
1377
- onpromoChange: $e,
1378
- get labels() {
1379
- return s();
1380
- }
1381
- }), e.reset(re), e.append(z, re);
1382
- };
1383
- e.if(ee, (z) => {
1384
- e.get(h) && z(q);
1385
- });
1386
- }
1387
- var A = e.sibling(ee, 2), K = e.child(A);
1388
- {
1389
- let z = e.derived(() => e.get(we) || e.get(fe));
1390
- pa(K, {
1391
- get tickets() {
1392
- return e.get(a).availableTickets;
1393
- },
1394
- get quantities() {
1395
- return e.get(w);
1396
- },
1397
- handleQuantityChange: je,
1398
- handleDonationChange: () => {
1399
- },
1400
- get revealHiddenTickets() {
1401
- return e.get(et);
1402
- },
1403
- get revealTicketIds() {
1404
- return e.get(o);
1405
- },
1406
- get venueFeesReady() {
1407
- return e.get(y);
1408
- },
1409
- get syncing() {
1410
- return e.get(z);
1411
- },
1412
- get labels() {
1413
- return s();
1414
- }
1415
- });
1416
- }
1417
- e.reset(A), e.reset(u), e.reset(n);
1418
- var de = e.sibling(n, 2);
1419
- {
1420
- var P = (z) => {
1421
- var re = Aa();
1422
- e.append(z, re);
1423
- };
1424
- e.if(de, (z) => {
1425
- e.get(Y) && !e.get(ce) && z(P);
1426
- });
1427
- }
1428
- var O = e.sibling(de, 2);
1429
- let pe, me;
1430
- var tt = e.child(O);
1431
- {
1432
- var at = (z) => {
1433
- zt(z, {});
1434
- }, rt = (z) => {
1435
- {
1436
- let re = e.derived(() => s().checkout || "Checkout"), be = e.derived(() => !!e.get(ue));
1437
- Rt(z, {
1438
- get btnText() {
1439
- return e.get(re);
1440
- },
1441
- get loading() {
1442
- return e.get(M);
1443
- },
1444
- checkoutTicket: Be,
1445
- get quantities() {
1446
- return e.get(w);
1447
- },
1448
- get eventTickets() {
1449
- return e.get(a).availableTickets;
1450
- },
1451
- get promoApplied() {
1452
- return e.get(be);
1453
- },
1454
- get promoDiscount() {
1455
- return e.get($);
1456
- },
1457
- get taxAmount() {
1458
- return e.get(le);
1459
- },
1460
- get taxLoading() {
1461
- return e.get(b);
1462
- },
1463
- onPriceUpdate: () => {
1464
- }
1465
- });
1466
- }
1467
- };
1468
- e.if(tt, (z) => {
1469
- e.get(y) ? e.get(a) && e.get(a).availableTickets?.length && z(rt, 1) : z(at);
1470
- });
1471
- }
1472
- e.reset(O), e.reset(r), e.bind_this(r, (z) => e.set(V, z), () => e.get(V)), e.template_effect(() => {
1473
- pe = e.set_class(O, 1, "w-full md:w-80 flex flex-col transition-all will-change-[left] svelte-19g9ni4", null, pe, { "is-sticky": e.get(Y) }), me = e.set_style(O, "", me, { left: e.get(Y) ? `${e.get(ve)}px` : "auto" });
1474
- }), e.append(i, r);
1475
- };
1476
- e.if(Q, (i) => {
1477
- e.get(se) ? i(Z) : e.get(ie) ? i(F, 1) : e.get(a) && e.get(l) ? i(oe, 2) : e.get(a) && e.get(l) ? i(Pe, 3) : e.get(a) && i(Le, 4);
1478
- });
1479
- }
1480
- e.reset(L), e.bind_this(L, (i) => e.set(g, i), () => e.get(g));
1481
- var He = e.sibling(L, 2);
1482
- nt(He, {
1483
- size: "sm",
1484
- oncancel: Me,
1485
- "aria-labelledby": "error-modal-title",
1486
- get open() {
1487
- return e.get(I);
1488
- },
1489
- set open(u) {
1490
- e.set(I, u, !0);
1491
- },
1492
- header: (u) => {
1493
- var d = Oa(), D = e.child(d);
1494
- {
1495
- var U = (q) => {
1496
- var A = e.text();
1497
- e.template_effect(() => e.set_text(A, s().unableToReserveTickets || "Unable to Reserve Tickets")), e.append(q, A);
1498
- }, ee = (q) => {
1499
- var A = e.text();
1500
- e.template_effect(() => e.set_text(A, s().connectionIssue || "Connection Issue")), e.append(q, A);
1501
- };
1502
- e.if(D, (q) => {
1503
- e.get(m) === "cart_failed" ? q(U) : q(ee, -1);
1504
- });
1505
- }
1506
- e.reset(d), e.append(u, d);
1507
- },
1508
- body: (u) => {
1509
- var d = Ma(), D = e.child(d);
1510
- {
1511
- var U = (q) => {
1512
- var A = gt(), K = e.first_child(A), de = e.child(K, !0);
1513
- e.reset(K);
1514
- var P = e.sibling(K, 2), O = e.child(P, !0);
1515
- e.reset(P), e.template_effect(() => {
1516
- e.set_text(de, s().cartFailedMessage || "We couldn't reserve your tickets. This may be due to a network issue or the tickets may no longer be available."), e.set_text(O, s().pleaseGoBackAndTryAgain || "Please go back and try again.");
1517
- }), e.append(q, A);
1518
- }, ee = (q) => {
1519
- var A = gt(), K = e.first_child(A), de = e.child(K, !0);
1520
- e.reset(K);
1521
- var P = e.sibling(K, 2), O = e.child(P, !0);
1522
- e.reset(P), e.template_effect(() => {
1523
- e.set_text(de, s().cartSuccessMessage || "Good news! Your tickets have been reserved and are being held for you."), e.set_text(O, s().cartSuccessNetworkError || "However, we encountered a connection issue. Please refresh the page to continue to checkout.");
1524
- }), e.append(q, A);
1525
- };
1526
- e.if(D, (q) => {
1527
- e.get(m) === "cart_failed" ? q(U) : q(ee, -1);
1528
- });
1529
- }
1530
- e.reset(d), e.append(u, d);
1531
- },
1532
- footer: (u) => {
1533
- var d = La(), D = e.child(d);
1534
- {
1535
- var U = (q) => {
1536
- {
1537
- let A = e.derived(() => s().goBack || "Go back");
1538
- xe(q, {
1539
- variant: "default",
1540
- onclick: Me,
1541
- get "aria-label"() {
1542
- return e.get(A);
1543
- },
1544
- children: (K, de) => {
1545
- e.next();
1546
- var P = e.text();
1547
- e.template_effect(() => e.set_text(P, s().goBack || "Go back")), e.append(K, P);
1548
- },
1549
- $$slots: { default: !0 }
1550
- });
1551
- }
1552
- }, ee = (q) => {
1553
- var A = Fa(), K = e.first_child(A);
1554
- {
1555
- let P = e.derived(() => s().cancel || "Cancel");
1556
- xe(K, {
1557
- variant: "alternative",
1558
- onclick: Me,
1559
- get "aria-label"() {
1560
- return e.get(P);
1561
- },
1562
- children: (O, pe) => {
1563
- e.next();
1564
- var me = e.text();
1565
- e.template_effect(() => e.set_text(me, s().cancel || "Cancel")), e.append(O, me);
1566
- },
1567
- $$slots: { default: !0 }
1568
- });
1569
- }
1570
- var de = e.sibling(K, 2);
1571
- {
1572
- let P = e.derived(() => s().refreshPage || "Refresh Page");
1573
- xe(de, {
1574
- variant: "default",
1575
- onclick: ze,
1576
- get "aria-label"() {
1577
- return e.get(P);
1578
- },
1579
- children: (O, pe) => {
1580
- e.next();
1581
- var me = e.text();
1582
- e.template_effect(() => e.set_text(me, s().refreshPage || "Refresh Page")), e.append(O, me);
1583
- },
1584
- $$slots: { default: !0 }
1585
- });
1586
- }
1587
- e.append(q, A);
1588
- };
1589
- e.if(D, (q) => {
1590
- e.get(m) === "cart_failed" ? q(U) : q(ee, -1);
1591
- });
1592
- }
1593
- e.reset(d), e.append(u, d);
1594
- },
1595
- $$slots: { header: !0, body: !0, footer: !0 }
1596
- });
1597
- var Ke = e.sibling(He, 2);
1598
- nt(Ke, {
1599
- size: "sm",
1600
- persistent: !0,
1601
- oncancel: () => {
1602
- e.set(c, !1), De("checkout-cartid"), window.location.reload();
1603
- },
1604
- "aria-labelledby": "expired-modal-title",
1605
- get open() {
1606
- return e.get(c);
1607
- },
1608
- set open(u) {
1609
- e.set(c, u, !0);
1610
- },
1611
- header: (u) => {
1612
- var d = Qa(), D = e.child(d, !0);
1613
- e.reset(d), e.template_effect(() => e.set_text(D, s().cartExpiredTitle || "Your cart has expired")), e.append(u, d);
1614
- },
1615
- body: (u) => {
1616
- var d = qa(), D = e.child(d, !0);
1617
- e.reset(d), e.template_effect(() => e.set_text(D, s().cartExpiredMessage || "Your cart has expired. Please start your purchase again.")), e.append(u, d);
1618
- },
1619
- footer: (u) => {
1620
- xe(u, {
1621
- variant: "default",
1622
- onclick: () => {
1623
- e.set(c, !1), De("checkout-cartid"), window.location.reload();
1624
- },
1625
- children: (d, D) => {
1626
- e.next();
1627
- var U = e.text();
1628
- e.template_effect(() => e.set_text(U, s().startOver || "Start over")), e.append(d, U);
1629
- },
1630
- $$slots: { default: !0 }
1631
- });
1632
- },
1633
- $$slots: { header: !0, body: !0, footer: !0 }
1634
- });
1635
- var _t = e.sibling(Ke, 2);
1636
- nt(_t, {
1637
- size: "sm",
1638
- oncancel: Ne,
1639
- "aria-labelledby": "availability-modal-title",
1640
- get open() {
1641
- return e.get(N);
1642
- },
1643
- set open(u) {
1644
- e.set(N, u, !0);
1645
- },
1646
- header: (u) => {
1647
- var d = Ba(), D = e.child(d, !0);
1648
- e.reset(d), e.template_effect(() => e.set_text(D, s().limitedAvailability || "Limited Availability")), e.append(u, d);
1649
- },
1650
- body: (u) => {
1651
- var d = za(), D = e.child(d), U = e.child(D, !0);
1652
- e.reset(D);
1653
- var ee = e.sibling(D, 2);
1654
- e.each(ee, 21, () => e.get(te), e.index, (P, O) => {
1655
- var pe = Na(), me = e.child(pe), tt = e.child(me);
1656
- e.reset(me);
1657
- var at = e.sibling(me, 2);
1658
- {
1659
- var rt = (re) => {
1660
- var be = e.text();
1661
- e.template_effect((Ze) => e.set_text(be, Ze), [
1662
- () => (s().onlyNAvailable || "Only {available} available (you selected {requested})").replace("{available}", String(e.get(O).availableQty)).replace("{requested}", String(e.get(O).requestedQty))
1663
- ]), e.append(re, be);
1664
- }, z = (re) => {
1665
- var be = e.text();
1666
- e.template_effect((Ze) => e.set_text(be, Ze), [
1667
- () => (s().soldOutYouSelected || "Sold out (you selected {requested})").replace("{requested}", String(e.get(O).requestedQty))
1668
- ]), e.append(re, be);
1669
- };
1670
- e.if(at, (re) => {
1671
- e.get(O).availableQty > 0 ? re(rt) : re(z, -1);
1672
- });
1673
- }
1674
- e.reset(pe), e.template_effect(() => e.set_text(tt, `${e.get(O).ticketName ?? ""}:`)), e.append(P, pe);
1675
- }), e.reset(ee);
1676
- var q = e.sibling(ee, 2);
1677
- {
1678
- var A = (P) => {
1679
- var O = ft(), pe = e.child(O, !0);
1680
- e.reset(O), e.template_effect(() => e.set_text(pe, s().partialAvailabilityContinue || "Would you like to continue with the available tickets?")), e.append(P, O);
1681
- }, K = e.derived(() => e.get(te).some((P) => P.availableQty > 0)), de = (P) => {
1682
- var O = ft(), pe = e.child(O, !0);
1683
- e.reset(O), e.template_effect(() => e.set_text(pe, s().allTicketsSoldOut || "Unfortunately, all the tickets you selected have sold out.")), e.append(P, O);
1684
- };
1685
- e.if(q, (P) => {
1686
- e.get(K) ? P(A) : P(de, -1);
1687
- });
1688
- }
1689
- e.reset(d), e.template_effect(() => {
1690
- e.set_text(U, s().ticketsNoLongerAvailableMessage || "Some tickets you selected are no longer available in the requested quantities:"), e.set_attribute(ee, "aria-label", s().ticketAvailabilityChanges || "Ticket availability changes");
1691
- }), e.append(u, d);
1692
- },
1693
- footer: (u) => {
1694
- var d = Ra(), D = e.child(d);
1695
- {
1696
- let A = e.derived(() => s().goBack || "Go back");
1697
- xe(D, {
1698
- variant: "alternative",
1699
- onclick: Ne,
1700
- get "aria-label"() {
1701
- return e.get(A);
1702
- },
1703
- children: (K, de) => {
1704
- e.next();
1705
- var P = e.text();
1706
- e.template_effect(() => e.set_text(P, s().goBack || "Go back")), e.append(K, P);
1707
- },
1708
- $$slots: { default: !0 }
1709
- });
1710
- }
1711
- var U = e.sibling(D, 2);
1712
- {
1713
- var ee = (A) => {
1714
- {
1715
- let K = e.derived(() => s().continueWithAvailable || "Continue with available");
1716
- xe(A, {
1717
- variant: "default",
1718
- onclick: Ae,
1719
- get "aria-label"() {
1720
- return e.get(K);
1721
- },
1722
- children: (de, P) => {
1723
- e.next();
1724
- var O = e.text();
1725
- e.template_effect(() => e.set_text(O, s().continueWithAvailable || "Continue with available")), e.append(de, O);
1726
- },
1727
- $$slots: { default: !0 }
1728
- });
1729
- }
1730
- }, q = e.derived(() => e.get(te).some((A) => A.availableQty > 0));
1731
- e.if(U, (A) => {
1732
- e.get(q) && A(ee);
1733
- });
1734
- }
1735
- e.reset(d), e.append(u, d);
1736
- },
1737
- $$slots: { header: !0, body: !0, footer: !0 }
1738
- }), e.append(J, j), e.pop();
1739
- }
1740
- e.delegate(["click"]);
1741
- export {
1742
- Xa as default
1743
- };
1744
- //# sourceMappingURL=CartView-lR1zLxmN.js.map