@agg-build/ui 2.3.0 → 2.4.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.
@@ -5203,7 +5203,8 @@ import {
5203
5203
  useLiveOutcomePrices,
5204
5204
  useMidpoints,
5205
5205
  useSdkUiConfig as useSdkUiConfig10,
5206
- useSearch
5206
+ useSearch,
5207
+ MarketStatus as MarketStatus2
5207
5208
  } from "@agg-build/hooks";
5208
5209
  import {
5209
5210
  useCallback as useCallback3,
@@ -7386,6 +7387,12 @@ var Search = ({
7386
7387
  q: shouldFetchResults ? debouncedSearchValue : "",
7387
7388
  type: "events",
7388
7389
  categoryIds,
7390
+ // Server-side open-only: without it a query whose top results are
7391
+ // resolved history (recurring series) returns a full page that
7392
+ // filterOpenEvents below then empties — rendering "no results" for
7393
+ // markets that exist. filterOpenEvents stays as the residual guard for
7394
+ // events with no open child markets, which the server doesn't check.
7395
+ status: [MarketStatus2.open],
7389
7396
  limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
7390
7397
  enabled: shouldFetchResults
7391
7398
  });
@@ -8,11 +8,11 @@ import {
8
8
  getTradingValueLabel,
9
9
  getTradingVenueLabel,
10
10
  resolveOrderEligibilityMessage
11
- } from "./chunk-SG573ODC.mjs";
11
+ } from "./chunk-G5Y45GIA.mjs";
12
12
  import {
13
13
  GeoBlockBanner,
14
14
  subscribeAggDepositNotification
15
- } from "./chunk-7OVSGWI7.mjs";
15
+ } from "./chunk-G5BXCT5Y.mjs";
16
16
  import {
17
17
  AGG_TERMS_OF_SERVICE_URL,
18
18
  Button,
@@ -44,7 +44,7 @@ import {
44
44
  resolveResolvedOutcomeLabel,
45
45
  skeletonViews,
46
46
  useOptionalToast
47
- } from "./chunk-6Z5GQ3KL.mjs";
47
+ } from "./chunk-2ET5CXOU.mjs";
48
48
 
49
49
  // src/trading/types.ts
50
50
  import { Venue, enumGuard, isFiniteNonNeg, safeParse } from "@agg-build/sdk";
@@ -10,7 +10,7 @@ import {
10
10
  isErrorWithStatus,
11
11
  useEventListTabs,
12
12
  useEventListTabsHeaderOverflow
13
- } from "./chunk-3R2CQTNM.mjs";
13
+ } from "./chunk-MDO3NMXP.mjs";
14
14
  import {
15
15
  DEPOSIT_MODAL_OPEN_EVENT,
16
16
  PlaceOrder,
@@ -18,10 +18,10 @@ import {
18
18
  WITHDRAW_MODAL_OPEN_EVENT,
19
19
  useClaimWinnings,
20
20
  useResolvedMarketClaim
21
- } from "./chunk-MXM5PM4A.mjs";
21
+ } from "./chunk-3FLLEJFM.mjs";
22
22
  import {
23
23
  getDisplayOutcomePrice
24
- } from "./chunk-SG573ODC.mjs";
24
+ } from "./chunk-G5Y45GIA.mjs";
25
25
  import {
26
26
  AggErrorBoundary,
27
27
  Button,
@@ -52,7 +52,7 @@ import {
52
52
  resolveTabVenus,
53
53
  shortenAddress,
54
54
  sortCategoriesForNavigation
55
- } from "./chunk-6Z5GQ3KL.mjs";
55
+ } from "./chunk-2ET5CXOU.mjs";
56
56
 
57
57
  // src/pages/home/index.tsx
