@agg-build/ui 1.2.9 → 1.2.10

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.
@@ -884,26 +884,66 @@ var collectEligibleVenueOutcomes = ({
884
884
  venueMarkets,
885
885
  selectedOutcomeLabel
886
886
  }) => {
887
+ var _a;
887
888
  if (!selectedOutcomeLabel) return [];
889
+ const semanticLabel = toSemanticOutcomeLabel(selectedOutcomeLabel);
890
+ const seenMarketIds = /* @__PURE__ */ new Set();
888
891
  const seenOutcomeIds = /* @__PURE__ */ new Set();
889
- return venueMarkets.flatMap((market) => {
890
- const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
892
+ const result = [];
893
+ for (const market of venueMarkets) {
894
+ if (seenMarketIds.has(market.id)) continue;
895
+ const parentOutcome = sortOutcomes(market.venueMarketOutcomes).find(
891
896
  (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
892
897
  );
893
- if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) {
894
- return [];
898
+ if (!parentOutcome) continue;
899
+ const refs = (_a = parentOutcome.matchedVenueMarketOutcomes) != null ? _a : [];
900
+ if (refs.length === 0) continue;
901
+ seenMarketIds.add(market.id);
902
+ seenOutcomeIds.add(parentOutcome.id);
903
+ result.push({
904
+ venue: market.venue,
905
+ market,
906
+ outcome: parentOutcome,
907
+ outcomeId: parentOutcome.id,
908
+ semanticLabel
909
+ });
910
+ for (const ref of refs) {
911
+ if (seenMarketIds.has(ref.venueMarketId)) continue;
912
+ const sibling = venueMarkets.find((m) => m.id === ref.venueMarketId);
913
+ if (!sibling) continue;
914
+ const siblingOutcome = sibling.venueMarketOutcomes.find(
915
+ (o) => o.id === ref.venueMarketOutcomeId
916
+ );
917
+ if (!siblingOutcome || seenOutcomeIds.has(siblingOutcome.id)) continue;
918
+ seenMarketIds.add(sibling.id);
919
+ seenOutcomeIds.add(siblingOutcome.id);
920
+ result.push({
921
+ venue: sibling.venue,
922
+ market: sibling,
923
+ outcome: siblingOutcome,
924
+ outcomeId: siblingOutcome.id,
925
+ semanticLabel
926
+ });
895
927
  }
928
+ break;
929
+ }
930
+ for (const market of venueMarkets) {
931
+ if (seenMarketIds.has(market.id)) continue;
932
+ const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
933
+ (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
934
+ );
935
+ if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) continue;
936
+ seenMarketIds.add(market.id);
896
937
  seenOutcomeIds.add(matchedOutcome.id);
897
- return [
898
- {
899
- venue: market.venue,
900
- market,
901
- outcome: matchedOutcome,
902
- outcomeId: matchedOutcome.id,
903
- semanticLabel: toSemanticOutcomeLabel(selectedOutcomeLabel)
904
- }
905
- ];
906
- });
938
+ result.push({
939
+ venue: market.venue,
940
+ market,
941
+ outcome: matchedOutcome,
942
+ outcomeId: matchedOutcome.id,
943
+ semanticLabel
944
+ });
945
+ }
946
+ return result;
907
947
  };
