@agg-build/ui 2.6.0 → 2.7.1

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.
@@ -4908,7 +4908,10 @@ var MarketDetailsList = ({
4908
4908
  } = useVenueMarkets2({
4909
4909
  venueEventId: resolvedEventId,
4910
4910
  enabled: !providedMarkets && !!resolvedEventId,
4911
- status: MarketStatus.open
4911
+ status: MarketStatus.open,
4912
+ // Keep in lockstep with useEnrichedVenueEvent: limit is part of the React
4913
+ // Query key, so a mismatch would fork the shared cache into two requests.
4914
+ limit: 40
4912
4915
  // No explicit sortBy: event-scoped /venue-markets sorts by the event's
4913
4916
  // type-aware order (structureOrderBy), matching the home-card top-3 and the
4914
4917
  // markets-under-an-event ordering. Passing sortBy here would override it.
@@ -10,7 +10,7 @@ import {
10
10
  isErrorWithStatus,
11
11
  useEventListTabs,
12
12
  useEventListTabsHeaderOverflow
13
- } from "./chunk-XAG432PJ.mjs";
13
+ } from "./chunk-BVNXMHSL.mjs";
14
14
  import {
15
15
  DEPOSIT_MODAL_OPEN_EVENT,
16
16
  PlaceOrder,
@@ -18,7 +18,7 @@ import {
18
18
  WITHDRAW_MODAL_OPEN_EVENT,
19
19
  useClaimWinnings,
20
20
  useResolvedMarketClaim
21
- } from "./chunk-FAU2VOL6.mjs";
21
+ } from "./chunk-O27JUYCF.mjs";
22
22
  import {
23
23
  getDisplayOutcomePrice
24
24
  } from "./chunk-JQKJDSTW.mjs";
@@ -480,9 +480,9 @@ var SPORTS_PERIOD_ORDER = [
480
480
  "first_inning",
481
481
  "second_inning",
482
482
  "third_inning",
483
- "first_5_innings",
484
483
  "other"
485
484
  ];
485
+ var FIRST_N_INNINGS_PATTERN = /^first_(\d{1,2})_innings$/;
486
486
  var SPORTS_MARKET_TYPE_ORDER = [
487
487
  "to_advance",
488
488
  "moneyline",
@@ -513,6 +513,10 @@ var stripLineValueFromQuestion = (question) => {
513
513
  var SPORTS_PERIOD_FAMILY_ORDER = ["period", "inning", "set", "map", "game"];
514
514
  var getSportsPeriodOrderIndex = (period) => {
515
515
  var _a, _b;
516
+ const inningsMatch = FIRST_N_INNINGS_PATTERN.exec(period);
517
+ if (inningsMatch) {
518
+ return SPORTS_PERIOD_ORDER.indexOf("third_inning") + 1 + Number(inningsMatch[1]) / 100;
519
+ }
516
520
  const periodIndex = SPORTS_PERIOD_ORDER.indexOf(period);
517
521
  if (periodIndex >= 0) {
518
522
  return period === "other" ? Number.MAX_SAFE_INTEGER : periodIndex;
@@ -615,6 +619,28 @@ var resolveMarketSectionTabKey = (market) => {
615
619
  if (category === "other") return "other";
616
620
  return null;
617
621
  };
622
+ var SPORTS_PERIOD_FAMILY_ALLOWED_SPORTS = {
623
+ halves: /* @__PURE__ */ new Set(["soccer", "basketball", "american_football", "rugby", "aussie_rules"]),
624
+ quarters: /* @__PURE__ */ new Set(["basketball", "american_football", "lacrosse", "aussie_rules"]),
625
+ innings: /* @__PURE__ */ new Set(["baseball"]),
626
+ sets: /* @__PURE__ */ new Set(["tennis", "table_tennis", "volleyball"]),
627
+ maps: /* @__PURE__ */ new Set(["esports"]),
628
+ ot: /* @__PURE__ */ new Set(["basketball", "american_football", "hockey", "soccer"])
629
+ };
630
+ var PERIOD_N_FAMILY_PATTERN = /^period_\d{1,2}$/;
631
+ var isPeriodFamilyAllowedForSport = (family, sport) => {
632
+ if (!sport || sport === "other_sport") return true;
633
+ if (PERIOD_N_FAMILY_PATTERN.test(family)) return sport === "hockey";
634
+ const normalizedFamily = FIRST_N_INNINGS_PATTERN.test(family) ? "innings" : family;
635
+ const allowedSports = SPORTS_PERIOD_FAMILY_ALLOWED_SPORTS[normalizedFamily];
636
+ return !allowedSports || allowedSports.has(sport);
637
+ };
638
+ var resolveEffectiveMarketSectionTabKey = (market, sport) => {
639
+ const key = resolveMarketSectionTabKey(market);
640
+ if (!key || !key.startsWith("period:")) return key;
641
+ const family = key.slice("period:".length);
642
+ return isPeriodFamilyAllowedForSport(family, sport) ? key : "other";
643
+ };
618
644
  var resolveVisibleSportsSectionTabs = (event) => {
619
645
  var _a, _b, _c;
620
646
  const periodsByFamily = /* @__PURE__ */ new Map();
@@ -623,7 +649,7 @@ var resolveVisibleSportsSectionTabs = (event) => {
623
649
  let hasExactScore = false;
624
650
  let hasOther = false;
625
651
  for (const market of event.venueMarkets) {
626
- const key = resolveMarketSectionTabKey(market);
652
+ const key = resolveEffectiveMarketSectionTabKey(market, event.sport);
627
653
  if (!key) continue;
628
654
  if (key === "game_lines") hasGameLines = true;
629
655
  else if (key === "exact_score") hasExactScore = true;
@@ -745,16 +771,19 @@ var dropDecomposedLegsMergedIntoSingle = (markets) => {
745
771
  var resolveSportsSectionMarkets = ({
746
772
  tab,
747
773
  eventMarkets,
748
- sectionMarkets
774
+ sectionMarkets,
775
+ sport
749
776
  }) => {
750
- const effectiveSectionMarkets = sectionMarkets.length > 0 ? sectionMarkets : eventMarkets.filter((market) => resolveMarketSectionTabKey(market) === tab.key);
777
+ const effectiveSectionMarkets = sectionMarkets.length > 0 ? sectionMarkets : eventMarkets.filter(
778
+ (market) => resolveEffectiveMarketSectionTabKey(market, sport) === tab.key
779
+ );
751
780
  const filteredSectionMarkets = effectiveSectionMarkets.filter(
752
- (market) => resolveMarketSectionTabKey(market) === tab.key
781
+ (market) => resolveEffectiveMarketSectionTabKey(market, sport) === tab.key
753
782
  );
754
783
  if (tab.key === "other" || tab.key === `stat:${SPORTS_GENERIC_STAT}`) {
755
784
  const seenIds = new Set(filteredSectionMarkets.map((market) => market.id));
756
785
  const strayMarkets = eventMarkets.filter(
757
- (market) => !seenIds.has(market.id) && resolveMarketSectionTabKey(market) === tab.key
786
+ (market) => !seenIds.has(market.id) && resolveEffectiveMarketSectionTabKey(market, sport) === tab.key
758
787
  );
759
788
  return [...filteredSectionMarkets, ...strayMarkets];
760
789
  }
@@ -1857,9 +1886,10 @@ var SportsMarkets = ({
1857
1886
  () => resolveSportsSectionMarkets({
1858
1887
  tab: activeTab,
1859
1888
  eventMarkets: tabSourceMarkets,
1860
- sectionMarkets
1889
+ sectionMarkets,
1890
+ sport: event.sport
1861
1891
  }),
1862
- [activeTab, tabSourceMarkets, sectionMarkets]
1892
+ [activeTab, tabSourceMarkets, sectionMarkets, event.sport]
1863
1893
  );
1864
1894
  const isSectionSettled = !isSectionLoading && !hasNextPage && !isFetchingNextPage;
1865
1895
  const stableSectionMarkets = stableMarketsByTab[activeTabKey];
@@ -1366,7 +1366,7 @@ var buildLiveRouteCards = ({
1366
1366
  };
1367
1367
  }
1368
1368
  const avgPrice = sq.avgPrice;
1369
- const soloQuoteData = __spreadProps(__spreadValues({}, quoteData), {
1369
+ const soloQuoteData = __spreadValues(__spreadProps(__spreadValues({}, quoteData), {
1370
1370
  // Preview-only solos intentionally carry no executable quoteId; the card
1371
1371
  // should still render for comparison, while the CTA stays disabled until
1372
1372
  // the user is funded and requotes.
@@ -1379,7 +1379,7 @@ var buildLiveRouteCards = ({
1379
1379
  returnPct: sq.returnPct,
1380
1380
  // venueSoloQuotes stripped on solo card's quoteData (only the primary needs them)
1381
1381
  venueSoloQuotes: void 0
1382
- });
1382
+ }), sq.quoteId ? { status: "ok", error: void 0 } : null);
1383
1383
  return {
1384
1384
  id: `live-solo-${sq.venue}`,
1385
1385
  hint: labels.averagePrice(avgPrice),
@@ -1435,6 +1435,17 @@ var buildLiveRouteCards = ({
1435
1435
  })() : [];
1436
1436
  return [...baseCards, ...unavailableCards, ...warningOnlyUnavailableCards];
1437
1437
  };
1438
+ var resolveDefaultRouteCardId = (routeCards, primaryStatus) => {
1439
+ var _a, _b, _c, _d;
1440
+ if (routeCards.length === 0) return null;
1441
+ if (primaryStatus === "insufficient_balance") {
1442
+ const executableCard = routeCards.find(
1443
+ (card) => !card.isUnavailable && card.quoteData.status === "ok" && card.quoteData.quoteId
1444
+ );
1445
+ if (executableCard) return executableCard.id;
1446
+ }
1447
+ return (_d = (_c = (_a = routeCards.find((card) => !card.isUnavailable)) == null ? void 0 : _a.id) != null ? _c : (_b = routeCards[0]) == null ? void 0 : _b.id) != null ? _d : null;
1448
+ };
1438
1449
  var sellSharesToAtomicUnits = (shares) => {
1439
1450
  if (!Number.isFinite(shares) || shares <= 0) return BigInt(0);
1440
1451
  const [whole = "0", fraction = ""] = shares.toFixed(12).split(".");
@@ -3369,7 +3380,7 @@ var PlaceOrder = ({
3369
3380
  resolvedClaim,
3370
3381
  midpointsResult
3371
3382
  }) => {
3372
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X;
3383
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y;
3373
3384
  const {
3374
3385
  enableDebug: isExecutionDebugEnabled,
3375
3386
  features: { enableAnimations, showFeesBreakdown, showLimitOrders },
@@ -3800,13 +3811,13 @@ var PlaceOrder = ({
3800
3811
  venueSellQuotes.quotes
3801
3812
  ]);
3802
3813
  const resolvedSelectedRouteCardId = useMemo(() => {
3803
- var _a2, _b2, _c2, _d2;
3814
+ var _a2;
3804
3815
  if (routeCards.length === 0) return null;
3805
3816
  if (selectedRouteCardId && routeCards.some((card) => card.id === selectedRouteCardId && !card.isUnavailable)) {
3806
3817
  return selectedRouteCardId;
3807
3818
  }
3808
- return (_d2 = (_c2 = (_a2 = routeCards.find((card) => !card.isUnavailable)) == null ? void 0 : _a2.id) != null ? _c2 : (_b2 = routeCards[0]) == null ? void 0 : _b2.id) != null ? _d2 : null;
3809
- }, [routeCards, selectedRouteCardId]);
3819
+ return resolveDefaultRouteCardId(routeCards, isSell ? void 0 : (_a2 = smartRoute.data) == null ? void 0 : _a2.status);
3820
+ }, [routeCards, selectedRouteCardId, isSell, (_w = smartRoute.data) == null ? void 0 : _w.status]);
3810
3821
  useEffect2(() => {
3811
3822
  if (routeCards.length === 0) {
3812
3823
  setSelectedRouteCardId(null);
@@ -3846,14 +3857,14 @@ var PlaceOrder = ({
3846
3857
  setLimitPriceInputError(null);
3847
3858
  }, [executionType, scopedSelectedOutcomeId, selectedOutcomeDisplayPrice]);
3848
3859
  const orderedRouteCards = routeCards;
3849
- const selectedRouteCard = (_x = (_w = orderedRouteCards.find((card) => card.id === resolvedSelectedRouteCardId)) != null ? _w : orderedRouteCards[0]) != null ? _x : null;
3860
+ const selectedRouteCard = (_y = (_x = orderedRouteCards.find((card) => card.id === resolvedSelectedRouteCardId)) != null ? _x : orderedRouteCards[0]) != null ? _y : null;
3850
3861
  const isKalshiRoute = useMemo(() => {
3851
3862
  if (selectedRouteCard) {
3852
3863
  return selectedRouteCard.venue === "kalshi" || selectedRouteCard.quoteData.fills.some((f) => f.venue === "kalshi");
3853
3864
  }
3854
3865
  return (scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.venue) === "kalshi";
3855
3866
  }, [selectedRouteCard, scopedSelectedMarket]);
3856
- const displayedBalance = isPaperMode ? paperTotalBalance : isKalshiRoute ? (_y = liveBalanceState.kalshiBalance) != null ? _y : 0 : liveAvailableBalance;
3867
+ const displayedBalance = isPaperMode ? paperTotalBalance : isKalshiRoute ? (_z = liveBalanceState.kalshiBalance) != null ? _z : 0 : liveAvailableBalance;
3857
3868
  const legacyKalshiAccount = useMemo(
3858
3869
  () => {
3859
3870
  var _a2;
@@ -3861,8 +3872,8 @@ var PlaceOrder = ({
3861
3872
  },
3862
3873
  [user == null ? void 0 : user.venueAccounts]
3863
3874
  );
3864
- const isKalshiAccountActive = (_z = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.connected) != null ? _z : (legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.status) === "active";
3865
- const isKalshiVerified = ((_A = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.kycStatus) != null ? _A : legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.kycStatus) === "verified";
3875
+ const isKalshiAccountActive = (_A = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.connected) != null ? _A : (legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.status) === "active";
3876
+ const isKalshiVerified = ((_B = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.kycStatus) != null ? _B : legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.kycStatus) === "verified";
3866
3877
  const hasKalshiConnectionState = kalshiKeyStatus !== void 0 || (user == null ? void 0 : user.venueAccounts) != null;
3867
3878
  const isKalshiAvailable = getVenueAvailabilityState({
3868
3879
  venueId: "kalshi",
@@ -3889,7 +3900,7 @@ var PlaceOrder = ({
3889
3900
  [aggClient, onConnectKalshi, refetchKalshiKeyStatus]
3890
3901
  );
3891
3902
  const needsKycVerification = isAuthenticated && hasKalshiConnectionState && isKalshiRoute && isKalshiAccountActive && !isKalshiVerified;
3892
- const verifyKalshiConnectionLabel = (_E = (_D = (_C = (_B = labels.onboarding) == null ? void 0 : _B.connectKalshiModal) == null ? void 0 : _C.actions) == null ? void 0 : _D.verifyConnection) != null ? _E : tradingLabels.kycRequired;
3903
+ const verifyKalshiConnectionLabel = (_F = (_E = (_D = (_C = labels.onboarding) == null ? void 0 : _C.connectKalshiModal) == null ? void 0 : _D.actions) == null ? void 0 : _E.verifyConnection) != null ? _F : tradingLabels.kycRequired;
3893
3904
  const handleRouteCardSelect = useCallback2(
3894
3905
  (cardId) => {
3895
3906
  if (cardId === resolvedSelectedRouteCardId) {
@@ -3904,15 +3915,15 @@ var PlaceOrder = ({
3904
3915
  [resolvedSelectedRouteCardId, routeCards]
3905
3916
  );
3906
3917
  const executionProgress = useExecutionProgress({
3907
- orderIds: (_F = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) != null ? _F : null,
3908
- quoteId: (_G = submissionProgressState == null ? void 0 : submissionProgressState.quoteId) != null ? _G : null,
3918
+ orderIds: (_G = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) != null ? _G : null,
3919
+ quoteId: (_H = submissionProgressState == null ? void 0 : submissionProgressState.quoteId) != null ? _H : null,
3909
3920
  mode: isPaperMode ? "paper" : void 0,
3910
- enabled: ((submissionProgressState == null ? void 0 : submissionProgressState.phase) === "submitting" || (submissionProgressState == null ? void 0 : submissionProgressState.phase) === "executing") && !!((_H = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) == null ? void 0 : _H.length)
3921
+ enabled: ((submissionProgressState == null ? void 0 : submissionProgressState.phase) === "submitting" || (submissionProgressState == null ? void 0 : submissionProgressState.phase) === "executing") && !!((_I = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) == null ? void 0 : _I.length)
3911
3922
  });
3912
- const selectedOutcomeLabel = (_K = (_J = (_I = outcomes.find((outcome) => outcome.id === scopedSelectedOutcomeId)) == null ? void 0 : _I.label) != null ? _J : scopedSelectedOutcome == null ? void 0 : scopedSelectedOutcome.label) != null ? _K : "";
3913
- const headerImage = (_M = (_L = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.image) != null ? _L : scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.image) != null ? _M : null;
3914
- const headerTitle = (_O = (_N = scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.title) != null ? _N : scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _O : "";
3915
- const headerSubtitle = (_P = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _P : "";
3923
+ const selectedOutcomeLabel = (_L = (_K = (_J = outcomes.find((outcome) => outcome.id === scopedSelectedOutcomeId)) == null ? void 0 : _J.label) != null ? _K : scopedSelectedOutcome == null ? void 0 : scopedSelectedOutcome.label) != null ? _L : "";
3924
+ const headerImage = (_N = (_M = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.image) != null ? _M : scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.image) != null ? _N : null;
3925
+ const headerTitle = (_P = (_O = scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.title) != null ? _O : scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _P : "";
3926
+ const headerSubtitle = (_Q = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _Q : "";
3916
3927
  const buildExecutionSummary = useCallback2(
3917
3928
  (quoteData, executionVenue, orderId, partialFillSummary) => {
3918
3929
  var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
@@ -4210,19 +4221,19 @@ var PlaceOrder = ({
4210
4221
  queryClient,
4211
4222
  submissionProgressState
4212
4223
  ]);
4213
- const activeQuoteData = (_R = (_Q = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData) != null ? _Q : smartRoute.data) != null ? _R : null;
4224
+ const activeQuoteData = (_S = (_R = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData) != null ? _R : smartRoute.data) != null ? _S : null;
4214
4225
  const visibleRouteCards = orderedRouteCards.length > PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT && !isRoutesExpanded ? orderedRouteCards.slice(0, PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT) : orderedRouteCards;
4215
4226
  const hasEnteredAmount = internalAmount > 0;
4216
4227
  const isQuoteLoading = !isLimitOrder && hasEnteredAmount && (smartRoute.isFetching || smartRoute.isLoading || isSell && (venueSellQuotes.isFetching || venueSellQuotes.isLoading));
4217
4228
  const routeLoadingMessage = isQuoteLoading ? smartRoute.loadingReason === "updating-route" ? tradingLabels.updatingRoute : smartRoute.loadingReason === "refreshing-quotes" ? tradingLabels.refreshingQuotes : tradingLabels.findingBestOdds : null;
4218
- const selectedRouteFills = (_S = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData.fills) != null ? _S : [];
4229
+ const selectedRouteFills = (_T = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData.fills) != null ? _T : [];
4219
4230
  const isKalshiOnlyRoute = isKalshiRoute && ((selectedRouteCard == null ? void 0 : selectedRouteCard.venue) === Venue4.kalshi || selectedRouteFills.length > 0 && selectedRouteFills.every((fill) => fill.venue === Venue4.kalshi));
4220
4231
  const isOnchainOnlyRoute = !isKalshiRoute || selectedRouteFills.length > 0 && selectedRouteFills.every((fill) => fill.venue !== Venue4.kalshi);
4221
4232
  const kalshiRequiredAmount = isSell ? 0 : selectedRouteFills.filter((fill) => fill.venue === Venue4.kalshi).reduce((total, fill) => total + fill.venueQty * fill.avgPrice, 0);
4222
4233
  const onchainRequiredAmount = isSell ? 0 : selectedRouteFills.filter((fill) => fill.venue !== Venue4.kalshi).reduce((total, fill) => total + fill.venueQty * fill.avgPrice, 0);
4223
4234
  const resolvedKalshiRequiredAmount = isKalshiOnlyRoute || isKalshiRoute && selectedRouteFills.length === 0 ? internalAmount : kalshiRequiredAmount;
4224
4235
  const resolvedOnchainRequiredAmount = isOnchainOnlyRoute || !isKalshiRoute && selectedRouteFills.length === 0 ? internalAmount : onchainRequiredAmount;
4225
- const isKalshiBalanceInsufficient = !isPaperMode && isKalshiRoute && resolvedKalshiRequiredAmount > ((_T = liveBalanceState.kalshiBalance) != null ? _T : 0);
4236
+ const isKalshiBalanceInsufficient = !isPaperMode && isKalshiRoute && resolvedKalshiRequiredAmount > ((_U = liveBalanceState.kalshiBalance) != null ? _U : 0);
4226
4237
  const isOnchainBalanceInsufficient = resolvedOnchainRequiredAmount > liveAvailableBalance;
4227
4238
  const isInsufficientBalance = !isSell && isAuthenticated && hasEnteredAmount && !isBalanceLoading && (isLimitOrder ? internalAmount > totalBalance : isPaperMode ? internalAmount > paperTotalBalance : isKalshiBalanceInsufficient || isOnchainBalanceInsufficient);
4228
4239
  const isQuoteInsufficientBalance = !isLimitOrder && (activeQuoteData == null ? void 0 : activeQuoteData.status) === "insufficient_balance";
@@ -4316,7 +4327,7 @@ var PlaceOrder = ({
4316
4327
  }
4317
4328
  return (_d2 = selectedRouteCard.hint) != null ? _d2 : "";
4318
4329
  }, [selectedRouteCard, tradingLabels]);
4319
- const displayedToWinValue = (_U = selectedRouteCard == null ? void 0 : selectedRouteCard.numericValue) != null ? _U : 0;
4330
+ const displayedToWinValue = (_V = selectedRouteCard == null ? void 0 : selectedRouteCard.numericValue) != null ? _V : 0;
4320
4331
  const limitOrderPayload = useMemo(() => {
4321
4332
  if (!scopedSelectedMarket || !scopedSelectedOutcomeId || internalAmount <= 0) return null;
4322
4333
  if (limitPriceInputError) return null;
@@ -4435,13 +4446,13 @@ var PlaceOrder = ({
4435
4446
  ];
4436
4447
  }, [activeFeeBreakdown, tradingLabels]);
4437
4448
  const isActionLoading = isPrimaryActionLoading || executeManaged.isPending || placeLimitOrder.isPending || isBeforeActionPending;
4438
- const selectedRouteGeoBlocked = (_V = selectedRouteCard == null ? void 0 : selectedRouteCard.isUnavailable) != null ? _V : false;
4449
+ const selectedRouteGeoBlocked = (_W = selectedRouteCard == null ? void 0 : selectedRouteCard.isUnavailable) != null ? _W : false;
4439
4450
  const geoBlockedVenuesFromWarnings = useMemo(
4440
4451
  () => {
4441
4452
  var _a2;
4442
4453
  return extractGeoBlockedVenues((_a2 = smartRoute.data) == null ? void 0 : _a2.warnings);
4443
4454
  },
4444
- [(_W = smartRoute.data) == null ? void 0 : _W.warnings]
4455
+ [(_X = smartRoute.data) == null ? void 0 : _X.warnings]
4445
4456
  );
4446
4457
  const isPrimaryVenueGeoBlocked = useMemo(() => {
4447
4458
  var _a2, _b2;
@@ -5099,7 +5110,7 @@ var PlaceOrder = ({
5099
5110
  PlaceOrderResolvedView,
5100
5111
  {
5101
5112
  tradingState: resolvedReadOnlyTradingState,
5102
- resolutionTimestamp: (_X = resolvedEventTradingState.resolvesAt) != null ? _X : resolvedReadOnlyTradingState.resolvesAt,
5113
+ resolutionTimestamp: (_Y = resolvedEventTradingState.resolvesAt) != null ? _Y : resolvedReadOnlyTradingState.resolvesAt,
5103
5114
  resolvedClaim,
5104
5115
  classNames,
5105
5116
  className,
package/dist/events.js CHANGED
@@ -13706,7 +13706,10 @@ var MarketDetailsList = ({
13706
13706
  } = (0, import_hooks43.useVenueMarkets)({
13707
13707
  venueEventId: resolvedEventId,
13708
13708
  enabled: !providedMarkets && !!resolvedEventId,
13709
- status: import_hooks43.MarketStatus.open
13709
+ status: import_hooks43.MarketStatus.open,
13710
+ // Keep in lockstep with useEnrichedVenueEvent: limit is part of the React
13711
+ // Query key, so a mismatch would fork the shared cache into two requests.
13712
+ limit: 40
13710
13713
  // No explicit sortBy: event-scoped /venue-markets sorts by the event's
13711
13714
  // type-aware order (structureOrderBy), matching the home-card top-3 and the
13712
13715
  // markets-under-an-event ordering. Passing sortBy here would override it.
package/dist/events.mjs CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  orderbookRowLimitDefault,
17
17
  resolveEventDetailsSyncKey,
18
18
  useCenterOrderbookSpread
19
- } from "./chunk-XAG432PJ.mjs";
19
+ } from "./chunk-BVNXMHSL.mjs";
20
20
  import {
21
21
  formatProbabilityCents,
22
22
  resolveOrderBookRows,
package/dist/index.js CHANGED
@@ -17648,7 +17648,10 @@ var MarketDetailsList = ({
17648
17648
  } = (0, import_hooks51.useVenueMarkets)({
17649
17649
  venueEventId: resolvedEventId,
17650
17650
  enabled: !providedMarkets && !!resolvedEventId,
17651
- status: import_hooks51.MarketStatus.open
17651
+ status: import_hooks51.MarketStatus.open,
17652
+ // Keep in lockstep with useEnrichedVenueEvent: limit is part of the React
17653
+ // Query key, so a mismatch would fork the shared cache into two requests.
17654
+ limit: 40
17652
17655
  // No explicit sortBy: event-scoped /venue-markets sorts by the event's
17653
17656
  // type-aware order (structureOrderBy), matching the home-card top-3 and the
17654
17657
  // markets-under-an-event ordering. Passing sortBy here would override it.
@@ -20552,7 +20555,7 @@ var buildLiveRouteCards = ({
20552
20555
  };
20553
20556
  }
20554
20557
  const avgPrice = sq.avgPrice;
20555
- const soloQuoteData = __spreadProps(__spreadValues({}, quoteData), {
20558
+ const soloQuoteData = __spreadValues(__spreadProps(__spreadValues({}, quoteData), {
20556
20559
  // Preview-only solos intentionally carry no executable quoteId; the card
20557
20560
  // should still render for comparison, while the CTA stays disabled until
20558
20561
  // the user is funded and requotes.
@@ -20565,7 +20568,7 @@ var buildLiveRouteCards = ({
20565
20568
  returnPct: sq.returnPct,
20566
20569
  // venueSoloQuotes stripped on solo card's quoteData (only the primary needs them)
20567
20570
  venueSoloQuotes: void 0
20568
- });
20571
+ }), sq.quoteId ? { status: "ok", error: void 0 } : null);
20569
20572
  return {
20570
20573
  id: `live-solo-${sq.venue}`,
20571
20574
  hint: labels.averagePrice(avgPrice),
@@ -20621,6 +20624,17 @@ var buildLiveRouteCards = ({
20621
20624
  })() : [];
20622
20625
  return [...baseCards, ...unavailableCards, ...warningOnlyUnavailableCards];
20623
20626
  };
20627
+ var resolveDefaultRouteCardId = (routeCards, primaryStatus) => {
20628
+ var _a, _b, _c, _d;
20629
+ if (routeCards.length === 0) return null;
20630
+ if (primaryStatus === "insufficient_balance") {
20631
+ const executableCard = routeCards.find(
20632
+ (card) => !card.isUnavailable && card.quoteData.status === "ok" && card.quoteData.quoteId
20633
+ );
20634
+ if (executableCard) return executableCard.id;
20635
+ }
20636
+ return (_d = (_c = (_a = routeCards.find((card) => !card.isUnavailable)) == null ? void 0 : _a.id) != null ? _c : (_b = routeCards[0]) == null ? void 0 : _b.id) != null ? _d : null;
20637
+ };
20624
20638
  var sellSharesToAtomicUnits = (shares) => {
20625
20639
  if (!Number.isFinite(shares) || shares <= 0) return BigInt(0);
20626
20640
  const [whole = "0", fraction = ""] = shares.toFixed(12).split(".");
@@ -22555,7 +22569,7 @@ var PlaceOrder = ({
22555
22569
  resolvedClaim,
22556
22570
  midpointsResult
22557
22571
  }) => {
22558
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X;
22572
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y;
22559
22573
  const {
22560
22574
  enableDebug: isExecutionDebugEnabled,
22561
22575
  features: { enableAnimations, showFeesBreakdown, showLimitOrders },
@@ -22986,13 +23000,13 @@ var PlaceOrder = ({
22986
23000
  venueSellQuotes.quotes
22987
23001
  ]);
22988
23002
  const resolvedSelectedRouteCardId = (0, import_react39.useMemo)(() => {
22989
- var _a2, _b2, _c2, _d2;
23003
+ var _a2;
22990
23004
  if (routeCards.length === 0) return null;
22991
23005
  if (selectedRouteCardId && routeCards.some((card) => card.id === selectedRouteCardId && !card.isUnavailable)) {
22992
23006
  return selectedRouteCardId;
22993
23007
  }
22994
- return (_d2 = (_c2 = (_a2 = routeCards.find((card) => !card.isUnavailable)) == null ? void 0 : _a2.id) != null ? _c2 : (_b2 = routeCards[0]) == null ? void 0 : _b2.id) != null ? _d2 : null;
22995
- }, [routeCards, selectedRouteCardId]);
23008
+ return resolveDefaultRouteCardId(routeCards, isSell ? void 0 : (_a2 = smartRoute.data) == null ? void 0 : _a2.status);
23009
+ }, [routeCards, selectedRouteCardId, isSell, (_w = smartRoute.data) == null ? void 0 : _w.status]);
22996
23010
  (0, import_react39.useEffect)(() => {
22997
23011
  if (routeCards.length === 0) {
22998
23012
  setSelectedRouteCardId(null);
@@ -23032,14 +23046,14 @@ var PlaceOrder = ({
23032
23046
  setLimitPriceInputError(null);
23033
23047
  }, [executionType, scopedSelectedOutcomeId, selectedOutcomeDisplayPrice]);
23034
23048
  const orderedRouteCards = routeCards;
23035
- const selectedRouteCard = (_x = (_w = orderedRouteCards.find((card) => card.id === resolvedSelectedRouteCardId)) != null ? _w : orderedRouteCards[0]) != null ? _x : null;
23049
+ const selectedRouteCard = (_y = (_x = orderedRouteCards.find((card) => card.id === resolvedSelectedRouteCardId)) != null ? _x : orderedRouteCards[0]) != null ? _y : null;
23036
23050
  const isKalshiRoute = (0, import_react39.useMemo)(() => {
23037
23051
  if (selectedRouteCard) {
23038
23052
  return selectedRouteCard.venue === "kalshi" || selectedRouteCard.quoteData.fills.some((f) => f.venue === "kalshi");
23039
23053
  }
23040
23054
  return (scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.venue) === "kalshi";
23041
23055
  }, [selectedRouteCard, scopedSelectedMarket]);
23042
- const displayedBalance = isPaperMode ? paperTotalBalance : isKalshiRoute ? (_y = liveBalanceState.kalshiBalance) != null ? _y : 0 : liveAvailableBalance;
23056
+ const displayedBalance = isPaperMode ? paperTotalBalance : isKalshiRoute ? (_z = liveBalanceState.kalshiBalance) != null ? _z : 0 : liveAvailableBalance;
23043
23057
  const legacyKalshiAccount = (0, import_react39.useMemo)(
23044
23058
  () => {
23045
23059
  var _a2;
@@ -23047,8 +23061,8 @@ var PlaceOrder = ({
23047
23061
  },
23048
23062
  [user == null ? void 0 : user.venueAccounts]
23049
23063
  );
23050
- const isKalshiAccountActive = (_z = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.connected) != null ? _z : (legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.status) === "active";
23051
- const isKalshiVerified = ((_A = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.kycStatus) != null ? _A : legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.kycStatus) === "verified";
23064
+ const isKalshiAccountActive = (_A = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.connected) != null ? _A : (legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.status) === "active";
23065
+ const isKalshiVerified = ((_B = kalshiKeyStatus == null ? void 0 : kalshiKeyStatus.kycStatus) != null ? _B : legacyKalshiAccount == null ? void 0 : legacyKalshiAccount.kycStatus) === "verified";
23052
23066
  const hasKalshiConnectionState = kalshiKeyStatus !== void 0 || (user == null ? void 0 : user.venueAccounts) != null;
23053
23067
  const isKalshiAvailable = (0, import_hooks63.getVenueAvailabilityState)({
23054
23068
  venueId: "kalshi",
@@ -23075,7 +23089,7 @@ var PlaceOrder = ({
23075
23089
  [aggClient, onConnectKalshi, refetchKalshiKeyStatus]
23076
23090
  );
23077
23091
  const needsKycVerification = isAuthenticated && hasKalshiConnectionState && isKalshiRoute && isKalshiAccountActive && !isKalshiVerified;
23078
- const verifyKalshiConnectionLabel = (_E = (_D = (_C = (_B = labels.onboarding) == null ? void 0 : _B.connectKalshiModal) == null ? void 0 : _C.actions) == null ? void 0 : _D.verifyConnection) != null ? _E : tradingLabels.kycRequired;
23092
+ const verifyKalshiConnectionLabel = (_F = (_E = (_D = (_C = labels.onboarding) == null ? void 0 : _C.connectKalshiModal) == null ? void 0 : _D.actions) == null ? void 0 : _E.verifyConnection) != null ? _F : tradingLabels.kycRequired;
23079
23093
  const handleRouteCardSelect = (0, import_react39.useCallback)(
23080
23094
  (cardId) => {
23081
23095
  if (cardId === resolvedSelectedRouteCardId) {
@@ -23090,15 +23104,15 @@ var PlaceOrder = ({
23090
23104
  [resolvedSelectedRouteCardId, routeCards]
23091
23105
  );
23092
23106
  const executionProgress = (0, import_hooks63.useExecutionProgress)({
23093
- orderIds: (_F = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) != null ? _F : null,
23094
- quoteId: (_G = submissionProgressState == null ? void 0 : submissionProgressState.quoteId) != null ? _G : null,
23107
+ orderIds: (_G = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) != null ? _G : null,
23108
+ quoteId: (_H = submissionProgressState == null ? void 0 : submissionProgressState.quoteId) != null ? _H : null,
23095
23109
  mode: isPaperMode ? "paper" : void 0,
23096
- enabled: ((submissionProgressState == null ? void 0 : submissionProgressState.phase) === "submitting" || (submissionProgressState == null ? void 0 : submissionProgressState.phase) === "executing") && !!((_H = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) == null ? void 0 : _H.length)
23110
+ enabled: ((submissionProgressState == null ? void 0 : submissionProgressState.phase) === "submitting" || (submissionProgressState == null ? void 0 : submissionProgressState.phase) === "executing") && !!((_I = submissionProgressState == null ? void 0 : submissionProgressState.orderIds) == null ? void 0 : _I.length)
23097
23111
  });
23098
- const selectedOutcomeLabel = (_K = (_J = (_I = outcomes.find((outcome) => outcome.id === scopedSelectedOutcomeId)) == null ? void 0 : _I.label) != null ? _J : scopedSelectedOutcome == null ? void 0 : scopedSelectedOutcome.label) != null ? _K : "";
23099
- const headerImage = (_M = (_L = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.image) != null ? _L : scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.image) != null ? _M : null;
23100
- const headerTitle = (_O = (_N = scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.title) != null ? _N : scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _O : "";
23101
- const headerSubtitle = (_P = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _P : "";
23112
+ const selectedOutcomeLabel = (_L = (_K = (_J = outcomes.find((outcome) => outcome.id === scopedSelectedOutcomeId)) == null ? void 0 : _J.label) != null ? _K : scopedSelectedOutcome == null ? void 0 : scopedSelectedOutcome.label) != null ? _L : "";
23113
+ const headerImage = (_N = (_M = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.image) != null ? _M : scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.image) != null ? _N : null;
23114
+ const headerTitle = (_P = (_O = scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.title) != null ? _O : scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _P : "";
23115
+ const headerSubtitle = (_Q = scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.question) != null ? _Q : "";
23102
23116
  const buildExecutionSummary = (0, import_react39.useCallback)(
23103
23117
  (quoteData, executionVenue, orderId, partialFillSummary) => {
23104
23118
  var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
@@ -23396,19 +23410,19 @@ var PlaceOrder = ({
23396
23410
  queryClient,
23397
23411
  submissionProgressState
23398
23412
  ]);
23399
- const activeQuoteData = (_R = (_Q = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData) != null ? _Q : smartRoute.data) != null ? _R : null;
23413
+ const activeQuoteData = (_S = (_R = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData) != null ? _R : smartRoute.data) != null ? _S : null;
23400
23414
  const visibleRouteCards = orderedRouteCards.length > PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT && !isRoutesExpanded ? orderedRouteCards.slice(0, PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT) : orderedRouteCards;
23401
23415
  const hasEnteredAmount = internalAmount > 0;
23402
23416
  const isQuoteLoading = !isLimitOrder && hasEnteredAmount && (smartRoute.isFetching || smartRoute.isLoading || isSell && (venueSellQuotes.isFetching || venueSellQuotes.isLoading));
23403
23417
  const routeLoadingMessage = isQuoteLoading ? smartRoute.loadingReason === "updating-route" ? tradingLabels.updatingRoute : smartRoute.loadingReason === "refreshing-quotes" ? tradingLabels.refreshingQuotes : tradingLabels.findingBestOdds : null;
23404
- const selectedRouteFills = (_S = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData.fills) != null ? _S : [];
23418
+ const selectedRouteFills = (_T = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData.fills) != null ? _T : [];
23405
23419
  const isKalshiOnlyRoute = isKalshiRoute && ((selectedRouteCard == null ? void 0 : selectedRouteCard.venue) === import_sdk23.Venue.kalshi || selectedRouteFills.length > 0 && selectedRouteFills.every((fill) => fill.venue === import_sdk23.Venue.kalshi));
23406
23420
  const isOnchainOnlyRoute = !isKalshiRoute || selectedRouteFills.length > 0 && selectedRouteFills.every((fill) => fill.venue !== import_sdk23.Venue.kalshi);
23407
23421
  const kalshiRequiredAmount = isSell ? 0 : selectedRouteFills.filter((fill) => fill.venue === import_sdk23.Venue.kalshi).reduce((total, fill) => total + fill.venueQty * fill.avgPrice, 0);
23408
23422
  const onchainRequiredAmount = isSell ? 0 : selectedRouteFills.filter((fill) => fill.venue !== import_sdk23.Venue.kalshi).reduce((total, fill) => total + fill.venueQty * fill.avgPrice, 0);
23409
23423
  const resolvedKalshiRequiredAmount = isKalshiOnlyRoute || isKalshiRoute && selectedRouteFills.length === 0 ? internalAmount : kalshiRequiredAmount;
23410
23424
  const resolvedOnchainRequiredAmount = isOnchainOnlyRoute || !isKalshiRoute && selectedRouteFills.length === 0 ? internalAmount : onchainRequiredAmount;
23411
- const isKalshiBalanceInsufficient = !isPaperMode && isKalshiRoute && resolvedKalshiRequiredAmount > ((_T = liveBalanceState.kalshiBalance) != null ? _T : 0);
23425
+ const isKalshiBalanceInsufficient = !isPaperMode && isKalshiRoute && resolvedKalshiRequiredAmount > ((_U = liveBalanceState.kalshiBalance) != null ? _U : 0);
23412
23426
  const isOnchainBalanceInsufficient = resolvedOnchainRequiredAmount > liveAvailableBalance;
23413
23427
  const isInsufficientBalance = !isSell && isAuthenticated && hasEnteredAmount && !isBalanceLoading && (isLimitOrder ? internalAmount > totalBalance : isPaperMode ? internalAmount > paperTotalBalance : isKalshiBalanceInsufficient || isOnchainBalanceInsufficient);
23414
23428
  const isQuoteInsufficientBalance = !isLimitOrder && (activeQuoteData == null ? void 0 : activeQuoteData.status) === "insufficient_balance";
@@ -23502,7 +23516,7 @@ var PlaceOrder = ({
23502
23516
  }
23503
23517
  return (_d2 = selectedRouteCard.hint) != null ? _d2 : "";
23504
23518
  }, [selectedRouteCard, tradingLabels]);
23505
- const displayedToWinValue = (_U = selectedRouteCard == null ? void 0 : selectedRouteCard.numericValue) != null ? _U : 0;
23519
+ const displayedToWinValue = (_V = selectedRouteCard == null ? void 0 : selectedRouteCard.numericValue) != null ? _V : 0;
23506
23520
  const limitOrderPayload = (0, import_react39.useMemo)(() => {
23507
23521
  if (!scopedSelectedMarket || !scopedSelectedOutcomeId || internalAmount <= 0) return null;
23508
23522
  if (limitPriceInputError) return null;
@@ -23621,13 +23635,13 @@ var PlaceOrder = ({
23621
23635
  ];
23622
23636
  }, [activeFeeBreakdown, tradingLabels]);
23623
23637
  const isActionLoading = isPrimaryActionLoading || executeManaged.isPending || placeLimitOrder.isPending || isBeforeActionPending;
23624
- const selectedRouteGeoBlocked = (_V = selectedRouteCard == null ? void 0 : selectedRouteCard.isUnavailable) != null ? _V : false;
23638
+ const selectedRouteGeoBlocked = (_W = selectedRouteCard == null ? void 0 : selectedRouteCard.isUnavailable) != null ? _W : false;
23625
23639
  const geoBlockedVenuesFromWarnings = (0, import_react39.useMemo)(
23626
23640
  () => {
23627
23641
  var _a2;
23628
23642
  return extractGeoBlockedVenues((_a2 = smartRoute.data) == null ? void 0 : _a2.warnings);
23629
23643
  },
23630
- [(_W = smartRoute.data) == null ? void 0 : _W.warnings]
23644
+ [(_X = smartRoute.data) == null ? void 0 : _X.warnings]
23631
23645
  );
23632
23646
  const isPrimaryVenueGeoBlocked = (0, import_react39.useMemo)(() => {
23633
23647
  var _a2, _b2;
@@ -24285,7 +24299,7 @@ var PlaceOrder = ({
24285
24299
  PlaceOrderResolvedView,
24286
24300
  {
24287
24301
  tradingState: resolvedReadOnlyTradingState,
24288
- resolutionTimestamp: (_X = resolvedEventTradingState.resolvesAt) != null ? _X : resolvedReadOnlyTradingState.resolvesAt,
24302
+ resolutionTimestamp: (_Y = resolvedEventTradingState.resolvesAt) != null ? _Y : resolvedReadOnlyTradingState.resolvesAt,
24289
24303
  resolvedClaim,
24290
24304
  classNames,
24291
24305
  className,
@@ -25749,9 +25763,9 @@ var SPORTS_PERIOD_ORDER = [
25749
25763
  "first_inning",
25750
25764
  "second_inning",
25751
25765
  "third_inning",
25752
- "first_5_innings",
25753
25766
  "other"
25754
25767
  ];
25768
+ var FIRST_N_INNINGS_PATTERN = /^first_(\d{1,2})_innings$/;
25755
25769
  var SPORTS_MARKET_TYPE_ORDER = [
25756
25770
  "to_advance",
25757
25771
  "moneyline",
@@ -25782,6 +25796,10 @@ var stripLineValueFromQuestion = (question) => {
25782
25796
  var SPORTS_PERIOD_FAMILY_ORDER = ["period", "inning", "set", "map", "game"];
25783
25797
  var getSportsPeriodOrderIndex = (period) => {
25784
25798
  var _a, _b;
25799
+ const inningsMatch = FIRST_N_INNINGS_PATTERN.exec(period);
25800
+ if (inningsMatch) {
25801
+ return SPORTS_PERIOD_ORDER.indexOf("third_inning") + 1 + Number(inningsMatch[1]) / 100;
25802
+ }
25785
25803
  const periodIndex = SPORTS_PERIOD_ORDER.indexOf(period);
25786
25804
  if (periodIndex >= 0) {
25787
25805
  return period === "other" ? Number.MAX_SAFE_INTEGER : periodIndex;
@@ -25884,6 +25902,28 @@ var resolveMarketSectionTabKey = (market) => {
25884
25902
  if (category === "other") return "other";
25885
25903
  return null;
25886
25904
  };
25905
+ var SPORTS_PERIOD_FAMILY_ALLOWED_SPORTS = {
25906
+ halves: /* @__PURE__ */ new Set(["soccer", "basketball", "american_football", "rugby", "aussie_rules"]),
25907
+ quarters: /* @__PURE__ */ new Set(["basketball", "american_football", "lacrosse", "aussie_rules"]),
25908
+ innings: /* @__PURE__ */ new Set(["baseball"]),
25909
+ sets: /* @__PURE__ */ new Set(["tennis", "table_tennis", "volleyball"]),
25910
+ maps: /* @__PURE__ */ new Set(["esports"]),
25911
+ ot: /* @__PURE__ */ new Set(["basketball", "american_football", "hockey", "soccer"])
25912
+ };
25913
+ var PERIOD_N_FAMILY_PATTERN = /^period_\d{1,2}$/;
25914
+ var isPeriodFamilyAllowedForSport = (family, sport) => {
25915
+ if (!sport || sport === "other_sport") return true;
25916
+ if (PERIOD_N_FAMILY_PATTERN.test(family)) return sport === "hockey";
25917
+ const normalizedFamily = FIRST_N_INNINGS_PATTERN.test(family) ? "innings" : family;
25918
+ const allowedSports = SPORTS_PERIOD_FAMILY_ALLOWED_SPORTS[normalizedFamily];
25919
+ return !allowedSports || allowedSports.has(sport);
25920
+ };
25921
+ var resolveEffectiveMarketSectionTabKey = (market, sport) => {
25922
+ const key = resolveMarketSectionTabKey(market);
25923
+ if (!key || !key.startsWith("period:")) return key;
25924
+ const family = key.slice("period:".length);
25925
+ return isPeriodFamilyAllowedForSport(family, sport) ? key : "other";
25926
+ };
25887
25927
  var resolveVisibleSportsSectionTabs = (event) => {
25888
25928
  var _a, _b, _c;
25889
25929
  const periodsByFamily = /* @__PURE__ */ new Map();
@@ -25892,7 +25932,7 @@ var resolveVisibleSportsSectionTabs = (event) => {
25892
25932
  let hasExactScore = false;
25893
25933
  let hasOther = false;
25894
25934
  for (const market of event.venueMarkets) {
25895
- const key = resolveMarketSectionTabKey(market);
25935
+ const key = resolveEffectiveMarketSectionTabKey(market, event.sport);
25896
25936
  if (!key) continue;
25897
25937
  if (key === "game_lines") hasGameLines = true;
25898
25938
  else if (key === "exact_score") hasExactScore = true;
@@ -26014,16 +26054,19 @@ var dropDecomposedLegsMergedIntoSingle = (markets) => {
26014
26054
  var resolveSportsSectionMarkets = ({
26015
26055
  tab,
26016
26056
  eventMarkets,
26017
- sectionMarkets
26057
+ sectionMarkets,
26058
+ sport
26018
26059
  }) => {
26019
- const effectiveSectionMarkets = sectionMarkets.length > 0 ? sectionMarkets : eventMarkets.filter((market) => resolveMarketSectionTabKey(market) === tab.key);
26060
+ const effectiveSectionMarkets = sectionMarkets.length > 0 ? sectionMarkets : eventMarkets.filter(
26061
+ (market) => resolveEffectiveMarketSectionTabKey(market, sport) === tab.key
26062
+ );
26020
26063
  const filteredSectionMarkets = effectiveSectionMarkets.filter(
26021
- (market) => resolveMarketSectionTabKey(market) === tab.key
26064
+ (market) => resolveEffectiveMarketSectionTabKey(market, sport) === tab.key
26022
26065
  );
26023
26066
  if (tab.key === "other" || tab.key === `stat:${SPORTS_GENERIC_STAT}`) {
26024
26067
  const seenIds = new Set(filteredSectionMarkets.map((market) => market.id));
26025
26068
  const strayMarkets = eventMarkets.filter(
26026
- (market) => !seenIds.has(market.id) && resolveMarketSectionTabKey(market) === tab.key
26069
+ (market) => !seenIds.has(market.id) && resolveEffectiveMarketSectionTabKey(market, sport) === tab.key
26027
26070
  );
26028
26071
  return [...filteredSectionMarkets, ...strayMarkets];
26029
26072
  }
@@ -27120,9 +27163,10 @@ var SportsMarkets = ({
27120
27163
  () => resolveSportsSectionMarkets({
27121
27164
  tab: activeTab,
27122
27165
  eventMarkets: tabSourceMarkets,
27123
- sectionMarkets
27166
+ sectionMarkets,
27167
+ sport: event.sport
27124
27168
  }),
27125
- [activeTab, tabSourceMarkets, sectionMarkets]
27169
+ [activeTab, tabSourceMarkets, sectionMarkets, event.sport]
27126
27170
  );
27127
27171
  const isSectionSettled = !isSectionLoading && !hasNextPage && !isFetchingNextPage;
27128
27172
  const stableSectionMarkets = stableMarketsByTab[activeTabKey];