58
58
  import {
@@ -385,6 +385,7 @@ import { useEffect as useEffect4, useMemo as useMemo2, useRef as useRef3, useSta
385
385
 
386
386
  // src/pages/event-market/sports-event-market.utils.ts
387
387
  var SPORTS_MARKET_TYPE_KEYS = [
388
+ "to_advance",
388
389
  "moneyline",
389
390
  "spread",
390
391
  "total",
@@ -526,6 +527,7 @@ var SPORTS_PERIOD_ORDER = [
526
527
  "other"
527
528
  ];
528
529
  var SPORTS_MARKET_TYPE_ORDER = [
530
+ "to_advance",
529
531
  "moneyline",
530
532
  "spread",
531
533
  "total",
@@ -624,6 +626,9 @@ var resolveFallbackSportsMarketCategory = (market) => {
624
626
  return null;
625
627
  };
626
628
  var resolveMarketSectionTabKey = (market) => {
629
+ if (normalizeSportsMarketType(market.sportsMarketType) === "to_advance") {
630
+ return "game_lines";
631
+ }
627
632
  const normalizedCategory = normalizeSportsMarketCategory(market.marketCategory);
628
633
  const fallbackCategory = !normalizedCategory || normalizedCategory === "other" ? resolveFallbackSportsMarketCategory(market) : null;
629
634
  const category = fallbackCategory != null ? fallbackCategory : normalizedCategory;
@@ -667,25 +672,32 @@ var resolveSportsSectionMarkets = ({
667
672
  return [...filteredSectionMarkets, ...strayOtherMarkets];
668
673
  }
669
674
  if (tabKey !== "game_lines") return filteredSectionMarkets;
670
- const eventMoneylineMarkets = (() => {
675
+ const dedupeEventMarketsOfType = (type) => {
671
676
  const dedupedMarkets = [];
672
- const seenMoneylineKeys = /* @__PURE__ */ new Set();
677
+ const seenKeys = /* @__PURE__ */ new Set();
673
678
  for (const market of eventMarkets) {
674
- if (normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" || resolveMarketSectionTabKey(market) !== "game_lines") {
679
+ if (normalizeSportsMarketType(market.sportsMarketType) !== type || resolveMarketSectionTabKey(market) !== "game_lines") {
675
680
  continue;
676
681
  }
677
- const moneylineKey = resolveSportsMarketAggKey(market) || market.id;
678
- if (seenMoneylineKeys.has(moneylineKey)) continue;
679
- seenMoneylineKeys.add(moneylineKey);
682
+ const key = resolveSportsMarketAggKey(market) || market.id;
683
+ if (seenKeys.has(key)) continue;
684
+ seenKeys.add(key);
680
685
  dedupedMarkets.push(market);
681
686
  }
682
687
  return dedupedMarkets;
683
- })();
684
- if (eventMoneylineMarkets.length === 0) return filteredSectionMarkets;
685
- const lineSectionMarkets = filteredSectionMarkets.filter(
688
+ };
689
+ const eventMoneylineMarkets = dedupeEventMarketsOfType("moneyline");
690
+ const eventToAdvanceMarkets = dedupeEventMarketsOfType("to_advance");
691
+ const sectionWithoutAdvance = filteredSectionMarkets.filter(
692
+ (market) => normalizeSportsMarketType(market.sportsMarketType) !== "to_advance"
693
+ );
694
+ if (eventMoneylineMarkets.length === 0) {
695
+ return [...eventToAdvanceMarkets, ...sectionWithoutAdvance];
696
+ }
697
+ const lineSectionMarkets = sectionWithoutAdvance.filter(
686
698
  (market) => normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" && resolveMarketSectionTabKey(market) === "game_lines"
687
699
  );
688
- return [...eventMoneylineMarkets, ...lineSectionMarkets];
700
+ return [...eventToAdvanceMarkets, ...eventMoneylineMarkets, ...lineSectionMarkets];
689
701
  };
690
702
  var resolveSportsMarketCardVariant = (market) => {
691
703
  var _a;
@@ -775,6 +787,9 @@ var resolveDisplayGroupFamilyKey = (market) => {
775
787
  if (isBinarySportsMoneylineMarket(market)) {
776
788
  return `${period}|moneyline|${marketCategory}`;
777
789
  }
790
+ if (sportsMarketType === "to_advance") {
791
+ return `${period}|to_advance`;
792
+ }
778
793
  const lineFamily = resolveSportsLineFamilyKey(market);
779
794
  if (sportsMarketType === "spread") {
780
795
  const spreadFamily = resolveSpreadFamilyKey(market);
@@ -810,6 +825,7 @@ var resolveDisplayGroupTitle = (market, groupMarkets = [market]) => {
810
825
  const sportsMarketType = normalizeSportsMarketType(market.sportsMarketType);
811
826
  const question = toTrimmedString(market.question);
812
827
  if (isBinarySportsMoneylineMarket(market)) return "Moneyline";
828
+ if (sportsMarketType === "to_advance") return "Team to Advance";
813
829
  if (sportsMarketType === "spread") return "Spreads";
814
830
  if (!question) {
815
831
  return sportsMarketType != null ? sportsMarketType : market.id;
@@ -852,7 +868,16 @@ var buildSportsMarketDisplayGroups = (markets) => {
852
868
  }
853
869
  const groups = Array.from(groupsByKey.entries()).map(([id, groupMarkets]) => {
854
870
  var _a2;
855
- const orderedMarkets = sortMarketsByLineValue(groupMarkets);
871
+ const isToAdvanceGroup = groupMarkets.some(
872
+ (market) => normalizeSportsMarketType(market.sportsMarketType) === "to_advance"
873
+ );
874
+ const orderedMarkets = isToAdvanceGroup ? [...groupMarkets].sort((left, right) => {
875
+ var _a3, _b;
876
+ const leftSingle = resolveSportsMarketAggKey(left).endsWith("_adv") ? 0 : 1;
877
+ const rightSingle = resolveSportsMarketAggKey(right).endsWith("_adv") ? 0 : 1;
878
+ if (leftSingle !== rightSingle) return leftSingle - rightSingle;
879
+ return ((_a3 = right.volume) != null ? _a3 : 0) - ((_b = left.volume) != null ? _b : 0);
880
+ }) : sortMarketsByLineValue(groupMarkets);
856
881
  const firstMarket = orderedMarkets[0];
857
882
  const sportsMarketType = normalizeSportsMarketType(firstMarket == null ? void 0 : firstMarket.sportsMarketType);
858
883
  const marketCategory = normalizeSportsMarketCategory(firstMarket == null ? void 0 : firstMarket.marketCategory);
@@ -960,6 +985,7 @@ var resolveHighestVolumeIndex = (markets) => {
960
985
  return bestIndex;
961
986
  };
962
987
  var resolveSlideKind = (group) => {
988
+ if (group.sportsMarketType === "to_advance") return "to_advance";
963
989
  if (group.sportsMarketType === "moneyline") return "moneyline";
964
990
  if (group.sportsMarketType === "spread") return "spread";
965
991
  if (group.sportsMarketType === "total") return "total";
@@ -3,7 +3,7 @@ import {
3
3
  AGG_TERMS_OF_SERVICE_URL,
4
4
  Icon,
5
5
  cn
6
- } from "./chunk-6Z5GQ3KL.mjs";
6
+ } from "./chunk-2ET5CXOU.mjs";
7
7
 
8
8
  // src/geo-block-banner/index.tsx
9
9
  import { useLabels } from "@agg-build/hooks";
@@ -18,7 +18,7 @@ import {
18
18
  selectPrimaryVenueMarket,
19
19
  skeletonViews,
20
20
  sortOutcomes
21
- } from "./chunk-6Z5GQ3KL.mjs";
21
+ } from "./chunk-2ET5CXOU.mjs";
22
22
 
23
23
  // src/trading/trading-context/index.tsx
24
24
  import { useEventTradingContext } from "@agg-build/hooks";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  dispatchAggDepositNotification
4
- } from "./chunk-7OVSGWI7.mjs";
4
+ } from "./chunk-G5BXCT5Y.mjs";
5
5
  import {
6
6
  BestPricesIcon,
7
7
  BoltIcon,
@@ -41,7 +41,7 @@ import {
41
41
  shortenAddress,
42
42
  useOptionalToast,
43
43
  venueLogoLabels
44
- } from "./chunk-6Z5GQ3KL.mjs";
44
+ } from "./chunk-2ET5CXOU.mjs";
45
45
 
46
46
  // src/deposit/index.tsx
47
47
  import { useAggAuthState, useAggUiConfig, useDepositAddresses, useLabels as useLabels11 } from "@agg-build/hooks";
@@ -23,7 +23,7 @@ import {
23
23
  resolveUnifiedOrderBookEntries,
24
24
  sortOutcomeSelectorOutcomes,
25
25
  useEventTradingContext
26
- } from "./chunk-SG573ODC.mjs";
26
+ } from "./chunk-G5Y45GIA.mjs";
27
27
  import {
28
28
  AutocompleteSelect,
29
29
  Badge,
@@ -75,7 +75,7 @@ import {
75
75
  sortCategoriesForNavigation,
76
76
  sortOutcomes,
77
77
  splitEventsByLifecycle
78
- } from "./chunk-6Z5GQ3KL.mjs";
78
+ } from "./chunk-2ET5CXOU.mjs";
79
79
 
80
80
  // src/events/item/index.tsx
81
81
  import {
package/dist/events.mjs CHANGED
@@ -16,13 +16,13 @@ import {
16
16
  orderbookRowLimitDefault,
17
17
  resolveEventDetailsSyncKey,
18
18
  useCenterOrderbookSpread
19
- } from "./chunk-3R2CQTNM.mjs";
19
+ } from "./chunk-MDO3NMXP.mjs";
20
20
  import {
21
21
  formatProbabilityCents,
22
22
  resolveOrderBookRows,
23
23
  resolveUnifiedOrderBookEntries
24
- } from "./chunk-SG573ODC.mjs";
25
- import "./chunk-6Z5GQ3KL.mjs";
24
+ } from "./chunk-G5Y45GIA.mjs";
25
+ import "./chunk-2ET5CXOU.mjs";
26
26
  export {
27
27
  EventList,
28
28
  EventListItem,
package/dist/index.js CHANGED
@@ -7593,6 +7593,12 @@ var Search = ({
7593
7593
  q: shouldFetchResults ? debouncedSearchValue : "",
7594
7594
  type: "events",
7595
7595
  categoryIds,
7596
+ // Server-side open-only: without it a query whose top results are
7597
+ // resolved history (recurring series) returns a full page that
7598
+ // filterOpenEvents below then empties — rendering "no results" for
7599
+ // markets that exist. filterOpenEvents stays as the residual guard for
7600
+ // events with no open child markets, which the server doesn't check.
7601
+ status: [import_hooks27.MarketStatus.open],
7596
7602
  limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
7597
7603
  enabled: shouldFetchResults
7598
7604
  });
@@ -23195,6 +23201,7 @@ var import_react40 = require("react");
23195
23201
 
23196
23202
  // src/pages/event-market/sports-event-market.utils.ts
23197
23203
  var SPORTS_MARKET_TYPE_KEYS = [
23204
+ "to_advance",
23198
23205
  "moneyline",
23199
23206
  "spread",
23200
23207
  "total",
@@ -23336,6 +23343,7 @@ var SPORTS_PERIOD_ORDER = [
23336
23343
  "other"
23337
23344
  ];
23338
23345
  var SPORTS_MARKET_TYPE_ORDER = [
23346
+ "to_advance",
23339
23347
  "moneyline",
23340
23348
  "spread",
23341
23349
  "total",
@@ -23434,6 +23442,9 @@ var resolveFallbackSportsMarketCategory = (market) => {
23434
23442
  return null;
23435
23443
  };
23436
23444
  var resolveMarketSectionTabKey = (market) => {
23445
+ if (normalizeSportsMarketType(market.sportsMarketType) === "to_advance") {
23446
+ return "game_lines";
23447
+ }
23437
23448
  const normalizedCategory = normalizeSportsMarketCategory(market.marketCategory);
23438
23449
  const fallbackCategory = !normalizedCategory || normalizedCategory === "other" ? resolveFallbackSportsMarketCategory(market) : null;
23439
23450
  const category = fallbackCategory != null ? fallbackCategory : normalizedCategory;
@@ -23477,25 +23488,32 @@ var resolveSportsSectionMarkets = ({
23477
23488
  return [...filteredSectionMarkets, ...strayOtherMarkets];
23478
23489
  }
23479
23490
  if (tabKey !== "game_lines") return filteredSectionMarkets;
23480
- const eventMoneylineMarkets = (() => {
23491
+ const dedupeEventMarketsOfType = (type) => {
23481
23492
  const dedupedMarkets = [];
23482
- const seenMoneylineKeys = /* @__PURE__ */ new Set();
23493
+ const seenKeys = /* @__PURE__ */ new Set();
23483
23494
  for (const market of eventMarkets) {
23484
- if (normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" || resolveMarketSectionTabKey(market) !== "game_lines") {
23495
+ if (normalizeSportsMarketType(market.sportsMarketType) !== type || resolveMarketSectionTabKey(market) !== "game_lines") {
23485
23496
  continue;
23486
23497
  }
23487
- const moneylineKey = resolveSportsMarketAggKey(market) || market.id;
23488
- if (seenMoneylineKeys.has(moneylineKey)) continue;
23489
- seenMoneylineKeys.add(moneylineKey);
23498
+ const key = resolveSportsMarketAggKey(market) || market.id;
23499
+ if (seenKeys.has(key)) continue;
23500
+ seenKeys.add(key);
23490
23501
  dedupedMarkets.push(market);
23491
23502
  }
23492
23503
  return dedupedMarkets;
23493
- })();
23494
- if (eventMoneylineMarkets.length === 0) return filteredSectionMarkets;
23495
- const lineSectionMarkets = filteredSectionMarkets.filter(
23504
+ };
23505
+ const eventMoneylineMarkets = dedupeEventMarketsOfType("moneyline");
23506
+ const eventToAdvanceMarkets = dedupeEventMarketsOfType("to_advance");
23507
+ const sectionWithoutAdvance = filteredSectionMarkets.filter(
23508
+ (market) => normalizeSportsMarketType(market.sportsMarketType) !== "to_advance"
23509
+ );
23510
+ if (eventMoneylineMarkets.length === 0) {
23511
+ return [...eventToAdvanceMarkets, ...sectionWithoutAdvance];
23512
+ }
23513
+ const lineSectionMarkets = sectionWithoutAdvance.filter(
23496
23514
  (market) => normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" && resolveMarketSectionTabKey(market) === "game_lines"
23497
23515
  );
23498
- return [...eventMoneylineMarkets, ...lineSectionMarkets];
23516
+ return [...eventToAdvanceMarkets, ...eventMoneylineMarkets, ...lineSectionMarkets];
23499
23517
  };
23500
23518
  var resolveSportsMarketCardVariant = (market) => {
23501
23519
  var _a;
@@ -23585,6 +23603,9 @@ var resolveDisplayGroupFamilyKey = (market) => {
23585
23603
  if (isBinarySportsMoneylineMarket(market)) {
23586
23604
  return `${period}|moneyline|${marketCategory}`;
23587
23605
  }
23606
+ if (sportsMarketType === "to_advance") {
23607
+ return `${period}|to_advance`;
23608
+ }
23588
23609
  const lineFamily = resolveSportsLineFamilyKey(market);
23589
23610
  if (sportsMarketType === "spread") {
23590
23611
  const spreadFamily = resolveSpreadFamilyKey(market);
@@ -23620,6 +23641,7 @@ var resolveDisplayGroupTitle = (market, groupMarkets = [market]) => {
23620
23641
  const sportsMarketType = normalizeSportsMarketType(market.sportsMarketType);
23621
23642
  const question = toTrimmedString(market.question);
23622
23643
  if (isBinarySportsMoneylineMarket(market)) return "Moneyline";
23644
+ if (sportsMarketType === "to_advance") return "Team to Advance";
23623
23645
  if (sportsMarketType === "spread") return "Spreads";
23624
23646
  if (!question) {
23625
23647
  return sportsMarketType != null ? sportsMarketType : market.id;
@@ -23662,7 +23684,16 @@ var buildSportsMarketDisplayGroups = (markets) => {
23662
23684
  }
23663
23685
  const groups = Array.from(groupsByKey.entries()).map(([id, groupMarkets]) => {
23664
23686
  var _a2;
23665
- const orderedMarkets = sortMarketsByLineValue(groupMarkets);
23687
+ const isToAdvanceGroup = groupMarkets.some(
23688
+ (market) => normalizeSportsMarketType(market.sportsMarketType) === "to_advance"
23689
+ );
23690
+ const orderedMarkets = isToAdvanceGroup ? [...groupMarkets].sort((left, right) => {
23691
+ var _a3, _b;
23692
+ const leftSingle = resolveSportsMarketAggKey(left).endsWith("_adv") ? 0 : 1;
23693
+ const rightSingle = resolveSportsMarketAggKey(right).endsWith("_adv") ? 0 : 1;
23694
+ if (leftSingle !== rightSingle) return leftSingle - rightSingle;
23695
+ return ((_a3 = right.volume) != null ? _a3 : 0) - ((_b = left.volume) != null ? _b : 0);
23696
+ }) : sortMarketsByLineValue(groupMarkets);
23666
23697
  const firstMarket = orderedMarkets[0];
23667
23698
  const sportsMarketType = normalizeSportsMarketType(firstMarket == null ? void 0 : firstMarket.sportsMarketType);
23668
23699
  const marketCategory = normalizeSportsMarketCategory(firstMarket == null ? void 0 : firstMarket.marketCategory);
@@ -23770,6 +23801,7 @@ var resolveHighestVolumeIndex = (markets) => {
23770
23801
  return bestIndex;
23771
23802
  };
23772
23803
  var resolveSlideKind = (group) => {
23804
+ if (group.sportsMarketType === "to_advance") return "to_advance";
23773
23805
  if (group.sportsMarketType === "moneyline") return "moneyline";
23774
23806
  if (group.sportsMarketType === "spread") return "spread";
23775
23807
  if (group.sportsMarketType === "total") return "total";
package/dist/index.mjs CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  UserProfilePage,
12
12
  buildAggTxExplorerHref,
13
13
  useHomePageModals
14
- } from "./chunk-ELLV56FR.mjs";
14
+ } from "./chunk-FIN55CXA.mjs";
15
15
  import {
16
16
  EventList,
17
17
  EventListItem,
@@ -28,7 +28,7 @@ import {
28
28
  orderbookRowLimitDefault,
29
29
  resolveEventDetailsSyncKey,
30
30
  useCenterOrderbookSpread
31
- } from "./chunk-3R2CQTNM.mjs";
31
+ } from "./chunk-MDO3NMXP.mjs";
32
32
  import {
33
33
  CARD_NETWORK_OPTIONS,
34
34
  ConnectAccountsStep,
@@ -44,7 +44,7 @@ import {
44
44
  buildTerminalSummary,
45
45
  clearPendingCardSession,
46
46
  getPendingCardSession
47
- } from "./chunk-44GSDH2Y.mjs";
47
+ } from "./chunk-GUYFQP7L.mjs";
48
48
  import {
49
49
  AggNotificationEventsProvider,
50
50
  DEPOSIT_MODAL_OPEN_EVENT,
@@ -59,7 +59,7 @@ import {
59
59
  requestAggWithdrawModalOpen,
60
60
  useClaimWinnings,
61
61
  useResolvedMarketClaim
62
- } from "./chunk-MXM5PM4A.mjs";
62
+ } from "./chunk-3FLLEJFM.mjs";
63
63
  import {
64
64
  SETTLEMENT_SECTION_ID,
65
65
  Settlement,
@@ -77,10 +77,10 @@ import {
77
77
  resolveOrderBookRows,
78
78
  resolveUnifiedOrderBookEntries,
79
79
  useEventTradingContext
80
- } from "./chunk-SG573ODC.mjs";
80
+ } from "./chunk-G5Y45GIA.mjs";
81
81
  import {
82
82
  GeoBlockBanner
83
- } from "./chunk-7OVSGWI7.mjs";
83
+ } from "./chunk-G5BXCT5Y.mjs";
84
84
  import {
85
85
  AGG_DEFAULT_URL,
86
86
  AGG_DOCS_URL,
@@ -201,7 +201,7 @@ import {
201
201
  useOptionalToast,
202
202
  useToast,
203
203
  venueLogoNames
204
- } from "./chunk-6Z5GQ3KL.mjs";
204
+ } from "./chunk-2ET5CXOU.mjs";
205
205
 
206
206
  // src/notifications/agg-toast-provider.tsx
207
207
  import { jsx } from "react/jsx-runtime";
package/dist/modals.mjs CHANGED
@@ -14,11 +14,11 @@ import {
14
14
  buildTerminalSummary,
15
15
  clearPendingCardSession,
16
16
  getPendingCardSession
17
- } from "./chunk-44GSDH2Y.mjs";
17
+ } from "./chunk-GUYFQP7L.mjs";
18
18
  import {
19
19
  GeoBlockBanner
20
- } from "./chunk-7OVSGWI7.mjs";
21
- import "./chunk-6Z5GQ3KL.mjs";
20
+ } from "./chunk-G5BXCT5Y.mjs";
21
+ import "./chunk-2ET5CXOU.mjs";
22
22
  export {
23
23
  CARD_NETWORK_OPTIONS,
24
24
  ConnectAccountsStep,
package/dist/pages.js CHANGED
@@ -6823,6 +6823,12 @@ var Search = ({
6823
6823
  q: shouldFetchResults ? debouncedSearchValue : "",
6824
6824
  type: "events",
6825
6825
  categoryIds,
6826
+ // Server-side open-only: without it a query whose top results are
6827
+ // resolved history (recurring series) returns a full page that
6828
+ // filterOpenEvents below then empties — rendering "no results" for
6829
+ // markets that exist. filterOpenEvents stays as the residual guard for
6830
+ // events with no open child markets, which the server doesn't check.
6831
+ status: [import_hooks27.MarketStatus.open],
6826
6832
  limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
6827
6833
  enabled: shouldFetchResults
6828
6834
  });
@@ -21006,6 +21012,7 @@ var import_react37 = require("react");
21006
21012
 
21007
21013
  // src/pages/event-market/sports-event-market.utils.ts
21008
21014
  var SPORTS_MARKET_TYPE_KEYS = [
21015
+ "to_advance",
21009
21016
  "moneyline",
21010
21017
  "spread",
21011
21018
  "total",
@@ -21147,6 +21154,7 @@ var SPORTS_PERIOD_ORDER = [
21147
21154
  "other"
21148
21155
  ];
21149
21156
  var SPORTS_MARKET_TYPE_ORDER = [
21157
+ "to_advance",
21150
21158
  "moneyline",
21151
21159
  "spread",
21152
21160
  "total",
@@ -21245,6 +21253,9 @@ var resolveFallbackSportsMarketCategory = (market) => {
21245
21253
  return null;
21246
21254
  };
21247
21255
  var resolveMarketSectionTabKey = (market) => {
21256
+ if (normalizeSportsMarketType(market.sportsMarketType) === "to_advance") {
21257
+ return "game_lines";
21258
+ }
21248
21259
  const normalizedCategory = normalizeSportsMarketCategory(market.marketCategory);
21249
21260
  const fallbackCategory = !normalizedCategory || normalizedCategory === "other" ? resolveFallbackSportsMarketCategory(market) : null;
21250
21261
  const category = fallbackCategory != null ? fallbackCategory : normalizedCategory;
@@ -21288,25 +21299,32 @@ var resolveSportsSectionMarkets = ({
21288
21299
  return [...filteredSectionMarkets, ...strayOtherMarkets];
21289
21300
  }
21290
21301
  if (tabKey !== "game_lines") return filteredSectionMarkets;
21291
- const eventMoneylineMarkets = (() => {
21302
+ const dedupeEventMarketsOfType = (type) => {
21292
21303
  const dedupedMarkets = [];
21293
- const seenMoneylineKeys = /* @__PURE__ */ new Set();
21304
+ const seenKeys = /* @__PURE__ */ new Set();
21294
21305
  for (const market of eventMarkets) {
21295
- if (normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" || resolveMarketSectionTabKey(market) !== "game_lines") {
21306
+ if (normalizeSportsMarketType(market.sportsMarketType) !== type || resolveMarketSectionTabKey(market) !== "game_lines") {
21296
21307
  continue;
21297
21308
  }
21298
- const moneylineKey = resolveSportsMarketAggKey(market) || market.id;
21299
- if (seenMoneylineKeys.has(moneylineKey)) continue;
21300
- seenMoneylineKeys.add(moneylineKey);
21309
+ const key = resolveSportsMarketAggKey(market) || market.id;
21310
+ if (seenKeys.has(key)) continue;
21311
+ seenKeys.add(key);
21301
21312
  dedupedMarkets.push(market);
21302
21313
  }
21303
21314
  return dedupedMarkets;
21304
- })();
21305
- if (eventMoneylineMarkets.length === 0) return filteredSectionMarkets;
21306
- const lineSectionMarkets = filteredSectionMarkets.filter(
21315
+ };
21316
+ const eventMoneylineMarkets = dedupeEventMarketsOfType("moneyline");
21317
+ const eventToAdvanceMarkets = dedupeEventMarketsOfType("to_advance");
21318
+ const sectionWithoutAdvance = filteredSectionMarkets.filter(
21319
+ (market) => normalizeSportsMarketType(market.sportsMarketType) !== "to_advance"
21320
+ );
21321
+ if (eventMoneylineMarkets.length === 0) {
21322
+ return [...eventToAdvanceMarkets, ...sectionWithoutAdvance];
21323
+ }
21324
+ const lineSectionMarkets = sectionWithoutAdvance.filter(
21307
21325
  (market) => normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" && resolveMarketSectionTabKey(market) === "game_lines"
21308
21326
  );
21309
- return [...eventMoneylineMarkets, ...lineSectionMarkets];
21327
+ return [...eventToAdvanceMarkets, ...eventMoneylineMarkets, ...lineSectionMarkets];
21310
21328
  };
21311
21329
  var resolveSportsMarketCardVariant = (market) => {
21312
21330
  var _a;
@@ -21396,6 +21414,9 @@ var resolveDisplayGroupFamilyKey = (market) => {
21396
21414
  if (isBinarySportsMoneylineMarket(market)) {
21397
21415
  return `${period}|moneyline|${marketCategory}`;
21398
21416
  }
21417
+ if (sportsMarketType === "to_advance") {
21418
+ return `${period}|to_advance`;
21419
+ }
21399
21420
  const lineFamily = resolveSportsLineFamilyKey(market);
21400
21421
  if (sportsMarketType === "spread") {
21401
21422
  const spreadFamily = resolveSpreadFamilyKey(market);
@@ -21431,6 +21452,7 @@ var resolveDisplayGroupTitle = (market, groupMarkets = [market]) => {
21431
21452
  const sportsMarketType = normalizeSportsMarketType(market.sportsMarketType);
21432
21453
  const question = toTrimmedString(market.question);
21433
21454
  if (isBinarySportsMoneylineMarket(market)) return "Moneyline";
21455
+ if (sportsMarketType === "to_advance") return "Team to Advance";
21434
21456
  if (sportsMarketType === "spread") return "Spreads";
21435
21457
  if (!question) {
21436
21458
  return sportsMarketType != null ? sportsMarketType : market.id;
@@ -21473,7 +21495,16 @@ var buildSportsMarketDisplayGroups = (markets) => {
21473
21495
  }
21474
21496
  const groups = Array.from(groupsByKey.entries()).map(([id, groupMarkets]) => {
21475
21497
  var _a2;
21476
- const orderedMarkets = sortMarketsByLineValue(groupMarkets);
21498
+ const isToAdvanceGroup = groupMarkets.some(
21499
+ (market) => normalizeSportsMarketType(market.sportsMarketType) === "to_advance"
21500
+ );
21501
+ const orderedMarkets = isToAdvanceGroup ? [...groupMarkets].sort((left, right) => {
21502
+ var _a3, _b;
21503
+ const leftSingle = resolveSportsMarketAggKey(left).endsWith("_adv") ? 0 : 1;
21504
+ const rightSingle = resolveSportsMarketAggKey(right).endsWith("_adv") ? 0 : 1;
21505
+ if (leftSingle !== rightSingle) return leftSingle - rightSingle;
21506
+ return ((_a3 = right.volume) != null ? _a3 : 0) - ((_b = left.volume) != null ? _b : 0);
21507
+ }) : sortMarketsByLineValue(groupMarkets);
21477
21508
  const firstMarket = orderedMarkets[0];
21478
21509
  const sportsMarketType = normalizeSportsMarketType(firstMarket == null ? void 0 : firstMarket.sportsMarketType);
21479
21510
  const marketCategory = normalizeSportsMarketCategory(firstMarket == null ? void 0 : firstMarket.marketCategory);
@@ -21581,6 +21612,7 @@ var resolveHighestVolumeIndex = (markets) => {
21581
21612
  return bestIndex;
21582
21613
  };
21583
21614
  var resolveSlideKind = (group) => {
21615
+ if (group.sportsMarketType === "to_advance") return "to_advance";
21584
21616
  if (group.sportsMarketType === "moneyline") return "moneyline";
21585
21617
  if (group.sportsMarketType === "spread") return "spread";
21586
21618
  if (group.sportsMarketType === "total") return "total";
package/dist/pages.mjs CHANGED
@@ -8,17 +8,17 @@ import {
8
8
  UserProfilePage,
9
9
  buildAggTxExplorerHref,
10
10
  useHomePageModals
11
- } from "./chunk-ELLV56FR.mjs";
12
- import "./chunk-3R2CQTNM.mjs";
11
+ } from "./chunk-FIN55CXA.mjs";
12
+ import "./chunk-MDO3NMXP.mjs";
13
13
  import {
14
14
  DEPOSIT_MODAL_OPEN_EVENT,
15
15
  WITHDRAW_MODAL_OPEN_EVENT,
16
16
  requestAggDepositModalOpen,
17
17
  requestAggWithdrawModalOpen
18
- } from "./chunk-MXM5PM4A.mjs";
19
- import "./chunk-SG573ODC.mjs";
20
- import "./chunk-7OVSGWI7.mjs";
21
- import "./chunk-6Z5GQ3KL.mjs";
18
+ } from "./chunk-3FLLEJFM.mjs";
19
+ import "./chunk-G5Y45GIA.mjs";
20
+ import "./chunk-G5BXCT5Y.mjs";
21
+ import "./chunk-2ET5CXOU.mjs";
22
22
  export {
23
23
  DEPOSIT_MODAL_OPEN_EVENT,
24
24
  EventMarketPage,
@@ -7173,6 +7173,12 @@ var Search = ({
7173
7173
  q: shouldFetchResults ? debouncedSearchValue : "",
7174
7174
  type: "events",
7175
7175
  categoryIds,
7176
+ // Server-side open-only: without it a query whose top results are
7177
+ // resolved history (recurring series) returns a full page that
7178
+ // filterOpenEvents below then empties — rendering "no results" for
7179
+ // markets that exist. filterOpenEvents stays as the residual guard for
7180
+ // events with no open child markets, which the server doesn't check.
7181
+ status: [import_hooks27.MarketStatus.open],
7176
7182
  limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
7177
7183
  enabled: shouldFetchResults
7178
7184
  });
@@ -99,7 +99,7 @@ import {
99
99
  useOptionalToast,
100
100
  useToast,
101
101
  venueLogoNames
102
- } from "./chunk-6Z5GQ3KL.mjs";
102
+ } from "./chunk-2ET5CXOU.mjs";
103
103
  export {
104
104
  ActivityChartIcon,
105
105
  AggErrorBoundary,
package/dist/trading.mjs CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  parseVenue,
9
9
  useClaimWinnings,
10
10
  useResolvedMarketClaim
11
- } from "./chunk-MXM5PM4A.mjs";
11
+ } from "./chunk-3FLLEJFM.mjs";
12
12
  import {
13
13
  SETTLEMENT_SECTION_ID,
14
14
  Settlement,
@@ -23,9 +23,9 @@ import {
23
23
  getTradingValueLabel,
24
24
  getTradingVenueLabel,
25
25
  useEventTradingContext
26
- } from "./chunk-SG573ODC.mjs";
27
- import "./chunk-7OVSGWI7.mjs";
28
- import "./chunk-6Z5GQ3KL.mjs";
26
+ } from "./chunk-G5Y45GIA.mjs";
27
+ import "./chunk-G5BXCT5Y.mjs";
28
+ import "./chunk-2ET5CXOU.mjs";
29
29
  export {
30
30
  PlaceOrder,
31
31
  PlaceOrderFailureView,
@@ -1,7 +1,7 @@
1
1
  import type { VenueEventWithMarkets, VenueMarket } from "@agg-build/hooks";
2
2
  export declare const SPORTS_SECTION_TAB_KEYS: readonly ["game_lines", "halves", "exact_score", "corners", "goals", "assists", "shots", "other"];
3
3
  export type SportsSectionTabKey = (typeof SPORTS_SECTION_TAB_KEYS)[number];
4
- export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["moneyline", "spread", "total", "prop", "completion", "other"];
4
+ export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["to_advance", "moneyline", "spread", "total", "prop", "completion", "other"];
5
5
  export type SportsMarketTypeKey = (typeof SPORTS_MARKET_TYPE_KEYS)[number];
6
6
  export declare const SPORTS_PERIOD_KEYS: readonly ["full", "1h", "2h", "q1", "q2", "q3", "q4", "ot", "first_inning", "second_inning", "third_inning", "first_5_innings", "other"];
7
7
  /**
@@ -81,7 +81,7 @@ export declare const normalizeSportsMarketGroup: (value: string | null | undefin
81
81
  * recognizable grouping metadata, so the page can fall back to the default,
82
82
  * ungrouped market list instead of inventing an empty tab.
83
83
  */
84
- export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question">) => SportsSectionTabKey | null;
84
+ export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question" | "sportsMarketType">) => SportsSectionTabKey | null;
85
85
  export declare const resolveSportsSectionFilters: (key: SportsSectionTabKey) => {
86
86
  marketGroup?: SportsMarketGroupKey[];
87
87
  marketCategory?: SportsMarketCategoryKey[];
@@ -134,7 +134,7 @@ export declare const resolveSpreadOutcomeTeamNames: (activeMarket: VenueMarket,
134
134
  };
135
135
  export declare const buildSportsMarketDisplayGroups: (markets: VenueMarket[]) => SportsMarketDisplayGroup[];
136
136
  export declare const groupSportsMarketsByPeriod: (markets: VenueMarket[]) => SportsPeriodGroup[];
137
- export type SportsGameLineSlideKind = "moneyline" | "spread" | "total" | "other";
137
+ export type SportsGameLineSlideKind = "to_advance" | "moneyline" | "spread" | "total" | "other";
138
138
  export type SportsGameLineSlideStop = {
139
139
  /** Display value for the ladder chip, e.g. "1.5", "216.5". */
140
140
  value: string;
@@ -1,7 +1,7 @@
1
1
  import type { VenueEventWithMarkets, VenueMarket } from "@agg-build/hooks";
2
2
  export declare const SPORTS_SECTION_TAB_KEYS: readonly ["game_lines", "halves", "exact_score", "corners", "goals", "assists", "shots", "other"];
3
3
  export type SportsSectionTabKey = (typeof SPORTS_SECTION_TAB_KEYS)[number];
4
- export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["moneyline", "spread", "total", "prop", "completion", "other"];
4
+ export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["to_advance", "moneyline", "spread", "total", "prop", "completion", "other"];
5
5
  export type SportsMarketTypeKey = (typeof SPORTS_MARKET_TYPE_KEYS)[number];
6
6
  export declare const SPORTS_PERIOD_KEYS: readonly ["full", "1h", "2h", "q1", "q2", "q3", "q4", "ot", "first_inning", "second_inning", "third_inning", "first_5_innings", "other"];
7
7
  /**
@@ -81,7 +81,7 @@ export declare const normalizeSportsMarketGroup: (value: string | null | undefin
81
81
  * recognizable grouping metadata, so the page can fall back to the default,
82
82
  * ungrouped market list instead of inventing an empty tab.
83
83
  */
84
- export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question">) => SportsSectionTabKey | null;
84
+ export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question" | "sportsMarketType">) => SportsSectionTabKey | null;
85
85
  export declare const resolveSportsSectionFilters: (key: SportsSectionTabKey) => {
86
86
  marketGroup?: SportsMarketGroupKey[];
87
87
  marketCategory?: SportsMarketCategoryKey[];
@@ -134,7 +134,7 @@ export declare const resolveSpreadOutcomeTeamNames: (activeMarket: VenueMarket,
134
134
  };
135
135
  export declare const buildSportsMarketDisplayGroups: (markets: VenueMarket[]) => SportsMarketDisplayGroup[];
136
136
  export declare const groupSportsMarketsByPeriod: (markets: VenueMarket[]) => SportsPeriodGroup[];
137
- export type SportsGameLineSlideKind = "moneyline" | "spread" | "total" | "other";
137
+ export type SportsGameLineSlideKind = "to_advance" | "moneyline" | "spread" | "total" | "other";
138
138
  export type SportsGameLineSlideStop = {
139
139
  /** Display value for the ladder chip, e.g. "1.5", "216.5". */
140
140
  value: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agg-build/ui",
3
- "version": "2.3.0",
3
+ "version": "2.4.1",
4
4
  "description": "Pre-built React component library for the AGG prediction market aggregator. Tailwind-based, themeable, with primitives, event surfaces, trading flows, full pages, and modals.",
5
5
  "sideEffects": false,
6
6
  "license": "MIT",