tf-checkout-react-native 2.0.0-beta.7 → 2.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -261,6 +261,8 @@ __export(index_exports, {
261
261
  eventCommentAttachmentsError: () => eventCommentAttachmentsError,
262
262
  eventCommentImageDataError: () => eventCommentImageDataError,
263
263
  eventCommentImageDataUri: () => eventCommentImageDataUri,
264
+ featuredEventsFromResponse: () => featuredEventsFromResponse,
265
+ featuredQueryParams: () => featuredQueryParams,
264
266
  fieldAppliesToTicketType: () => fieldAppliesToTicketType,
265
267
  formatDateDigits: () => formatDateDigits,
266
268
  formatPlanMoney: () => formatPlanMoney,
@@ -624,8 +626,8 @@ var messageFrom = (payload, fallback) => {
624
626
  var _a, _b, _c, _d;
625
627
  if (typeof payload === "string" && payload.trim()) return payload;
626
628
  if (payload && typeof payload === "object") {
627
- const record = payload;
628
- const candidate = (_d = (_b = (_a = record.message) != null ? _a : record.error) != null ? _b : record.error_description) != null ? _d : Array.isArray(record.errors) ? (_c = record.errors[0]) == null ? void 0 : _c.message : void 0;
629
+ const record2 = payload;
630
+ const candidate = (_d = (_b = (_a = record2.message) != null ? _a : record2.error) != null ? _b : record2.error_description) != null ? _d : Array.isArray(record2.errors) ? (_c = record2.errors[0]) == null ? void 0 : _c.message : void 0;
629
631
  if (typeof candidate === "string" && candidate.trim()) return candidate;
630
632
  const messages = flattenMessages(candidate);
631
633
  if (messages.length > 0) return messages.join("\n");
@@ -641,8 +643,8 @@ var codeFrom = (payload) => {
641
643
  };
642
644
  var retryAfterFrom = (value6) => {
643
645
  if (typeof value6 !== "string" && typeof value6 !== "number") return void 0;
644
- const text3 = String(value6).trim();
645
- const seconds = /^\d+$/.test(text3) ? Number(text3) : (Date.parse(text3) - Date.now()) / 1e3;
646
+ const text4 = String(value6).trim();
647
+ const seconds = /^\d+$/.test(text4) ? Number(text4) : (Date.parse(text4) - Date.now()) / 1e3;
646
648
  return Number.isFinite(seconds) && seconds > 0 ? Math.ceil(seconds) : void 0;
647
649
  };
648
650
  var toTtfError = (error, fallback = "Something went wrong") => {
@@ -797,8 +799,8 @@ var confirmedBuyerId = null;
797
799
  var getSessionEpoch = () => sessionEpoch;
798
800
  var getSessionCacheScope = () => sessionCacheScope;
799
801
  var getConfirmedBuyerId = () => confirmedBuyerId;
800
- var confirmSessionBuyer = (id) => {
801
- const buyer2 = String(id);
802
+ var confirmSessionBuyer = (id2) => {
803
+ const buyer2 = String(id2);
802
804
  const pending2 = getConfig().storage.getItem(TWO_FACTOR_PENDING) === "true";
803
805
  if (!buyer2 || confirmedBuyerId === buyer2 && !pending2) return;
804
806
  confirmedBuyerId = buyer2;
@@ -1155,8 +1157,8 @@ var capturePost = (url2) => {
1155
1157
  signal: controller.signal,
1156
1158
  ...body === void 0 ? {} : { body: JSON.stringify(body) }
1157
1159
  });
1158
- const text3 = await response.text();
1159
- const data = text3 ? JSON.parse(text3) : void 0;
1160
+ const text4 = await response.text();
1161
+ const data = text4 ? JSON.parse(text4) : void 0;
1160
1162
  if (!response.ok)
1161
1163
  throw new TtfError(
1162
1164
  typeof (data == null ? void 0 : data.message) === "string" ? data.message : "Unable to finish your order.",
@@ -1266,6 +1268,7 @@ var ENDPOINTS = {
1266
1268
  },
1267
1269
  /** Event catalog + engagement — everything keyed by an event id. */
1268
1270
  events: {
1271
+ featured: "v1/home/featured",
1269
1272
  /** `GET v1/event/:id` — event details (seated detection, slug, name). */
1270
1273
  info: (eventId) => `v1/event/${eventId}`,
1271
1274
  /** Purchasable ticket types (+ promo/waiting-list metadata). */
@@ -1532,7 +1535,7 @@ var resolvePaymentConfig = (cartAttributes) => {
1532
1535
  }
1533
1536
  return payment;
1534
1537
  };
1535
- var priceBreakdownAddOnsQuery = (addOns) => Object.entries(addOns || {}).filter(([id, qty]) => Number(id) > 0 && Number(qty) > 0).map(([id, qty]) => `add_ons[${Number(id)}]=${Number(qty)}`).join("&");
1538
+ var priceBreakdownAddOnsQuery = (addOns) => Object.entries(addOns || {}).filter(([id2, qty]) => Number(id2) > 0 && Number(qty) > 0).map(([id2, qty]) => `add_ons[${Number(id2)}]=${Number(qty)}`).join("&");
1536
1539
  var resolvePriceBreakdown = (cartAttributes) => {
1537
1540
  const breakdown = cartAttributes && cartAttributes.price_breakdown;
1538
1541
  if (!breakdown || typeof breakdown !== "object") return null;
@@ -2187,33 +2190,33 @@ var computeRadialTreeLayout = (nodes, rootId, options = {}) => {
2187
2190
  const byId = /* @__PURE__ */ new Map();
2188
2191
  nodes.forEach((node) => {
2189
2192
  if (!node || node.id == null) return;
2190
- const id = String(node.id);
2191
- if (!byId.has(id)) byId.set(id, node);
2193
+ const id2 = String(node.id);
2194
+ if (!byId.has(id2)) byId.set(id2, node);
2192
2195
  });
2193
2196
  const childrenOf = /* @__PURE__ */ new Map();
2194
- byId.forEach((node, id) => {
2197
+ byId.forEach((node, id2) => {
2195
2198
  const parentId = node.parent_id == null ? null : String(node.parent_id);
2196
- if (parentId == null || parentId === id || !byId.has(parentId)) return;
2199
+ if (parentId == null || parentId === id2 || !byId.has(parentId)) return;
2197
2200
  const siblings = childrenOf.get(parentId);
2198
- if (siblings) siblings.push(id);
2199
- else childrenOf.set(parentId, [id]);
2201
+ if (siblings) siblings.push(id2);
2202
+ else childrenOf.set(parentId, [id2]);
2200
2203
  });
2201
2204
  const visited = /* @__PURE__ */ new Set();
2202
- const build2 = (id, depth) => {
2205
+ const build2 = (id2, depth) => {
2203
2206
  var _a;
2204
- visited.add(id);
2207
+ visited.add(id2);
2205
2208
  const children = [];
2206
- ((_a = childrenOf.get(id)) != null ? _a : []).forEach((childId) => {
2209
+ ((_a = childrenOf.get(id2)) != null ? _a : []).forEach((childId) => {
2207
2210
  if (visited.has(childId)) return;
2208
2211
  children.push(build2(childId, depth + 1));
2209
2212
  });
2210
2213
  const leaves = children.reduce((sum, child) => sum + child.leaves, 0) || 1;
2211
- return { id, depth, children, leaves };
2214
+ return { id: id2, depth, children, leaves };
2212
2215
  };
2213
2216
  const root = byId.has(rootId) ? build2(rootId, 0) : { id: "", depth: 0, children: [], leaves: 1 };
2214
- byId.forEach((_node, id) => {
2215
- if (visited.has(id)) return;
2216
- root.children.push(build2(id, 1));
2217
+ byId.forEach((_node, id2) => {
2218
+ if (visited.has(id2)) return;
2219
+ root.children.push(build2(id2, 1));
2217
2220
  });
2218
2221
  root.leaves = root.children.reduce((sum, child) => sum + child.leaves, 0) || 1;
2219
2222
  let maxDepth = 0;
@@ -2245,13 +2248,13 @@ var radialTreeEdges = (nodes, layout) => {
2245
2248
  const edges = [];
2246
2249
  (nodes != null ? nodes : []).forEach((node) => {
2247
2250
  if (!node || node.id == null || node.parent_id == null) return;
2248
- const id = String(node.id);
2251
+ const id2 = String(node.id);
2249
2252
  const parentId = String(node.parent_id);
2250
- if (parentId === id) return;
2253
+ if (parentId === id2) return;
2251
2254
  const from = layout[parentId];
2252
- const to = layout[id];
2255
+ const to = layout[id2];
2253
2256
  if (!from || !to) return;
2254
- edges.push({ fromId: parentId, toId: id, from, to });
2257
+ edges.push({ fromId: parentId, toId: id2, from, to });
2255
2258
  });
2256
2259
  return edges;
2257
2260
  };
@@ -2604,7 +2607,7 @@ var changeTicketQuantity = (previous, tickets, ticket, requested, allowMultiple)
2604
2607
  const range = ticketQuantityRange(ticket);
2605
2608
  const bounded = Math.min(range.max, Math.max(range.min, requested));
2606
2609
  const quantity = requested <= 0 ? 0 : range.min + Math.floor((bounded - range.min) / range.step) * range.step;
2607
- const activeId = Object.keys(previous).find((id) => previous[id] > 0);
2610
+ const activeId = Object.keys(previous).find((id2) => previous[id2] > 0);
2608
2611
  const previousIsTable = activeId ? Boolean((_a = tickets.find((item) => item.id === activeId)) == null ? void 0 : _a.isTable) : ticket.isTable;
2609
2612
  if (quantity > 0 && (!allowMultiple || activeId && previousIsTable !== ticket.isTable))
2610
2613
  return { [ticket.id]: quantity };
@@ -2625,11 +2628,11 @@ var BADGE_PRESETS = {
2625
2628
  };
2626
2629
  var PERCENT_LEFT = /^(\d{1,3})% left$/i;
2627
2630
  var ticketBadgeTranslation = (badgeText) => {
2628
- const text3 = (badgeText != null ? badgeText : "").trim();
2629
- if (!text3) return null;
2630
- const preset = BADGE_PRESETS[text3.toLowerCase()];
2631
+ const text4 = (badgeText != null ? badgeText : "").trim();
2632
+ if (!text4) return null;
2633
+ const preset = BADGE_PRESETS[text4.toLowerCase()];
2631
2634
  if (preset) return { key: preset };
2632
- const percent = PERCENT_LEFT.exec(text3);
2635
+ const percent = PERCENT_LEFT.exec(text4);
2633
2636
  return percent ? { key: "tickets.badge.percentLeft", vars: { percent: percent[1] } } : null;
2634
2637
  };
2635
2638
  var orderTicketsBeforeTables = (tickets) => [
@@ -3121,7 +3124,7 @@ var pick = (o, ...keys) => {
3121
3124
  var asList = (value6) => {
3122
3125
  if (Array.isArray(value6)) return value6.filter((v) => v && typeof v === "object");
3123
3126
  if (value6 && typeof value6 === "object") {
3124
- return Object.entries(value6).filter(([, v]) => v && typeof v === "object").map(([id, v]) => ({ id, ...v }));
3127
+ return Object.entries(value6).filter(([, v]) => v && typeof v === "object").map(([id2, v]) => ({ id: id2, ...v }));
3125
3128
  }
3126
3129
  return [];
3127
3130
  };
@@ -3211,7 +3214,7 @@ var bundleAvailabilityCopy = (bundle) => {
3211
3214
  };
3212
3215
  var bundleContentsLine = (bundle) => bundle.components.map((c) => c.quantity > 1 ? `${c.quantity} \xD7 ${c.name}` : c.name).join(", ");
3213
3216
  var bundleSelectionAttribute = (selection) => Object.fromEntries(
3214
- Object.entries(selection != null ? selection : {}).map(([id, qty]) => [id, Math.floor(Number(qty) || 0)]).filter(([, qty]) => qty > 0)
3217
+ Object.entries(selection != null ? selection : {}).map(([id2, qty]) => [id2, Math.floor(Number(qty) || 0)]).filter(([, qty]) => qty > 0)
3215
3218
  );
3216
3219
  var bundleSelectionTotal = (bundles, selection) => {
3217
3220
  const cents = bundles.reduce((total, bundle) => {
@@ -3278,18 +3281,18 @@ var bundlePurchaseFromResponse = (body) => {
3278
3281
  const a = (_c = (_b = (_a = root.data) == null ? void 0 : _a.attributes) != null ? _b : root.data) != null ? _c : root;
3279
3282
  const orderHash = pick(a, "order_hash", "orderHash");
3280
3283
  if (orderHash === void 0 || orderHash === "") return null;
3281
- const text3 = (value6) => value6 === void 0 || value6 === null || value6 === "" ? null : String(value6);
3284
+ const text4 = (value6) => value6 === void 0 || value6 === null || value6 === "" ? null : String(value6);
3282
3285
  return {
3283
3286
  orderHash: String(orderHash),
3284
3287
  status: String((_d = pick(a, "status")) != null ? _d : ""),
3285
3288
  amount: toNumber(pick(a, "amount"), 0),
3286
3289
  currency: String((_e = pick(a, "currency")) != null ? _e : ""),
3287
- clientSecret: text3(pick(a, "client_secret", "clientSecret")),
3288
- publishableKey: text3(pick(a, "publishable_key", "publishableKey")),
3289
- stripeAccount: text3(pick(a, "stripe_account", "stripeAccount")),
3290
- gateway: text3(pick(a, "gateway")),
3290
+ clientSecret: text4(pick(a, "client_secret", "clientSecret")),
3291
+ publishableKey: text4(pick(a, "publishable_key", "publishableKey")),
3292
+ stripeAccount: text4(pick(a, "stripe_account", "stripeAccount")),
3293
+ gateway: text4(pick(a, "gateway")),
3291
3294
  signedIn: Boolean(pick(a, "signed_in", "signedIn")),
3292
- email: text3(pick(a, "email"))
3295
+ email: text4(pick(a, "email"))
3293
3296
  };
3294
3297
  };
3295
3298
  var bundleAttemptFor = (attempts, scope, fingerprint, newKey = newBundleIdempotencyKey) => {
@@ -3999,7 +4002,7 @@ var bundleAwaitingCardFor = (entry, fingerprint) => {
3999
4002
  var _a;
4000
4003
  return (entry.status === "awaitingCard" || entry.status === "paying") && Boolean(entry.order) && ((_a = entry.attempt) == null ? void 0 : _a.fingerprint) === fingerprint;
4001
4004
  };
4002
- var decodeHtmlEntities = (text3) => (0, import_entities.decodeHTML)(text3);
4005
+ var decodeHtmlEntities = (text4) => (0, import_entities.decodeHTML)(text4);
4003
4006
  var BLOCK_ELEMENTS = /* @__PURE__ */ new Set([
4004
4007
  "address",
4005
4008
  "article",
@@ -4049,11 +4052,11 @@ var hidesContents = (name, attribs) => {
4049
4052
  return HIDDEN_ELEMENTS.has(name) || "hidden" in attribs || HIDING_STYLE.test((_a = attribs.style) != null ? _a : "");
4050
4053
  };
4051
4054
  var htmlToPlainText = (html) => {
4052
- let text3 = "";
4055
+ let text4 = "";
4053
4056
  let hidden = 0;
4054
4057
  const hiding = [];
4055
4058
  const endLine = () => {
4056
- if (text3 !== "" && !text3.endsWith("\n")) text3 += "\n";
4059
+ if (text4 !== "" && !text4.endsWith("\n")) text4 += "\n";
4057
4060
  };
4058
4061
  const parser = new import_htmlparser2.Parser(
4059
4062
  {
@@ -4062,10 +4065,10 @@ var htmlToPlainText = (html) => {
4062
4065
  hiding.push(hides);
4063
4066
  if (hides) hidden += 1;
4064
4067
  else if (hidden > 0) return;
4065
- else if (name === "br") text3 += "\n";
4068
+ else if (name === "br") text4 += "\n";
4066
4069
  else if (BLOCK_ELEMENTS.has(name)) endLine();
4067
- else if (CELL_ELEMENTS.has(name) && text3 !== "" && !text3.endsWith("\n")) {
4068
- text3 += " ";
4070
+ else if (CELL_ELEMENTS.has(name) && text4 !== "" && !text4.endsWith("\n")) {
4071
+ text4 += " ";
4069
4072
  }
4070
4073
  },
4071
4074
  onclosetag: (name) => {
@@ -4073,14 +4076,14 @@ var htmlToPlainText = (html) => {
4073
4076
  else if (hidden === 0 && BLOCK_ELEMENTS.has(name)) endLine();
4074
4077
  },
4075
4078
  ontext: (chunk2) => {
4076
- if (hidden === 0) text3 += chunk2;
4079
+ if (hidden === 0) text4 += chunk2;
4077
4080
  }
4078
4081
  },
4079
4082
  { decodeEntities: true }
4080
4083
  );
4081
4084
  parser.write(html);
4082
4085
  parser.end();
4083
- return text3.replace(/\u00a0/g, " ").replace(/[ \t]+\n/g, "\n").replace(/\t{2,}/g, " ").replace(/\n{3,}/g, "\n\n").trim();
4086
+ return text4.replace(/\u00a0/g, " ").replace(/[ \t]+\n/g, "\n").replace(/\t{2,}/g, " ").replace(/\n{3,}/g, "\n\n").trim();
4084
4087
  };
4085
4088
  var attributesOf = (body) => {
4086
4089
  var _a, _b, _c;
@@ -4492,7 +4495,7 @@ var waiverFrom = (w) => {
4492
4495
  title: String((_c = pick2(w, "title")) != null ? _c : ""),
4493
4496
  bodyHtml,
4494
4497
  bodySha256,
4495
- appliesToTicketTypeIds: Array.isArray(ids) && ids.length ? ids.map((id) => String(id)) : null,
4498
+ appliesToTicketTypeIds: Array.isArray(ids) && ids.length ? ids.map((id2) => String(id2)) : null,
4496
4499
  // Anything but an explicit `required` is optional: an unsigned guest is
4497
4500
  // never blocked unless the organiser chose that.
4498
4501
  checkoutMode: mode === "required" ? "required" : "optional",
@@ -4995,17 +4998,17 @@ var confirmedStripeIntentStatus = (intent) => {
4995
4998
  var applyVerifiedPhone = (current4, verified) => {
4996
4999
  var _a, _b, _c;
4997
5000
  const p = verified.prefill;
4998
- const text3 = (key4, fallback) => {
5001
+ const text4 = (key4, fallback) => {
4999
5002
  var _a2;
5000
5003
  const value6 = (_a2 = p[key4]) != null ? _a2 : p[key4 === "firstName" ? "first_name" : key4 === "lastName" ? "last_name" : key4];
5001
5004
  return typeof value6 === "string" && value6 ? value6 : fallback;
5002
5005
  };
5003
5006
  return {
5004
5007
  ...current4,
5005
- firstName: (_a = text3("firstName", current4.firstName)) != null ? _a : "",
5006
- lastName: (_b = text3("lastName", current4.lastName)) != null ? _b : "",
5007
- email: (_c = text3("email", current4.email)) != null ? _c : "",
5008
- phone: text3("phone", current4.phone),
5008
+ firstName: (_a = text4("firstName", current4.firstName)) != null ? _a : "",
5009
+ lastName: (_b = text4("lastName", current4.lastName)) != null ? _b : "",
5010
+ email: (_c = text4("email", current4.email)) != null ? _c : "",
5011
+ phone: text4("phone", current4.phone),
5009
5012
  phoneVerificationToken: verified.phoneVerificationToken,
5010
5013
  phoneFirstUseKnownEmail: false
5011
5014
  };
@@ -5028,15 +5031,15 @@ var accommodationSelection = (draft) => {
5028
5031
  if (Object.keys(draft).length > 20)
5029
5032
  throw new TtfError("Choose up to 20 room types.", 400);
5030
5033
  const selection = {};
5031
- for (const [id, stay] of Object.entries(draft)) {
5032
- if (!/^[1-9]\d*$/.test(id) || !Number.isInteger(stay.rooms) || stay.rooms < 0 || stay.rooms > 4)
5034
+ for (const [id2, stay] of Object.entries(draft)) {
5035
+ if (!/^[1-9]\d*$/.test(id2) || !Number.isInteger(stay.rooms) || stay.rooms < 0 || stay.rooms > 4)
5033
5036
  throw new TtfError("Choose between 0 and 4 rooms of each type.", 400);
5034
5037
  if (stay.rooms === 0) continue;
5035
5038
  if (!calendarDay(stay.check_in) || !calendarDay(stay.check_out) || stay.check_out <= stay.check_in)
5036
5039
  throw new TtfError("Choose valid check-in and check-out dates.", 400);
5037
5040
  if (!Number.isInteger(stay.num_guests) || stay.num_guests < 1 || stay.num_guests > 100)
5038
5041
  throw new TtfError("Choose between 1 and 100 guests.", 400);
5039
- selection[id] = {
5042
+ selection[id2] = {
5040
5043
  ...stay,
5041
5044
  occupants: (_a = stay.occupants) == null ? void 0 : _a.filter((person) => person.name.trim()).map((person) => ({ ...person, name: person.name.trim() }))
5042
5045
  };
@@ -5046,15 +5049,15 @@ var accommodationSelection = (draft) => {
5046
5049
  var acceptedAccommodationSelection = (selection, result2) => ({
5047
5050
  accommodation: Object.fromEntries(
5048
5051
  Object.entries(selection.accommodation).filter(
5049
- ([id]) => !result2.rejected[id] || result2.rejected[id].status_code === 400
5052
+ ([id2]) => !result2.rejected[id2] || result2.rejected[id2].status_code === 400
5050
5053
  )
5051
5054
  )
5052
5055
  });
5053
5056
  var accommodationTotal = (items, quotes, currency) => {
5054
5057
  var _a, _b;
5055
5058
  let total = 0;
5056
- for (const id of Object.keys((_a = items == null ? void 0 : items.accommodation) != null ? _a : {})) {
5057
- const quote = quotes == null ? void 0 : quotes[id];
5059
+ for (const id2 of Object.keys((_a = items == null ? void 0 : items.accommodation) != null ? _a : {})) {
5060
+ const quote = quotes == null ? void 0 : quotes[id2];
5058
5061
  const amount = (_b = quote == null ? void 0 : quote.total) != null ? _b : quote == null ? void 0 : quote.total_price;
5059
5062
  if (!quote || quote.currency !== currency || !Number.isFinite(amount) || Number(amount) < 0)
5060
5063
  throw new TtfError("Refresh your accommodation quote before paying.", 409);
@@ -5088,15 +5091,15 @@ var checkoutDisplayPriceBreakdown = (snapshot) => {
5088
5091
  }).format(amount);
5089
5092
  return {
5090
5093
  ...base,
5091
- add_ons: [...base.add_ons, ...Object.entries(snapshot.extraItems.accommodation).map(([id, stay]) => {
5094
+ add_ons: [...base.add_ons, ...Object.entries(snapshot.extraItems.accommodation).map(([id2, stay]) => {
5092
5095
  var _a2, _b2, _c;
5093
5096
  return {
5094
5097
  name: `Accommodation \xB7 ${stay.check_in} \u2013 ${stay.check_out}`,
5095
5098
  quantity: stay.rooms,
5096
5099
  show_price: false,
5097
5100
  unit_price: "",
5098
- line_total: (_c = (_b2 = (_a2 = snapshot.extraQuotes) == null ? void 0 : _a2[id]) == null ? void 0 : _b2.total_formatted) != null ? _c : money5(accommodationTotal(
5099
- { accommodation: { [id]: stay } },
5101
+ line_total: (_c = (_b2 = (_a2 = snapshot.extraQuotes) == null ? void 0 : _a2[id2]) == null ? void 0 : _b2.total_formatted) != null ? _c : money5(accommodationTotal(
5102
+ { accommodation: { [id2]: stay } },
5100
5103
  snapshot.extraQuotes,
5101
5104
  total.currencyCode
5102
5105
  ))
@@ -5268,36 +5271,36 @@ var interestSelectionError = (selection, catalog) => {
5268
5271
  if (!Array.isArray(ids) || ids.length > catalog.length || new Set(ids).size !== ids.length)
5269
5272
  return "Choose each category once.";
5270
5273
  if (ids.length > 0 && ids.length < 3) return "Choose 3 or more categories you like.";
5271
- for (const id of ids)
5272
- if (!catalog.some((category) => category.id === id))
5274
+ for (const id2 of ids)
5275
+ if (!catalog.some((category) => category.id === id2))
5273
5276
  return "Choose a category from the list.";
5274
- for (const [id, selected] of Object.entries(selection.subcategories)) {
5275
- const category = catalog.find((item) => item.id === id);
5276
- if (!ids.includes(id) || !category || !Array.isArray(selected) || new Set(selected).size !== selected.length || selected.some(
5277
+ for (const [id2, selected] of Object.entries(selection.subcategories)) {
5278
+ const category = catalog.find((item) => item.id === id2);
5279
+ if (!ids.includes(id2) || !category || !Array.isArray(selected) || new Set(selected).size !== selected.length || selected.some(
5277
5280
  (child) => !category.subcategories.some((option) => option.id === child)
5278
5281
  ))
5279
5282
  return "Choose interests from their selected category.";
5280
5283
  }
5281
5284
  return null;
5282
5285
  };
5283
- var toggleInterestCategory = (selection, id) => {
5284
- if (!selection.categoryIds.includes(id))
5285
- return { ...selection, categoryIds: [...selection.categoryIds, id] };
5286
+ var toggleInterestCategory = (selection, id2) => {
5287
+ if (!selection.categoryIds.includes(id2))
5288
+ return { ...selection, categoryIds: [...selection.categoryIds, id2] };
5286
5289
  const subcategories = { ...selection.subcategories };
5287
- delete subcategories[id];
5290
+ delete subcategories[id2];
5288
5291
  return {
5289
- categoryIds: selection.categoryIds.filter((item) => item !== id),
5292
+ categoryIds: selection.categoryIds.filter((item) => item !== id2),
5290
5293
  subcategories
5291
5294
  };
5292
5295
  };
5293
- var toggleInterestSubcategory = (selection, categoryId, id) => {
5296
+ var toggleInterestSubcategory = (selection, categoryId, id2) => {
5294
5297
  var _a;
5295
5298
  const current4 = (_a = selection.subcategories[categoryId]) != null ? _a : [];
5296
5299
  return {
5297
5300
  ...selection,
5298
5301
  subcategories: {
5299
5302
  ...selection.subcategories,
5300
- [categoryId]: current4.includes(id) ? current4.filter((item) => item !== id) : [...current4, id]
5303
+ [categoryId]: current4.includes(id2) ? current4.filter((item) => item !== id2) : [...current4, id2]
5301
5304
  }
5302
5305
  };
5303
5306
  };
@@ -5326,7 +5329,7 @@ var rankEventsByInterests = (events, preferences, metadata) => {
5326
5329
  return events.map((event, index) => {
5327
5330
  var _a2, _b;
5328
5331
  const publicData = metadata(event);
5329
- const text3 = " " + words([
5332
+ const text4 = " " + words([
5330
5333
  (_a2 = publicData.title) == null ? void 0 : _a2.slice(0, 1024),
5331
5334
  (_b = publicData.description) == null ? void 0 : _b.replace(/<[^>]*>/g, " ").slice(0, 4096),
5332
5335
  ...values(publicData.categories),
@@ -5335,7 +5338,7 @@ var rankEventsByInterests = (events, preferences, metadata) => {
5335
5338
  ...values(publicData.genres)
5336
5339
  ].filter(Boolean).join(" ").slice(0, 8192)) + " ";
5337
5340
  let score = 0;
5338
- for (const [term, weight] of terms) if (text3.includes(" " + term + " ")) score += weight;
5341
+ for (const [term, weight] of terms) if (text4.includes(" " + term + " ")) score += weight;
5339
5342
  return { event, index, score };
5340
5343
  }).sort((a, b) => b.score - a.score || a.index - b.index).map((result2) => result2.event);
5341
5344
  };
@@ -5356,27 +5359,27 @@ var previewFriendProfile = (profile, settings) => {
5356
5359
  };
5357
5360
  var accountEventPresentation = (item, locale) => {
5358
5361
  const event = item.event;
5359
- const text3 = (value6) => typeof value6 === "string" ? value6 : "";
5362
+ const text4 = (value6) => typeof value6 === "string" ? value6 : "";
5360
5363
  const venue = event.venue && typeof event.venue === "object" ? event.venue : {};
5361
5364
  let date = "";
5362
5365
  if (event.hideDate === true || event.hide_date === true) date = "Date TBC";
5363
- else if (text3(event.event_date)) date = text3(event.event_date);
5364
- else if (text3(event.startDate)) {
5366
+ else if (text4(event.event_date)) date = text4(event.event_date);
5367
+ else if (text4(event.startDate)) {
5365
5368
  try {
5366
5369
  date = new Intl.DateTimeFormat(locale, {
5367
5370
  dateStyle: "medium",
5368
- timeZone: text3(event.timezone) || void 0
5369
- }).format(new Date(text3(event.startDate)));
5371
+ timeZone: text4(event.timezone) || void 0
5372
+ }).format(new Date(text4(event.startDate)));
5370
5373
  } catch (e) {
5371
5374
  }
5372
5375
  }
5373
5376
  return {
5374
5377
  id: item.id,
5375
- name: text3(event.displayName) || text3(event.name) || text3(event.title),
5376
- imageUrl: text3(event.imageURL) || text3(event.image_url) || text3(event.image),
5377
- url: text3(event.url),
5378
+ name: text4(event.displayName) || text4(event.name) || text4(event.title),
5379
+ imageUrl: text4(event.imageURL) || text4(event.image_url) || text4(event.image),
5380
+ url: text4(event.url),
5378
5381
  date,
5379
- venue: venue.hidden ? "" : [text3(venue.name), text3(venue.city)].filter(Boolean).join(", ")
5382
+ venue: venue.hidden ? "" : [text4(venue.name), text4(venue.city)].filter(Boolean).join(", ")
5380
5383
  };
5381
5384
  };
5382
5385
  var profileGenderOptions = [
@@ -5442,7 +5445,7 @@ var normalizeTicketGiftIntent = (input) => {
5442
5445
  fail();
5443
5446
  if (input.confirm_terms !== true)
5444
5447
  throw new TtfError("Confirm that this ticket will belong to the recipient.", 422);
5445
- if (!Array.isArray(input.add_on_ids) || input.add_on_ids.length > 100 || input.add_on_ids.some((id) => !Number.isSafeInteger(id) || id <= 0))
5448
+ if (!Array.isArray(input.add_on_ids) || input.add_on_ids.length > 100 || input.add_on_ids.some((id2) => !Number.isSafeInteger(id2) || id2 <= 0))
5446
5449
  throw new TtfError("Review the add-ons to include with your gift.", 422);
5447
5450
  return {
5448
5451
  request_key: input.request_key,
@@ -5479,6 +5482,75 @@ var normalizeTicketResale = (input, requireNames = false) => {
5479
5482
  throw new TtfError("Enter matching email addresses for your friend.", 422);
5480
5483
  return result2;
5481
5484
  };
5485
+ var record = (value6) => value6 !== null && typeof value6 === "object" && !Array.isArray(value6) ? value6 : null;
5486
+ var text3 = (value6) => typeof value6 === "string" ? value6 : "";
5487
+ var id = (value6) => typeof value6 === "string" || typeof value6 === "number" && Number.isFinite(value6) ? String(value6) : "";
5488
+ var flag2 = (value6) => value6 === true || value6 === 1 || value6 === "1" || value6 === "yes";
5489
+ var featuredQueryParams = (query) => {
5490
+ const { latitude, longitude, country } = query;
5491
+ if ((latitude !== void 0 || longitude !== void 0) && (typeof latitude !== "number" || typeof longitude !== "number" || !Number.isFinite(latitude) || !Number.isFinite(longitude) || Math.abs(latitude) > 90 || Math.abs(longitude) > 180))
5492
+ throw new TtfError("Provide a valid latitude and longitude.", 422, "INVALID_LOCATION");
5493
+ return {
5494
+ ...latitude !== void 0 ? { latitude, longitude } : {},
5495
+ ...country ? { c: country } : {}
5496
+ };
5497
+ };
5498
+ var featuredEventsFromResponse = (body) => {
5499
+ var _a, _b;
5500
+ const events = (_b = record((_a = record(body)) == null ? void 0 : _a.data)) == null ? void 0 : _b.events;
5501
+ const invalid2 = () => new TtfError(
5502
+ "Events could not be loaded. Please try again.",
5503
+ 502,
5504
+ "INVALID_FEATURED_EVENTS"
5505
+ );
5506
+ if (!Array.isArray(events)) throw invalid2();
5507
+ return events.map((value6) => {
5508
+ var _a2;
5509
+ const row = record(value6);
5510
+ if (!row || !id(row.objectID).trim() || !text3(row.title).trim() || !id(row.brand_id))
5511
+ throw invalid2();
5512
+ const geoloc = record(row._geoloc);
5513
+ const lat = geoloc == null ? void 0 : geoloc.lat;
5514
+ const lng = geoloc == null ? void 0 : geoloc.lng;
5515
+ const coordinates = typeof lat === "number" && typeof lng === "number" && Number.isFinite(lat) && Number.isFinite(lng) && Math.abs(lat) <= 90 && Math.abs(lng) <= 180 ? { lat, lng } : void 0;
5516
+ return {
5517
+ objectID: id(row.objectID),
5518
+ title: text3(row.title),
5519
+ brand_id: id(row.brand_id),
5520
+ brand_name: text3(row.brand_name),
5521
+ url: text3(row.url),
5522
+ event_date: text3(row.event_date),
5523
+ event_date_3_letter_month: text3(row.event_date_3_letter_month),
5524
+ event_date_day: text3(row.event_date_day),
5525
+ event_date_day_month: text3(row.event_date_day_month),
5526
+ event_date_month: text3(row.event_date_month),
5527
+ event_date_time: text3(row.event_date_time),
5528
+ event_date_week: text3(row.event_date_week),
5529
+ date: text3(row.date),
5530
+ end_date: text3(row.end_date),
5531
+ venue_id: id(row.venue_id),
5532
+ venue_name: text3(row.venue_name),
5533
+ venue_slug: text3(row.venue_slug),
5534
+ event_city: text3(row.event_city),
5535
+ city_slug: text3(row.city_slug),
5536
+ hide_date: flag2(row.hide_date),
5537
+ image_url: text3(row.image_url),
5538
+ image_blurred_url: text3(row.image_blurred_url),
5539
+ short_description: text3(row.short_description),
5540
+ ticket_url: text3(row.ticket_url),
5541
+ total_in_stock: id(row.total_in_stock),
5542
+ x_featured_event: flag2(row.x_featured_event),
5543
+ is_online_event: flag2(row.is_online_event),
5544
+ event_types: Object.fromEntries(
5545
+ Object.entries((_a2 = record(row.event_types)) != null ? _a2 : {}).map(([key4, value7]) => [
5546
+ key4,
5547
+ flag2(value7)
5548
+ ])
5549
+ ),
5550
+ ...coordinates ? { _geoloc: coordinates } : {}
5551
+ };
5552
+ });
5553
+ };
5482
5554
  var initialSnapshot = () => ({
5483
5555
  status: "idle",
5484
5556
  selections: [],
@@ -5567,7 +5639,7 @@ var CONFIRMED_INTENT_STATUSES = [
5567
5639
  "RequiresCapture",
5568
5640
  "Processing"
5569
5641
  ];
5570
- var cleanAccountId = (id) => id && id.trim() ? id : void 0;
5642
+ var cleanAccountId = (id2) => id2 && id2.trim() ? id2 : void 0;
5571
5643
  var unsupportedGatewayError = (message) => {
5572
5644
  const err = new Error(
5573
5645
  message != null ? message : "This payment method isn't available in the app. Please finish buying on the event page."
@@ -5890,6 +5962,7 @@ __export2(api_exports, {
5890
5962
  getEventTickets: () => getEventTickets,
5891
5963
  getEventTicketsWithMeta: () => getEventTicketsWithMeta,
5892
5964
  getEventTimeSlotTickets: () => getEventTimeSlotTickets,
5965
+ getFeaturedEvents: () => getFeaturedEvents,
5893
5966
  getFriendProfile: () => getFriendProfile,
5894
5967
  getFriends: () => getFriends,
5895
5968
  getIdVerificationStatus: () => getIdVerificationStatus,
@@ -6376,7 +6449,7 @@ var getCountries = async () => {
6376
6449
  var getStates = async (countryId) => {
6377
6450
  var _a;
6378
6451
  const res = await get(ENDPOINTS.geo.states(countryId));
6379
- return Object.entries((_a = res.data) != null ? _a : {}).map(([id, name]) => ({ id, name }));
6452
+ return Object.entries((_a = res.data) != null ? _a : {}).map(([id2, name]) => ({ id: id2, name }));
6380
6453
  };
6381
6454
  var sessionEpoch2 = -1;
6382
6455
  var sessionConfig = null;
@@ -6752,8 +6825,8 @@ var removeReservedSeats = async (eventId, tierId, seatIds) => del(ENDPOINTS.seat
6752
6825
  });
6753
6826
  var refreshReservation = async (eventId, orderId) => patch(ENDPOINTS.seatmap.refreshReservation(eventId), { order_id: orderId });
6754
6827
  var badgeOf = (raw) => {
6755
- const text3 = typeof raw === "string" ? raw.trim() : "";
6756
- return text3 || null;
6828
+ const text4 = typeof raw === "string" ? raw.trim() : "";
6829
+ return text4 || null;
6757
6830
  };
6758
6831
  var mapTicket = (t) => {
6759
6832
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
@@ -6792,7 +6865,7 @@ var getEventDetails = async (eventId) => {
6792
6865
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
6793
6866
  const body = await get(ENDPOINTS.events.info(eventId));
6794
6867
  const a = (_b = (_a = body == null ? void 0 : body.data) == null ? void 0 : _a.attributes) != null ? _b : {};
6795
- const text3 = (value6) => typeof value6 === "string" && value6.trim() ? value6 : null;
6868
+ const text4 = (value6) => typeof value6 === "string" && value6.trim() ? value6 : null;
6796
6869
  const coordinate = (value6) => value6 !== null && value6 !== void 0 && value6 !== "" && Number.isFinite(Number(value6)) ? Number(value6) : null;
6797
6870
  const hidden = a.hideVenue === true || a.hideVenue === 1 || a.hideVenue === "yes";
6798
6871
  const hideDate = a.hideDate === true || a.hideDate === 1 || a.hideDate === "yes" || a.hideDate === "1";
@@ -6802,25 +6875,25 @@ var getEventDetails = async (eventId) => {
6802
6875
  slug: String((_g = a.slug) != null ? _g : ""),
6803
6876
  description: String((_h = a.description) != null ? _h : ""),
6804
6877
  shortDescription: String((_i = a.shortDescription) != null ? _i : ""),
6805
- imageUrl: (_k = (_j = text3(a.imageUrlHd)) != null ? _j : text3(a.productImage)) != null ? _k : text3(a.imageUrl),
6878
+ imageUrl: (_k = (_j = text4(a.imageUrlHd)) != null ? _j : text4(a.productImage)) != null ? _k : text4(a.imageUrl),
6806
6879
  hideDate,
6807
- startDate: hideDate ? null : (_l = text3(a.startDate)) != null ? _l : text3(a.date),
6808
- endDate: hideDate ? null : text3(a.endDate),
6880
+ startDate: hideDate ? null : (_l = text4(a.startDate)) != null ? _l : text4(a.date),
6881
+ endDate: hideDate ? null : text4(a.endDate),
6809
6882
  formattedDate: hideDate ? "Date TBC" : String((_m = a.formattedDate) != null ? _m : ""),
6810
- timezone: text3(a.timezone),
6883
+ timezone: text4(a.timezone),
6811
6884
  currency: String((_n = a.currency) != null ? _n : ""),
6812
- salesStart: text3(a.salesStart),
6813
- salesEnd: text3(a.salesEnd),
6885
+ salesStart: text4(a.salesStart),
6886
+ salesEnd: text4(a.salesEnd),
6814
6887
  salesStarted: Boolean(a.salesStarted),
6815
6888
  salesEnded: Boolean(a.salesEnded),
6816
6889
  // A hidden venue must not leak through a map link even when an older
6817
6890
  // backend response happens to include its coordinates.
6818
6891
  venue: {
6819
6892
  hidden,
6820
- name: hidden ? null : text3(a.venueName),
6893
+ name: hidden ? null : text4(a.venueName),
6821
6894
  address: hidden ? null : [a.venueStreetNumber, a.venueStreet, a.venuePostalCode].filter(Boolean).join(" ") || null,
6822
- city: text3(a.venueCity),
6823
- country: text3(a.venueCountry),
6895
+ city: text4(a.venueCity),
6896
+ country: text4(a.venueCountry),
6824
6897
  latitude: hidden ? null : coordinate(a.venueLatitude),
6825
6898
  longitude: hidden ? null : coordinate(a.venueLongitude)
6826
6899
  }
@@ -7034,7 +7107,7 @@ var filterAddonsForTickets = (addons, ticketTypeIds) => {
7034
7107
  return addons.filter((a) => {
7035
7108
  const prereq = a.prerequisiteTicketTypeIds;
7036
7109
  if (!prereq || prereq.length === 0) return true;
7037
- return prereq.some((id) => selected.has(String(id)));
7110
+ return prereq.some((id2) => selected.has(String(id2)));
7038
7111
  });
7039
7112
  };
7040
7113
  var getEventTicketsWithMeta = async (eventId) => {
@@ -7369,7 +7442,7 @@ var createOrder = async (input) => {
7369
7442
  ...addOnDataCapture ? {
7370
7443
  addOnDataCapture: Object.fromEntries(
7371
7444
  Object.entries(addOnDataCapture).filter(
7372
- ([id, values2]) => Number(addOns[id]) > 0 && values2 && Object.keys(values2).length > 0
7445
+ ([id2, values2]) => Number(addOns[id2]) > 0 && values2 && Object.keys(values2).length > 0
7373
7446
  )
7374
7447
  )
7375
7448
  } : {}
@@ -7822,7 +7895,7 @@ var completeAccount = (challenge, input, termsAccepted) => {
7822
7895
  })
7823
7896
  );
7824
7897
  };
7825
- var path = (eventId, id) => `/event/${encodeURIComponent(eventId)}/comments${id ? `/${encodeURIComponent(id)}` : ""}`;
7898
+ var path = (eventId, id2) => `/event/${encodeURIComponent(eventId)}/comments${id2 ? `/${encodeURIComponent(id2)}` : ""}`;
7826
7899
  var value2 = (response) => {
7827
7900
  if (response.success === false || response.error === true)
7828
7901
  throw new TtfError(
@@ -7869,13 +7942,13 @@ var getEventComments = async (eventId, options = {}) => {
7869
7942
  );
7870
7943
  return { ...page2, items: page2.items.map(normalizeEventComment) };
7871
7944
  };
7872
- var getEventCommentImage = async (eventId, id, previewKey, index = 0) => {
7945
+ var getEventCommentImage = async (eventId, id2, previewKey, index = 0) => {
7873
7946
  if (!Number.isInteger(index) || index < 0 || index > 4)
7874
7947
  throw new TtfError("Choose a valid image position.", 422, "VALIDATION_ERROR");
7875
7948
  const epoch = getSessionEpoch();
7876
7949
  const bytes = new Uint8Array(
7877
7950
  await get(
7878
- `${path(eventId, id)}/${index === 0 ? "image" : `images/${index}`}`,
7951
+ `${path(eventId, id2)}/${index === 0 ? "image" : `images/${index}`}`,
7879
7952
  {
7880
7953
  responseType: "arraybuffer",
7881
7954
  params: previewKey ? { pk: previewKey } : void 0
@@ -7911,7 +7984,7 @@ var createEventComment = async (eventId, draft, previewKey) => {
7911
7984
  value2(await post(target, draft, config))
7912
7985
  );
7913
7986
  };
7914
- var updateEventComment = async (eventId, id, body, revision, previewKey) => {
7987
+ var updateEventComment = async (eventId, id2, body, revision, previewKey) => {
7915
7988
  if (typeof body !== "string" || [...body].length > 2e3)
7916
7989
  throw new TtfError(
7917
7990
  "Use up to 2000 characters of plain text.",
@@ -7923,43 +7996,43 @@ var updateEventComment = async (eventId, id, body, revision, previewKey) => {
7923
7996
  assertSessionEpoch(epoch);
7924
7997
  return normalizeEventComment(
7925
7998
  value2(
7926
- await patch(path(eventId, id), { body, revision }, config)
7999
+ await patch(path(eventId, id2), { body, revision }, config)
7927
8000
  )
7928
8001
  );
7929
8002
  };
7930
- var removeEventComment = async (eventId, id, revision, previewKey) => {
8003
+ var removeEventComment = async (eventId, id2, revision, previewKey) => {
7931
8004
  const epoch = getSessionEpoch();
7932
8005
  const config = await security(epoch, previewKey);
7933
8006
  assertSessionEpoch(epoch);
7934
8007
  return normalizeEventComment(
7935
8008
  value2(
7936
- await del(path(eventId, id), {
8009
+ await del(path(eventId, id2), {
7937
8010
  ...config,
7938
8011
  data: { revision }
7939
8012
  })
7940
8013
  )
7941
8014
  );
7942
8015
  };
7943
- var reactToEventComment = async (eventId, id, reaction, previewKey) => {
8016
+ var reactToEventComment = async (eventId, id2, reaction, previewKey) => {
7944
8017
  const epoch = getSessionEpoch();
7945
8018
  const config = await security(epoch, previewKey);
7946
8019
  assertSessionEpoch(epoch);
7947
8020
  return normalizeEventComment(
7948
8021
  value2(
7949
8022
  await post(
7950
- `${path(eventId, id)}/reaction`,
8023
+ `${path(eventId, id2)}/reaction`,
7951
8024
  { reaction },
7952
8025
  config
7953
8026
  )
7954
8027
  )
7955
8028
  );
7956
8029
  };
7957
- var reportEventComment = async (eventId, id, reason, previewKey) => {
8030
+ var reportEventComment = async (eventId, id2, reason, previewKey) => {
7958
8031
  const epoch = getSessionEpoch();
7959
8032
  const config = await security(epoch, previewKey);
7960
8033
  assertSessionEpoch(epoch);
7961
8034
  value2(
7962
- await post(`${path(eventId, id)}/report`, { reason }, config)
8035
+ await post(`${path(eventId, id2)}/report`, { reason }, config)
7963
8036
  );
7964
8037
  };
7965
8038
  var blockEventCommentAuthor = async (eventId, authorId, blocked, previewKey) => {
@@ -7974,14 +8047,14 @@ var blockEventCommentAuthor = async (eventId, authorId, blocked, previewKey) =>
7974
8047
  )
7975
8048
  );
7976
8049
  };
7977
- var moderateEventComment = async (eventId, id, status, revision, reason, previewKey) => {
8050
+ var moderateEventComment = async (eventId, id2, status, revision, reason, previewKey) => {
7978
8051
  const epoch = getSessionEpoch();
7979
8052
  const config = await security(epoch, previewKey);
7980
8053
  assertSessionEpoch(epoch);
7981
8054
  return normalizeEventComment(
7982
8055
  value2(
7983
8056
  await post(
7984
- `${path(eventId, id)}/moderate`,
8057
+ `${path(eventId, id2)}/moderate`,
7985
8058
  { status, revision, reason },
7986
8059
  config
7987
8060
  )
@@ -8565,9 +8638,9 @@ var matchFriendContacts = (phones, region) => write(
8565
8638
  security2
8566
8639
  )
8567
8640
  );
8568
- var getFriendProfile = async (id, section = "attending", cursor) => unwrap4(
8641
+ var getFriendProfile = async (id2, section = "attending", cursor) => unwrap4(
8569
8642
  await get(
8570
- `/customer/friends/${encodeURIComponent(id)}/profile`,
8643
+ `/customer/friends/${encodeURIComponent(id2)}/profile`,
8571
8644
  { params: { section, cursor } }
8572
8645
  )
8573
8646
  );
@@ -8597,28 +8670,28 @@ var value4 = (body) => {
8597
8670
  );
8598
8671
  return body.data.attributes;
8599
8672
  };
8600
- var passUrl = (id) => {
8601
- if (!Number.isSafeInteger(id) || id < 1)
8673
+ var passUrl = (id2) => {
8674
+ if (!Number.isSafeInteger(id2) || id2 < 1)
8602
8675
  throw new TtfError("Choose a pass to continue.", 422);
8603
- return `v1/account/multi-event-passes/${id}`;
8676
+ return `v1/account/multi-event-passes/${id2}`;
8604
8677
  };
8605
8678
  var getCustomerPasses = async (page2 = 1) => value4(
8606
8679
  await get("v1/account/multi-event-passes", {
8607
8680
  params: { page: page2, per_page: 20 }
8608
8681
  })
8609
8682
  );
8610
- var getCustomerPass = async (id) => value4(await get(passUrl(id)));
8611
- var getPassEvents = async (id, search = "", page2 = 1) => value4(
8612
- await get(`${passUrl(id)}/eligible-events`, {
8683
+ var getCustomerPass = async (id2) => value4(await get(passUrl(id2)));
8684
+ var getPassEvents = async (id2, search = "", page2 = 1) => value4(
8685
+ await get(`${passUrl(id2)}/eligible-events`, {
8613
8686
  params: { search, page: page2, per_page: 20 }
8614
8687
  })
8615
8688
  );
8616
- var getPassBookings = async (id, after) => value4(
8617
- await get(`${passUrl(id)}/redemptions`, {
8689
+ var getPassBookings = async (id2, after) => value4(
8690
+ await get(`${passUrl(id2)}/redemptions`, {
8618
8691
  params: after ? { after } : void 0
8619
8692
  })
8620
8693
  );
8621
- var redeemCustomerPass = async (id, eventId, idempotencyKey) => {
8694
+ var redeemCustomerPass = async (id2, eventId, idempotencyKey) => {
8622
8695
  const assertOwner = captureSessionAction();
8623
8696
  if (!Number.isSafeInteger(eventId) || eventId < 1 || !idempotencyKey || idempotencyKey.length > 64)
8624
8697
  throw new TtfError("Choose an event to use your pass for.", 422);
@@ -8626,13 +8699,13 @@ var redeemCustomerPass = async (id, eventId, idempotencyKey) => {
8626
8699
  assertOwner();
8627
8700
  return value4(
8628
8701
  await post(
8629
- `${passUrl(id)}/redeem`,
8702
+ `${passUrl(id2)}/redeem`,
8630
8703
  { event_id: eventId, idempotency_key: idempotencyKey },
8631
8704
  security2
8632
8705
  )
8633
8706
  );
8634
8707
  };
8635
- var cancelPassBooking = async (id, bookingId) => {
8708
+ var cancelPassBooking = async (id2, bookingId) => {
8636
8709
  const assertOwner = captureSessionAction();
8637
8710
  if (!Number.isSafeInteger(bookingId) || bookingId < 1)
8638
8711
  throw new TtfError("Choose a booking to cancel.", 422);
@@ -8640,7 +8713,7 @@ var cancelPassBooking = async (id, bookingId) => {
8640
8713
  assertOwner();
8641
8714
  value4(
8642
8715
  await post(
8643
- `${passUrl(id)}/redemptions/${bookingId}/cancel`,
8716
+ `${passUrl(id2)}/redemptions/${bookingId}/cancel`,
8644
8717
  {},
8645
8718
  security2
8646
8719
  )
@@ -8775,6 +8848,9 @@ var deleteAccount = async (proof) => {
8775
8848
  clearSession();
8776
8849
  return { deleted: true, teamsLeft: value6.teamsLeft };
8777
8850
  };
8851
+ var getFeaturedEvents = async (query = {}) => featuredEventsFromResponse(
8852
+ await get(ENDPOINTS.events.featured, { params: featuredQueryParams(query) })
8853
+ );
8778
8854
  var retiredStores = /* @__PURE__ */ new WeakSet();
8779
8855
  var retireCheckoutStore = (store) => {
8780
8856
  retiredStores.add(store);
@@ -9134,19 +9210,19 @@ var setExtraItemsWith = async (store, input) => {
9134
9210
  const accepted = acceptedAccommodationSelection(selection, result2);
9135
9211
  const quotes = { ...result2.quotes };
9136
9212
  const missing = Object.entries(accepted.accommodation).filter(
9137
- ([id]) => !quotes[id] && !result2.rejected[id]
9213
+ ([id2]) => !quotes[id2] && !result2.rejected[id2]
9138
9214
  );
9139
9215
  const fetched = await forCart(
9140
9216
  store,
9141
9217
  cart,
9142
9218
  Promise.all(
9143
9219
  missing.map(
9144
- async ([id, stay]) => [id, await quoteAccommodation(eventId, id, stay)]
9220
+ async ([id2, stay]) => [id2, await quoteAccommodation(eventId, id2, stay)]
9145
9221
  )
9146
9222
  )
9147
9223
  );
9148
- fetched.forEach(([id, quote]) => {
9149
- quotes[id] = quote;
9224
+ fetched.forEach(([id2, quote]) => {
9225
+ quotes[id2] = quote;
9150
9226
  });
9151
9227
  store.setState({
9152
9228
  extraItems: accepted,
@@ -10144,9 +10220,9 @@ var createEngine = (config) => {
10144
10220
  holdWaiverSigning: (index) => {
10145
10221
  if (orderIsFixed(store)) return null;
10146
10222
  lastHoldId += 1;
10147
- const id = lastHoldId;
10223
+ const id2 = lastHoldId;
10148
10224
  const cart = store.cartGeneration;
10149
- liveHolds.add(id);
10225
+ liveHolds.add(id2);
10150
10226
  store.setState((state) => {
10151
10227
  var _a2;
10152
10228
  return {
@@ -10154,12 +10230,12 @@ var createEngine = (config) => {
10154
10230
  };
10155
10231
  });
10156
10232
  return {
10157
- id,
10233
+ id: id2,
10158
10234
  cart,
10159
10235
  index,
10160
10236
  binding: waiverSigningBinding(store.getState(), index),
10161
10237
  release: () => {
10162
- if (!liveHolds.delete(id)) return;
10238
+ if (!liveHolds.delete(id2)) return;
10163
10239
  if (cart !== store.cartGeneration) return;
10164
10240
  store.setState((state) => {
10165
10241
  var _a2;
@@ -10229,8 +10305,8 @@ var providerPageMatchesReturn = (url2, prefix) => {
10229
10305
  var createProviderPages = (show) => {
10230
10306
  let sequence2 = 0;
10231
10307
  let pending2 = null;
10232
- const settle = (id, outcome) => {
10233
- if ((pending2 == null ? void 0 : pending2.id) !== id) return;
10308
+ const settle = (id2, outcome) => {
10309
+ if ((pending2 == null ? void 0 : pending2.id) !== id2) return;
10234
10310
  const resolve = pending2.resolve;
10235
10311
  pending2 = null;
10236
10312
  show(null);
@@ -10241,9 +10317,9 @@ var createProviderPages = (show) => {
10241
10317
  if (pending2)
10242
10318
  return Promise.reject(new Error("Another payment page is already open."));
10243
10319
  return new Promise((resolve) => {
10244
- const id = ++sequence2;
10245
- pending2 = { id, resolve };
10246
- show({ id, request: request2 });
10320
+ const id2 = ++sequence2;
10321
+ pending2 = { id: id2, resolve };
10322
+ show({ id: id2, request: request2 });
10247
10323
  });
10248
10324
  },
10249
10325
  settle,
@@ -10394,21 +10470,21 @@ var bundleFlowAvailable = (draft, catalog, catalogState) => {
10394
10470
  const removed = [];
10395
10471
  const reduced = [];
10396
10472
  const belowMinimum = [];
10397
- for (const [id, chosen] of Object.entries(draft.qty)) {
10473
+ for (const [id2, chosen] of Object.entries(draft.qty)) {
10398
10474
  if (!(chosen > 0)) continue;
10399
- const bundle = catalog.find((b) => b.id === id);
10475
+ const bundle = catalog.find((b) => b.id === id2);
10400
10476
  const { min, max } = bundle ? bundleQuantityRange(bundle) : { min: 0, max: 0 };
10401
10477
  if (!bundle || max === 0) {
10402
- delete qty[id];
10403
- removed.push(id);
10478
+ delete qty[id2];
10479
+ removed.push(id2);
10404
10480
  } else if (chosen < min) {
10405
- delete qty[id];
10406
- belowMinimum.push({ id, name: bundle.name, quantity: min });
10481
+ delete qty[id2];
10482
+ belowMinimum.push({ id: id2, name: bundle.name, quantity: min });
10407
10483
  } else if (chosen > max) {
10408
- qty[id] = max;
10484
+ qty[id2] = max;
10409
10485
  const { remaining } = bundle.availability;
10410
10486
  reduced.push({
10411
- id,
10487
+ id: id2,
10412
10488
  name: bundle.name,
10413
10489
  quantity: max,
10414
10490
  byStock: remaining !== null && remaining < bundle.maxQuantity
@@ -10585,28 +10661,28 @@ var createCardOwnership = () => {
10585
10661
  const listeners4 = /* @__PURE__ */ new Set();
10586
10662
  const emit = () => listeners4.forEach((listener) => listener());
10587
10663
  return {
10588
- register: (id) => {
10589
- if (!chosen && registered.length === 1 && registered[0] !== id)
10664
+ register: (id2) => {
10665
+ if (!chosen && registered.length === 1 && registered[0] !== id2)
10590
10666
  chosen = registered[0];
10591
- registered.push(id);
10667
+ registered.push(id2);
10592
10668
  emit();
10593
10669
  let done = false;
10594
10670
  return () => {
10595
10671
  if (done) return;
10596
10672
  done = true;
10597
- registered.splice(registered.indexOf(id), 1);
10598
- if (chosen === id || chosen && !registered.includes(chosen)) chosen = null;
10673
+ registered.splice(registered.indexOf(id2), 1);
10674
+ if (chosen === id2 || chosen && !registered.includes(chosen)) chosen = null;
10599
10675
  emit();
10600
10676
  };
10601
10677
  },
10602
- claim: (id) => {
10603
- if (!registered.includes(id) || chosen === id) return;
10604
- chosen = id;
10678
+ claim: (id2) => {
10679
+ if (!registered.includes(id2) || chosen === id2) return;
10680
+ chosen = id2;
10605
10681
  emit();
10606
10682
  },
10607
10683
  // A section not registered yet owns it when no other one is there, so a
10608
10684
  // single section never flashes "Continue paying here" while it mounts.
10609
- owns: (id) => registered.includes(id) ? chosen ? chosen === id : registered.every((other) => other === id) : registered.length === 0,
10685
+ owns: (id2) => registered.includes(id2) ? chosen ? chosen === id2 : registered.every((other) => other === id2) : registered.length === 0,
10610
10686
  subscribe: (listener) => {
10611
10687
  listeners4.add(listener);
10612
10688
  return () => listeners4.delete(listener);
@@ -11128,6 +11204,7 @@ var ttf = {
11128
11204
  },
11129
11205
  // --- checkout flow -------------------------------------------------------
11130
11206
  events: {
11207
+ featured: getFeaturedEvents,
11131
11208
  details: getEventDetails,
11132
11209
  tickets: getEventTickets,
11133
11210
  ticketsWithMeta: getEventTicketsWithMeta,
@@ -11316,6 +11393,7 @@ __export2(hooks_exports, {
11316
11393
  useEventCommentImage: () => useEventCommentImage,
11317
11394
  useEventComments: () => useEventComments,
11318
11395
  useEventDiscussion: () => useEventDiscussion,
11396
+ useFeaturedEvents: () => useFeaturedEvents,
11319
11397
  useFriendProfile: () => useFriendProfile,
11320
11398
  useFriends: () => useFriends,
11321
11399
  useHeldScopes: () => useHeldScopes,
@@ -12288,7 +12366,7 @@ var selectedAddOnDraft = (quantities, capture) => {
12288
12366
  return {
12289
12367
  selection,
12290
12368
  capture: Object.fromEntries(
12291
- Object.entries(capture).filter(([id]) => selection[id] > 0)
12369
+ Object.entries(capture).filter(([id2]) => selection[id2] > 0)
12292
12370
  )
12293
12371
  };
12294
12372
  };
@@ -12486,7 +12564,7 @@ var useSeatSelection = (eventId, checkout, onContinue) => {
12486
12564
  )
12487
12565
  );
12488
12566
  setGuestCounts(
12489
- (previous) => Object.fromEntries(Object.entries(previous).filter(([id]) => own.includes(id)))
12567
+ (previous) => Object.fromEntries(Object.entries(previous).filter(([id2]) => own.includes(id2)))
12490
12568
  );
12491
12569
  }, [eventId, checkout.store]);
12492
12570
  (0, import_react8.useEffect)(() => {
@@ -12700,13 +12778,13 @@ var whenConfirmerFree = () => checkoutStartLock.whenFree(CHECKOUT_START);
12700
12778
  var storeIds = /* @__PURE__ */ new WeakMap();
12701
12779
  var storeCount = 0;
12702
12780
  var storeIdentity = (store) => {
12703
- let id = storeIds.get(store);
12704
- if (!id) {
12781
+ let id2 = storeIds.get(store);
12782
+ if (!id2) {
12705
12783
  storeCount += 1;
12706
- id = `s${storeCount}`;
12707
- storeIds.set(store, id);
12784
+ id2 = `s${storeCount}`;
12785
+ storeIds.set(store, id2);
12708
12786
  }
12709
- return id;
12787
+ return id2;
12710
12788
  };
12711
12789
  var ticketHolderFor = (store) => ({
12712
12790
  kind: "tickets",
@@ -12886,11 +12964,11 @@ var useCheckout = (config) => {
12886
12964
  [gated]
12887
12965
  );
12888
12966
  const acceptCondition = (0, import_react9.useCallback)(
12889
- (id, accepted) => {
12967
+ (id2, accepted) => {
12890
12968
  var _a2;
12891
12969
  return engine.setAcceptedConditions({
12892
12970
  ...(_a2 = snapshot.acceptedConditions) != null ? _a2 : {},
12893
- [id]: accepted
12971
+ [id2]: accepted
12894
12972
  });
12895
12973
  },
12896
12974
  [engine, snapshot.acceptedConditions]
@@ -14081,7 +14159,7 @@ var useCheckoutPhoneIdentity = (options) => {
14081
14159
  const request2 = async (delivery2 = channel) => {
14082
14160
  if (busy || retryAfter > 0 || !options.eventId || !phone.trim() || delivery2 === "whatsapp" && !options.whatsappAvailable)
14083
14161
  return false;
14084
- const id = ++operation.current, eventId = options.eventId;
14162
+ const id2 = ++operation.current, eventId = options.eventId;
14085
14163
  setBusy(true);
14086
14164
  setError("");
14087
14165
  try {
@@ -14090,19 +14168,19 @@ var useCheckoutPhoneIdentity = (options) => {
14090
14168
  phone,
14091
14169
  channel: delivery2
14092
14170
  });
14093
- if (id !== operation.current || scope.current !== eventId) return false;
14171
+ if (id2 !== operation.current || scope.current !== eventId) return false;
14094
14172
  setChannel(delivery2);
14095
14173
  setSent(true);
14096
14174
  setRetryAfter(result3.cooldownSeconds);
14097
14175
  return true;
14098
14176
  } catch (caught) {
14099
- if (id === operation.current)
14177
+ if (id2 === operation.current)
14100
14178
  setError(
14101
14179
  caught instanceof Error ? caught.message : "Unable to send a code. Try again."
14102
14180
  );
14103
14181
  return false;
14104
14182
  } finally {
14105
- if (id === operation.current) setBusy(false);
14183
+ if (id2 === operation.current) setBusy(false);
14106
14184
  }
14107
14185
  };
14108
14186
  const complete = (result3) => {
@@ -14114,7 +14192,7 @@ var useCheckoutPhoneIdentity = (options) => {
14114
14192
  };
14115
14193
  const verify = async (code) => {
14116
14194
  if (busy || !sent || !options.eventId) return false;
14117
- const id = ++operation.current, eventId = options.eventId;
14195
+ const id2 = ++operation.current, eventId = options.eventId;
14118
14196
  setBusy(true);
14119
14197
  setError("");
14120
14198
  try {
@@ -14124,21 +14202,21 @@ var useCheckoutPhoneIdentity = (options) => {
14124
14202
  code,
14125
14203
  channel
14126
14204
  });
14127
- if (id !== operation.current || scope.current !== eventId) return false;
14205
+ if (id2 !== operation.current || scope.current !== eventId) return false;
14128
14206
  pending2.current = result3;
14129
14207
  if (result3.knownCustomer && getConfig().accountAuth) {
14130
14208
  const profile = await ttf.auth.loginWithVerifiedPhone({
14131
14209
  eventId,
14132
14210
  phoneVerificationToken: result3.phoneVerificationToken
14133
14211
  });
14134
- if (id !== operation.current || scope.current !== eventId) return false;
14212
+ if (id2 !== operation.current || scope.current !== eventId) return false;
14135
14213
  queryClient.setQueryData(sessionScopedQueryKey(ttfKeys.profile), profile);
14136
14214
  } else if (result3.knownCustomer && !getConfig().clientSecret) {
14137
14215
  const admitted = await ttf.auth.loginCheckoutWithVerifiedPhone(
14138
14216
  eventId,
14139
14217
  result3.phoneVerificationToken
14140
14218
  );
14141
- if (id !== operation.current || scope.current !== eventId) return false;
14219
+ if (id2 !== operation.current || scope.current !== eventId) return false;
14142
14220
  if (admitted.twoFactorRequired && admitted.challengeId) {
14143
14221
  setChallenge({
14144
14222
  eventId,
@@ -14154,7 +14232,7 @@ var useCheckoutPhoneIdentity = (options) => {
14154
14232
  complete(result3);
14155
14233
  return true;
14156
14234
  } catch (caught) {
14157
- if (id !== operation.current) return false;
14235
+ if (id2 !== operation.current) return false;
14158
14236
  const next = readTwoFactorChallenge(caught);
14159
14237
  if (next) setChallenge(next);
14160
14238
  else
@@ -14163,18 +14241,18 @@ var useCheckoutPhoneIdentity = (options) => {
14163
14241
  );
14164
14242
  return false;
14165
14243
  } finally {
14166
- if (id === operation.current) setBusy(false);
14244
+ if (id2 === operation.current) setBusy(false);
14167
14245
  }
14168
14246
  };
14169
14247
  const verifyTwoFactor2 = async (code) => {
14170
14248
  if (busy || !challenge || !pending2.current) return;
14171
- const id = ++operation.current, result3 = pending2.current;
14249
+ const id2 = ++operation.current, result3 = pending2.current;
14172
14250
  setBusy(true);
14173
14251
  setError("");
14174
14252
  try {
14175
14253
  if ("eventId" in challenge) {
14176
14254
  const admitted = await ttf.auth.verifyCheckoutTwoFactor(challenge, code);
14177
- if (id !== operation.current) return;
14255
+ if (id2 !== operation.current) return;
14178
14256
  if (!admitted.authenticated)
14179
14257
  throw new Error("Sign-in could not confirm your checkout. Try again.");
14180
14258
  complete(result3);
@@ -14185,37 +14263,37 @@ var useCheckoutPhoneIdentity = (options) => {
14185
14263
  challenge.csrfToken,
14186
14264
  challenge.sessionEpoch
14187
14265
  );
14188
- if (id !== operation.current) return;
14266
+ if (id2 !== operation.current) return;
14189
14267
  queryClient.setQueryData(sessionScopedQueryKey(ttfKeys.profile), profile);
14190
14268
  complete(result3);
14191
14269
  } catch (caught) {
14192
- if (id === operation.current)
14270
+ if (id2 === operation.current)
14193
14271
  setError(
14194
14272
  caught instanceof Error ? caught.message : "Unable to verify this code. Try again."
14195
14273
  );
14196
14274
  } finally {
14197
- if (id === operation.current) setBusy(false);
14275
+ if (id2 === operation.current) setBusy(false);
14198
14276
  }
14199
14277
  };
14200
14278
  const sendTwoFactorSms2 = async () => {
14201
14279
  if (busy || retryAfter > 0 || !(challenge == null ? void 0 : challenge.smsAvailable)) return false;
14202
- const id = ++operation.current;
14280
+ const id2 = ++operation.current;
14203
14281
  setBusy(true);
14204
14282
  setError("");
14205
14283
  try {
14206
14284
  if ("eventId" in challenge) await ttf.auth.sendCheckoutTwoFactorSms(challenge);
14207
14285
  else await ttf.auth.sendTwoFactorSms(challenge.csrfToken, challenge.sessionEpoch);
14208
- if (id !== operation.current) return false;
14286
+ if (id2 !== operation.current) return false;
14209
14287
  setRetryAfter(60);
14210
14288
  return true;
14211
14289
  } catch (caught) {
14212
- if (id === operation.current)
14290
+ if (id2 === operation.current)
14213
14291
  setError(
14214
14292
  caught instanceof Error ? caught.message : "Unable to send a code. Try again."
14215
14293
  );
14216
14294
  return false;
14217
14295
  } finally {
14218
- if (id === operation.current) setBusy(false);
14296
+ if (id2 === operation.current) setBusy(false);
14219
14297
  }
14220
14298
  };
14221
14299
  const cancel = (0, import_react17.useCallback)(async () => {
@@ -14538,10 +14616,10 @@ var useAccommodationSelection = (eventId, checkout) => {
14538
14616
  const update = (room, patch2) => {
14539
14617
  var _a2;
14540
14618
  if (!active2() || checkout.isBusy || checkout.orderFixed) return;
14541
- const id = String(room.room_type_id);
14619
+ const id2 = String(room.room_type_id);
14542
14620
  checkout.setExtraDraft({ accommodation: {
14543
14621
  ...draft.accommodation,
14544
- [id]: { ...(_a2 = draft.accommodation[id]) != null ? _a2 : defaultAccommodationStay(room), ...patch2 }
14622
+ [id2]: { ...(_a2 = draft.accommodation[id2]) != null ? _a2 : defaultAccommodationStay(room), ...patch2 }
14545
14623
  } });
14546
14624
  setError("");
14547
14625
  };
@@ -14652,8 +14730,8 @@ var useTicketRefund = (ticketHash, onSubmitted) => {
14652
14730
  error: draft.error,
14653
14731
  commandPending: Boolean(draft.command && !draft.result),
14654
14732
  submit,
14655
- select: (id) => {
14656
- if (!draft.command && !draft.busy) update({ selected: id, confirmed: false });
14733
+ select: (id2) => {
14734
+ if (!draft.command && !draft.busy) update({ selected: id2, confirmed: false });
14657
14735
  },
14658
14736
  confirm: (confirmed) => {
14659
14737
  if (!draft.command && !draft.busy) update({ confirmed });
@@ -14895,17 +14973,17 @@ var useInterestSelection = () => {
14895
14973
  categories,
14896
14974
  activeCategory,
14897
14975
  draftError: state.error,
14898
- toggleCategory: (id) => {
14899
- if (categories.some((category) => category.id === id))
14976
+ toggleCategory: (id2) => {
14977
+ if (categories.some((category) => category.id === id2))
14900
14978
  update({
14901
- selection: toggleInterestCategory(selection, id),
14979
+ selection: toggleInterestCategory(selection, id2),
14902
14980
  error: void 0
14903
14981
  });
14904
14982
  },
14905
- toggleSubcategory: (id) => {
14906
- if (activeCategory == null ? void 0 : activeCategory.subcategories.some((child) => child.id === id))
14983
+ toggleSubcategory: (id2) => {
14984
+ if (activeCategory == null ? void 0 : activeCategory.subcategories.some((child) => child.id === id2))
14907
14985
  update({
14908
- selection: toggleInterestSubcategory(selection, activeCategory.id, id),
14986
+ selection: toggleInterestSubcategory(selection, activeCategory.id, id2),
14909
14987
  error: void 0
14910
14988
  });
14911
14989
  },
@@ -14917,8 +14995,8 @@ var useInterestSelection = () => {
14917
14995
  var useWordPostReaction = (postId, enabled = true) => {
14918
14996
  var _a, _b;
14919
14997
  const session = useAuthSession();
14920
- const id = String(postId);
14921
- const owner = `${session.sessionScope}:${id}`;
14998
+ const id2 = String(postId);
14999
+ const owner = `${session.sessionScope}:${id2}`;
14922
15000
  const current4 = (0, import_react23.useRef)(owner);
14923
15001
  current4.current = owner;
14924
15002
  const pending2 = (0, import_react23.useRef)(null);
@@ -14930,12 +15008,12 @@ var useWordPostReaction = (postId, enabled = true) => {
14930
15008
  const configuration2 = getConfig();
14931
15009
  const epoch = getSessionEpoch();
14932
15010
  const signedIn = session.isAuthenticated && session.buyerId !== null;
14933
- const key4 = ["ttf", "word-post-reaction", id];
15011
+ const key4 = ["ttf", "word-post-reaction", id2];
14934
15012
  const client = (0, import_react_query13.useQueryClient)();
14935
15013
  const query = useSessionQuery({
14936
15014
  queryKey: key4,
14937
- queryFn: () => getWordPostReaction(id),
14938
- enabled: enabled && signedIn && /^[1-9][0-9]*$/.test(id),
15015
+ queryFn: () => getWordPostReaction(id2),
15016
+ enabled: enabled && signedIn && /^[1-9][0-9]*$/.test(id2),
14939
15017
  retry: false
14940
15018
  });
14941
15019
  const owned = () => current4.current === owner && session.sessionScope === getSessionCacheScope() && epoch === getSessionEpoch() && configuration2 === getConfig();
@@ -14945,7 +15023,7 @@ var useWordPostReaction = (postId, enabled = true) => {
14945
15023
  pending2.current = owner;
14946
15024
  setStored({ owner, busy: true });
14947
15025
  try {
14948
- const result2 = await setWordPostReaction(id, reaction, query.data.revision);
15026
+ const result2 = await setWordPostReaction(id2, reaction, query.data.revision);
14949
15027
  if (!owned()) return;
14950
15028
  client.setQueryData(sessionScopedQueryKey(key4, session.sessionScope), result2);
14951
15029
  setStored({ owner, busy: false });
@@ -15154,17 +15232,17 @@ var useFriends = (section = "accepted") => {
15154
15232
  if (!settings) return;
15155
15233
  const result2 = await actions.perform(
15156
15234
  ["settings", settings],
15157
- (id) => saveFriendSettings(settings, id)
15235
+ (id2) => saveFriendSettings(settings, id2)
15158
15236
  );
15159
15237
  if (result2) update({ settings: result2 });
15160
15238
  return result2;
15161
15239
  }
15162
15240
  };
15163
15241
  };
15164
- var useFriendProfile = (id, section = "attending", cursor) => useSessionQuery({
15165
- queryKey: [...key3, "profile", id, section, cursor],
15166
- queryFn: () => getFriendProfile(id, section, cursor),
15167
- enabled: Boolean(id),
15242
+ var useFriendProfile = (id2, section = "attending", cursor) => useSessionQuery({
15243
+ queryKey: [...key3, "profile", id2, section, cursor],
15244
+ queryFn: () => getFriendProfile(id2, section, cursor),
15245
+ enabled: Boolean(id2),
15168
15246
  retry: false
15169
15247
  });
15170
15248
  var useSavedEvents = (cursor, enabled = true) => {
@@ -15181,7 +15259,7 @@ var useSavedEvents = (cursor, enabled = true) => {
15181
15259
  error: actions.error,
15182
15260
  save: (eventId, saved, revision) => actions.perform(
15183
15261
  ["saved", eventId, saved, revision],
15184
- (id) => setSavedEvent(eventId, saved, revision, id)
15262
+ (id2) => setSavedEvent(eventId, saved, revision, id2)
15185
15263
  )
15186
15264
  };
15187
15265
  };
@@ -15199,7 +15277,7 @@ var useSavedEvent = (eventId, enabled = true) => {
15199
15277
  error: actions.error,
15200
15278
  toggle: () => query.data ? actions.perform(
15201
15279
  ["saved", eventId, !query.data.saved, query.data.revision],
15202
- (id) => setSavedEvent(eventId, !query.data.saved, query.data.revision, id)
15280
+ (id2) => setSavedEvent(eventId, !query.data.saved, query.data.revision, id2)
15203
15281
  ) : Promise.resolve(void 0)
15204
15282
  };
15205
15283
  };
@@ -15687,11 +15765,11 @@ var useTicketGift = (ticketHash, onTicketsChanged) => {
15687
15765
  if (!state.busy && !state.submitted)
15688
15766
  update({ command: void 0, error: void 0 });
15689
15767
  },
15690
- toggleAddOn: (id) => {
15768
+ toggleAddOn: (id2) => {
15691
15769
  var _a;
15692
- if (((_a = query.data) == null ? void 0 : _a.select_add_ons) && query.data.add_ons.some((item) => item.id === id))
15770
+ if (((_a = query.data) == null ? void 0 : _a.select_add_ons) && query.data.add_ons.some((item) => item.id === id2))
15693
15771
  edit({
15694
- add_on_ids: state.draft.add_on_ids.includes(id) ? state.draft.add_on_ids.filter((item) => item !== id) : [...state.draft.add_on_ids, id]
15772
+ add_on_ids: state.draft.add_on_ids.includes(id2) ? state.draft.add_on_ids.filter((item) => item !== id2) : [...state.draft.add_on_ids, id2]
15695
15773
  });
15696
15774
  }
15697
15775
  };
@@ -16174,6 +16252,20 @@ var useAccountDeletion = () => {
16174
16252
  }
16175
16253
  };
16176
16254
  };
16255
+ var useFeaturedEvents = (query = {}, options) => {
16256
+ const { latitude, longitude, country } = query;
16257
+ return useSessionQuery({
16258
+ ...options,
16259
+ queryKey: [
16260
+ "ttf",
16261
+ "featured-events",
16262
+ latitude != null ? latitude : null,
16263
+ longitude != null ? longitude : null,
16264
+ country != null ? country : ""
16265
+ ],
16266
+ queryFn: () => ttf.events.featured({ latitude, longitude, country })
16267
+ });
16268
+ };
16177
16269
  var accountEn = {
16178
16270
  "account.loading_your_interests": "Loading your interests\u2026",
16179
16271
  "account.your_interests_could_not_load": "Your interests could not load.",
@@ -16968,6 +17060,180 @@ Object.assign(accountEs, {
16968
17060
  "account.we_re_finishing_a_change_to_your_account_wait_a_moment_then_reload_the_page": "Estamos terminando un cambio en tu cuenta. Espera un momento y vuelve a cargar la p\xE1gina.",
16969
17061
  "account.we_could_not_finish_deleting_your_account_sign_in_and_try_again_or_contact_ticket_fairy_support": "No pudimos terminar de eliminar tu cuenta. Inicia sesi\xF3n e int\xE9ntalo de nuevo, o contacta con el soporte de Ticket Fairy."
16970
17062
  });
17063
+ Object.assign(accountEn, {
17064
+ "account.you": " (you)",
17065
+ "account.edited": " \xB7 edited",
17066
+ "account.count_reports": " \xB7 {{count}} reports",
17067
+ "account.abuse_or_harassment": "Abuse or harassment",
17068
+ "account.actions_for_comment_by_name": "Actions for comment by {{name}}",
17069
+ "account.approve": "Approve",
17070
+ "account.approve_comment": "Approve comment",
17071
+ "account.awaiting_review": "Awaiting review",
17072
+ "account.be_the_first_to_leave_a_comment": "Be the first to leave a comment.",
17073
+ "account.block_author": "Block author",
17074
+ "account.block_this_person": "Block this person",
17075
+ "account.blocked_authors_count": "Blocked authors ({{count}})",
17076
+ "account.blocked_people": "Blocked people",
17077
+ "account.cancel": "Cancel",
17078
+ "account.close_menu": "Close menu",
17079
+ "account.comment_deleted": "Comment deleted.",
17080
+ "account.comment_moderation": "Comment moderation",
17081
+ "account.comment_no_longer_available": "Comment no longer available.",
17082
+ "account.comment_removed": "Comment removed",
17083
+ "account.comments_and_photos_are_reviewed_before_publication_keep_the_conversation_respectful": "Comments and photos are reviewed before publication. Keep the conversation respectful.",
17084
+ "account.contact_support_about_this_discussion": "Contact support about this discussion",
17085
+ "account.delete": "Delete",
17086
+ "account.delete_comment": "Delete comment",
17087
+ "account.delete_your_comment": "Delete your comment?",
17088
+ "account.delete_your_comment_and_its_image_this_cannot_be_undone": "Delete your comment and its image? This cannot be undone.",
17089
+ "account.discussion": "Discussion",
17090
+ "account.dislike_comment": "Dislike comment",
17091
+ "account.dislike_comment_count_dislikes": "Dislike comment, {{count}} dislikes",
17092
+ "account.earlier_comments": "Earlier comments",
17093
+ "account.edit": "Edit",
17094
+ "account.edit_your_comment": "Edit your comment",
17095
+ "account.editing_your_comment": "Editing your comment",
17096
+ "account.enter_your_comment": "Enter your comment\u2026",
17097
+ "account.event_comments": "Event comments",
17098
+ "account.harassment_or_abuse": "Harassment or abuse",
17099
+ "account.hidden": "Hidden",
17100
+ "account.hidden_by_a_moderator": "Hidden by a moderator",
17101
+ "account.hide": "Hide",
17102
+ "account.hide_comment": "Hide comment",
17103
+ "account.like_comment": "Like comment",
17104
+ "account.like_comment_count_likes": "Like comment, {{count}} likes",
17105
+ "account.load_earlier_comments": "Load earlier comments",
17106
+ "account.loading_comments": "Loading comments\u2026",
17107
+ "account.moderate_comment": "Moderate comment",
17108
+ "account.moderation_reason": "Moderation reason",
17109
+ "account.need_help_contact_support": "Need help? Contact support",
17110
+ "account.no_comments_awaiting_review": "No comments awaiting review.",
17111
+ "account.no_unresolved_reports": "No unresolved reports.",
17112
+ "account.pending": "Pending",
17113
+ "account.post_comment": "Post comment",
17114
+ "account.reason": "Reason",
17115
+ "account.report": "Report",
17116
+ "account.report_comment": "Report comment",
17117
+ "account.report_reason": "Report reason",
17118
+ "account.report_this_comment_to_event_moderators": "Report this comment to event moderators.",
17119
+ "account.reported": "Reported",
17120
+ "account.reports": "Reports",
17121
+ "account.save": "Save",
17122
+ "account.save_comment": "Save comment",
17123
+ "account.save_for_review": "Save for review",
17124
+ "account.send": "Send",
17125
+ "account.send_report": "Send report",
17126
+ "account.sign_in_to_comment": "Sign in to comment",
17127
+ "account.sign_in_to_leave_a_comment": "Sign in to leave a comment",
17128
+ "account.spam": "Spam",
17129
+ "account.start_the_conversation_comments_appear_after_review": "Start the conversation. Comments appear after review.",
17130
+ "account.unblock_name": "Unblock {{name}}",
17131
+ "account.unsafe_content": "Unsafe content",
17132
+ "account.why_should_this_comment_be_approved": "Why should this comment be approved?",
17133
+ "account.why_should_this_comment_be_hidden": "Why should this comment be hidden?",
17134
+ "account.you_won_t_see_their_comments_you_can_unblock_them_from_blocked_people": "You won\u2019t see their comments. You can unblock them from Blocked people.",
17135
+ "account.your_comment": "Your comment",
17136
+ "account.your_comment_will_be_removed_from_this_conversation": "Your comment will be removed from this conversation.",
17137
+ "account.count_replies_reply": "{{count}} replies \xB7 Reply",
17138
+ "account.count_reply_reply": "{{count}} reply \xB7 Reply",
17139
+ "account.only_an_event_administrator_can_moderate_comments": "Only an event administrator can moderate comments.",
17140
+ "account.choose_approve_or_hide_and_provide_a_moderation_reason": "Choose approve or hide and provide a moderation reason.",
17141
+ "account.deleted_comments_cannot_be_restored": "Deleted comments cannot be restored.",
17142
+ "account.you_cannot_view_that_moderation_queue": "You cannot view that moderation queue.",
17143
+ "account.this_comment_changed_refresh_before_trying_again": "This comment changed. Refresh before trying again.",
17144
+ "account.comment_not_found": "Comment not found.",
17145
+ "account.unable_to_update_comments_please_try_again": "Unable to update comments. Please try again.",
17146
+ "account.unable_to_update_comments": "Unable to update comments.",
17147
+ "account.comment_approved": "Comment approved.",
17148
+ "account.comment_hidden": "Comment hidden."
17149
+ });
17150
+ Object.assign(accountEs, {
17151
+ "account.you": " (t\xFA)",
17152
+ "account.edited": " \xB7 editado",
17153
+ "account.count_reports": " \xB7 {{count}} reportes",
17154
+ "account.abuse_or_harassment": "Abuso o acoso",
17155
+ "account.actions_for_comment_by_name": "Acciones del comentario de {{name}}",
17156
+ "account.approve": "Aprobar",
17157
+ "account.approve_comment": "Aprobar comentario",
17158
+ "account.awaiting_review": "Pendiente de revisi\xF3n",
17159
+ "account.be_the_first_to_leave_a_comment": "S\xE9 la primera persona en dejar un comentario.",
17160
+ "account.block_author": "Bloquear autor",
17161
+ "account.block_this_person": "Bloquear a esta persona",
17162
+ "account.blocked_authors_count": "Autores bloqueados ({{count}})",
17163
+ "account.blocked_people": "Personas bloqueadas",
17164
+ "account.cancel": "Cancelar",
17165
+ "account.close_menu": "Cerrar men\xFA",
17166
+ "account.comment_deleted": "Comentario eliminado.",
17167
+ "account.comment_moderation": "Moderaci\xF3n de comentarios",
17168
+ "account.comment_no_longer_available": "El comentario ya no est\xE1 disponible.",
17169
+ "account.comment_removed": "Comentario eliminado",
17170
+ "account.comments_and_photos_are_reviewed_before_publication_keep_the_conversation_respectful": "Los comentarios y las fotos se revisan antes de publicarse. Mant\xE9n una conversaci\xF3n respetuosa.",
17171
+ "account.contact_support_about_this_discussion": "Contactar a soporte sobre esta conversaci\xF3n",
17172
+ "account.delete": "Eliminar",
17173
+ "account.delete_comment": "Eliminar comentario",
17174
+ "account.delete_your_comment": "\xBFEliminar tu comentario?",
17175
+ "account.delete_your_comment_and_its_image_this_cannot_be_undone": "\xBFEliminar tu comentario y su imagen? Esta acci\xF3n no se puede deshacer.",
17176
+ "account.discussion": "Conversaci\xF3n",
17177
+ "account.dislike_comment": "No me gusta el comentario",
17178
+ "account.dislike_comment_count_dislikes": "No me gusta el comentario, {{count}} no me gusta",
17179
+ "account.earlier_comments": "Comentarios anteriores",
17180
+ "account.edit": "Editar",
17181
+ "account.edit_your_comment": "Edita tu comentario",
17182
+ "account.editing_your_comment": "Editando tu comentario",
17183
+ "account.enter_your_comment": "Introduce tu comentario\u2026",
17184
+ "account.event_comments": "Comentarios del evento",
17185
+ "account.harassment_or_abuse": "Acoso o abuso",
17186
+ "account.hidden": "Oculto",
17187
+ "account.hidden_by_a_moderator": "Oculto por un moderador",
17188
+ "account.hide": "Ocultar",
17189
+ "account.hide_comment": "Ocultar comentario",
17190
+ "account.like_comment": "Me gusta el comentario",
17191
+ "account.like_comment_count_likes": "Me gusta el comentario, {{count}} me gusta",
17192
+ "account.load_earlier_comments": "Cargar comentarios anteriores",
17193
+ "account.loading_comments": "Cargando comentarios\u2026",
17194
+ "account.moderate_comment": "Moderar comentario",
17195
+ "account.moderation_reason": "Motivo de moderaci\xF3n",
17196
+ "account.need_help_contact_support": "\xBFNecesitas ayuda? Contacta a soporte",
17197
+ "account.no_comments_awaiting_review": "No hay comentarios pendientes de revisi\xF3n.",
17198
+ "account.no_unresolved_reports": "No hay reportes sin resolver.",
17199
+ "account.pending": "Pendientes",
17200
+ "account.post_comment": "Publicar comentario",
17201
+ "account.reason": "Motivo",
17202
+ "account.report": "Reportar",
17203
+ "account.report_comment": "Reportar comentario",
17204
+ "account.report_reason": "Motivo del reporte",
17205
+ "account.report_this_comment_to_event_moderators": "Reporta este comentario a los moderadores del evento.",
17206
+ "account.reported": "Reportados",
17207
+ "account.reports": "Reportes",
17208
+ "account.save": "Guardar",
17209
+ "account.save_comment": "Guardar comentario",
17210
+ "account.save_for_review": "Guardar para revisi\xF3n",
17211
+ "account.send": "Enviar",
17212
+ "account.send_report": "Enviar reporte",
17213
+ "account.sign_in_to_comment": "Inicia sesi\xF3n para comentar",
17214
+ "account.sign_in_to_leave_a_comment": "Inicia sesi\xF3n para dejar un comentario",
17215
+ "account.spam": "Spam",
17216
+ "account.start_the_conversation_comments_appear_after_review": "Inicia la conversaci\xF3n. Los comentarios aparecen despu\xE9s de revisarse.",
17217
+ "account.unblock_name": "Desbloquear a {{name}}",
17218
+ "account.unsafe_content": "Contenido peligroso",
17219
+ "account.why_should_this_comment_be_approved": "\xBFPor qu\xE9 debe aprobarse este comentario?",
17220
+ "account.why_should_this_comment_be_hidden": "\xBFPor qu\xE9 debe ocultarse este comentario?",
17221
+ "account.you_won_t_see_their_comments_you_can_unblock_them_from_blocked_people": "No ver\xE1s sus comentarios. Puedes desbloquear a esta persona desde Personas bloqueadas.",
17222
+ "account.your_comment": "Tu comentario",
17223
+ "account.your_comment_will_be_removed_from_this_conversation": "Tu comentario se eliminar\xE1 de esta conversaci\xF3n.",
17224
+ "account.count_replies_reply": "{{count}} respuestas \xB7 Responder",
17225
+ "account.count_reply_reply": "{{count}} respuesta \xB7 Responder",
17226
+ "account.only_an_event_administrator_can_moderate_comments": "Solo un administrador del evento puede moderar comentarios.",
17227
+ "account.choose_approve_or_hide_and_provide_a_moderation_reason": "Elige aprobar u ocultar e indica un motivo de moderaci\xF3n.",
17228
+ "account.deleted_comments_cannot_be_restored": "Los comentarios eliminados no se pueden restaurar.",
17229
+ "account.you_cannot_view_that_moderation_queue": "No puedes ver esa lista de moderaci\xF3n.",
17230
+ "account.this_comment_changed_refresh_before_trying_again": "Este comentario cambi\xF3. Actualiza antes de volver a intentarlo.",
17231
+ "account.comment_not_found": "No se encontr\xF3 el comentario.",
17232
+ "account.unable_to_update_comments_please_try_again": "No se pudieron actualizar los comentarios. Int\xE9ntalo de nuevo.",
17233
+ "account.unable_to_update_comments": "No se pudieron actualizar los comentarios.",
17234
+ "account.comment_approved": "Comentario aprobado.",
17235
+ "account.comment_hidden": "Comentario oculto."
17236
+ });
16971
17237
  var en = {
16972
17238
  "auth.completionAgree": "I agree to the Terms of Service and Privacy Policy.",
16973
17239
  "auth.completionTerms": "Read Terms of Service",
@@ -18861,8 +19127,8 @@ var useCheckout2 = (opts = {}) => useCheckout({
18861
19127
 
18862
19128
  // src/storage.ts
18863
19129
  var import_react_native_mmkv = require("react-native-mmkv");
18864
- var createMmkvStorage = (id = "tf-checkout") => {
18865
- const mmkv = new import_react_native_mmkv.MMKV({ id });
19130
+ var createMmkvStorage = (id2 = "tf-checkout") => {
19131
+ const mmkv = new import_react_native_mmkv.MMKV({ id: id2 });
18866
19132
  return {
18867
19133
  getItem: (key4) => {
18868
19134
  var _a;
@@ -19431,9 +19697,9 @@ var PaymentMethods = ({
19431
19697
  Input,
19432
19698
  {
19433
19699
  value: extraValue != null ? extraValue : "",
19434
- onChangeText: (text3) => !frozen && (onExtraChange == null ? void 0 : onExtraChange(
19700
+ onChangeText: (text4) => !frozen && (onExtraChange == null ? void 0 : onExtraChange(
19435
19701
  option.value,
19436
- option.extra === "phoneNumber" ? { phoneNumber: text3 } : { cashtag: text3 }
19702
+ option.extra === "phoneNumber" ? { phoneNumber: text4 } : { cashtag: text4 }
19437
19703
  )),
19438
19704
  placeholder: option.extra === "phoneNumber" ? "e.g. 081234567890" : "$cashtag",
19439
19705
  keyboardType: option.extra === "phoneNumber" ? "phone-pad" : "default",
@@ -21996,7 +22262,7 @@ var Accommodation = ({ eventId }) => {
21996
22262
  const checkout = useCheckoutContext();
21997
22263
  const flow = hooks_exports.useAccommodationSelection(eventId, checkout);
21998
22264
  const theme = useTheme();
21999
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
22265
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
22000
22266
  if (flow.query.isLoading) return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Loader, {});
22001
22267
  if (!flow.rooms.length && !flow.error) return null;
22002
22268
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Card, { children: [
@@ -22005,11 +22271,11 @@ var Accommodation = ({ eventId }) => {
22005
22271
  flow.query.isError && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Button, { variant: "ghost", onPress: () => void flow.query.refetch(), children: "Try again" }),
22006
22272
  flow.rooms.map((room) => {
22007
22273
  var _a, _b, _c;
22008
- const id = String(room.room_type_id);
22274
+ const id2 = String(room.room_type_id);
22009
22275
  const stay = flow.stay(room);
22010
- const quote = flow.quotes[id];
22276
+ const quote = flow.quotes[id2];
22011
22277
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native24.View, { style: styles7.room, children: [
22012
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native24.Text, { style: [text3, styles7.title], children: [
22278
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native24.Text, { style: [text4, styles7.title], children: [
22013
22279
  room.property_name,
22014
22280
  " \xB7 ",
22015
22281
  room.name
@@ -22025,7 +22291,7 @@ var Accommodation = ({ eventId }) => {
22025
22291
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Field, { label: "Guest names (optional, one per line)", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Input, { multiline: true, accessibilityLabel: `Guest names for ${room.name}`, value: ((_a = stay.occupants) != null ? _a : []).map((person) => person.name).join("\n"), editable: !flow.busy, onChangeText: (value6) => flow.update(room, { occupants: value6.split("\n").map((name) => ({ name })) }) }) }),
22026
22292
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(MutedText, { children: room.cancellation_policy ? `Free cancellation ${room.cancellation_policy.free_cancel_days} or more days before check-in. ${room.cancellation_policy.partial_refund_pct}% refund ${room.cancellation_policy.partial_refund_days} or more days before check-in; no refund after that.` : "Fully refundable under the property cancellation policy." }),
22027
22293
  !!quote && !flow.dirty && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
22028
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native24.Text, { style: text3, children: (_b = quote.total_formatted) != null ? _b : quote.total_price_formatted }),
22294
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native24.Text, { style: text4, children: (_b = quote.total_formatted) != null ? _b : quote.total_price_formatted }),
22029
22295
  (_c = quote.charges) == null ? void 0 : _c.map((charge, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(MutedText, { children: [
22030
22296
  charge.name,
22031
22297
  ": ",
@@ -22034,8 +22300,8 @@ var Accommodation = ({ eventId }) => {
22034
22300
  ] }, index))
22035
22301
  ] })
22036
22302
  ] }),
22037
- !!flow.rejections[id] && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ErrorText, { children: flow.rejections[id].message })
22038
- ] }, id);
22303
+ !!flow.rejections[id2] && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ErrorText, { children: flow.rejections[id2].message })
22304
+ ] }, id2);
22039
22305
  }),
22040
22306
  flow.rooms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Button, { loading: checkout.isBusy, disabled: flow.busy, onPress: () => void flow.save(), children: flow.dirty ? "Save accommodation" : "Refresh accommodation" }),
22041
22307
  flow.dirty && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Button, { variant: "ghost", disabled: flow.busy, onPress: flow.cancel, children: "Discard changes" })
@@ -22244,14 +22510,14 @@ var Payment = ({
22244
22510
  );
22245
22511
  }
22246
22512
  let req = { method: "auto" };
22247
- const id = selectedOption == null ? void 0 : selectedOption.id;
22248
- if (isFree || !id) req = { method: "auto" };
22249
- else if (id.kind === "xenditEWallet")
22250
- req = { method: "xenditEWallet", walletKey: id.walletKey, extra: extras[selected] };
22251
- else if (id.kind === "redirect")
22252
- req = { method: "redirect", methodType: id.methodType };
22253
- else if (id.kind === "paymentPlan") req = { method: "paymentPlan", useSavedCard: reuseSavedCard };
22254
- else req = { method: id.kind };
22513
+ const id2 = selectedOption == null ? void 0 : selectedOption.id;
22514
+ if (isFree || !id2) req = { method: "auto" };
22515
+ else if (id2.kind === "xenditEWallet")
22516
+ req = { method: "xenditEWallet", walletKey: id2.walletKey, extra: extras[selected] };
22517
+ else if (id2.kind === "redirect")
22518
+ req = { method: "redirect", methodType: id2.methodType };
22519
+ else if (id2.kind === "paymentPlan") req = { method: "paymentPlan", useSavedCard: reuseSavedCard };
22520
+ else req = { method: id2.kind };
22255
22521
  checkout.placeOrder(
22256
22522
  req,
22257
22523
  usesOwnCardField ? {
@@ -23188,12 +23454,12 @@ var RewardsView = ({
23188
23454
  const share = () => {
23189
23455
  var _a2;
23190
23456
  flow.assertCurrent();
23191
- const text3 = buildShareText(plan.primary, {
23457
+ const text4 = buildShareText(plan.primary, {
23192
23458
  shareLink: rewards.share_link,
23193
23459
  shareMessage: rewards.share_message
23194
23460
  });
23195
23461
  import_react_native32.Share.share({
23196
- message: text3,
23462
+ message: text4,
23197
23463
  url: (_a2 = card.imageUrl) != null ? _a2 : rewards.share_link
23198
23464
  }).catch(() => void 0);
23199
23465
  };
@@ -24096,7 +24362,7 @@ var EventDiscussionBody = ({
24096
24362
  const [imageOpen, setImageOpen] = (0, import_react65.useState)(false);
24097
24363
  const [pickerBusy, setPickerBusy] = (0, import_react65.useState)(false);
24098
24364
  const picking = (0, import_react65.useRef)(false);
24099
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
24365
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
24100
24366
  const muted = { color: theme.muted, fontFamily: theme.fontFamily };
24101
24367
  const closeActions = (work) => {
24102
24368
  if (actions) work(actions);
@@ -24134,7 +24400,7 @@ var EventDiscussionBody = ({
24134
24400
  renderIcon: renderReplyIcon,
24135
24401
  hint: t("Swipe left to reply"),
24136
24402
  children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.View, { style: [s3.row, own && s3.ownRow], children: [
24137
- !own && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.View, { style: [s3.avatar, { backgroundColor: theme.surfaceMuted }], children: comment.author.avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Image, { source: { uri: comment.author.avatarUrl }, style: s3.avatar }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text3, children: comment.author.name.slice(0, 1).toUpperCase() }) }),
24403
+ !own && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.View, { style: [s3.avatar, { backgroundColor: theme.surfaceMuted }], children: comment.author.avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Image, { source: { uri: comment.author.avatarUrl }, style: s3.avatar }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text4, children: comment.author.name.slice(0, 1).toUpperCase() }) }),
24138
24404
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
24139
24405
  import_react_native37.View,
24140
24406
  {
@@ -24150,13 +24416,15 @@ var EventDiscussionBody = ({
24150
24416
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.View, { style: s3.authorRow, children: [
24151
24417
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.Text, { style: [muted, s3.author], children: [
24152
24418
  comment.author.name,
24153
- own ? " (you)" : ""
24419
+ own ? t(" (you)") : ""
24154
24420
  ] }),
24155
24421
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24156
24422
  import_react_native37.Pressable,
24157
24423
  {
24158
24424
  accessibilityRole: "button",
24159
- accessibilityLabel: `Actions for comment by ${comment.author.name}`,
24425
+ accessibilityLabel: t("Actions for comment by {{name}}", {
24426
+ name: comment.author.name
24427
+ }),
24160
24428
  hitSlop: 10,
24161
24429
  onPress: () => setActions(comment),
24162
24430
  children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: "\u2022\u2022\u2022" })
@@ -24187,19 +24455,19 @@ var EventDiscussionBody = ({
24187
24455
  },
24188
24456
  `${comment.id}:${comment.revision}`
24189
24457
  ),
24190
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { selectable: true, style: [text3, s3.body], children: comment.status === "deleted" ? "Comment removed" : comment.body }),
24191
- comment.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { accessibilityLiveRegion: "polite", style: [muted, s3.pending], children: "Awaiting review" }),
24192
- comment.status === "hidden" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.pending], children: "Hidden" }),
24458
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { selectable: true, style: [text4, s3.body], children: comment.status === "deleted" ? t("Comment removed") : comment.body }),
24459
+ comment.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { accessibilityLiveRegion: "polite", style: [muted, s3.pending], children: t("Awaiting review") }),
24460
+ comment.status === "hidden" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.pending], children: t("Hidden") }),
24193
24461
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.View, { style: s3.meta, children: [
24194
24462
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.Text, { style: [muted, s3.date], children: [
24195
24463
  new Date(comment.createdAt).toLocaleString(),
24196
- comment.editedAt ? " \xB7 Edited" : ""
24464
+ comment.editedAt ? t(" \xB7 edited") : ""
24197
24465
  ] }),
24198
24466
  ["up", "down"].map((reaction) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24199
24467
  import_react_native37.Pressable,
24200
24468
  {
24201
24469
  accessibilityRole: "button",
24202
- accessibilityLabel: reaction === "up" ? "Like comment" : "Dislike comment",
24470
+ accessibilityLabel: reaction === "up" ? t("Like comment") : t("Dislike comment"),
24203
24471
  accessibilityState: {
24204
24472
  selected: comment.reactions.mine === reaction,
24205
24473
  disabled: d.isSubmitting
@@ -24236,12 +24504,10 @@ var EventDiscussionBody = ({
24236
24504
  accessibilityRole: "button",
24237
24505
  disabled: !d.canReplyTo(comment),
24238
24506
  onPress: () => d.replyTo(comment),
24239
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.Text, { style: [muted, s3.pending], children: [
24240
- comment.replyCount,
24241
- " ",
24242
- comment.replyCount === 1 ? "reply" : "replies",
24243
- " \xB7 Reply"
24244
- ] })
24507
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.pending], children: t(
24508
+ comment.replyCount === 1 ? "{{count}} reply \xB7 Reply" : "{{count}} replies \xB7 Reply",
24509
+ { count: comment.replyCount }
24510
+ ) })
24245
24511
  }
24246
24512
  )
24247
24513
  ]
@@ -24251,12 +24517,12 @@ var EventDiscussionBody = ({
24251
24517
  }
24252
24518
  );
24253
24519
  };
24254
- const actionButton = (label, onPress) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Pressable, { accessibilityRole: "button", onPress, style: s3.action, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text3, children: t(label) }) }, label);
24520
+ const actionButton = (label, onPress, vars) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Pressable, { accessibilityRole: "button", onPress, style: s3.action, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text4, children: t(label, vars) }) }, label);
24255
24521
  const sheet = (visible, close, children) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Modal, { transparent: true, animationType: "slide", visible, onRequestClose: close, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.View, { style: s3.overlay, children: [
24256
24522
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24257
24523
  import_react_native37.Pressable,
24258
24524
  {
24259
- accessibilityLabel: "Close menu",
24525
+ accessibilityLabel: t("Close menu"),
24260
24526
  style: import_react_native37.StyleSheet.absoluteFill,
24261
24527
  onPress: close
24262
24528
  }
@@ -24289,7 +24555,7 @@ var EventDiscussionBody = ({
24289
24555
  accessibilityRole: "button",
24290
24556
  onPress: () => setBlocksVisible(true),
24291
24557
  style: s3.blocked,
24292
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: "Blocked people" })
24558
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: t("Blocked people") })
24293
24559
  }
24294
24560
  ),
24295
24561
  d.isLoading ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.ActivityIndicator, { style: s3.loading, color: theme.accent }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
@@ -24310,19 +24576,19 @@ var EventDiscussionBody = ({
24310
24576
  }
24311
24577
  },
24312
24578
  ListHeaderComponent: d.hasMore ? actionButton("Earlier comments", d.loadMore) : null,
24313
- ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.empty], children: "Be the first to leave a comment." }),
24579
+ ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.empty], children: t("Be the first to leave a comment.") }),
24314
24580
  refreshing: d.isLoading,
24315
24581
  onRefresh: () => void d.refresh()
24316
24582
  }
24317
24583
  ),
24318
24584
  (d.error || pickerError) && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.View, { style: s3.notice, children: [
24319
24585
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { accessibilityRole: "alert", style: { color: theme.error }, children: t(d.error || pickerError) }),
24320
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Pressable, { accessibilityRole: "button", onPress: () => void d.refresh(), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: "Try again" }) })
24586
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Pressable, { accessibilityRole: "button", onPress: () => void d.refresh(), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: t("Try again") }) })
24321
24587
  ] }),
24322
24588
  !!d.message && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { accessibilityLiveRegion: "polite", style: [muted, s3.notice], children: t(d.message) }),
24323
24589
  (d.replyingTo || d.editing) && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_react_native37.View, { style: [s3.draftContext, { borderColor: theme.border }], children: [
24324
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, numberOfLines: 1, children: d.editing ? "Edit your comment" : t("Reply to {{name}}", { name: (_b = (_a = d.replyingTo) == null ? void 0 : _a.author.name) != null ? _b : "" }) }),
24325
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Pressable, { accessibilityRole: "button", onPress: d.cancelDraft, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: "Cancel" }) })
24590
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, numberOfLines: 1, children: d.editing ? t("Edit your comment") : t("Reply to {{name}}", { name: (_b = (_a = d.replyingTo) == null ? void 0 : _a.author.name) != null ? _b : "" }) }),
24591
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Pressable, { accessibilityRole: "button", onPress: d.cancelDraft, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: muted, children: t("Cancel") }) })
24326
24592
  ] }),
24327
24593
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24328
24594
  CommentImageDrafts,
@@ -24355,26 +24621,26 @@ var EventDiscussionBody = ({
24355
24621
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24356
24622
  import_react_native37.TextInput,
24357
24623
  {
24358
- accessibilityLabel: "Your comment",
24359
- placeholder: "Enter your comment\u2026",
24624
+ accessibilityLabel: t("Your comment"),
24625
+ placeholder: t("Enter your comment\u2026"),
24360
24626
  placeholderTextColor: theme.muted,
24361
24627
  multiline: true,
24362
24628
  maxLength: 4e3,
24363
24629
  value: d.body,
24364
24630
  onChangeText: d.setBody,
24365
24631
  editable: !d.isSubmitting,
24366
- style: [text3, s3.input]
24632
+ style: [text4, s3.input]
24367
24633
  }
24368
24634
  ),
24369
24635
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24370
24636
  import_react_native37.Pressable,
24371
24637
  {
24372
24638
  accessibilityRole: "button",
24373
- accessibilityLabel: d.editing ? "Save comment" : "Post comment",
24639
+ accessibilityLabel: d.editing ? t("Save comment") : t("Post comment"),
24374
24640
  disabled: d.isSubmitting || pickerBusy || !d.body.trim() && !d.imagesBase64.length && !((_c = d.editing) == null ? void 0 : _c.images.length),
24375
24641
  onPress: () => void send(),
24376
24642
  style: s3.send,
24377
- children: d.isSubmitting ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.ActivityIndicator, { color: theme.accent }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: { color: theme.accent }, children: d.editing ? "Save" : "Send" })
24643
+ children: d.isSubmitting ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.ActivityIndicator, { color: theme.accent }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: { color: theme.accent }, children: d.editing ? t("Save") : t("Send") })
24378
24644
  }
24379
24645
  )
24380
24646
  ]
@@ -24388,7 +24654,7 @@ var EventDiscussionBody = ({
24388
24654
  s3.composer,
24389
24655
  { borderColor: theme.border, backgroundColor: theme.surface }
24390
24656
  ],
24391
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text3, children: "Sign in to leave a comment" })
24657
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text4, children: t("Sign in to leave a comment") })
24392
24658
  }
24393
24659
  ),
24394
24660
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
@@ -24397,10 +24663,10 @@ var EventDiscussionBody = ({
24397
24663
  accessibilityRole: "link",
24398
24664
  style: s3.support,
24399
24665
  onPress: () => {
24400
- if (/^https:\/\//.test(d.supportUrl))
24666
+ if (/^(https:\/\/|mailto:)/i.test(d.supportUrl))
24401
24667
  void import_react_native37.Linking.openURL(d.supportUrl).catch(() => void 0);
24402
24668
  },
24403
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.date], children: "Need help? Contact support" })
24669
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: [muted, s3.date], children: t("Need help? Contact support") })
24404
24670
  }
24405
24671
  ),
24406
24672
  sheet(
@@ -24413,12 +24679,12 @@ var EventDiscussionBody = ({
24413
24679
  "Delete",
24414
24680
  () => closeActions(
24415
24681
  (comment) => import_react_native37.Alert.alert(
24416
- "Delete comment?",
24417
- "Your comment will be removed from this conversation.",
24682
+ t("Delete your comment?"),
24683
+ t("Your comment will be removed from this conversation."),
24418
24684
  [
24419
- { text: "Cancel", style: "cancel" },
24685
+ { text: t("Cancel"), style: "cancel" },
24420
24686
  {
24421
- text: "Delete",
24687
+ text: t("Delete"),
24422
24688
  style: "destructive",
24423
24689
  onPress: () => void d.remove(comment)
24424
24690
  }
@@ -24431,12 +24697,14 @@ var EventDiscussionBody = ({
24431
24697
  "Block this person",
24432
24698
  () => closeActions(
24433
24699
  (comment) => import_react_native37.Alert.alert(
24434
- `Block ${comment.author.name}?`,
24435
- "You won\u2019t see their comments. You can unblock them from Blocked people.",
24700
+ t("Block {{name}}?", { name: comment.author.name }),
24701
+ t(
24702
+ "You won\u2019t see their comments. You can unblock them from Blocked people."
24703
+ ),
24436
24704
  [
24437
- { text: "Cancel", style: "cancel" },
24705
+ { text: t("Cancel"), style: "cancel" },
24438
24706
  {
24439
- text: "Block",
24707
+ text: t("Block"),
24440
24708
  onPress: () => void d.block(comment.author.id, true)
24441
24709
  }
24442
24710
  ]
@@ -24459,7 +24727,7 @@ var EventDiscussionBody = ({
24459
24727
  Boolean(reporting),
24460
24728
  () => setReporting(null),
24461
24729
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
24462
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text3, children: "Report comment" }),
24730
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text4, children: t("Report comment") }),
24463
24731
  [
24464
24732
  ["spam", "Spam"],
24465
24733
  ["abuse", "Harassment or abuse"],
@@ -24477,16 +24745,16 @@ var EventDiscussionBody = ({
24477
24745
  Boolean(moderating),
24478
24746
  () => setModerating(null),
24479
24747
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
24480
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text3, children: (moderating == null ? void 0 : moderating.status) === "published" ? "Approve comment" : "Hide comment" }),
24748
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text4, children: (moderating == null ? void 0 : moderating.status) === "published" ? t("Approve comment") : t("Hide comment") }),
24481
24749
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24482
24750
  import_react_native37.TextInput,
24483
24751
  {
24484
- accessibilityLabel: "Moderation reason",
24485
- placeholder: "Reason",
24752
+ accessibilityLabel: t("Moderation reason"),
24753
+ placeholder: t("Reason"),
24486
24754
  placeholderTextColor: theme.muted,
24487
24755
  value: reason,
24488
24756
  onChangeText: setReason,
24489
- style: [text3, s3.reason]
24757
+ style: [text4, s3.reason]
24490
24758
  }
24491
24759
  ),
24492
24760
  actionButton("Confirm", () => {
@@ -24501,13 +24769,15 @@ var EventDiscussionBody = ({
24501
24769
  blocksVisible,
24502
24770
  () => setBlocksVisible(false),
24503
24771
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
24504
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text3, children: "Blocked people" }),
24772
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_native37.Text, { style: text4, children: t("Blocked people") }),
24505
24773
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
24506
24774
  import_react_native37.FlatList,
24507
24775
  {
24508
24776
  data: d.blockedAuthors,
24509
24777
  keyExtractor: (person) => person.id,
24510
- renderItem: ({ item: person }) => actionButton(`Unblock ${person.name}`, () => void d.block(person.id, false))
24778
+ renderItem: ({ item: person }) => actionButton("Unblock {{name}}", () => void d.block(person.id, false), {
24779
+ name: person.name
24780
+ })
24511
24781
  }
24512
24782
  )
24513
24783
  ] })
@@ -25141,7 +25411,7 @@ var StreamingView = ({
25141
25411
  });
25142
25412
  const local = stored.scope === session.sessionScope ? stored : { scope: session.sessionScope, busy: false, error: "" };
25143
25413
  const busy = flow.busy || local.busy;
25144
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
25414
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
25145
25415
  const muted = { color: theme.muted, fontFamily: theme.fontFamily };
25146
25416
  const connect = async (provider) => {
25147
25417
  try {
@@ -25217,13 +25487,13 @@ var StreamingView = ({
25217
25487
  disabled,
25218
25488
  onPress,
25219
25489
  style: [s4.button, { borderColor: theme.accent }, disabled && s4.disabled],
25220
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [text3, { color: theme.accent, fontSize: theme.fontSize }], children: t(label) })
25490
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [text4, { color: theme.accent, fontSize: theme.fontSize }], children: t(label) })
25221
25491
  }
25222
25492
  );
25223
25493
  const music = (_a = flow.query.data) == null ? void 0 : _a.music;
25224
25494
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_react_native43.View, { style: [s4.container, style], children: [
25225
- showHeader && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.title, text3], children: t("Streaming") }),
25226
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.intro, text3], children: t("Choose which artist and genre names to use for event suggestions.") }),
25495
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.title, text4], children: t("Streaming") }),
25496
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.intro, text4], children: t("Choose which artist and genre names to use for event suggestions.") }),
25227
25497
  flow.query.isPending && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
25228
25498
  import_react_native43.ActivityIndicator,
25229
25499
  {
@@ -25243,7 +25513,7 @@ var StreamingView = ({
25243
25513
  /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_react_native43.View, { style: s4.identity, children: [
25244
25514
  renderProviderIcon == null ? void 0 : renderProviderIcon(key4),
25245
25515
  /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_react_native43.View, { style: s4.names, children: [
25246
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.name, text3], children: name }),
25516
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.name, text4], children: name }),
25247
25517
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react_native43.Text, { style: [s4.status, muted], children: connection.connected ? t("Connected") : connection.available ? t("Not connected") : t(connection.reason || "Not available yet") })
25248
25518
  ] })
25249
25519
  ] }),
@@ -25324,7 +25594,7 @@ var AccountDeletionView = ({
25324
25594
  [inherited, override]
25325
25595
  );
25326
25596
  const assertOwner = hooks_exports.useSessionAction();
25327
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
25597
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
25328
25598
  const muted = { color: theme.muted, fontFamily: theme.fontFamily };
25329
25599
  const action = (label, execute, danger = false, disabled = flow.busy) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
25330
25600
  import_react_native44.Pressable,
@@ -25344,7 +25614,7 @@ var AccountDeletionView = ({
25344
25614
  { borderColor: danger ? theme.error : theme.accent },
25345
25615
  disabled && s5.disabled
25346
25616
  ],
25347
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [text3, { color: danger ? theme.error : theme.accent }], children: t(label) })
25617
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [text4, { color: danger ? theme.error : theme.accent }], children: t(label) })
25348
25618
  }
25349
25619
  );
25350
25620
  const openTeam = async (url2) => {
@@ -25364,8 +25634,8 @@ var AccountDeletionView = ({
25364
25634
  };
25365
25635
  if (flow.deleted)
25366
25636
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_react_native44.View, { style: [s5.container, style], children: [
25367
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.title, text3], children: t("Account deleted") }),
25368
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { accessibilityLiveRegion: "polite", style: [s5.body, text3], children: t("Your Ticket Fairy account has been closed. You are signed out.") }),
25637
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.title, text4], children: t("Account deleted") }),
25638
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { accessibilityLiveRegion: "polite", style: [s5.body, text4], children: t("Your Ticket Fairy account has been closed. You are signed out.") }),
25369
25639
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, muted], children: t("Financial and transaction records are retained where required.") }),
25370
25640
  onDone && action("Continue browsing", onDone, false, false)
25371
25641
  ] });
@@ -25383,7 +25653,7 @@ var AccountDeletionView = ({
25383
25653
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { accessibilityRole: "alert", style: [s5.body, { color: theme.error }], children: t(flow.error) }),
25384
25654
  action("Try again", () => void flow.retry())
25385
25655
  ] }),
25386
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text3], children: t("Sign in to review and delete your Ticket Fairy account.") }),
25656
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text4], children: t("Sign in to review and delete your Ticket Fairy account.") }),
25387
25657
  onSignIn && action("Sign in", onSignIn, false, false)
25388
25658
  ] });
25389
25659
  if (flow.query.isPending)
@@ -25402,16 +25672,16 @@ var AccountDeletionView = ({
25402
25672
  const status = flow.status;
25403
25673
  const password = status.verification === "password";
25404
25674
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_react_native44.View, { style: [s5.container, style], children: [
25405
- showHeader && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.title, text3], children: t("Delete account") }),
25675
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.title, text4], children: t("Delete account") }),
25406
25676
  showExplanation && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
25407
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text3], children: t(
25677
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text4], children: t(
25408
25678
  "This closes your Ticket Fairy account across the app, website and organiser dashboard."
25409
25679
  ) }),
25410
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text3], children: t("What is removed") }),
25680
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text4], children: t("What is removed") }),
25411
25681
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, muted], children: t(
25412
25682
  "Your personal profile, sign-in access, friends, saved preferences and the content you posted are removed or anonymised."
25413
25683
  ) }),
25414
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text3], children: t("What is kept") }),
25684
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text4], children: t("What is kept") }),
25415
25685
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, muted], children: t(
25416
25686
  "Financial and transaction records are retained where required. Deleting your account does not refund or cancel orders, and does not delete other ticket holders\u2019 details."
25417
25687
  ) })
@@ -25420,11 +25690,11 @@ var AccountDeletionView = ({
25420
25690
  "If Ticket Fairy still appears in your Apple Account after deletion, remove its access there too."
25421
25691
  ) }),
25422
25692
  status.blockers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_react_native44.View, { style: [s5.panel, { borderColor: theme.border }], children: [
25423
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text3], children: t("Before you delete your account") }),
25693
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text4], children: t("Before you delete your account") }),
25424
25694
  status.blockers.map((blocker) => {
25425
25695
  var _a;
25426
25696
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_react_native44.View, { style: s5.container, children: [
25427
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text3], children: t(blocker.message) }),
25697
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text4], children: t(blocker.message) }),
25428
25698
  (_a = blocker.brands) == null ? void 0 : _a.map(
25429
25699
  (brand2) => brand2.teamUrl ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
25430
25700
  import_react_native44.Pressable,
@@ -25451,8 +25721,8 @@ var AccountDeletionView = ({
25451
25721
  accessibilityLabel: t("Confirm account deletion"),
25452
25722
  style: [s5.panel, { borderColor: theme.border }],
25453
25723
  children: [
25454
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text3], children: t("Delete your account permanently?") }),
25455
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text3], children: t("This cannot be undone. Confirm that you want to close this account.") }),
25724
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text4], children: t("Delete your account permanently?") }),
25725
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, text4], children: t("This cannot be undone. Confirm that you want to close this account.") }),
25456
25726
  !password && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
25457
25727
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.body, muted], children: t("We will email a deletion code to {{email}}.", {
25458
25728
  email: status.email
@@ -25469,7 +25739,7 @@ var AccountDeletionView = ({
25469
25739
  }) })
25470
25740
  ] }),
25471
25741
  flow.retryAfter > 0 && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { accessibilityLiveRegion: "polite", style: [s5.body, muted], children: t("Try again in {{seconds}} seconds.", { seconds: flow.retryAfter }) }),
25472
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text3], children: t(password ? "Current password" : "Deletion code") }),
25742
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_native44.Text, { style: [s5.heading, text4], children: t(password ? "Current password" : "Deletion code") }),
25473
25743
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
25474
25744
  import_react_native44.TextInput,
25475
25745
  {
@@ -25486,7 +25756,7 @@ var AccountDeletionView = ({
25486
25756
  editable: !flow.busy,
25487
25757
  style: [
25488
25758
  s5.input,
25489
- text3,
25759
+ text4,
25490
25760
  { borderColor: theme.border, backgroundColor: theme.background }
25491
25761
  ]
25492
25762
  }
@@ -25574,8 +25844,8 @@ var ForgotPasswordForm = ({
25574
25844
  Input,
25575
25845
  {
25576
25846
  value: email,
25577
- onChangeText: (text3) => {
25578
- setEmail(text3);
25847
+ onChangeText: (text4) => {
25848
+ setEmail(text4);
25579
25849
  onFieldChange == null ? void 0 : onFieldChange();
25580
25850
  },
25581
25851
  placeholder: "Email",
@@ -25667,8 +25937,8 @@ var LoginForm = ({
25667
25937
  Input,
25668
25938
  {
25669
25939
  value: email,
25670
- onChangeText: (text3) => {
25671
- setEmail(text3);
25940
+ onChangeText: (text4) => {
25941
+ setEmail(text4);
25672
25942
  onFieldChange == null ? void 0 : onFieldChange("email");
25673
25943
  },
25674
25944
  placeholder: "Email",
@@ -25681,8 +25951,8 @@ var LoginForm = ({
25681
25951
  PasswordInput,
25682
25952
  {
25683
25953
  value: password,
25684
- onChangeText: (text3) => {
25685
- setPassword(text3);
25954
+ onChangeText: (text4) => {
25955
+ setPassword(text4);
25686
25956
  onFieldChange == null ? void 0 : onFieldChange("password");
25687
25957
  },
25688
25958
  placeholder: "Password",
@@ -25798,7 +26068,7 @@ var RegisterForm = ({
25798
26068
  Input,
25799
26069
  {
25800
26070
  value: values2.firstName,
25801
- onChangeText: (text3) => setField("firstName", text3),
26071
+ onChangeText: (text4) => setField("firstName", text4),
25802
26072
  placeholder: "First Name",
25803
26073
  autoCapitalize: "words",
25804
26074
  invalid: Boolean(errors.firstName)
@@ -25808,7 +26078,7 @@ var RegisterForm = ({
25808
26078
  Input,
25809
26079
  {
25810
26080
  value: values2.lastName,
25811
- onChangeText: (text3) => setField("lastName", text3),
26081
+ onChangeText: (text4) => setField("lastName", text4),
25812
26082
  placeholder: "Last Name",
25813
26083
  autoCapitalize: "words",
25814
26084
  invalid: Boolean(errors.lastName)
@@ -25820,7 +26090,7 @@ var RegisterForm = ({
25820
26090
  {
25821
26091
  value: values2.email,
25822
26092
  editable: !requireTerms,
25823
- onChangeText: (text3) => setField("email", text3),
26093
+ onChangeText: (text4) => setField("email", text4),
25824
26094
  placeholder: "Email",
25825
26095
  keyboardType: "email-address",
25826
26096
  autoCapitalize: "none",
@@ -25832,7 +26102,7 @@ var RegisterForm = ({
25832
26102
  Input,
25833
26103
  {
25834
26104
  value: (_a = values2.streetAddress) != null ? _a : "",
25835
- onChangeText: (text3) => setField("streetAddress", text3),
26105
+ onChangeText: (text4) => setField("streetAddress", text4),
25836
26106
  placeholder: "Street Address",
25837
26107
  invalid: Boolean(errors.streetAddress)
25838
26108
  }
@@ -25841,7 +26111,7 @@ var RegisterForm = ({
25841
26111
  Input,
25842
26112
  {
25843
26113
  value: (_b = values2.zip) != null ? _b : "",
25844
- onChangeText: (text3) => setField("zip", text3),
26114
+ onChangeText: (text4) => setField("zip", text4),
25845
26115
  placeholder: "Zip / Postal Code",
25846
26116
  invalid: Boolean(errors.zip)
25847
26117
  }
@@ -25883,7 +26153,7 @@ var RegisterForm = ({
25883
26153
  Input,
25884
26154
  {
25885
26155
  value: (_e = values2.city) != null ? _e : "",
25886
- onChangeText: (text3) => setField("city", text3),
26156
+ onChangeText: (text4) => setField("city", text4),
25887
26157
  placeholder: "City",
25888
26158
  invalid: Boolean(errors.city)
25889
26159
  }
@@ -25893,7 +26163,7 @@ var RegisterForm = ({
25893
26163
  Input,
25894
26164
  {
25895
26165
  value: (_f = values2.phone) != null ? _f : "",
25896
- onChangeText: (text3) => setField("phone", text3),
26166
+ onChangeText: (text4) => setField("phone", text4),
25897
26167
  placeholder: "Phone",
25898
26168
  keyboardType: "phone-pad",
25899
26169
  autoCapitalize: "none"
@@ -25903,7 +26173,7 @@ var RegisterForm = ({
25903
26173
  PasswordInput,
25904
26174
  {
25905
26175
  value: values2.password,
25906
- onChangeText: (text3) => setField("password", text3),
26176
+ onChangeText: (text4) => setField("password", text4),
25907
26177
  placeholder: "Password",
25908
26178
  invalid: Boolean(errors.password)
25909
26179
  }
@@ -25912,7 +26182,7 @@ var RegisterForm = ({
25912
26182
  PasswordInput,
25913
26183
  {
25914
26184
  value: values2.passwordConfirmation,
25915
- onChangeText: (text3) => setField("passwordConfirmation", text3),
26185
+ onChangeText: (text4) => setField("passwordConfirmation", text4),
25916
26186
  placeholder: "Confirm Password",
25917
26187
  invalid: Boolean(errors.passwordConfirmation)
25918
26188
  }