908
948
  var collectEligibleVenueOutcomeIds = ({
909
949
  venueMarkets,
@@ -9,7 +9,7 @@ import {
9
9
  isErrorWithStatus,
10
10
  useEventListTabs,
11
11
  useEventListTabsHeaderOverflow
12
- } from "./chunk-PFOSEY46.mjs";
12
+ } from "./chunk-5MTIBPDY.mjs";
13
13
  import {
14
14
  DEPOSIT_MODAL_OPEN_EVENT,
15
15
  PlaceOrder,
package/dist/events.js CHANGED
@@ -8067,26 +8067,66 @@ var collectEligibleVenueOutcomes = ({
8067
8067
  venueMarkets,
8068
8068
  selectedOutcomeLabel
8069
8069
  }) => {
8070
+ var _a;
8070
8071
  if (!selectedOutcomeLabel) return [];
8072
+ const semanticLabel = toSemanticOutcomeLabel(selectedOutcomeLabel);
8073
+ const seenMarketIds = /* @__PURE__ */ new Set();
8071
8074
  const seenOutcomeIds = /* @__PURE__ */ new Set();
8072
- return venueMarkets.flatMap((market) => {
8073
- const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
8075
+ const result = [];
8076
+ for (const market of venueMarkets) {
8077
+ if (seenMarketIds.has(market.id)) continue;
8078
+ const parentOutcome = sortOutcomes(market.venueMarketOutcomes).find(
8074
8079
  (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
8075
8080
  );
8076
- if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) {
8077
- return [];
8081
+ if (!parentOutcome) continue;
8082
+ const refs = (_a = parentOutcome.matchedVenueMarketOutcomes) != null ? _a : [];
8083
+ if (refs.length === 0) continue;
8084
+ seenMarketIds.add(market.id);
8085
+ seenOutcomeIds.add(parentOutcome.id);
8086
+ result.push({
8087
+ venue: market.venue,
8088
+ market,
8089
+ outcome: parentOutcome,
8090
+ outcomeId: parentOutcome.id,
8091
+ semanticLabel
8092
+ });
8093
+ for (const ref of refs) {
8094
+ if (seenMarketIds.has(ref.venueMarketId)) continue;
8095
+ const sibling = venueMarkets.find((m) => m.id === ref.venueMarketId);
8096
+ if (!sibling) continue;
8097
+ const siblingOutcome = sibling.venueMarketOutcomes.find(
8098
+ (o) => o.id === ref.venueMarketOutcomeId
8099
+ );
8100
+ if (!siblingOutcome || seenOutcomeIds.has(siblingOutcome.id)) continue;
8101
+ seenMarketIds.add(sibling.id);
8102
+ seenOutcomeIds.add(siblingOutcome.id);
8103
+ result.push({
8104
+ venue: sibling.venue,
8105
+ market: sibling,
8106
+ outcome: siblingOutcome,
8107
+ outcomeId: siblingOutcome.id,
8108
+ semanticLabel
8109
+ });
8078
8110
  }
8111
+ break;
8112
+ }
8113
+ for (const market of venueMarkets) {
8114
+ if (seenMarketIds.has(market.id)) continue;
8115
+ const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
8116
+ (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
8117
+ );
8118
+ if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) continue;
8119
+ seenMarketIds.add(market.id);
8079
8120
  seenOutcomeIds.add(matchedOutcome.id);
8080
- return [
8081
- {
8082
- venue: market.venue,
8083
- market,
8084
- outcome: matchedOutcome,
8085
- outcomeId: matchedOutcome.id,
8086
- semanticLabel: toSemanticOutcomeLabel(selectedOutcomeLabel)
8087
- }
8088
- ];
8089
- });
8121
+ result.push({
8122
+ venue: market.venue,
8123
+ market,
8124
+ outcome: matchedOutcome,
8125
+ outcomeId: matchedOutcome.id,
8126
+ semanticLabel
8127
+ });
8128
+ }
8129
+ return result;
8090
8130
  };
8091
8131
  var collectEligibleVenueOutcomeIds = ({
8092
8132
  venueMarkets,
package/dist/events.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  mergeVenueOutcomeOrderbooks,
15
15
  orderbookRowLimitDefault,
16
16
  useCenterOrderbookSpread
17
- } from "./chunk-PFOSEY46.mjs";
17
+ } from "./chunk-5MTIBPDY.mjs";
18
18
  import {
19
19
  formatProbabilityCents,
20
20
  resolveOrderBookRows,
package/dist/index.js CHANGED
@@ -11570,26 +11570,66 @@ var collectEligibleVenueOutcomes = ({
11570
11570
  venueMarkets,
11571
11571
  selectedOutcomeLabel
11572
11572
  }) => {
11573
+ var _a;
11573
11574
  if (!selectedOutcomeLabel) return [];
11575
+ const semanticLabel = toSemanticOutcomeLabel(selectedOutcomeLabel);
11576
+ const seenMarketIds = /* @__PURE__ */ new Set();
11574
11577
  const seenOutcomeIds = /* @__PURE__ */ new Set();
11575
- return venueMarkets.flatMap((market) => {
11576
- const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
11578
+ const result = [];
11579
+ for (const market of venueMarkets) {
11580
+ if (seenMarketIds.has(market.id)) continue;
11581
+ const parentOutcome = sortOutcomes(market.venueMarketOutcomes).find(
11577
11582
  (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
11578
11583
  );
11579
- if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) {
11580
- return [];
11584
+ if (!parentOutcome) continue;
11585
+ const refs = (_a = parentOutcome.matchedVenueMarketOutcomes) != null ? _a : [];
11586
+ if (refs.length === 0) continue;
11587
+ seenMarketIds.add(market.id);
11588
+ seenOutcomeIds.add(parentOutcome.id);
11589
+ result.push({
11590
+ venue: market.venue,
11591
+ market,
11592
+ outcome: parentOutcome,
11593
+ outcomeId: parentOutcome.id,
11594
+ semanticLabel
11595
+ });
11596
+ for (const ref of refs) {
11597
+ if (seenMarketIds.has(ref.venueMarketId)) continue;
11598
+ const sibling = venueMarkets.find((m) => m.id === ref.venueMarketId);
11599
+ if (!sibling) continue;
11600
+ const siblingOutcome = sibling.venueMarketOutcomes.find(
11601
+ (o) => o.id === ref.venueMarketOutcomeId
11602
+ );
11603
+ if (!siblingOutcome || seenOutcomeIds.has(siblingOutcome.id)) continue;
11604
+ seenMarketIds.add(sibling.id);
11605
+ seenOutcomeIds.add(siblingOutcome.id);
11606
+ result.push({
11607
+ venue: sibling.venue,
11608
+ market: sibling,
11609
+ outcome: siblingOutcome,
11610
+ outcomeId: siblingOutcome.id,
11611
+ semanticLabel
11612
+ });
11581
11613
  }
11614
+ break;
11615
+ }
11616
+ for (const market of venueMarkets) {
11617
+ if (seenMarketIds.has(market.id)) continue;
11618
+ const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
11619
+ (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
11620
+ );
11621
+ if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) continue;
11622
+ seenMarketIds.add(market.id);
11582
11623
  seenOutcomeIds.add(matchedOutcome.id);
11583
- return [
11584
- {
11585
- venue: market.venue,
11586
- market,
11587
- outcome: matchedOutcome,
11588
- outcomeId: matchedOutcome.id,
11589
- semanticLabel: toSemanticOutcomeLabel(selectedOutcomeLabel)
11590
- }
11591
- ];
11592
- });
11624
+ result.push({
11625
+ venue: market.venue,
11626
+ market,
11627
+ outcome: matchedOutcome,
11628
+ outcomeId: matchedOutcome.id,
11629
+ semanticLabel
11630
+ });
11631
+ }
11632
+ return result;
11593
11633
  };
11594
11634
  var collectEligibleVenueOutcomeIds = ({
11595
11635
  venueMarkets,
package/dist/index.mjs CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  USER_PROFILE_TAB_POSITIONS,
11
11
  UserProfilePage,
12
12
  useHomePageModals
13
- } from "./chunk-PYKD4W4T.mjs";
13
+ } from "./chunk-XKADJNAJ.mjs";
14
14
  import {
15
15
  EventList,
16
16
  EventListItem,
@@ -25,7 +25,7 @@ import {
25
25
  mergeVenueOutcomeOrderbooks,
26
26
  orderbookRowLimitDefault,
27
27
  useCenterOrderbookSpread
28
- } from "./chunk-PFOSEY46.mjs";
28
+ } from "./chunk-5MTIBPDY.mjs";
29
29
  import {
30
30
  CARD_NETWORK_OPTIONS,
31
31
  ConnectAccountsStep,
package/dist/pages.js CHANGED
@@ -10164,26 +10164,66 @@ var collectEligibleVenueOutcomes = ({
10164
10164
  venueMarkets,
10165
10165
  selectedOutcomeLabel
10166
10166
  }) => {
10167
+ var _a;
10167
10168
  if (!selectedOutcomeLabel) return [];
10169
+ const semanticLabel = toSemanticOutcomeLabel(selectedOutcomeLabel);
10170
+ const seenMarketIds = /* @__PURE__ */ new Set();
10168
10171
  const seenOutcomeIds = /* @__PURE__ */ new Set();
10169
- return venueMarkets.flatMap((market) => {
10170
- const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
10172
+ const result = [];
10173
+ for (const market of venueMarkets) {
10174
+ if (seenMarketIds.has(market.id)) continue;
10175
+ const parentOutcome = sortOutcomes(market.venueMarketOutcomes).find(
10171
10176
  (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
10172
10177
  );
10173
- if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) {
10174
- return [];
10178
+ if (!parentOutcome) continue;
10179
+ const refs = (_a = parentOutcome.matchedVenueMarketOutcomes) != null ? _a : [];
10180
+ if (refs.length === 0) continue;
10181
+ seenMarketIds.add(market.id);
10182
+ seenOutcomeIds.add(parentOutcome.id);
10183
+ result.push({
10184
+ venue: market.venue,
10185
+ market,
10186
+ outcome: parentOutcome,
10187
+ outcomeId: parentOutcome.id,
10188
+ semanticLabel
10189
+ });
10190
+ for (const ref of refs) {
10191
+ if (seenMarketIds.has(ref.venueMarketId)) continue;
10192
+ const sibling = venueMarkets.find((m) => m.id === ref.venueMarketId);
10193
+ if (!sibling) continue;
10194
+ const siblingOutcome = sibling.venueMarketOutcomes.find(
10195
+ (o) => o.id === ref.venueMarketOutcomeId
10196
+ );
10197
+ if (!siblingOutcome || seenOutcomeIds.has(siblingOutcome.id)) continue;
10198
+ seenMarketIds.add(sibling.id);
10199
+ seenOutcomeIds.add(siblingOutcome.id);
10200
+ result.push({
10201
+ venue: sibling.venue,
10202
+ market: sibling,
10203
+ outcome: siblingOutcome,
10204
+ outcomeId: siblingOutcome.id,
10205
+ semanticLabel
10206
+ });
10175
10207
  }
10208
+ break;
10209
+ }
10210
+ for (const market of venueMarkets) {
10211
+ if (seenMarketIds.has(market.id)) continue;
10212
+ const matchedOutcome = sortOutcomes(market.venueMarketOutcomes).find(
10213
+ (outcome) => matchesSelectedOutcomeLabel(outcome, selectedOutcomeLabel)
10214
+ );
10215
+ if (!matchedOutcome || seenOutcomeIds.has(matchedOutcome.id)) continue;
10216
+ seenMarketIds.add(market.id);
10176
10217
  seenOutcomeIds.add(matchedOutcome.id);
10177
- return [
10178
- {
10179
- venue: market.venue,
10180
- market,
10181
- outcome: matchedOutcome,
10182
- outcomeId: matchedOutcome.id,
10183
- semanticLabel: toSemanticOutcomeLabel(selectedOutcomeLabel)
10184
- }
10185
- ];
10186
- });
10218
+ result.push({
10219
+ venue: market.venue,
10220
+ market,
10221
+ outcome: matchedOutcome,
10222
+ outcomeId: matchedOutcome.id,
10223
+ semanticLabel
10224
+ });
10225
+ }
10226
+ return result;
10187
10227
  };
10188
10228
  var mergeVenueOutcomeOrderbooks = ({
10189
10229
  eligibleOutcomes,
package/dist/pages.mjs CHANGED
@@ -7,8 +7,8 @@ import {
7
7
  USER_PROFILE_TAB_POSITIONS,
8
8
  UserProfilePage,
9
9
  useHomePageModals
10
- } from "./chunk-PYKD4W4T.mjs";
11
- import "./chunk-PFOSEY46.mjs";
10
+ } from "./chunk-XKADJNAJ.mjs";
11
+ import "./chunk-5MTIBPDY.mjs";
12
12
  import {
13
13
  DEPOSIT_MODAL_OPEN_EVENT,
14
14
  WITHDRAW_MODAL_OPEN_EVENT,
@@ -16,6 +16,22 @@ export type AggregatedOrderbookRows = {
16
16
  includedOutcomeIds: string[];
17
17
  missingOutcomeIds: string[];
18
18
  };
19
+ /**
20
+ * Pick the eligible outcome on each venue-market that corresponds to the
21
+ * user's selected side.
22
+ *
23
+ * MVMO-first: when one of the input markets is the "parent" (the queried
24
+ * market whose selected outcome carries `matchedVenueMarketOutcomes`
25
+ * refs), we walk those refs to align sibling outcomes by id — robust to
26
+ * inversely-framed binaries (e.g. UFC: Polymarket-No (Chimaev) maps via
27
+ * MVMO to Kalshi-Chimaev-Yes, NOT to Kalshi-Chimaev-No despite the
28
+ * matching label) and to multi-outcome markets that don't carry
29
+ * Yes/No labels at all.
30
+ *
31
+ * Label-fallback: for any sibling not covered by an MVMO ref (unmatched
32
+ * markets, or older API responses that pre-date the refs), fall back to
33
+ * label matching so we don't regress on the historically-correct cases.
34
+ */
19
35
  export declare const collectEligibleVenueOutcomes: ({ venueMarkets, selectedOutcomeLabel, }: {
20
36
  venueMarkets: VenueMarket[];
21
37
  selectedOutcomeLabel: string | null | undefined;
@@ -16,6 +16,22 @@ export type AggregatedOrderbookRows = {
16
16
  includedOutcomeIds: string[];
17
17
  missingOutcomeIds: string[];
18
18
  };
19
+ /**
20
+ * Pick the eligible outcome on each venue-market that corresponds to the
21
+ * user's selected side.
22
+ *
23
+ * MVMO-first: when one of the input markets is the "parent" (the queried
24
+ * market whose selected outcome carries `matchedVenueMarketOutcomes`
25
+ * refs), we walk those refs to align sibling outcomes by id — robust to
26
+ * inversely-framed binaries (e.g. UFC: Polymarket-No (Chimaev) maps via
27
+ * MVMO to Kalshi-Chimaev-Yes, NOT to Kalshi-Chimaev-No despite the
28
+ * matching label) and to multi-outcome markets that don't carry
29
+ * Yes/No labels at all.
30
+ *
31
+ * Label-fallback: for any sibling not covered by an MVMO ref (unmatched
32
+ * markets, or older API responses that pre-date the refs), fall back to
33
+ * label matching so we don't regress on the historically-correct cases.
34
+ */
19
35
  export declare const collectEligibleVenueOutcomes: ({ venueMarkets, selectedOutcomeLabel, }: {
20
36
  venueMarkets: VenueMarket[];
21
37
  selectedOutcomeLabel: string | null | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agg-build/ui",
3
- "version": "1.2.9",
3
+ "version": "1.2.10",
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",