@agg-build/ui 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-ONVP7YWS.mjs → chunk-2UKDQ7WP.mjs} +1 -1
- package/dist/{chunk-QUZWA34R.mjs → chunk-2ZS3BPSF.mjs} +413 -455
- package/dist/{chunk-UFC7L74C.mjs → chunk-4CM4F4S6.mjs} +1 -1
- package/dist/{chunk-55ODXLOS.mjs → chunk-HH7L3KLS.mjs} +1 -1
- package/dist/{chunk-YWJIYEJV.mjs → chunk-R3U6YXSQ.mjs} +3 -3
- package/dist/{chunk-6PQ6O6M5.mjs → chunk-RF2EPYLN.mjs} +10 -16
- package/dist/{chunk-5ALBEKAT.mjs → chunk-RWOF44TC.mjs} +9 -13
- package/dist/events.js +300 -344
- package/dist/events.mjs +3 -3
- package/dist/index.js +574 -621
- package/dist/index.mjs +7 -7
- package/dist/modals.mjs +3 -3
- package/dist/pages.js +574 -621
- package/dist/pages.mjs +6 -6
- package/dist/primitives.js +424 -424
- package/dist/primitives.mjs +1 -1
- package/dist/trading.mjs +4 -4
- package/dist/types/events/list/event-list.utils.d.mts +0 -4
- package/dist/types/events/list/event-list.utils.d.ts +0 -4
- package/package.json +3 -3
package/dist/events.js
CHANGED
|
@@ -4005,266 +4005,8 @@ var LineChart = ({
|
|
|
4005
4005
|
LineChart.displayName = "LineChart";
|
|
4006
4006
|
|
|
4007
4007
|
// src/events/list/event-list.utils.ts
|
|
4008
|
-
var import_hooks8 = require("@agg-build/hooks");
|
|
4009
|
-
var import_sdk = require("@agg-build/sdk");
|
|
4010
|
-
|
|
4011
|
-
// src/events/item/event-list-item.utils.ts
|
|
4012
4008
|
var import_hooks7 = require("@agg-build/hooks");
|
|
4013
|
-
|
|
4014
|
-
// src/events/shared/venue-market-cluster.ts
|
|
4015
|
-
var toNonEmptyString = (value) => {
|
|
4016
|
-
if (typeof value !== "string") return void 0;
|
|
4017
|
-
const trimmedValue = value.trim();
|
|
4018
|
-
return trimmedValue ? trimmedValue : void 0;
|
|
4019
|
-
};
|
|
4020
|
-
var addGraphEdge = (adjacencyById, fromMarketId, toMarketId) => {
|
|
4021
|
-
var _a, _b;
|
|
4022
|
-
if (fromMarketId === toMarketId) return;
|
|
4023
|
-
const fromNeighbors = (_a = adjacencyById.get(fromMarketId)) != null ? _a : /* @__PURE__ */ new Set();
|
|
4024
|
-
fromNeighbors.add(toMarketId);
|
|
4025
|
-
adjacencyById.set(fromMarketId, fromNeighbors);
|
|
4026
|
-
const toNeighbors = (_b = adjacencyById.get(toMarketId)) != null ? _b : /* @__PURE__ */ new Set();
|
|
4027
|
-
toNeighbors.add(fromMarketId);
|
|
4028
|
-
adjacencyById.set(toMarketId, toNeighbors);
|
|
4029
|
-
};
|
|
4030
|
-
var dedupeSourceMarketsById = (markets) => {
|
|
4031
|
-
const seenMarketIds = /* @__PURE__ */ new Set();
|
|
4032
|
-
return markets.filter((market) => {
|
|
4033
|
-
if (seenMarketIds.has(market.id)) {
|
|
4034
|
-
return false;
|
|
4035
|
-
}
|
|
4036
|
-
seenMarketIds.add(market.id);
|
|
4037
|
-
return true;
|
|
4038
|
-
});
|
|
4039
|
-
};
|
|
4040
|
-
var collectDirectRelationMarkets = (market) => {
|
|
4041
|
-
var _a, _b, _c;
|
|
4042
|
-
const relationMarkets = [];
|
|
4043
|
-
const seenRelationIds = /* @__PURE__ */ new Set();
|
|
4044
|
-
const addRelationMarket = (relationMarket) => {
|
|
4045
|
-
if (!relationMarket) return;
|
|
4046
|
-
if (seenRelationIds.has(relationMarket.id)) return;
|
|
4047
|
-
seenRelationIds.add(relationMarket.id);
|
|
4048
|
-
relationMarkets.push(relationMarket);
|
|
4049
|
-
};
|
|
4050
|
-
for (const matchedVenueMarket of (_a = market.matchedVenueMarkets) != null ? _a : []) {
|
|
4051
|
-
addRelationMarket(matchedVenueMarket);
|
|
4052
|
-
}
|
|
4053
|
-
addRelationMarket(
|
|
4054
|
-
(_c = (_b = market.matchEntry) == null ? void 0 : _b.targetVenueMarket) != null ? _c : void 0
|
|
4055
|
-
);
|
|
4056
|
-
return relationMarkets;
|
|
4057
|
-
};
|
|
4058
|
-
var collectUniqueRelatedMarkets = (markets, sourceMarketsById) => {
|
|
4059
|
-
const relatedMarketsById = /* @__PURE__ */ new Map();
|
|
4060
|
-
for (const market of markets) {
|
|
4061
|
-
for (const relatedMarket of collectDirectRelationMarkets(market)) {
|
|
4062
|
-
if (sourceMarketsById.has(relatedMarket.id) || relatedMarketsById.has(relatedMarket.id)) {
|
|
4063
|
-
continue;
|
|
4064
|
-
}
|
|
4065
|
-
relatedMarketsById.set(relatedMarket.id, relatedMarket);
|
|
4066
|
-
}
|
|
4067
|
-
}
|
|
4068
|
-
return Array.from(relatedMarketsById.values());
|
|
4069
|
-
};
|
|
4070
|
-
var normalizeVenueMarketCluster = (markets, selectedMarketId) => {
|
|
4071
|
-
var _a, _b;
|
|
4072
|
-
if (markets.length === 0) return [];
|
|
4073
|
-
const orderedSourceMarkets = dedupeSourceMarketsById(markets);
|
|
4074
|
-
const sourceMarketsById = new Map(orderedSourceMarkets.map((market) => [market.id, market]));
|
|
4075
|
-
const orderedRelatedMarkets = collectUniqueRelatedMarkets(
|
|
4076
|
-
orderedSourceMarkets,
|
|
4077
|
-
sourceMarketsById
|
|
4078
|
-
);
|
|
4079
|
-
const relatedMarketsById = new Map(orderedRelatedMarkets.map((market) => [market.id, market]));
|
|
4080
|
-
const resolvedSelectedMarketId = toNonEmptyString(selectedMarketId);
|
|
4081
|
-
if (!resolvedSelectedMarketId) {
|
|
4082
|
-
return [...orderedSourceMarkets, ...orderedRelatedMarkets];
|
|
4083
|
-
}
|
|
4084
|
-
const adjacencyById = /* @__PURE__ */ new Map();
|
|
4085
|
-
for (const market of orderedSourceMarkets) {
|
|
4086
|
-
for (const relatedMarket of collectDirectRelationMarkets(market)) {
|
|
4087
|
-
addGraphEdge(adjacencyById, market.id, relatedMarket.id);
|
|
4088
|
-
}
|
|
4089
|
-
const targetVenueMarketId = toNonEmptyString((_a = market.matchEntry) == null ? void 0 : _a.targetVenueMarketId);
|
|
4090
|
-
if (targetVenueMarketId) {
|
|
4091
|
-
addGraphEdge(adjacencyById, market.id, targetVenueMarketId);
|
|
4092
|
-
}
|
|
4093
|
-
}
|
|
4094
|
-
if (!sourceMarketsById.has(resolvedSelectedMarketId) && !relatedMarketsById.has(resolvedSelectedMarketId)) {
|
|
4095
|
-
return [];
|
|
4096
|
-
}
|
|
4097
|
-
const visitedMarketIds = /* @__PURE__ */ new Set();
|
|
4098
|
-
const queue = [resolvedSelectedMarketId];
|
|
4099
|
-
while (queue.length > 0) {
|
|
4100
|
-
const currentMarketId = queue.shift();
|
|
4101
|
-
if (!currentMarketId || visitedMarketIds.has(currentMarketId)) {
|
|
4102
|
-
continue;
|
|
4103
|
-
}
|
|
4104
|
-
visitedMarketIds.add(currentMarketId);
|
|
4105
|
-
const neighborMarketIds = adjacencyById.get(currentMarketId);
|
|
4106
|
-
for (const neighborMarketId of Array.from(neighborMarketIds != null ? neighborMarketIds : /* @__PURE__ */ new Set())) {
|
|
4107
|
-
if (!visitedMarketIds.has(neighborMarketId)) {
|
|
4108
|
-
queue.push(neighborMarketId);
|
|
4109
|
-
}
|
|
4110
|
-
}
|
|
4111
|
-
}
|
|
4112
|
-
const orderedClusterMarkets = [];
|
|
4113
|
-
const appendedMarketIds = /* @__PURE__ */ new Set();
|
|
4114
|
-
const appendMarket = (market) => {
|
|
4115
|
-
if (!market) return;
|
|
4116
|
-
if (!visitedMarketIds.has(market.id)) return;
|
|
4117
|
-
if (appendedMarketIds.has(market.id)) return;
|
|
4118
|
-
appendedMarketIds.add(market.id);
|
|
4119
|
-
orderedClusterMarkets.push(market);
|
|
4120
|
-
};
|
|
4121
|
-
appendMarket(
|
|
4122
|
-
(_b = sourceMarketsById.get(resolvedSelectedMarketId)) != null ? _b : relatedMarketsById.get(resolvedSelectedMarketId)
|
|
4123
|
-
);
|
|
4124
|
-
for (const market of orderedSourceMarkets) {
|
|
4125
|
-
appendMarket(market);
|
|
4126
|
-
}
|
|
4127
|
-
for (const market of orderedRelatedMarkets) {
|
|
4128
|
-
appendMarket(market);
|
|
4129
|
-
}
|
|
4130
|
-
return orderedClusterMarkets;
|
|
4131
|
-
};
|
|
4132
|
-
|
|
4133
|
-
// src/events/item/event-list-item.utils.ts
|
|
4134
|
-
var resolveEventListItemEvent = (fetchedEvent) => {
|
|
4135
|
-
if (!fetchedEvent) return void 0;
|
|
4136
|
-
if (!fetchedEvent.venueMarkets || fetchedEvent.venueMarkets.length === 0) return void 0;
|
|
4137
|
-
return fetchedEvent;
|
|
4138
|
-
};
|
|
4139
|
-
var normalizeProbability = (value) => {
|
|
4140
|
-
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
4141
|
-
if (value < 0) return 0;
|
|
4142
|
-
if (value > 1) return 1;
|
|
4143
|
-
return value;
|
|
4144
|
-
};
|
|
4145
|
-
var formatWholePercent = (value) => {
|
|
4146
|
-
return `${Math.round(value * 100)}%`;
|
|
4147
|
-
};
|
|
4148
|
-
var hasDateLabel = (outcome) => {
|
|
4149
|
-
return !!toDate(outcome.label);
|
|
4150
|
-
};
|
|
4151
|
-
var isYesLabel = (label2) => label2.trim().toLowerCase() === "yes";
|
|
4152
|
-
var isNoLabel = (label2) => label2.trim().toLowerCase() === "no";
|
|
4153
|
-
var hasBinaryOutcomes = (outcomes) => {
|
|
4154
|
-
return outcomes.some((o) => isYesLabel(o.label)) && outcomes.some((o) => isNoLabel(o.label));
|
|
4155
|
-
};
|
|
4156
|
-
var sortYesFirst = (outcomes) => {
|
|
4157
|
-
return [...outcomes].sort((a, b) => {
|
|
4158
|
-
if (isYesLabel(a.label) && !isYesLabel(b.label)) return -1;
|
|
4159
|
-
if (!isYesLabel(a.label) && isYesLabel(b.label)) return 1;
|
|
4160
|
-
return 0;
|
|
4161
|
-
});
|
|
4162
|
-
};
|
|
4163
|
-
var resolveYesOutcome = (market) => {
|
|
4164
|
-
return market.venueMarketOutcomes.find((outcome) => isYesLabel(outcome.label));
|
|
4165
|
-
};
|
|
4166
|
-
var resolveYesOutcomeProbability = (market) => {
|
|
4167
|
-
var _a;
|
|
4168
|
-
return normalizeProbability((_a = resolveYesOutcome(market)) == null ? void 0 : _a.price);
|
|
4169
|
-
};
|
|
4170
|
-
var formatMarketProbabilityPercent = (value, formatPercent = formatWholePercent) => {
|
|
4171
|
-
const probability = normalizeProbability(value);
|
|
4172
|
-
if (probability == null) return "-";
|
|
4173
|
-
const formattedValue = formatPercent(probability);
|
|
4174
|
-
if (probability > 0 && formattedValue === formatPercent(0)) {
|
|
4175
|
-
return "<1%";
|
|
4176
|
-
}
|
|
4177
|
-
return formattedValue;
|
|
4178
|
-
};
|
|
4179
|
-
var formatPriceGapPercent = (value) => {
|
|
4180
|
-
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
4181
|
-
if (value < import_hooks7.MIN_PRICE_GAP_PCT) return void 0;
|
|
4182
|
-
if (value > import_hooks7.MAX_PRICE_GAP_PCT) return void 0;
|
|
4183
|
-
return `${Math.round(value)}%`;
|
|
4184
|
-
};
|
|
4185
|
-
var sortOutcomes = (outcomes) => {
|
|
4186
|
-
if (outcomes.length <= 1) return outcomes;
|
|
4187
|
-
if (hasBinaryOutcomes(outcomes)) {
|
|
4188
|
-
return sortYesFirst(outcomes);
|
|
4189
|
-
}
|
|
4190
|
-
const now = Date.now();
|
|
4191
|
-
if (outcomes.some(hasDateLabel)) {
|
|
4192
|
-
return [...outcomes].sort((a, b) => {
|
|
4193
|
-
var _a, _b, _c, _d;
|
|
4194
|
-
const aDate = (_b = (_a = toDate(a.label)) == null ? void 0 : _a.getTime()) != null ? _b : 0;
|
|
4195
|
-
const bDate = (_d = (_c = toDate(b.label)) == null ? void 0 : _c.getTime()) != null ? _d : 0;
|
|
4196
|
-
return Math.abs(aDate - now) - Math.abs(bDate - now);
|
|
4197
|
-
});
|
|
4198
|
-
}
|
|
4199
|
-
return [...outcomes].sort((a, b) => {
|
|
4200
|
-
var _a, _b;
|
|
4201
|
-
const aPrice = (_a = normalizeProbability(a.price)) != null ? _a : 0;
|
|
4202
|
-
const bPrice = (_b = normalizeProbability(b.price)) != null ? _b : 0;
|
|
4203
|
-
return bPrice - aPrice;
|
|
4204
|
-
});
|
|
4205
|
-
};
|
|
4206
|
-
var dedupeVenueMarketsById = (venueMarkets) => {
|
|
4207
|
-
const seenClusterIds = /* @__PURE__ */ new Set();
|
|
4208
|
-
return venueMarkets.filter((venueMarket) => {
|
|
4209
|
-
var _a;
|
|
4210
|
-
if (seenClusterIds.has(venueMarket.id)) {
|
|
4211
|
-
return false;
|
|
4212
|
-
}
|
|
4213
|
-
seenClusterIds.add(venueMarket.id);
|
|
4214
|
-
for (const sibling of (_a = venueMarket.matchedVenueMarkets) != null ? _a : []) {
|
|
4215
|
-
seenClusterIds.add(sibling.id);
|
|
4216
|
-
}
|
|
4217
|
-
return true;
|
|
4218
|
-
});
|
|
4219
|
-
};
|
|
4220
|
-
var resolveOutcomeTitle = (outcome) => {
|
|
4221
|
-
var _a, _b;
|
|
4222
|
-
return (_b = (_a = outcome == null ? void 0 : outcome.title) != null ? _a : outcome == null ? void 0 : outcome.label) == null ? void 0 : _b.trim();
|
|
4223
|
-
};
|
|
4224
|
-
var selectPrimaryVenueMarket = (venueMarkets) => {
|
|
4225
|
-
if (venueMarkets.length === 0) return void 0;
|
|
4226
|
-
if (venueMarkets.length === 1) return venueMarkets[0];
|
|
4227
|
-
return [...venueMarkets].sort((a, b) => {
|
|
4228
|
-
const aVolume = typeof a.volume === "number" ? a.volume : -1;
|
|
4229
|
-
const bVolume = typeof b.volume === "number" ? b.volume : -1;
|
|
4230
|
-
return bVolume - aVolume;
|
|
4231
|
-
})[0];
|
|
4232
|
-
};
|
|
4233
|
-
var getVenueSummary = (venueMarkets, options) => {
|
|
4234
|
-
const normalizedVenueMarkets = normalizeVenueMarketCluster(venueMarkets);
|
|
4235
|
-
const tradableVenues = options == null ? void 0 : options.tradableVenues;
|
|
4236
|
-
const isVenueTradable = (venue) => {
|
|
4237
|
-
if (tradableVenues == null) return true;
|
|
4238
|
-
return tradableVenues.has(venue);
|
|
4239
|
-
};
|
|
4240
|
-
const uniqueVenues = Array.from(
|
|
4241
|
-
new Set(
|
|
4242
|
-
normalizedVenueMarkets.filter((market) => isVenueTradable(market.venue)).map((market) => market.venue)
|
|
4243
|
-
)
|
|
4244
|
-
);
|
|
4245
|
-
return {
|
|
4246
|
-
marketCount: normalizedVenueMarkets.length,
|
|
4247
|
-
venueCount: uniqueVenues.length,
|
|
4248
|
-
singleVenue: uniqueVenues.length === 1 ? uniqueVenues[0] : void 0
|
|
4249
|
-
};
|
|
4250
|
-
};
|
|
4251
|
-
var resolveVenueLabel = (venue, venueInfo, labels) => {
|
|
4252
|
-
var _a, _b;
|
|
4253
|
-
if (!venue) return labels.eventItem.venueSingular;
|
|
4254
|
-
return (_b = (_a = venueInfo == null ? void 0 : venueInfo[venue]) == null ? void 0 : _a.label) != null ? _b : labels.venues[venue];
|
|
4255
|
-
};
|
|
4256
|
-
var resolveDisplayVolume = (eventVolume, venueMarkets) => {
|
|
4257
|
-
if (typeof eventVolume === "number" && eventVolume > 0) return eventVolume;
|
|
4258
|
-
const clusterMarkets = normalizeVenueMarketCluster(venueMarkets);
|
|
4259
|
-
const marketSum = clusterMarkets.reduce(
|
|
4260
|
-
(acc, m) => acc + (typeof m.volume === "number" ? m.volume : 0),
|
|
4261
|
-
0
|
|
4262
|
-
);
|
|
4263
|
-
if (marketSum > 0) return marketSum;
|
|
4264
|
-
return void 0;
|
|
4265
|
-
};
|
|
4266
|
-
|
|
4267
|
-
// src/events/list/event-list.utils.ts
|
|
4009
|
+
var import_sdk = require("@agg-build/sdk");
|
|
4268
4010
|
var resolveEventVolume = (event) => {
|
|
4269
4011
|
if (typeof event.volume === "number" && Number.isFinite(event.volume)) {
|
|
4270
4012
|
return event.volume;
|
|
@@ -4292,20 +4034,20 @@ var sortEventsByVolumeDesc = (events, sortEventsBy) => {
|
|
|
4292
4034
|
};
|
|
4293
4035
|
var resolveEventLifecycle = (event) => {
|
|
4294
4036
|
const hasOpenMarket = event.venueMarkets.some(
|
|
4295
|
-
(market) => !market.status || market.status ===
|
|
4037
|
+
(market) => !market.status || market.status === import_hooks7.MarketStatus.open
|
|
4296
4038
|
);
|
|
4297
4039
|
if (hasOpenMarket) return "open";
|
|
4298
4040
|
const hasUpcomingMarket = event.venueMarkets.some(
|
|
4299
|
-
(market) => market.status ===
|
|
4041
|
+
(market) => market.status === import_hooks7.MarketStatus.unopened
|
|
4300
4042
|
);
|
|
4301
4043
|
if (hasUpcomingMarket) return "upcoming";
|
|
4302
4044
|
const hasResolvedMarket = event.venueMarkets.some(
|
|
4303
|
-
(market) => market.status ===
|
|
4045
|
+
(market) => market.status === import_hooks7.MarketStatus.resolved
|
|
4304
4046
|
);
|
|
4305
4047
|
if (hasResolvedMarket) return "resolved";
|
|
4306
|
-
if (event.status ===
|
|
4307
|
-
if (event.status ===
|
|
4308
|
-
if (event.status ===
|
|
4048
|
+
if (event.status === import_hooks7.MarketStatus.open) return "open";
|
|
4049
|
+
if (event.status === import_hooks7.MarketStatus.unopened) return "upcoming";
|
|
4050
|
+
if (event.status === import_hooks7.MarketStatus.resolved) return "resolved";
|
|
4309
4051
|
return "ignore";
|
|
4310
4052
|
};
|
|
4311
4053
|
var splitEventsByLifecycle = (events) => {
|
|
@@ -4335,42 +4077,6 @@ var mapEventToEventListItemEvent = (event) => {
|
|
|
4335
4077
|
var filterEventsByTabValue = (events, _tabValue) => {
|
|
4336
4078
|
return events;
|
|
4337
4079
|
};
|
|
4338
|
-
var sortMarketsByYesOddsDesc = (markets) => {
|
|
4339
|
-
return markets.map((market, index) => ({
|
|
4340
|
-
market,
|
|
4341
|
-
index,
|
|
4342
|
-
yesProbability: resolveYesOutcomeProbability(market)
|
|
4343
|
-
})).sort((left, right) => {
|
|
4344
|
-
const leftHasYesProbability = left.yesProbability != null;
|
|
4345
|
-
const rightHasYesProbability = right.yesProbability != null;
|
|
4346
|
-
if (leftHasYesProbability !== rightHasYesProbability) {
|
|
4347
|
-
return leftHasYesProbability ? -1 : 1;
|
|
4348
|
-
}
|
|
4349
|
-
if (left.yesProbability != null && right.yesProbability != null) {
|
|
4350
|
-
if (left.yesProbability !== right.yesProbability) {
|
|
4351
|
-
return right.yesProbability - left.yesProbability;
|
|
4352
|
-
}
|
|
4353
|
-
}
|
|
4354
|
-
return left.index - right.index;
|
|
4355
|
-
}).map(({ market }) => market);
|
|
4356
|
-
};
|
|
4357
|
-
var resolveMarketVolume = (market) => {
|
|
4358
|
-
if (typeof market.volume !== "number") return 0;
|
|
4359
|
-
if (!Number.isFinite(market.volume)) return 0;
|
|
4360
|
-
return market.volume;
|
|
4361
|
-
};
|
|
4362
|
-
var sortMarketsByVolumeDesc = (markets) => {
|
|
4363
|
-
return markets.map((market, index) => ({
|
|
4364
|
-
market,
|
|
4365
|
-
index,
|
|
4366
|
-
volume: resolveMarketVolume(market)
|
|
4367
|
-
})).sort((left, right) => {
|
|
4368
|
-
if (left.volume !== right.volume) {
|
|
4369
|
-
return right.volume - left.volume;
|
|
4370
|
-
}
|
|
4371
|
-
return left.index - right.index;
|
|
4372
|
-
}).map(({ market }) => market);
|
|
4373
|
-
};
|
|
4374
4080
|
var sortCategoriesForNavigation = (categories) => {
|
|
4375
4081
|
return [...categories].sort((left, right) => {
|
|
4376
4082
|
const leftIsOther = left.name.trim().toLowerCase() === "other";
|
|
@@ -4403,16 +4109,16 @@ var resolveTabVenus = (tab, visibleVenues) => {
|
|
|
4403
4109
|
};
|
|
4404
4110
|
|
|
4405
4111
|
// src/primitives/remote-image/index.tsx
|
|
4406
|
-
var
|
|
4112
|
+
var import_hooks9 = require("@agg-build/hooks");
|
|
4407
4113
|
var import_react4 = require("react");
|
|
4408
4114
|
|
|
4409
4115
|
// src/primitives/skeleton/skeleton-block.tsx
|
|
4410
|
-
var
|
|
4116
|
+
var import_hooks8 = require("@agg-build/hooks");
|
|
4411
4117
|
var import_jsx_runtime90 = require("react/jsx-runtime");
|
|
4412
4118
|
var SkeletonBlock = ({ className }) => {
|
|
4413
4119
|
const {
|
|
4414
4120
|
features: { enableAnimations }
|
|
4415
|
-
} = (0,
|
|
4121
|
+
} = (0, import_hooks8.useSdkUiConfig)();
|
|
4416
4122
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
4417
4123
|
"div",
|
|
4418
4124
|
{
|
|
@@ -4456,7 +4162,7 @@ var RemoteImage = ({
|
|
|
4456
4162
|
}) => {
|
|
4457
4163
|
const {
|
|
4458
4164
|
general: { theme }
|
|
4459
|
-
} = (0,
|
|
4165
|
+
} = (0, import_hooks9.useSdkUiConfig)();
|
|
4460
4166
|
const isDarkTheme = theme === "dark";
|
|
4461
4167
|
const [status, setStatus] = (0, import_react4.useState)(
|
|
4462
4168
|
() => resolveRemoteImageStatusFromSrc(src)
|
|
@@ -4530,17 +4236,17 @@ var RemoteImage = ({
|
|
|
4530
4236
|
RemoteImage.displayName = "RemoteImage";
|
|
4531
4237
|
|
|
4532
4238
|
// src/primitives/skeleton/views/event-list-skeleton-view.tsx
|
|
4533
|
-
var
|
|
4239
|
+
var import_hooks11 = require("@agg-build/hooks");
|
|
4534
4240
|
|
|
4535
4241
|
// src/primitives/skeleton/views/event-list-item-skeleton-view.tsx
|
|
4536
|
-
var
|
|
4242
|
+
var import_hooks10 = require("@agg-build/hooks");
|
|
4537
4243
|
var import_jsx_runtime92 = require("react/jsx-runtime");
|
|
4538
4244
|
var EventListItemSkeletonView = ({
|
|
4539
4245
|
className,
|
|
4540
4246
|
ariaLabel,
|
|
4541
4247
|
isStandalone = false
|
|
4542
4248
|
}) => {
|
|
4543
|
-
const labels = (0,
|
|
4249
|
+
const labels = (0, import_hooks10.useLabels)();
|
|
4544
4250
|
const outcomeTitleWidths = ["max-w-40", "max-w-[200px]"];
|
|
4545
4251
|
return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
|
|
4546
4252
|
Card,
|
|
@@ -4606,7 +4312,7 @@ var EventListSkeletonView = ({
|
|
|
4606
4312
|
ariaLabel,
|
|
4607
4313
|
withSidebar
|
|
4608
4314
|
}) => {
|
|
4609
|
-
const labels = (0,
|
|
4315
|
+
const labels = (0, import_hooks11.useLabels)();
|
|
4610
4316
|
return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
4611
4317
|
"section",
|
|
4612
4318
|
{
|
|
@@ -4645,7 +4351,7 @@ var EventListSkeletonView = ({
|
|
|
4645
4351
|
EventListSkeletonView.displayName = "EventListSkeletonView";
|
|
4646
4352
|
|
|
4647
4353
|
// src/primitives/skeleton/views/event-list-item-details-skeleton-view.tsx
|
|
4648
|
-
var
|
|
4354
|
+
var import_hooks12 = require("@agg-build/hooks");
|
|
4649
4355
|
|
|
4650
4356
|
// src/events/item-details/event-list-item-details.constants.ts
|
|
4651
4357
|
var detailsBaseCardClassName = "w-full gap-6 p-5 md:gap-8";
|
|
@@ -4656,7 +4362,7 @@ var EventListItemDetailsSkeletonView = ({
|
|
|
4656
4362
|
className,
|
|
4657
4363
|
ariaLabel
|
|
4658
4364
|
}) => {
|
|
4659
|
-
const labels = (0,
|
|
4365
|
+
const labels = (0, import_hooks12.useLabels)();
|
|
4660
4366
|
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
4661
4367
|
Card,
|
|
4662
4368
|
{
|
|
@@ -4693,7 +4399,7 @@ var EventListItemDetailsSkeletonView = ({
|
|
|
4693
4399
|
EventListItemDetailsSkeletonView.displayName = "EventListItemDetailsSkeletonView";
|
|
4694
4400
|
|
|
4695
4401
|
// src/primitives/skeleton/views/market-details-skeleton-view.tsx
|
|
4696
|
-
var
|
|
4402
|
+
var import_hooks13 = require("@agg-build/hooks");
|
|
4697
4403
|
|
|
4698
4404
|
// src/events/market-details/market-details.constants.ts
|
|
4699
4405
|
var marketDetailsBaseCardClassName = "w-full overflow-hidden rounded-agg-lg border border-agg-separator bg-agg-secondary text-agg-foreground shadow-none hover:shadow-none";
|
|
@@ -4789,7 +4495,7 @@ var MarketDetailsSkeletonView = ({
|
|
|
4789
4495
|
ariaLabel,
|
|
4790
4496
|
isDetailed
|
|
4791
4497
|
}) => {
|
|
4792
|
-
const labels = (0,
|
|
4498
|
+
const labels = (0, import_hooks13.useLabels)();
|
|
4793
4499
|
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
|
|
4794
4500
|
Card,
|
|
4795
4501
|
{
|
|
@@ -4890,7 +4596,7 @@ var PlaceOrderSkeletonView = ({
|
|
|
4890
4596
|
PlaceOrderSkeletonView.displayName = "PlaceOrderSkeletonView";
|
|
4891
4597
|
|
|
4892
4598
|
// src/primitives/skeleton/views/search-skeleton-view.tsx
|
|
4893
|
-
var
|
|
4599
|
+
var import_hooks14 = require("@agg-build/hooks");
|
|
4894
4600
|
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
4895
4601
|
var SearchSkeletonRow = () => {
|
|
4896
4602
|
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex w-full items-center gap-6 px-5 py-4", children: [
|
|
@@ -4916,7 +4622,7 @@ var SearchSkeletonRow = () => {
|
|
|
4916
4622
|
] });
|
|
4917
4623
|
};
|
|
4918
4624
|
var SearchSkeletonView = ({ className, ariaLabel }) => {
|
|
4919
|
-
const labels = (0,
|
|
4625
|
+
const labels = (0, import_hooks14.useLabels)();
|
|
4920
4626
|
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
4921
4627
|
"div",
|
|
4922
4628
|
{
|
|
@@ -4938,13 +4644,13 @@ var SearchSkeletonView = ({ className, ariaLabel }) => {
|
|
|
4938
4644
|
SearchSkeletonView.displayName = "SearchSkeletonView";
|
|
4939
4645
|
|
|
4940
4646
|
// src/primitives/skeleton/views/settlement-skeleton-view.tsx
|
|
4941
|
-
var
|
|
4647
|
+
var import_hooks15 = require("@agg-build/hooks");
|
|
4942
4648
|
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
4943
4649
|
var SettlementSkeletonView = ({
|
|
4944
4650
|
className,
|
|
4945
4651
|
ariaLabel
|
|
4946
4652
|
}) => {
|
|
4947
|
-
const labels = (0,
|
|
4653
|
+
const labels = (0, import_hooks15.useLabels)();
|
|
4948
4654
|
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
4949
4655
|
Card,
|
|
4950
4656
|
{
|
|
@@ -5158,7 +4864,7 @@ var Skeleton = ({
|
|
|
5158
4864
|
Skeleton.displayName = "Skeleton";
|
|
5159
4865
|
|
|
5160
4866
|
// src/primitives/venue-logo/index.tsx
|
|
5161
|
-
var
|
|
4867
|
+
var import_hooks24 = require("@agg-build/hooks");
|
|
5162
4868
|
|
|
5163
4869
|
// src/primitives/venue-logo/venue-logo.constants.ts
|
|
5164
4870
|
var import_sdk10 = require("@agg-build/sdk");
|
|
@@ -5211,7 +4917,7 @@ var DefaultVenueIcon = (_a) => {
|
|
|
5211
4917
|
};
|
|
5212
4918
|
|
|
5213
4919
|
// src/primitives/venue-logo/svg/logo-hyperliquid.tsx
|
|
5214
|
-
var
|
|
4920
|
+
var import_hooks16 = require("@agg-build/hooks");
|
|
5215
4921
|
var import_sdk2 = require("@agg-build/sdk");
|
|
5216
4922
|
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
5217
4923
|
var LogoHyperliquidIcon = (_a) => {
|
|
@@ -5229,7 +4935,7 @@ var LogoHyperliquidIcon = (_a) => {
|
|
|
5229
4935
|
var _a2;
|
|
5230
4936
|
const {
|
|
5231
4937
|
general: { theme }
|
|
5232
|
-
} = (0,
|
|
4938
|
+
} = (0, import_hooks16.useAggUiConfig)();
|
|
5233
4939
|
const isDarkTheme = theme === "dark";
|
|
5234
4940
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5235
4941
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk2.Venue.hyperliquid, isDarkTheme)) != null ? _a2 : "#97FCE4",
|
|
@@ -5259,7 +4965,7 @@ var LogoHyperliquidIcon = (_a) => {
|
|
|
5259
4965
|
LogoHyperliquidIcon.displayName = "LogoHyperliquidIcon";
|
|
5260
4966
|
|
|
5261
4967
|
// src/primitives/venue-logo/svg/logo-kalshi.tsx
|
|
5262
|
-
var
|
|
4968
|
+
var import_hooks17 = require("@agg-build/hooks");
|
|
5263
4969
|
var import_sdk3 = require("@agg-build/sdk");
|
|
5264
4970
|
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
5265
4971
|
var LogoKalshiIcon = (_a) => {
|
|
@@ -5277,7 +4983,7 @@ var LogoKalshiIcon = (_a) => {
|
|
|
5277
4983
|
var _a2;
|
|
5278
4984
|
const {
|
|
5279
4985
|
general: { theme }
|
|
5280
|
-
} = (0,
|
|
4986
|
+
} = (0, import_hooks17.useAggUiConfig)();
|
|
5281
4987
|
const isDarkTheme = theme === "dark";
|
|
5282
4988
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5283
4989
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk3.Venue.kalshi, isDarkTheme)) != null ? _a2 : "#18C590",
|
|
@@ -5307,7 +5013,7 @@ var LogoKalshiIcon = (_a) => {
|
|
|
5307
5013
|
LogoKalshiIcon.displayName = "LogoKalshiIcon";
|
|
5308
5014
|
|
|
5309
5015
|
// src/primitives/venue-logo/svg/logo-limitless.tsx
|
|
5310
|
-
var
|
|
5016
|
+
var import_hooks18 = require("@agg-build/hooks");
|
|
5311
5017
|
var import_sdk4 = require("@agg-build/sdk");
|
|
5312
5018
|
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
5313
5019
|
var LogoLimitlessIcon = (_a) => {
|
|
@@ -5325,7 +5031,7 @@ var LogoLimitlessIcon = (_a) => {
|
|
|
5325
5031
|
var _a2;
|
|
5326
5032
|
const {
|
|
5327
5033
|
general: { theme }
|
|
5328
|
-
} = (0,
|
|
5034
|
+
} = (0, import_hooks18.useAggUiConfig)();
|
|
5329
5035
|
const isDarkTheme = theme === "dark";
|
|
5330
5036
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5331
5037
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk4.Venue.limitless, isDarkTheme)) != null ? _a2 : "#c4fe00",
|
|
@@ -5355,7 +5061,7 @@ var LogoLimitlessIcon = (_a) => {
|
|
|
5355
5061
|
LogoLimitlessIcon.displayName = "LogoLimitlessIcon";
|
|
5356
5062
|
|
|
5357
5063
|
// src/primitives/venue-logo/svg/logo-myriad.tsx
|
|
5358
|
-
var
|
|
5064
|
+
var import_hooks19 = require("@agg-build/hooks");
|
|
5359
5065
|
var import_sdk5 = require("@agg-build/sdk");
|
|
5360
5066
|
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
5361
5067
|
var LogoMyriadIcon = (_a) => {
|
|
@@ -5373,7 +5079,7 @@ var LogoMyriadIcon = (_a) => {
|
|
|
5373
5079
|
var _a2;
|
|
5374
5080
|
const {
|
|
5375
5081
|
general: { theme }
|
|
5376
|
-
} = (0,
|
|
5082
|
+
} = (0, import_hooks19.useAggUiConfig)();
|
|
5377
5083
|
const isDarkTheme = theme === "dark";
|
|
5378
5084
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5379
5085
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk5.Venue.myriad, isDarkTheme)) != null ? _a2 : "#2E5CFF",
|
|
@@ -5403,7 +5109,7 @@ var LogoMyriadIcon = (_a) => {
|
|
|
5403
5109
|
LogoMyriadIcon.displayName = "LogoMyriadIcon";
|
|
5404
5110
|
|
|
5405
5111
|
// src/primitives/venue-logo/svg/logo-opinion.tsx
|
|
5406
|
-
var
|
|
5112
|
+
var import_hooks20 = require("@agg-build/hooks");
|
|
5407
5113
|
var import_sdk6 = require("@agg-build/sdk");
|
|
5408
5114
|
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
5409
5115
|
var LogoOpinionIcon = (_a) => {
|
|
@@ -5421,7 +5127,7 @@ var LogoOpinionIcon = (_a) => {
|
|
|
5421
5127
|
var _a2;
|
|
5422
5128
|
const {
|
|
5423
5129
|
general: { theme }
|
|
5424
|
-
} = (0,
|
|
5130
|
+
} = (0, import_hooks20.useAggUiConfig)();
|
|
5425
5131
|
const isDarkTheme = theme === "dark";
|
|
5426
5132
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5427
5133
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk6.Venue.opinion, isDarkTheme)) != null ? _a2 : "#ec5e26",
|
|
@@ -5451,7 +5157,7 @@ var LogoOpinionIcon = (_a) => {
|
|
|
5451
5157
|
LogoOpinionIcon.displayName = "LogoOpinionIcon";
|
|
5452
5158
|
|
|
5453
5159
|
// src/primitives/venue-logo/svg/logo-polymarket.tsx
|
|
5454
|
-
var
|
|
5160
|
+
var import_hooks21 = require("@agg-build/hooks");
|
|
5455
5161
|
var import_sdk7 = require("@agg-build/sdk");
|
|
5456
5162
|
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
5457
5163
|
var LogoPolymarketIcon = (_a) => {
|
|
@@ -5469,7 +5175,7 @@ var LogoPolymarketIcon = (_a) => {
|
|
|
5469
5175
|
var _a2;
|
|
5470
5176
|
const {
|
|
5471
5177
|
general: { theme }
|
|
5472
|
-
} = (0,
|
|
5178
|
+
} = (0, import_hooks21.useAggUiConfig)();
|
|
5473
5179
|
const isDarkTheme = theme === "dark";
|
|
5474
5180
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5475
5181
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk7.Venue.polymarket, isDarkTheme)) != null ? _a2 : "#2E5CFF",
|
|
@@ -5499,7 +5205,7 @@ var LogoPolymarketIcon = (_a) => {
|
|
|
5499
5205
|
LogoPolymarketIcon.displayName = "LogoPolymarketIcon";
|
|
5500
5206
|
|
|
5501
5207
|
// src/primitives/venue-logo/svg/logo-predict.tsx
|
|
5502
|
-
var
|
|
5208
|
+
var import_hooks22 = require("@agg-build/hooks");
|
|
5503
5209
|
var import_sdk8 = require("@agg-build/sdk");
|
|
5504
5210
|
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
5505
5211
|
var LogoPredictIcon = (_a) => {
|
|
@@ -5517,7 +5223,7 @@ var LogoPredictIcon = (_a) => {
|
|
|
5517
5223
|
var _a2;
|
|
5518
5224
|
const {
|
|
5519
5225
|
general: { theme }
|
|
5520
|
-
} = (0,
|
|
5226
|
+
} = (0, import_hooks22.useAggUiConfig)();
|
|
5521
5227
|
const isDarkTheme = theme === "dark";
|
|
5522
5228
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5523
5229
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk8.Venue.predict, isDarkTheme)) != null ? _a2 : "#705bf6",
|
|
@@ -5549,7 +5255,7 @@ var LogoPredictIcon = (_a) => {
|
|
|
5549
5255
|
LogoPredictIcon.displayName = "LogoPredictIcon";
|
|
5550
5256
|
|
|
5551
5257
|
// src/primitives/venue-logo/svg/logo-probable.tsx
|
|
5552
|
-
var
|
|
5258
|
+
var import_hooks23 = require("@agg-build/hooks");
|
|
5553
5259
|
var import_sdk9 = require("@agg-build/sdk");
|
|
5554
5260
|
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
5555
5261
|
var LogoProbableIcon = (_a) => {
|
|
@@ -5567,7 +5273,7 @@ var LogoProbableIcon = (_a) => {
|
|
|
5567
5273
|
var _a2;
|
|
5568
5274
|
const {
|
|
5569
5275
|
general: { theme }
|
|
5570
|
-
} = (0,
|
|
5276
|
+
} = (0, import_hooks23.useAggUiConfig)();
|
|
5571
5277
|
const isDarkTheme = theme === "dark";
|
|
5572
5278
|
const primaryColor = resolveLogoPrimaryColor({
|
|
5573
5279
|
brandColor: (_a2 = resolveVenueLineColor(import_sdk9.Venue.probable, isDarkTheme)) != null ? _a2 : "#EC4899",
|
|
@@ -5715,7 +5421,7 @@ var VenueLogo = ({
|
|
|
5715
5421
|
title: title2
|
|
5716
5422
|
}) => {
|
|
5717
5423
|
var _a, _b;
|
|
5718
|
-
const labels = (0,
|
|
5424
|
+
const labels = (0, import_hooks24.useLabels)();
|
|
5719
5425
|
const sizeClass = sizeClasses2[size];
|
|
5720
5426
|
const resolvedLabel = resolveVenueLogoLabel({
|
|
5721
5427
|
ariaLabel,
|
|
@@ -5756,6 +5462,258 @@ var VenueLogo = ({
|
|
|
5756
5462
|
};
|
|
5757
5463
|
VenueLogo.displayName = "VenueLogo";
|
|
5758
5464
|
|
|
5465
|
+
// src/events/item/event-list-item.utils.ts
|
|
5466
|
+
var import_hooks25 = require("@agg-build/hooks");
|
|
5467
|
+
|
|
5468
|
+
// src/events/shared/venue-market-cluster.ts
|
|
5469
|
+
var toNonEmptyString = (value) => {
|
|
5470
|
+
if (typeof value !== "string") return void 0;
|
|
5471
|
+
const trimmedValue = value.trim();
|
|
5472
|
+
return trimmedValue ? trimmedValue : void 0;
|
|
5473
|
+
};
|
|
5474
|
+
var addGraphEdge = (adjacencyById, fromMarketId, toMarketId) => {
|
|
5475
|
+
var _a, _b;
|
|
5476
|
+
if (fromMarketId === toMarketId) return;
|
|
5477
|
+
const fromNeighbors = (_a = adjacencyById.get(fromMarketId)) != null ? _a : /* @__PURE__ */ new Set();
|
|
5478
|
+
fromNeighbors.add(toMarketId);
|
|
5479
|
+
adjacencyById.set(fromMarketId, fromNeighbors);
|
|
5480
|
+
const toNeighbors = (_b = adjacencyById.get(toMarketId)) != null ? _b : /* @__PURE__ */ new Set();
|
|
5481
|
+
toNeighbors.add(fromMarketId);
|
|
5482
|
+
adjacencyById.set(toMarketId, toNeighbors);
|
|
5483
|
+
};
|
|
5484
|
+
var dedupeSourceMarketsById = (markets) => {
|
|
5485
|
+
const seenMarketIds = /* @__PURE__ */ new Set();
|
|
5486
|
+
return markets.filter((market) => {
|
|
5487
|
+
if (seenMarketIds.has(market.id)) {
|
|
5488
|
+
return false;
|
|
5489
|
+
}
|
|
5490
|
+
seenMarketIds.add(market.id);
|
|
5491
|
+
return true;
|
|
5492
|
+
});
|
|
5493
|
+
};
|
|
5494
|
+
var collectDirectRelationMarkets = (market) => {
|
|
5495
|
+
var _a, _b, _c;
|
|
5496
|
+
const relationMarkets = [];
|
|
5497
|
+
const seenRelationIds = /* @__PURE__ */ new Set();
|
|
5498
|
+
const addRelationMarket = (relationMarket) => {
|
|
5499
|
+
if (!relationMarket) return;
|
|
5500
|
+
if (seenRelationIds.has(relationMarket.id)) return;
|
|
5501
|
+
seenRelationIds.add(relationMarket.id);
|
|
5502
|
+
relationMarkets.push(relationMarket);
|
|
5503
|
+
};
|
|
5504
|
+
for (const matchedVenueMarket of (_a = market.matchedVenueMarkets) != null ? _a : []) {
|
|
5505
|
+
addRelationMarket(matchedVenueMarket);
|
|
5506
|
+
}
|
|
5507
|
+
addRelationMarket(
|
|
5508
|
+
(_c = (_b = market.matchEntry) == null ? void 0 : _b.targetVenueMarket) != null ? _c : void 0
|
|
5509
|
+
);
|
|
5510
|
+
return relationMarkets;
|
|
5511
|
+
};
|
|
5512
|
+
var collectUniqueRelatedMarkets = (markets, sourceMarketsById) => {
|
|
5513
|
+
const relatedMarketsById = /* @__PURE__ */ new Map();
|
|
5514
|
+
for (const market of markets) {
|
|
5515
|
+
for (const relatedMarket of collectDirectRelationMarkets(market)) {
|
|
5516
|
+
if (sourceMarketsById.has(relatedMarket.id) || relatedMarketsById.has(relatedMarket.id)) {
|
|
5517
|
+
continue;
|
|
5518
|
+
}
|
|
5519
|
+
relatedMarketsById.set(relatedMarket.id, relatedMarket);
|
|
5520
|
+
}
|
|
5521
|
+
}
|
|
5522
|
+
return Array.from(relatedMarketsById.values());
|
|
5523
|
+
};
|
|
5524
|
+
var normalizeVenueMarketCluster = (markets, selectedMarketId) => {
|
|
5525
|
+
var _a, _b;
|
|
5526
|
+
if (markets.length === 0) return [];
|
|
5527
|
+
const orderedSourceMarkets = dedupeSourceMarketsById(markets);
|
|
5528
|
+
const sourceMarketsById = new Map(orderedSourceMarkets.map((market) => [market.id, market]));
|
|
5529
|
+
const orderedRelatedMarkets = collectUniqueRelatedMarkets(
|
|
5530
|
+
orderedSourceMarkets,
|
|
5531
|
+
sourceMarketsById
|
|
5532
|
+
);
|
|
5533
|
+
const relatedMarketsById = new Map(orderedRelatedMarkets.map((market) => [market.id, market]));
|
|
5534
|
+
const resolvedSelectedMarketId = toNonEmptyString(selectedMarketId);
|
|
5535
|
+
if (!resolvedSelectedMarketId) {
|
|
5536
|
+
return [...orderedSourceMarkets, ...orderedRelatedMarkets];
|
|
5537
|
+
}
|
|
5538
|
+
const adjacencyById = /* @__PURE__ */ new Map();
|
|
5539
|
+
for (const market of orderedSourceMarkets) {
|
|
5540
|
+
for (const relatedMarket of collectDirectRelationMarkets(market)) {
|
|
5541
|
+
addGraphEdge(adjacencyById, market.id, relatedMarket.id);
|
|
5542
|
+
}
|
|
5543
|
+
const targetVenueMarketId = toNonEmptyString((_a = market.matchEntry) == null ? void 0 : _a.targetVenueMarketId);
|
|
5544
|
+
if (targetVenueMarketId) {
|
|
5545
|
+
addGraphEdge(adjacencyById, market.id, targetVenueMarketId);
|
|
5546
|
+
}
|
|
5547
|
+
}
|
|
5548
|
+
if (!sourceMarketsById.has(resolvedSelectedMarketId) && !relatedMarketsById.has(resolvedSelectedMarketId)) {
|
|
5549
|
+
return [];
|
|
5550
|
+
}
|
|
5551
|
+
const visitedMarketIds = /* @__PURE__ */ new Set();
|
|
5552
|
+
const queue = [resolvedSelectedMarketId];
|
|
5553
|
+
while (queue.length > 0) {
|
|
5554
|
+
const currentMarketId = queue.shift();
|
|
5555
|
+
if (!currentMarketId || visitedMarketIds.has(currentMarketId)) {
|
|
5556
|
+
continue;
|
|
5557
|
+
}
|
|
5558
|
+
visitedMarketIds.add(currentMarketId);
|
|
5559
|
+
const neighborMarketIds = adjacencyById.get(currentMarketId);
|
|
5560
|
+
for (const neighborMarketId of Array.from(neighborMarketIds != null ? neighborMarketIds : /* @__PURE__ */ new Set())) {
|
|
5561
|
+
if (!visitedMarketIds.has(neighborMarketId)) {
|
|
5562
|
+
queue.push(neighborMarketId);
|
|
5563
|
+
}
|
|
5564
|
+
}
|
|
5565
|
+
}
|
|
5566
|
+
const orderedClusterMarkets = [];
|
|
5567
|
+
const appendedMarketIds = /* @__PURE__ */ new Set();
|
|
5568
|
+
const appendMarket = (market) => {
|
|
5569
|
+
if (!market) return;
|
|
5570
|
+
if (!visitedMarketIds.has(market.id)) return;
|
|
5571
|
+
if (appendedMarketIds.has(market.id)) return;
|
|
5572
|
+
appendedMarketIds.add(market.id);
|
|
5573
|
+
orderedClusterMarkets.push(market);
|
|
5574
|
+
};
|
|
5575
|
+
appendMarket(
|
|
5576
|
+
(_b = sourceMarketsById.get(resolvedSelectedMarketId)) != null ? _b : relatedMarketsById.get(resolvedSelectedMarketId)
|
|
5577
|
+
);
|
|
5578
|
+
for (const market of orderedSourceMarkets) {
|
|
5579
|
+
appendMarket(market);
|
|
5580
|
+
}
|
|
5581
|
+
for (const market of orderedRelatedMarkets) {
|
|
5582
|
+
appendMarket(market);
|
|
5583
|
+
}
|
|
5584
|
+
return orderedClusterMarkets;
|
|
5585
|
+
};
|
|
5586
|
+
|
|
5587
|
+
// src/events/item/event-list-item.utils.ts
|
|
5588
|
+
var resolveEventListItemEvent = (fetchedEvent) => {
|
|
5589
|
+
if (!fetchedEvent) return void 0;
|
|
5590
|
+
if (!fetchedEvent.venueMarkets || fetchedEvent.venueMarkets.length === 0) return void 0;
|
|
5591
|
+
return fetchedEvent;
|
|
5592
|
+
};
|
|
5593
|
+
var normalizeProbability = (value) => {
|
|
5594
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
5595
|
+
if (value < 0) return 0;
|
|
5596
|
+
if (value > 1) return 1;
|
|
5597
|
+
return value;
|
|
5598
|
+
};
|
|
5599
|
+
var formatWholePercent = (value) => {
|
|
5600
|
+
return `${Math.round(value * 100)}%`;
|
|
5601
|
+
};
|
|
5602
|
+
var hasDateLabel = (outcome) => {
|
|
5603
|
+
return !!toDate(outcome.label);
|
|
5604
|
+
};
|
|
5605
|
+
var isYesLabel = (label2) => label2.trim().toLowerCase() === "yes";
|
|
5606
|
+
var isNoLabel = (label2) => label2.trim().toLowerCase() === "no";
|
|
5607
|
+
var hasBinaryOutcomes = (outcomes) => {
|
|
5608
|
+
return outcomes.some((o) => isYesLabel(o.label)) && outcomes.some((o) => isNoLabel(o.label));
|
|
5609
|
+
};
|
|
5610
|
+
var sortYesFirst = (outcomes) => {
|
|
5611
|
+
return [...outcomes].sort((a, b) => {
|
|
5612
|
+
if (isYesLabel(a.label) && !isYesLabel(b.label)) return -1;
|
|
5613
|
+
if (!isYesLabel(a.label) && isYesLabel(b.label)) return 1;
|
|
5614
|
+
return 0;
|
|
5615
|
+
});
|
|
5616
|
+
};
|
|
5617
|
+
var resolveYesOutcome = (market) => {
|
|
5618
|
+
return market.venueMarketOutcomes.find((outcome) => isYesLabel(outcome.label));
|
|
5619
|
+
};
|
|
5620
|
+
var formatMarketProbabilityPercent = (value, formatPercent = formatWholePercent) => {
|
|
5621
|
+
const probability = normalizeProbability(value);
|
|
5622
|
+
if (probability == null) return "-";
|
|
5623
|
+
const formattedValue = formatPercent(probability);
|
|
5624
|
+
if (probability > 0 && formattedValue === formatPercent(0)) {
|
|
5625
|
+
return "<1%";
|
|
5626
|
+
}
|
|
5627
|
+
return formattedValue;
|
|
5628
|
+
};
|
|
5629
|
+
var formatPriceGapPercent = (value) => {
|
|
5630
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
5631
|
+
if (value < import_hooks25.MIN_PRICE_GAP_PCT) return void 0;
|
|
5632
|
+
if (value > import_hooks25.MAX_PRICE_GAP_PCT) return void 0;
|
|
5633
|
+
return `${Math.round(value)}%`;
|
|
5634
|
+
};
|
|
5635
|
+
var sortOutcomes = (outcomes) => {
|
|
5636
|
+
if (outcomes.length <= 1) return outcomes;
|
|
5637
|
+
if (hasBinaryOutcomes(outcomes)) {
|
|
5638
|
+
return sortYesFirst(outcomes);
|
|
5639
|
+
}
|
|
5640
|
+
const now = Date.now();
|
|
5641
|
+
if (outcomes.some(hasDateLabel)) {
|
|
5642
|
+
return [...outcomes].sort((a, b) => {
|
|
5643
|
+
var _a, _b, _c, _d;
|
|
5644
|
+
const aDate = (_b = (_a = toDate(a.label)) == null ? void 0 : _a.getTime()) != null ? _b : 0;
|
|
5645
|
+
const bDate = (_d = (_c = toDate(b.label)) == null ? void 0 : _c.getTime()) != null ? _d : 0;
|
|
5646
|
+
return Math.abs(aDate - now) - Math.abs(bDate - now);
|
|
5647
|
+
});
|
|
5648
|
+
}
|
|
5649
|
+
return [...outcomes].sort((a, b) => {
|
|
5650
|
+
var _a, _b;
|
|
5651
|
+
const aPrice = (_a = normalizeProbability(a.price)) != null ? _a : 0;
|
|
5652
|
+
const bPrice = (_b = normalizeProbability(b.price)) != null ? _b : 0;
|
|
5653
|
+
return bPrice - aPrice;
|
|
5654
|
+
});
|
|
5655
|
+
};
|
|
5656
|
+
var dedupeVenueMarketsById = (venueMarkets) => {
|
|
5657
|
+
const seenClusterIds = /* @__PURE__ */ new Set();
|
|
5658
|
+
return venueMarkets.filter((venueMarket) => {
|
|
5659
|
+
var _a;
|
|
5660
|
+
if (seenClusterIds.has(venueMarket.id)) {
|
|
5661
|
+
return false;
|
|
5662
|
+
}
|
|
5663
|
+
seenClusterIds.add(venueMarket.id);
|
|
5664
|
+
for (const sibling of (_a = venueMarket.matchedVenueMarkets) != null ? _a : []) {
|
|
5665
|
+
seenClusterIds.add(sibling.id);
|
|
5666
|
+
}
|
|
5667
|
+
return true;
|
|
5668
|
+
});
|
|
5669
|
+
};
|
|
5670
|
+
var resolveOutcomeTitle = (outcome) => {
|
|
5671
|
+
var _a, _b;
|
|
5672
|
+
return (_b = (_a = outcome == null ? void 0 : outcome.title) != null ? _a : outcome == null ? void 0 : outcome.label) == null ? void 0 : _b.trim();
|
|
5673
|
+
};
|
|
5674
|
+
var selectPrimaryVenueMarket = (venueMarkets) => {
|
|
5675
|
+
if (venueMarkets.length === 0) return void 0;
|
|
5676
|
+
if (venueMarkets.length === 1) return venueMarkets[0];
|
|
5677
|
+
return [...venueMarkets].sort((a, b) => {
|
|
5678
|
+
const aVolume = typeof a.volume === "number" ? a.volume : -1;
|
|
5679
|
+
const bVolume = typeof b.volume === "number" ? b.volume : -1;
|
|
5680
|
+
return bVolume - aVolume;
|
|
5681
|
+
})[0];
|
|
5682
|
+
};
|
|
5683
|
+
var getVenueSummary = (venueMarkets, options) => {
|
|
5684
|
+
const normalizedVenueMarkets = normalizeVenueMarketCluster(venueMarkets);
|
|
5685
|
+
const tradableVenues = options == null ? void 0 : options.tradableVenues;
|
|
5686
|
+
const isVenueTradable = (venue) => {
|
|
5687
|
+
if (tradableVenues == null) return true;
|
|
5688
|
+
return tradableVenues.has(venue);
|
|
5689
|
+
};
|
|
5690
|
+
const uniqueVenues = Array.from(
|
|
5691
|
+
new Set(
|
|
5692
|
+
normalizedVenueMarkets.filter((market) => isVenueTradable(market.venue)).map((market) => market.venue)
|
|
5693
|
+
)
|
|
5694
|
+
);
|
|
5695
|
+
return {
|
|
5696
|
+
marketCount: normalizedVenueMarkets.length,
|
|
5697
|
+
venueCount: uniqueVenues.length,
|
|
5698
|
+
singleVenue: uniqueVenues.length === 1 ? uniqueVenues[0] : void 0
|
|
5699
|
+
};
|
|
5700
|
+
};
|
|
5701
|
+
var resolveVenueLabel = (venue, venueInfo, labels) => {
|
|
5702
|
+
var _a, _b;
|
|
5703
|
+
if (!venue) return labels.eventItem.venueSingular;
|
|
5704
|
+
return (_b = (_a = venueInfo == null ? void 0 : venueInfo[venue]) == null ? void 0 : _a.label) != null ? _b : labels.venues[venue];
|
|
5705
|
+
};
|
|
5706
|
+
var resolveDisplayVolume = (eventVolume, venueMarkets) => {
|
|
5707
|
+
if (typeof eventVolume === "number" && eventVolume > 0) return eventVolume;
|
|
5708
|
+
const clusterMarkets = normalizeVenueMarketCluster(venueMarkets);
|
|
5709
|
+
const marketSum = clusterMarkets.reduce(
|
|
5710
|
+
(acc, m) => acc + (typeof m.volume === "number" ? m.volume : 0),
|
|
5711
|
+
0
|
|
5712
|
+
);
|
|
5713
|
+
if (marketSum > 0) return marketSum;
|
|
5714
|
+
return void 0;
|
|
5715
|
+
};
|
|
5716
|
+
|
|
5759
5717
|
// src/primitives/modal/index.tsx
|
|
5760
5718
|
var import_hooks26 = require("@agg-build/hooks");
|
|
5761
5719
|
var Dialog = __toESM(require("@radix-ui/react-dialog"));
|
|
@@ -7108,7 +7066,7 @@ var resolveOutcomeRows = ({
|
|
|
7108
7066
|
outcome
|
|
7109
7067
|
}));
|
|
7110
7068
|
}
|
|
7111
|
-
return
|
|
7069
|
+
return venueMarkets.map((market) => {
|
|
7112
7070
|
const outcome = resolveDisplayOutcome(market);
|
|
7113
7071
|
if (!outcome) return void 0;
|
|
7114
7072
|
return {
|
|
@@ -10456,13 +10414,12 @@ var EventListItemDetailsContent = ({
|
|
|
10456
10414
|
() => resolvedEventTradingState.displayMarkets,
|
|
10457
10415
|
[resolvedEventTradingState.displayMarkets]
|
|
10458
10416
|
);
|
|
10459
|
-
const sortedVenueMarkets = (0, import_react15.useMemo)(() => sortMarketsByVolumeDesc(venueMarkets), [venueMarkets]);
|
|
10460
10417
|
const marketOptions = (0, import_react15.useMemo)(
|
|
10461
|
-
() =>
|
|
10418
|
+
() => venueMarkets.map((vm) => ({
|
|
10462
10419
|
value: vm.id,
|
|
10463
10420
|
label: vm.question
|
|
10464
10421
|
})),
|
|
10465
|
-
[
|
|
10422
|
+
[venueMarkets]
|
|
10466
10423
|
);
|
|
10467
10424
|
const volumeLabel = (0, import_react15.useMemo)(() => {
|
|
10468
10425
|
const resolvedVolume = resolveDisplayVolume(event.volume, venueMarkets);
|
|
@@ -12540,8 +12497,7 @@ var MarketDetailsList = ({
|
|
|
12540
12497
|
return resolveIsResolvedEvent(sourceMarkets, eventTradingState);
|
|
12541
12498
|
}, [eventTradingState, sourceMarkets]);
|
|
12542
12499
|
const groupedMarkets = (0, import_react18.useMemo)(() => {
|
|
12543
|
-
|
|
12544
|
-
if (sortedMarkets.length === 0) {
|
|
12500
|
+
if (sourceMarkets.length === 0) {
|
|
12545
12501
|
return {
|
|
12546
12502
|
primary: [],
|
|
12547
12503
|
closed: [],
|
|
@@ -12550,9 +12506,9 @@ var MarketDetailsList = ({
|
|
|
12550
12506
|
};
|
|
12551
12507
|
}
|
|
12552
12508
|
if (isResolvedEvent) {
|
|
12553
|
-
const winnerMarketId = resolveResolvedWinnerMarketId(
|
|
12509
|
+
const winnerMarketId = resolveResolvedWinnerMarketId(sourceMarkets, eventTradingState);
|
|
12554
12510
|
return {
|
|
12555
|
-
primary: moveMarketToFront(
|
|
12511
|
+
primary: moveMarketToFront(sourceMarkets, winnerMarketId),
|
|
12556
12512
|
upcoming: [],
|
|
12557
12513
|
resolved: []
|
|
12558
12514
|
};
|
|
@@ -12561,7 +12517,7 @@ var MarketDetailsList = ({
|
|
|
12561
12517
|
const upcoming = [];
|
|
12562
12518
|
const resolved = [];
|
|
12563
12519
|
const closed = [];
|
|
12564
|
-
|
|
12520
|
+
sourceMarkets.forEach((market) => {
|
|
12565
12521
|
const marketStateKind = (0, import_hooks42.resolveMarketTradingState)(market).kind;
|
|
12566
12522
|
if (marketStateKind === "resolved") {
|
|
12567
12523
|
resolved.push(market);
|