@agg-build/ui 2.1.2 → 2.1.4
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-ZOECARZW.mjs → chunk-BW7S2YR3.mjs} +798 -312
- package/dist/{chunk-7ZR5JYB3.mjs → chunk-FLESSOSU.mjs} +2077 -533
- package/dist/{chunk-5RBHMMY3.mjs → chunk-R2YNZJZ3.mjs} +69 -27
- package/dist/{chunk-75AMJAWR.mjs → chunk-T4YZGAYS.mjs} +22 -1
- package/dist/{chunk-JJDYOBVG.mjs → chunk-TBZWRUFB.mjs} +654 -560
- package/dist/{chunk-TBD3N4T4.mjs → chunk-VP76G6PN.mjs} +41 -41
- package/dist/{chunk-NRNBJPYK.mjs → chunk-XHE2VO3S.mjs} +4 -21
- package/dist/events.js +776 -638
- package/dist/events.mjs +5 -3
- package/dist/index.js +5665 -3867
- package/dist/index.mjs +112 -455
- package/dist/modals.mjs +3 -3
- package/dist/pages.js +8330 -6452
- package/dist/pages.mjs +6 -6
- package/dist/primitives.js +40 -41
- package/dist/primitives.mjs +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/trading.js +652 -415
- package/dist/trading.mjs +4 -4
- package/dist/types/events/item/event-list-item.utils.d.mts +1 -25
- package/dist/types/events/item/event-list-item.utils.d.ts +1 -25
- package/dist/types/events/item-details/index.d.mts +2 -1
- package/dist/types/events/item-details/index.d.ts +2 -1
- package/dist/types/events/market-details/market-details-graph-panel.d.mts +39 -0
- package/dist/types/events/market-details/market-details-graph-panel.d.ts +39 -0
- package/dist/types/events/market-details/market-details-outcome-button.d.mts +2 -1
- package/dist/types/events/market-details/market-details-outcome-button.d.ts +2 -1
- package/dist/types/events/market-details/market-details.types.d.mts +31 -0
- package/dist/types/events/market-details/market-details.types.d.ts +31 -0
- package/dist/types/events/market-details/market-details.utils.d.mts +3 -16
- package/dist/types/events/market-details/market-details.utils.d.ts +3 -16
- package/dist/types/events/shared/format-event-title.d.mts +1 -2
- package/dist/types/events/shared/format-event-title.d.ts +1 -2
- package/dist/types/events/shared/format-sports-event-time.d.mts +2 -0
- package/dist/types/events/shared/format-sports-event-time.d.ts +2 -0
- package/dist/types/notifications/agg-notification-events-provider.d.mts +10 -1
- package/dist/types/notifications/agg-notification-events-provider.d.ts +10 -1
- package/dist/types/pages/event-market/event-market.shared.d.mts +30 -0
- package/dist/types/pages/event-market/event-market.shared.d.ts +30 -0
- package/dist/types/pages/event-market/sports-event-market-page.d.mts +8 -0
- package/dist/types/pages/event-market/sports-event-market-page.d.ts +8 -0
- package/dist/types/pages/event-market/sports-event-market.fixtures.d.mts +13 -0
- package/dist/types/pages/event-market/sports-event-market.fixtures.d.ts +13 -0
- package/dist/types/pages/event-market/sports-event-market.utils.d.mts +156 -0
- package/dist/types/pages/event-market/sports-event-market.utils.d.ts +156 -0
- package/dist/types/pages/event-market/sports-line-rail.d.mts +17 -0
- package/dist/types/pages/event-market/sports-line-rail.d.ts +17 -0
- package/dist/types/pages/event-market/sports-market-card.d.mts +22 -0
- package/dist/types/pages/event-market/sports-market-card.d.ts +22 -0
- package/dist/types/pages/event-market/sports-markets.d.mts +13 -0
- package/dist/types/pages/event-market/sports-markets.d.ts +13 -0
- package/dist/types/primitives/search/search.utils.d.mts +1 -3
- package/dist/types/primitives/search/search.utils.d.ts +1 -3
- package/dist/types/primitives/state-message/index.d.mts +1 -1
- package/dist/types/primitives/state-message/index.d.ts +1 -1
- package/dist/types/primitives/state-message/state-message.types.d.mts +1 -1
- package/dist/types/primitives/state-message/state-message.types.d.ts +1 -1
- package/dist/types/trading/place-order/index.d.mts +1 -1
- package/dist/types/trading/place-order/index.d.ts +1 -1
- package/dist/types/trading/place-order/index.place-order.types.d.mts +7 -0
- package/dist/types/trading/place-order/index.place-order.types.d.ts +7 -0
- package/dist/types/trading/settlement/settlement-text.utils.d.mts +5 -2
- package/dist/types/trading/settlement/settlement-text.utils.d.ts +5 -2
- package/package.json +3 -3
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
resolveUnifiedOrderBookEntries,
|
|
23
23
|
sortOutcomeSelectorOutcomes,
|
|
24
24
|
useEventTradingContext
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-R2YNZJZ3.mjs";
|
|
26
26
|
import {
|
|
27
27
|
AutocompleteSelect,
|
|
28
28
|
Badge,
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
sortCategoriesForNavigation,
|
|
74
74
|
sortOutcomes,
|
|
75
75
|
splitEventsByLifecycle
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-VP76G6PN.mjs";
|
|
77
77
|
|
|
78
78
|
// src/events/item/index.tsx
|
|
79
79
|
import {
|
|
@@ -233,7 +233,7 @@ var normalizeEventListItemV2Comparison = ({
|
|
|
233
233
|
return __spreadProps(__spreadValues({}, row), {
|
|
234
234
|
prices
|
|
235
235
|
});
|
|
236
|
-
});
|
|
236
|
+
}).filter((row) => row.prices.length === 0 || row.prices.some((price) => price.price > 0));
|
|
237
237
|
const matchedVenues = collectMatchedVenues(rows);
|
|
238
238
|
return {
|
|
239
239
|
rows,
|
|
@@ -359,8 +359,7 @@ var EventListItemContent = ({
|
|
|
359
359
|
categories: event.categories,
|
|
360
360
|
structureType: event.structureType,
|
|
361
361
|
gameStartTime: event.gameStartTime,
|
|
362
|
-
endDate: event.endDate
|
|
363
|
-
locale: config.general.locale
|
|
362
|
+
endDate: event.endDate
|
|
364
363
|
});
|
|
365
364
|
const resolvedImage = event.image;
|
|
366
365
|
const visibleVenueLogos = useMemo(() => {
|
|
@@ -387,8 +386,10 @@ var EventListItemContent = ({
|
|
|
387
386
|
} = useVenueMarkets({
|
|
388
387
|
venueEventId: event.id,
|
|
389
388
|
enabled: shouldEnableLazyMarketLoading && isLazyMarketsQueryEnabled,
|
|
390
|
-
|
|
391
|
-
|
|
389
|
+
// List/tile surface: axis/dates sort by volume so the scroll tail matches
|
|
390
|
+
// the volume-sorted top-3 (the detail page omits context and keeps the
|
|
391
|
+
// structured threshold/date order).
|
|
392
|
+
context: "list",
|
|
392
393
|
status: marketStatus
|
|
393
394
|
});
|
|
394
395
|
const resolvedOutcomeMarkets = useMemo(() => {
|
|
@@ -2509,17 +2510,9 @@ var EventListItemDetailsContent = ({
|
|
|
2509
2510
|
categories: event.categories,
|
|
2510
2511
|
structureType: event.structureType,
|
|
2511
2512
|
gameStartTime: event.gameStartTime,
|
|
2512
|
-
endDate: event.endDate
|
|
2513
|
-
locale: config.general.locale
|
|
2513
|
+
endDate: event.endDate
|
|
2514
2514
|
});
|
|
2515
|
-
}, [
|
|
2516
|
-
config.general.locale,
|
|
2517
|
-
event.categories,
|
|
2518
|
-
event.gameStartTime,
|
|
2519
|
-
event.endDate,
|
|
2520
|
-
event.structureType,
|
|
2521
|
-
event.title
|
|
2522
|
-
]);
|
|
2515
|
+
}, [event.categories, event.gameStartTime, event.endDate, event.structureType, event.title]);
|
|
2523
2516
|
return /* @__PURE__ */ jsxs4(
|
|
2524
2517
|
Card,
|
|
2525
2518
|
{
|
|
@@ -3253,7 +3246,6 @@ OrderbookWithStates.displayName = "OrderbookWithStates";
|
|
|
3253
3246
|
|
|
3254
3247
|
// src/events/market-details/index.tsx
|
|
3255
3248
|
import {
|
|
3256
|
-
CHART_TIME_RANGES as CHART_TIME_RANGES2,
|
|
3257
3249
|
findLivePriceById,
|
|
3258
3250
|
MarketStatus,
|
|
3259
3251
|
mergeBestPricesPreferringLive as mergeBestPricesPreferringLive2,
|
|
@@ -3261,18 +3253,16 @@ import {
|
|
|
3261
3253
|
resolveMarketTradingState,
|
|
3262
3254
|
useEventTradingContext as useEventTradingContext2,
|
|
3263
3255
|
useEventOrderbookData as useEventOrderbookData2,
|
|
3264
|
-
useLabels as
|
|
3256
|
+
useLabels as useLabels7,
|
|
3265
3257
|
useLiveBestPrices as useLiveBestPrices2,
|
|
3266
3258
|
useLiveBestPriceCandidates,
|
|
3267
3259
|
useLiveOutcomePrices as useLiveOutcomePrices2,
|
|
3268
|
-
useMarketChart as useMarketChart2,
|
|
3269
3260
|
useMarketOrderbook,
|
|
3270
|
-
|
|
3271
|
-
useSdkUiConfig as useSdkUiConfig3,
|
|
3261
|
+
useSdkUiConfig as useSdkUiConfig4,
|
|
3272
3262
|
useVenueMarkets as useVenueMarkets2,
|
|
3273
3263
|
useViewportMidpoints
|
|
3274
3264
|
} from "@agg-build/hooks";
|
|
3275
|
-
import { useEffect as
|
|
3265
|
+
import { useEffect as useEffect5, useId, useMemo as useMemo7, useState as useState5 } from "react";
|
|
3276
3266
|
|
|
3277
3267
|
// src/events/shared/select-best-outcome.ts
|
|
3278
3268
|
var normalizeOutcomeLabel2 = (label) => {
|
|
@@ -3356,14 +3346,17 @@ var marketDetailsOutcomeButtonToneClasses = {
|
|
|
3356
3346
|
};
|
|
3357
3347
|
var getMarketDetailsOutcomeButtonClassNames = ({
|
|
3358
3348
|
enableAnimations,
|
|
3349
|
+
enforceFixedWidth,
|
|
3359
3350
|
isSelected,
|
|
3360
|
-
tone
|
|
3351
|
+
tone,
|
|
3352
|
+
variant
|
|
3361
3353
|
}) => {
|
|
3362
3354
|
const toneClasses = marketDetailsOutcomeButtonToneClasses[tone];
|
|
3355
|
+
const widthClassName = variant === "line" ? "w-[200px]" : variant === "outcome" ? "w-[160px]" : "w-[140px]";
|
|
3363
3356
|
return {
|
|
3364
3357
|
root: cn(
|
|
3365
|
-
"w-[140px]",
|
|
3366
|
-
"flex h-9 shrink-0 cursor-pointer select-none items-center justify-center gap-2 rounded-agg-full border px-
|
|
3358
|
+
enforceFixedWidth ? widthClassName : "w-[140px]",
|
|
3359
|
+
"flex h-9 shrink-0 cursor-pointer select-none items-center justify-center gap-2 rounded-agg-full border px-4 py-1.5 text-left shadow-none",
|
|
3367
3360
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-0 focus-visible:ring-offset-agg-secondary",
|
|
3368
3361
|
"disabled:cursor-not-allowed disabled:opacity-60",
|
|
3369
3362
|
getMotionClassName(
|
|
@@ -3379,6 +3372,7 @@ var getMarketDetailsOutcomeButtonClassNames = ({
|
|
|
3379
3372
|
var MarketDetailsOutcomeButton = ({
|
|
3380
3373
|
ariaControls,
|
|
3381
3374
|
enableAnimations,
|
|
3375
|
+
enforceFixedWidth,
|
|
3382
3376
|
isSelected,
|
|
3383
3377
|
item,
|
|
3384
3378
|
onSelect
|
|
@@ -3386,10 +3380,14 @@ var MarketDetailsOutcomeButton = ({
|
|
|
3386
3380
|
var _a;
|
|
3387
3381
|
const classNames = getMarketDetailsOutcomeButtonClassNames({
|
|
3388
3382
|
enableAnimations,
|
|
3383
|
+
enforceFixedWidth,
|
|
3389
3384
|
isSelected,
|
|
3390
|
-
tone: item.tone
|
|
3385
|
+
tone: item.tone,
|
|
3386
|
+
variant: item.variant
|
|
3391
3387
|
});
|
|
3392
|
-
|
|
3388
|
+
const itemLabel = (_a = item.title) != null ? _a : item.label;
|
|
3389
|
+
const isLineVariant = item.variant === "line";
|
|
3390
|
+
return /* @__PURE__ */ jsx8(
|
|
3393
3391
|
"button",
|
|
3394
3392
|
{
|
|
3395
3393
|
type: "button",
|
|
@@ -3399,46 +3397,386 @@ var MarketDetailsOutcomeButton = ({
|
|
|
3399
3397
|
"aria-controls": ariaControls,
|
|
3400
3398
|
"aria-selected": isSelected,
|
|
3401
3399
|
tabIndex: isSelected ? 0 : -1,
|
|
3402
|
-
className: cn(
|
|
3400
|
+
className: cn(
|
|
3401
|
+
classNames.root,
|
|
3402
|
+
"overflow-hidden",
|
|
3403
|
+
enforceFixedWidth ? "flex-none" : "flex-1 md:flex-auto"
|
|
3404
|
+
),
|
|
3403
3405
|
onClick: () => onSelect(item.label),
|
|
3404
|
-
children: [
|
|
3406
|
+
children: isLineVariant ? /* @__PURE__ */ jsxs6("div", { className: "flex min-w-0 max-w-full items-center justify-center gap-1.5 overflow-hidden", children: [
|
|
3405
3407
|
/* @__PURE__ */ jsx8(VenueLogo, { venue: item.venue, size: "small" }),
|
|
3406
|
-
/* @__PURE__ */
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3408
|
+
/* @__PURE__ */ jsx8(
|
|
3409
|
+
Typography,
|
|
3410
|
+
{
|
|
3411
|
+
as: "span",
|
|
3412
|
+
variant: isSelected ? "body-strong" : "body",
|
|
3413
|
+
className: cn("min-w-0 truncate whitespace-nowrap text-center", classNames.text),
|
|
3414
|
+
children: itemLabel
|
|
3415
|
+
}
|
|
3416
|
+
),
|
|
3417
|
+
item.lineLabel ? /* @__PURE__ */ jsx8(
|
|
3418
|
+
Typography,
|
|
3419
|
+
{
|
|
3420
|
+
as: "span",
|
|
3421
|
+
variant: isSelected ? "body-strong" : "body",
|
|
3422
|
+
className: cn("shrink-0 whitespace-nowrap", classNames.text),
|
|
3423
|
+
children: item.lineLabel
|
|
3424
|
+
}
|
|
3425
|
+
) : null,
|
|
3426
|
+
/* @__PURE__ */ jsx8(
|
|
3427
|
+
Typography,
|
|
3428
|
+
{
|
|
3429
|
+
as: "span",
|
|
3430
|
+
variant: isSelected ? "body-strong" : "body",
|
|
3431
|
+
className: cn("shrink-0 whitespace-nowrap", classNames.text),
|
|
3432
|
+
children: formatProbabilityCents(item.probability)
|
|
3433
|
+
}
|
|
3434
|
+
)
|
|
3435
|
+
] }) : /* @__PURE__ */ jsxs6("div", { className: "inline-flex max-w-full items-center justify-center gap-1.5", children: [
|
|
3436
|
+
/* @__PURE__ */ jsx8(VenueLogo, { venue: item.venue, size: "small" }),
|
|
3437
|
+
/* @__PURE__ */ jsx8(
|
|
3438
|
+
Typography,
|
|
3439
|
+
{
|
|
3440
|
+
as: "span",
|
|
3441
|
+
variant: isSelected ? "body-strong" : "body",
|
|
3442
|
+
className: cn("truncate whitespace-nowrap text-center", classNames.text),
|
|
3443
|
+
children: itemLabel
|
|
3444
|
+
}
|
|
3445
|
+
),
|
|
3446
|
+
/* @__PURE__ */ jsx8(
|
|
3447
|
+
Typography,
|
|
3448
|
+
{
|
|
3449
|
+
as: "span",
|
|
3450
|
+
variant: isSelected ? "body-strong" : "body",
|
|
3451
|
+
className: cn("shrink-0 whitespace-nowrap", classNames.text),
|
|
3452
|
+
children: formatProbabilityCents(item.probability)
|
|
3453
|
+
}
|
|
3454
|
+
)
|
|
3455
|
+
] })
|
|
3427
3456
|
}
|
|
3428
3457
|
);
|
|
3429
3458
|
};
|
|
3430
3459
|
MarketDetailsOutcomeButton.displayName = "MarketDetailsOutcomeButton";
|
|
3431
3460
|
|
|
3461
|
+
// src/events/market-details/market-details-graph-panel.tsx
|
|
3462
|
+
import {
|
|
3463
|
+
CHART_TIME_RANGES as CHART_TIME_RANGES2,
|
|
3464
|
+
useLabels as useLabels6,
|
|
3465
|
+
useMarketChart as useMarketChart2,
|
|
3466
|
+
useRollingChartWindow as useRollingChartWindow2,
|
|
3467
|
+
useSdkUiConfig as useSdkUiConfig3
|
|
3468
|
+
} from "@agg-build/hooks";
|
|
3469
|
+
import { useEffect as useEffect4, useMemo as useMemo6, useRef as useRef5, useState as useState4 } from "react";
|
|
3470
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
3471
|
+
var MarketDetailsGraphPanel = ({
|
|
3472
|
+
venueMarkets,
|
|
3473
|
+
selectedOutcomeLabel,
|
|
3474
|
+
selectedOutcomeId,
|
|
3475
|
+
livePrices,
|
|
3476
|
+
wsLivePrices,
|
|
3477
|
+
headerOutcomeItems,
|
|
3478
|
+
isResolvedMarket,
|
|
3479
|
+
isOutcomeSelectionLocked,
|
|
3480
|
+
volume,
|
|
3481
|
+
live,
|
|
3482
|
+
classNames
|
|
3483
|
+
}) => {
|
|
3484
|
+
var _a, _b, _c;
|
|
3485
|
+
const config = useSdkUiConfig3();
|
|
3486
|
+
const {
|
|
3487
|
+
formatting: { formatPercent, formatCompactCurrency },
|
|
3488
|
+
general: { theme }
|
|
3489
|
+
} = config;
|
|
3490
|
+
const isDarkTheme = theme === "dark";
|
|
3491
|
+
const labels = useLabels6();
|
|
3492
|
+
const selectedTimeRange = config.chart.selectedChartTimeRange;
|
|
3493
|
+
const setSelectedTimeRange = config.chart.setSelectedChartTimeRange;
|
|
3494
|
+
const [chartRangeOverride, setChartRangeOverride] = useState4(null);
|
|
3495
|
+
const effectiveChartTimeRange = isResolvedMarket ? "ALL" : chartRangeOverride != null ? chartRangeOverride : selectedTimeRange;
|
|
3496
|
+
const [selectedChartType, setSelectedChartType] = useState4("line");
|
|
3497
|
+
const [selectedGraphVenue, setSelectedGraphVenue] = useState4(null);
|
|
3498
|
+
const [chartOutcomeLabel, setChartOutcomeLabel] = useState4(selectedOutcomeLabel);
|
|
3499
|
+
const resolvedChartOutcomeLabel = chartOutcomeLabel != null ? chartOutcomeLabel : selectedOutcomeLabel;
|
|
3500
|
+
const chartSelectedOutcomeId = selectedOutcomeId && resolvedChartOutcomeLabel === selectedOutcomeLabel ? selectedOutcomeId : null;
|
|
3501
|
+
const chartOutcomesByVenue = useMemo6(() => {
|
|
3502
|
+
return resolveChartVenueOutcomes({
|
|
3503
|
+
eligibleVenueOutcomes: collectEligibleVenueOutcomes({
|
|
3504
|
+
venueMarkets,
|
|
3505
|
+
selectedOutcomeLabel: resolvedChartOutcomeLabel,
|
|
3506
|
+
selectedOutcomeId: chartSelectedOutcomeId
|
|
3507
|
+
}),
|
|
3508
|
+
livePrices
|
|
3509
|
+
});
|
|
3510
|
+
}, [livePrices, venueMarkets, resolvedChartOutcomeLabel, chartSelectedOutcomeId]);
|
|
3511
|
+
const rollingWindow = useRollingChartWindow2({ range: effectiveChartTimeRange });
|
|
3512
|
+
const chartPrimaryOutcomeId = (_b = (_a = chartOutcomesByVenue[0]) == null ? void 0 : _a.outcome.id) != null ? _b : null;
|
|
3513
|
+
const chartVenueOutcomeIds = useMemo6(() => {
|
|
3514
|
+
return chartOutcomesByVenue.map((item) => item.outcome.id);
|
|
3515
|
+
}, [chartOutcomesByVenue]);
|
|
3516
|
+
const {
|
|
3517
|
+
data: marketChartData,
|
|
3518
|
+
isLoading: isMarketChartLoading,
|
|
3519
|
+
error: marketChartError,
|
|
3520
|
+
refetch: refetchMarketChart
|
|
3521
|
+
} = useMarketChart2({
|
|
3522
|
+
marketId: chartPrimaryOutcomeId,
|
|
3523
|
+
venueMarketIds: chartVenueOutcomeIds,
|
|
3524
|
+
interval: rollingWindow.interval,
|
|
3525
|
+
startTs: rollingWindow.startTs * 1e3,
|
|
3526
|
+
endTs: rollingWindow.endTs * 1e3,
|
|
3527
|
+
// The panel only mounts when the chart is actually visible, so enable as
|
|
3528
|
+
// soon as we have an outcome to chart.
|
|
3529
|
+
enabled: !!chartPrimaryOutcomeId,
|
|
3530
|
+
live,
|
|
3531
|
+
refetchIntervalMs: rollingWindow.refetchIntervalMs,
|
|
3532
|
+
// Stable cache key per user-selected range so tab/page revisits hit cache
|
|
3533
|
+
// instead of refetching on every bucket-boundary rollover.
|
|
3534
|
+
rangeKey: rollingWindow.range
|
|
3535
|
+
});
|
|
3536
|
+
const hasAutoFallenBackRangeRef = useRef5(false);
|
|
3537
|
+
useEffect4(() => {
|
|
3538
|
+
hasAutoFallenBackRangeRef.current = false;
|
|
3539
|
+
setChartRangeOverride(null);
|
|
3540
|
+
}, [chartPrimaryOutcomeId]);
|
|
3541
|
+
useEffect4(() => {
|
|
3542
|
+
if (!shouldAutoFallbackToAllRange({
|
|
3543
|
+
chartData: marketChartData,
|
|
3544
|
+
isLoading: isMarketChartLoading,
|
|
3545
|
+
error: marketChartError,
|
|
3546
|
+
currentRange: effectiveChartTimeRange,
|
|
3547
|
+
hasAlreadyFallenBack: hasAutoFallenBackRangeRef.current,
|
|
3548
|
+
domainStartTs: rollingWindow.startTs
|
|
3549
|
+
})) {
|
|
3550
|
+
return;
|
|
3551
|
+
}
|
|
3552
|
+
hasAutoFallenBackRangeRef.current = true;
|
|
3553
|
+
setChartRangeOverride("ALL");
|
|
3554
|
+
}, [
|
|
3555
|
+
marketChartData,
|
|
3556
|
+
isMarketChartLoading,
|
|
3557
|
+
marketChartError,
|
|
3558
|
+
effectiveChartTimeRange,
|
|
3559
|
+
rollingWindow.startTs
|
|
3560
|
+
]);
|
|
3561
|
+
const chartAvailableOutcomesByVenue = useMemo6(() => {
|
|
3562
|
+
return filterChartVenueOutcomesByRenderableVenues({
|
|
3563
|
+
chartData: marketChartData,
|
|
3564
|
+
venueOutcomes: chartOutcomesByVenue
|
|
3565
|
+
});
|
|
3566
|
+
}, [chartOutcomesByVenue, marketChartData]);
|
|
3567
|
+
const graphSeries = useMemo6(() => {
|
|
3568
|
+
var _a2, _b2, _c2, _d;
|
|
3569
|
+
const baseColor = resolveSeriesColor(
|
|
3570
|
+
(_d = (_c2 = selectedGraphVenue != null ? selectedGraphVenue : (_a2 = chartAvailableOutcomesByVenue[0]) == null ? void 0 : _a2.venue) != null ? _c2 : (_b2 = chartOutcomesByVenue[0]) == null ? void 0 : _b2.venue) != null ? _d : "polymarket",
|
|
3571
|
+
0,
|
|
3572
|
+
isDarkTheme
|
|
3573
|
+
);
|
|
3574
|
+
const domainStartTs = rollingWindow.startTs;
|
|
3575
|
+
return resolveMarketChartDisplaySeries({
|
|
3576
|
+
chartData: marketChartData,
|
|
3577
|
+
selectedVenue: selectedGraphVenue,
|
|
3578
|
+
transformProbability: (value) => value
|
|
3579
|
+
}).map((seriesItem) => {
|
|
3580
|
+
return {
|
|
3581
|
+
id: `${resolvedChartOutcomeLabel != null ? resolvedChartOutcomeLabel : "graph"}-${seriesItem.venue}-${chartPrimaryOutcomeId != null ? chartPrimaryOutcomeId : "chart"}`,
|
|
3582
|
+
venue: selectedGraphVenue != null ? selectedGraphVenue : seriesItem.venue,
|
|
3583
|
+
color: seriesItem.venue === "aggregate" ? baseColor : resolveSeriesColor(seriesItem.venue, 0, isDarkTheme),
|
|
3584
|
+
// Constrain to the rolling [nowSec - rangeSeconds, …] domain so stale
|
|
3585
|
+
// bars don't bleed in across a range shrink or long mount.
|
|
3586
|
+
points: seriesItem.points.filter((point) => point.time >= domainStartTs)
|
|
3587
|
+
};
|
|
3588
|
+
});
|
|
3589
|
+
}, [
|
|
3590
|
+
isDarkTheme,
|
|
3591
|
+
chartPrimaryOutcomeId,
|
|
3592
|
+
marketChartData,
|
|
3593
|
+
rollingWindow.startTs,
|
|
3594
|
+
selectedGraphVenue,
|
|
3595
|
+
resolvedChartOutcomeLabel,
|
|
3596
|
+
chartAvailableOutcomesByVenue,
|
|
3597
|
+
chartOutcomesByVenue
|
|
3598
|
+
]);
|
|
3599
|
+
const graphLiveState = useMemo6(() => {
|
|
3600
|
+
return resolveMarketChartLiveState({
|
|
3601
|
+
chartData: marketChartData,
|
|
3602
|
+
selectedVenue: selectedGraphVenue,
|
|
3603
|
+
transformProbability: (value) => value
|
|
3604
|
+
});
|
|
3605
|
+
}, [marketChartData, selectedGraphVenue]);
|
|
3606
|
+
const hasChartError = !!marketChartError;
|
|
3607
|
+
useEffect4(() => {
|
|
3608
|
+
if (!selectedGraphVenue) {
|
|
3609
|
+
return;
|
|
3610
|
+
}
|
|
3611
|
+
if (chartAvailableOutcomesByVenue.some((item) => item.venue === selectedGraphVenue)) {
|
|
3612
|
+
return;
|
|
3613
|
+
}
|
|
3614
|
+
setSelectedGraphVenue(null);
|
|
3615
|
+
}, [selectedGraphVenue, chartAvailableOutcomesByVenue]);
|
|
3616
|
+
const handleGraphVenueToggle = (venue) => {
|
|
3617
|
+
setSelectedGraphVenue((currentVenue) => {
|
|
3618
|
+
if (currentVenue === venue) return null;
|
|
3619
|
+
return venue;
|
|
3620
|
+
});
|
|
3621
|
+
};
|
|
3622
|
+
const handleRetryMarketChart = () => {
|
|
3623
|
+
void refetchMarketChart();
|
|
3624
|
+
};
|
|
3625
|
+
return /* @__PURE__ */ jsxs7("div", { className: cn("agg-price-chart flex flex-col gap-5 p-5", classNames == null ? void 0 : classNames.graph), children: [
|
|
3626
|
+
hasChartError ? /* @__PURE__ */ jsx9(
|
|
3627
|
+
StateMessage,
|
|
3628
|
+
{
|
|
3629
|
+
title: labels.marketDetails.chartUnavailableTitle,
|
|
3630
|
+
description: labels.marketDetails.chartUnavailableDescription,
|
|
3631
|
+
icon: /* @__PURE__ */ jsx9(WarningIcon, {}),
|
|
3632
|
+
onAction: handleRetryMarketChart,
|
|
3633
|
+
classNames: { root: "min-h-[248px] px-5 py-10 md:min-h-[272px]" }
|
|
3634
|
+
}
|
|
3635
|
+
) : /* @__PURE__ */ jsx9(
|
|
3636
|
+
LineChart,
|
|
3637
|
+
{
|
|
3638
|
+
series: graphSeries,
|
|
3639
|
+
height: 260,
|
|
3640
|
+
isLoading: isMarketChartLoading,
|
|
3641
|
+
chartType: selectedChartType,
|
|
3642
|
+
liveCandle: selectedChartType === "candlestick" ? (_c = graphLiveState.liveCandle) != null ? _c : void 0 : void 0,
|
|
3643
|
+
lineValue: graphLiveState.lineValue,
|
|
3644
|
+
classNames: { root: "agg-chart-region w-full" },
|
|
3645
|
+
showSeriesControls: chartAvailableOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
|
|
3646
|
+
renderSeriesControls: () => {
|
|
3647
|
+
var _a2, _b2, _c2, _d;
|
|
3648
|
+
return /* @__PURE__ */ jsxs7("div", { className: "agg-chart-toolbar w-full flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
|
|
3649
|
+
/* @__PURE__ */ jsx9("div", { className: "agg-market-venues flex flex-wrap gap-2", children: chartAvailableOutcomesByVenue.map((item) => {
|
|
3650
|
+
var _a3;
|
|
3651
|
+
const probability = formatProbabilityPercent(
|
|
3652
|
+
(_a3 = wsLivePrices.get(item.outcome.id)) != null ? _a3 : item.outcome.price,
|
|
3653
|
+
formatPercent
|
|
3654
|
+
);
|
|
3655
|
+
const isActiveVenue = selectedGraphVenue === item.venue;
|
|
3656
|
+
return /* @__PURE__ */ jsxs7(
|
|
3657
|
+
"button",
|
|
3658
|
+
{
|
|
3659
|
+
type: "button",
|
|
3660
|
+
"aria-label": `${item.venue} ${probability}`,
|
|
3661
|
+
"aria-pressed": isActiveVenue,
|
|
3662
|
+
className: cn(
|
|
3663
|
+
"agg-market-venue",
|
|
3664
|
+
"cursor-pointer",
|
|
3665
|
+
"inline-flex items-center gap-2 rounded-agg-full border px-4 py-2",
|
|
3666
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-0 focus-visible:ring-offset-agg-secondary-hover",
|
|
3667
|
+
isActiveVenue ? "border-agg-primary bg-agg-secondary" : "border-transparent bg-agg-secondary-hover"
|
|
3668
|
+
),
|
|
3669
|
+
onClick: (e) => {
|
|
3670
|
+
e.preventDefault();
|
|
3671
|
+
e.stopPropagation();
|
|
3672
|
+
handleGraphVenueToggle(item.venue);
|
|
3673
|
+
},
|
|
3674
|
+
children: [
|
|
3675
|
+
/* @__PURE__ */ jsx9(VenueLogo, { venue: item.venue, size: "small" }),
|
|
3676
|
+
/* @__PURE__ */ jsx9("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
|
|
3677
|
+
]
|
|
3678
|
+
},
|
|
3679
|
+
`${item.market.id}-${item.outcome.id}`
|
|
3680
|
+
);
|
|
3681
|
+
}) }),
|
|
3682
|
+
!isOutcomeSelectionLocked ? /* @__PURE__ */ jsx9(
|
|
3683
|
+
SwitchButton,
|
|
3684
|
+
{
|
|
3685
|
+
ariaLabel: labels.marketDetails.outcomeSelectorAria,
|
|
3686
|
+
className: "agg-outcome-switch w-full shrink-0 md:w-fit",
|
|
3687
|
+
value: (_d = (_c2 = (_a2 = headerOutcomeItems.find(
|
|
3688
|
+
(outcome) => outcome.label === resolvedChartOutcomeLabel
|
|
3689
|
+
)) == null ? void 0 : _a2.id) != null ? _c2 : (_b2 = headerOutcomeItems[0]) == null ? void 0 : _b2.id) != null ? _d : "",
|
|
3690
|
+
onValueChange: (outcomeId) => {
|
|
3691
|
+
const outcome = headerOutcomeItems.find(
|
|
3692
|
+
(headerOutcomeItem) => headerOutcomeItem.id === outcomeId
|
|
3693
|
+
);
|
|
3694
|
+
if (!outcome) return;
|
|
3695
|
+
setChartOutcomeLabel(outcome.label);
|
|
3696
|
+
},
|
|
3697
|
+
options: headerOutcomeItems.map((outcome) => {
|
|
3698
|
+
var _a3, _b3;
|
|
3699
|
+
const price = outcome.probability;
|
|
3700
|
+
return {
|
|
3701
|
+
value: outcome.id,
|
|
3702
|
+
label: `${(_a3 = outcome == null ? void 0 : outcome.title) != null ? _a3 : outcome.label} ${formatProbabilityCents(price)}`,
|
|
3703
|
+
ariaLabel: `${(_b3 = outcome == null ? void 0 : outcome.title) != null ? _b3 : outcome.label} ${formatProbabilityCents(price)}`
|
|
3704
|
+
};
|
|
3705
|
+
})
|
|
3706
|
+
}
|
|
3707
|
+
) : null
|
|
3708
|
+
] });
|
|
3709
|
+
}
|
|
3710
|
+
}
|
|
3711
|
+
),
|
|
3712
|
+
/* @__PURE__ */ jsxs7(
|
|
3713
|
+
"div",
|
|
3714
|
+
{
|
|
3715
|
+
className: cn(
|
|
3716
|
+
"agg-chart-footer",
|
|
3717
|
+
"flex flex-row justify-between gap-2 text-agg-sm leading-agg-5 text-agg-muted-foreground md:flex-row md:items-center md:justify-between",
|
|
3718
|
+
classNames == null ? void 0 : classNames.footer
|
|
3719
|
+
),
|
|
3720
|
+
children: [
|
|
3721
|
+
/* @__PURE__ */ jsx9("span", { children: typeof volume !== "number" ? labels.marketDetails.volumeUnavailable : volume > 0 ? `${formatCompactCurrency(volume)} ${labels.marketDetails.meta.volumeSuffix}` : "" }),
|
|
3722
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: [
|
|
3723
|
+
/* @__PURE__ */ jsx9(
|
|
3724
|
+
ChartTypeSwitch,
|
|
3725
|
+
{
|
|
3726
|
+
className: "agg-chart-type-switch shrink-0",
|
|
3727
|
+
value: selectedChartType,
|
|
3728
|
+
onValueChange: setSelectedChartType
|
|
3729
|
+
}
|
|
3730
|
+
),
|
|
3731
|
+
/* @__PURE__ */ jsx9("span", { "aria-hidden": "true", className: "hidden h-4 w-px bg-agg-separator md:block" }),
|
|
3732
|
+
CHART_TIME_RANGES2.map((timeRange) => {
|
|
3733
|
+
const isActive = effectiveChartTimeRange === timeRange;
|
|
3734
|
+
const isDisabled = isResolvedMarket && timeRange !== "ALL";
|
|
3735
|
+
return /* @__PURE__ */ jsx9(
|
|
3736
|
+
"button",
|
|
3737
|
+
{
|
|
3738
|
+
type: "button",
|
|
3739
|
+
disabled: isDisabled,
|
|
3740
|
+
className: cn(
|
|
3741
|
+
"agg-chart-time-range-trigger",
|
|
3742
|
+
"cursor-pointer text-agg-sm leading-agg-5",
|
|
3743
|
+
isDisabled && "cursor-not-allowed opacity-50",
|
|
3744
|
+
isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
|
|
3745
|
+
),
|
|
3746
|
+
"aria-pressed": isActive,
|
|
3747
|
+
"aria-disabled": isDisabled,
|
|
3748
|
+
onClick: (e) => {
|
|
3749
|
+
e.preventDefault();
|
|
3750
|
+
e.stopPropagation();
|
|
3751
|
+
if (isDisabled) return;
|
|
3752
|
+
setChartRangeOverride(null);
|
|
3753
|
+
setSelectedTimeRange(timeRange);
|
|
3754
|
+
},
|
|
3755
|
+
children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
|
|
3756
|
+
},
|
|
3757
|
+
timeRange
|
|
3758
|
+
);
|
|
3759
|
+
})
|
|
3760
|
+
] })
|
|
3761
|
+
]
|
|
3762
|
+
}
|
|
3763
|
+
)
|
|
3764
|
+
] });
|
|
3765
|
+
};
|
|
3766
|
+
MarketDetailsGraphPanel.displayName = "MarketDetailsGraphPanel";
|
|
3767
|
+
|
|
3432
3768
|
// src/events/market-details/index.tsx
|
|
3433
|
-
import { Fragment as Fragment2, jsx as
|
|
3769
|
+
import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3434
3770
|
var MarketDetailsUnavailableState = ({
|
|
3771
|
+
marketId,
|
|
3435
3772
|
ariaLabel,
|
|
3436
3773
|
classNames
|
|
3437
3774
|
}) => {
|
|
3438
|
-
const labels =
|
|
3439
|
-
return /* @__PURE__ */
|
|
3775
|
+
const labels = useLabels7();
|
|
3776
|
+
return /* @__PURE__ */ jsx10(
|
|
3440
3777
|
Card,
|
|
3441
3778
|
{
|
|
3779
|
+
"data-market-id": marketId || void 0,
|
|
3442
3780
|
className: cn(
|
|
3443
3781
|
"group/agg-market-card agg-market-card-unavailable",
|
|
3444
3782
|
marketDetailsBaseCardClassName,
|
|
@@ -3446,24 +3784,26 @@ var MarketDetailsUnavailableState = ({
|
|
|
3446
3784
|
),
|
|
3447
3785
|
role: "status",
|
|
3448
3786
|
"aria-label": ariaLabel != null ? ariaLabel : labels.marketDetails.unavailableAria,
|
|
3449
|
-
children: /* @__PURE__ */
|
|
3450
|
-
/* @__PURE__ */
|
|
3451
|
-
/* @__PURE__ */
|
|
3787
|
+
children: /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-1 p-5", children: [
|
|
3788
|
+
/* @__PURE__ */ jsx10(Typography, { variant: "body-large-strong", children: labels.marketDetails.unavailableTitle }),
|
|
3789
|
+
/* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.marketDetails.unavailableDescription })
|
|
3452
3790
|
] })
|
|
3453
3791
|
}
|
|
3454
3792
|
);
|
|
3455
3793
|
};
|
|
3456
3794
|
var MarketDetailsNotFoundState = ({
|
|
3795
|
+
marketId,
|
|
3457
3796
|
ariaLabel: _ariaLabel,
|
|
3458
3797
|
classNames: _classNames
|
|
3459
3798
|
}) => {
|
|
3460
|
-
const labels =
|
|
3461
|
-
return /* @__PURE__ */
|
|
3799
|
+
const labels = useLabels7();
|
|
3800
|
+
return /* @__PURE__ */ jsx10(
|
|
3462
3801
|
StateMessage,
|
|
3463
3802
|
{
|
|
3803
|
+
"data-market-id": marketId || void 0,
|
|
3464
3804
|
title: labels.marketDetails.notFoundTitle,
|
|
3465
3805
|
description: labels.marketDetails.notFoundDescription,
|
|
3466
|
-
icon: /* @__PURE__ */
|
|
3806
|
+
icon: /* @__PURE__ */ jsx10(SearchEmptyIcon, {}),
|
|
3467
3807
|
classNames: { root: "min-h-[280px] md:min-h-[320px]" }
|
|
3468
3808
|
}
|
|
3469
3809
|
);
|
|
@@ -3481,6 +3821,11 @@ var MarketDetailsContent = ({
|
|
|
3481
3821
|
ariaLabel,
|
|
3482
3822
|
classNames,
|
|
3483
3823
|
otherContent,
|
|
3824
|
+
headerAccessory,
|
|
3825
|
+
compactHeader = false,
|
|
3826
|
+
subtitleOverride,
|
|
3827
|
+
headerOutcomeVariant,
|
|
3828
|
+
headerOutcomeItemsOverride,
|
|
3484
3829
|
onOutcomeSelect,
|
|
3485
3830
|
live,
|
|
3486
3831
|
midpointsFallback,
|
|
@@ -3488,25 +3833,24 @@ var MarketDetailsContent = ({
|
|
|
3488
3833
|
suppressOutcomeFallbackSelection,
|
|
3489
3834
|
midpointsResult
|
|
3490
3835
|
}) => {
|
|
3491
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i
|
|
3492
|
-
const config =
|
|
3836
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
3837
|
+
const config = useSdkUiConfig4();
|
|
3493
3838
|
const {
|
|
3494
3839
|
features: { enableAnimations },
|
|
3495
|
-
formatting: { formatPercent }
|
|
3496
|
-
general: { theme }
|
|
3840
|
+
formatting: { formatPercent }
|
|
3497
3841
|
} = config;
|
|
3498
|
-
const
|
|
3499
|
-
const labels = useLabels6();
|
|
3842
|
+
const labels = useLabels7();
|
|
3500
3843
|
const tradingContext = useEventTradingContext2();
|
|
3501
3844
|
const detailsContentId = useId();
|
|
3502
3845
|
const tradeSide = (_a = tradingContext == null ? void 0 : tradingContext.tradeSide) != null ? _a : "buy";
|
|
3503
|
-
const
|
|
3504
|
-
const wsBestPrices = useLiveBestPrices2(venueMarkets);
|
|
3505
|
-
const wsBestCandidates = useLiveBestPriceCandidates(venueMarkets);
|
|
3506
|
-
const resolvedMarket = useMemo6(() => {
|
|
3846
|
+
const resolvedMarket = useMemo7(() => {
|
|
3507
3847
|
return resolveMarketFromVenueMarkets(venueMarkets, marketId);
|
|
3508
3848
|
}, [venueMarkets, marketId]);
|
|
3509
|
-
const
|
|
3849
|
+
const clusterVenueMarkets = resolvedMarket == null ? void 0 : resolvedMarket.venueMarkets;
|
|
3850
|
+
const wsLivePrices = useLiveOutcomePrices2(clusterVenueMarkets);
|
|
3851
|
+
const wsBestPrices = useLiveBestPrices2(clusterVenueMarkets);
|
|
3852
|
+
const wsBestCandidates = useLiveBestPriceCandidates(clusterVenueMarkets);
|
|
3853
|
+
const scopedResolvedMarket = useMemo7(() => {
|
|
3510
3854
|
var _a2, _b2;
|
|
3511
3855
|
if (!resolvedMarket) return null;
|
|
3512
3856
|
return (_b2 = (_a2 = resolvedMarket.venueMarkets.find((venueMarket) => venueMarket.id === resolvedMarket.id)) != null ? _a2 : resolvedMarket.venueMarkets[0]) != null ? _b2 : null;
|
|
@@ -3532,20 +3876,19 @@ var MarketDetailsContent = ({
|
|
|
3532
3876
|
const clusterBestMidpoint = clusterMidpointResult.bestMidpoint;
|
|
3533
3877
|
const clusterBestMidpointVenue = clusterMidpointResult.bestMidpointVenue;
|
|
3534
3878
|
const clusterBestPricesRest = clusterMidpointResult.bestPrices;
|
|
3535
|
-
const clusterBestPrices =
|
|
3879
|
+
const clusterBestPrices = useMemo7(
|
|
3536
3880
|
() => mergeBestPricesPreferringLive2(clusterBestPricesRest, wsBestPrices),
|
|
3537
3881
|
[clusterBestPricesRest, wsBestPrices]
|
|
3538
3882
|
);
|
|
3539
3883
|
const clusterBestPriceVenuesByOutcomeId = clusterMidpointResult.bestPriceVenuesByOutcomeId;
|
|
3540
|
-
const clusterMidpointMarkets =
|
|
3884
|
+
const clusterMidpointMarkets = useMemo7(() => {
|
|
3541
3885
|
var _a2;
|
|
3542
3886
|
if (!resolvedMarket) return [];
|
|
3543
3887
|
return (_a2 = resolvedMarket.venueMarkets) != null ? _a2 : [];
|
|
3544
3888
|
}, [resolvedMarket]);
|
|
3545
|
-
const tradableVenues =
|
|
3889
|
+
const tradableVenues = useMemo7(() => {
|
|
3546
3890
|
var _a2;
|
|
3547
3891
|
if (clusterMidpointMarkets.length === 0) return null;
|
|
3548
|
-
if (clusterMidpoints.size === 0) return null;
|
|
3549
3892
|
const set = /* @__PURE__ */ new Set();
|
|
3550
3893
|
for (const market of clusterMidpointMarkets) {
|
|
3551
3894
|
for (const outcome of (_a2 = market.venueMarketOutcomes) != null ? _a2 : []) {
|
|
@@ -3555,28 +3898,20 @@ var MarketDetailsContent = ({
|
|
|
3555
3898
|
}
|
|
3556
3899
|
}
|
|
3557
3900
|
}
|
|
3901
|
+
if (set.size === 0) return null;
|
|
3558
3902
|
return set;
|
|
3559
3903
|
}, [clusterMidpointMarkets, clusterMidpoints]);
|
|
3560
|
-
const model =
|
|
3904
|
+
const model = useMemo7(() => {
|
|
3561
3905
|
return buildMarketDetailsModel({
|
|
3562
3906
|
venueMarkets,
|
|
3563
3907
|
marketId,
|
|
3564
3908
|
title,
|
|
3565
3909
|
image,
|
|
3566
3910
|
formatCompactCurrency: config.formatting.formatCompactCurrency,
|
|
3567
|
-
labels
|
|
3568
|
-
tradableVenues
|
|
3911
|
+
labels
|
|
3569
3912
|
});
|
|
3570
|
-
}, [
|
|
3571
|
-
|
|
3572
|
-
venueMarkets,
|
|
3573
|
-
image,
|
|
3574
|
-
labels,
|
|
3575
|
-
marketId,
|
|
3576
|
-
title,
|
|
3577
|
-
tradableVenues
|
|
3578
|
-
]);
|
|
3579
|
-
const livePrices = useMemo6(() => {
|
|
3913
|
+
}, [config.formatting.formatCompactCurrency, venueMarkets, image, labels, marketId, title]);
|
|
3914
|
+
const livePrices = useMemo7(() => {
|
|
3580
3915
|
const merged = /* @__PURE__ */ new Map();
|
|
3581
3916
|
if (midpointsFallback == null ? void 0 : midpointsFallback.size) {
|
|
3582
3917
|
for (const [outcomeId, price] of midpointsFallback) {
|
|
@@ -3591,37 +3926,32 @@ var MarketDetailsContent = ({
|
|
|
3591
3926
|
for (const [k, v] of wsLivePrices) merged.set(k, v);
|
|
3592
3927
|
return merged;
|
|
3593
3928
|
}, [clusterMidpoints, midpointsFallback, wsLivePrices]);
|
|
3594
|
-
const scopedMarketForCard =
|
|
3929
|
+
const scopedMarketForCard = useMemo7(() => {
|
|
3595
3930
|
var _a2;
|
|
3596
3931
|
if (!model) return null;
|
|
3597
3932
|
return (_a2 = model.market.venueMarkets.find((venueMarket) => venueMarket.id === model.market.id)) != null ? _a2 : model.primaryVenueMarket;
|
|
3598
3933
|
}, [model]);
|
|
3599
|
-
const marketTradingState =
|
|
3934
|
+
const marketTradingState = useMemo7(() => {
|
|
3600
3935
|
return resolveMarketTradingState(scopedMarketForCard);
|
|
3601
3936
|
}, [scopedMarketForCard]);
|
|
3602
3937
|
const isOutcomeSelectionLocked = marketTradingState.isTradingDisabled;
|
|
3603
3938
|
const isUpcomingMarket = marketTradingState.kind === "unopened";
|
|
3604
3939
|
const marketStatePresentation = resolveTradingStatePresentation(labels, marketTradingState);
|
|
3605
|
-
const marketDetailsTabs =
|
|
3940
|
+
const marketDetailsTabs = useMemo7(() => {
|
|
3606
3941
|
return getMarketDetailsTabs(labels);
|
|
3607
3942
|
}, [labels]);
|
|
3608
|
-
const [selectedTab, setSelectedTab] =
|
|
3943
|
+
const [selectedTab, setSelectedTab] = useState5(
|
|
3609
3944
|
() => resolveInitialTab(defaultTab)
|
|
3610
3945
|
);
|
|
3611
|
-
const [isOpened, setIsOpened] =
|
|
3612
|
-
|
|
3946
|
+
const [isOpened, setIsOpened] = useState5(controlledIsOpened);
|
|
3947
|
+
useEffect5(() => {
|
|
3613
3948
|
setSelectedTab(resolveInitialTab(defaultTab));
|
|
3614
3949
|
}, [defaultTab]);
|
|
3615
|
-
|
|
3950
|
+
useEffect5(() => {
|
|
3616
3951
|
setIsOpened(controlledIsOpened);
|
|
3617
3952
|
}, [controlledIsOpened]);
|
|
3618
|
-
const selectedTimeRange = config.chart.selectedChartTimeRange;
|
|
3619
|
-
const setSelectedTimeRange = config.chart.setSelectedChartTimeRange;
|
|
3620
3953
|
const effectiveSelectedTab = isResolvedMarket ? "graph" : selectedTab;
|
|
3621
|
-
const
|
|
3622
|
-
const effectiveChartTimeRange = isResolvedMarket ? "ALL" : chartRangeOverride != null ? chartRangeOverride : selectedTimeRange;
|
|
3623
|
-
const [selectedChartType, setSelectedChartType] = useState4("line");
|
|
3624
|
-
const scopedSelectedOutcomeState = useMemo6(() => {
|
|
3954
|
+
const scopedSelectedOutcomeState = useMemo7(() => {
|
|
3625
3955
|
if (!model) {
|
|
3626
3956
|
return {
|
|
3627
3957
|
outcomeId: null,
|
|
@@ -3643,15 +3973,7 @@ var MarketDetailsContent = ({
|
|
|
3643
3973
|
const selectedOutcomeId = scopedSelectedOutcomeState.outcomeId;
|
|
3644
3974
|
const selectedOutcomeLabel = (_d = scopedSelectedOutcomeState.outcomeLabel) != null ? _d : null;
|
|
3645
3975
|
const selectOutcome = tradingContext == null ? void 0 : tradingContext.selectOutcome;
|
|
3646
|
-
|
|
3647
|
-
const [chartOutcomeLabel, setChartOutcomeLabel] = useState4(selectedOutcomeLabel);
|
|
3648
|
-
useEffect4(() => {
|
|
3649
|
-
if (!isOpened) return;
|
|
3650
|
-
if (selectedOutcomeLabel) {
|
|
3651
|
-
setChartOutcomeLabel(selectedOutcomeLabel);
|
|
3652
|
-
}
|
|
3653
|
-
}, [isOpened]);
|
|
3654
|
-
useEffect4(() => {
|
|
3976
|
+
useEffect5(() => {
|
|
3655
3977
|
var _a2;
|
|
3656
3978
|
if (!isOpened || !model) return;
|
|
3657
3979
|
if (isOutcomeSelectionLocked) return;
|
|
@@ -3675,13 +3997,18 @@ var MarketDetailsContent = ({
|
|
|
3675
3997
|
tradingContext == null ? void 0 : tradingContext.selectedMarketId,
|
|
3676
3998
|
selectOutcome
|
|
3677
3999
|
]);
|
|
3678
|
-
const venueMarketIdByVenue =
|
|
4000
|
+
const venueMarketIdByVenue = useMemo7(
|
|
3679
4001
|
() => buildVenueMarketIdByVenue(model == null ? void 0 : model.market.venueMarkets),
|
|
3680
4002
|
[model]
|
|
3681
4003
|
);
|
|
3682
|
-
const headerOutcomeItems =
|
|
4004
|
+
const headerOutcomeItems = useMemo7(() => {
|
|
3683
4005
|
if (!model) return [];
|
|
3684
|
-
|
|
4006
|
+
if (headerOutcomeItemsOverride) return headerOutcomeItemsOverride;
|
|
4007
|
+
const items = resolveHeaderOutcomeItems(
|
|
4008
|
+
model.market.venueMarkets,
|
|
4009
|
+
scopedMarketForCard,
|
|
4010
|
+
headerOutcomeVariant
|
|
4011
|
+
);
|
|
3685
4012
|
return items.map((item) => {
|
|
3686
4013
|
var _a2;
|
|
3687
4014
|
const fallbackPrice = midpointsFallback == null ? void 0 : midpointsFallback.get(item.id);
|
|
@@ -3721,8 +4048,10 @@ var MarketDetailsContent = ({
|
|
|
3721
4048
|
clusterBestMidpointsByOutcomeId,
|
|
3722
4049
|
clusterBestPricesRest,
|
|
3723
4050
|
clusterBestPriceVenuesByOutcomeId,
|
|
4051
|
+
headerOutcomeItemsOverride,
|
|
3724
4052
|
model,
|
|
3725
4053
|
scopedMarketForCard,
|
|
4054
|
+
headerOutcomeVariant,
|
|
3726
4055
|
clusterVenueByOutcomeId,
|
|
3727
4056
|
isResolvedMarket,
|
|
3728
4057
|
(_e = marketTradingState.winningOutcome) == null ? void 0 : _e.id,
|
|
@@ -3732,7 +4061,7 @@ var MarketDetailsContent = ({
|
|
|
3732
4061
|
venueMarketIdByVenue,
|
|
3733
4062
|
wsBestCandidates
|
|
3734
4063
|
]);
|
|
3735
|
-
const headlineProbability =
|
|
4064
|
+
const headlineProbability = useMemo7(() => {
|
|
3736
4065
|
var _a2, _b2, _c2, _d2;
|
|
3737
4066
|
if (!model || !scopedMarketForCard) return void 0;
|
|
3738
4067
|
if (isResolvedMarket) {
|
|
@@ -3768,7 +4097,7 @@ var MarketDetailsContent = ({
|
|
|
3768
4097
|
midpointsFallback,
|
|
3769
4098
|
wsLivePrices
|
|
3770
4099
|
]);
|
|
3771
|
-
const selectedOutcomesByVenue =
|
|
4100
|
+
const selectedOutcomesByVenue = useMemo7(() => {
|
|
3772
4101
|
if (!model) return [];
|
|
3773
4102
|
return collectEligibleVenueOutcomes({
|
|
3774
4103
|
venueMarkets: model.market.venueMarkets,
|
|
@@ -3780,73 +4109,9 @@ var MarketDetailsContent = ({
|
|
|
3780
4109
|
selectedOutcomeId
|
|
3781
4110
|
});
|
|
3782
4111
|
}, [model, selectedOutcomeLabel, selectedOutcomeId]);
|
|
3783
|
-
const resolvedChartOutcomeLabel = chartOutcomeLabel != null ? chartOutcomeLabel : selectedOutcomeLabel;
|
|
3784
|
-
const chartSelectedOutcomeId = selectedOutcomeId && resolvedChartOutcomeLabel === selectedOutcomeLabel ? selectedOutcomeId : null;
|
|
3785
|
-
const chartOutcomesByVenue = useMemo6(() => {
|
|
3786
|
-
if (!model) return [];
|
|
3787
|
-
return resolveChartVenueOutcomes({
|
|
3788
|
-
eligibleVenueOutcomes: collectEligibleVenueOutcomes({
|
|
3789
|
-
venueMarkets: model.market.venueMarkets,
|
|
3790
|
-
selectedOutcomeLabel: resolvedChartOutcomeLabel,
|
|
3791
|
-
selectedOutcomeId: chartSelectedOutcomeId
|
|
3792
|
-
}),
|
|
3793
|
-
livePrices
|
|
3794
|
-
});
|
|
3795
|
-
}, [livePrices, model, resolvedChartOutcomeLabel, chartSelectedOutcomeId]);
|
|
3796
|
-
const chartEnabled = isOpened && effectiveSelectedTab === "graph";
|
|
3797
4112
|
const orderBookEnabled = isOpened && effectiveSelectedTab === "order-book" && !marketTradingState.isTradingDisabled;
|
|
3798
|
-
const rollingWindow = useRollingChartWindow2({ range: effectiveChartTimeRange });
|
|
3799
4113
|
const primaryVenueMarketId = (_g = (_f = selectedOutcomesByVenue[0]) == null ? void 0 : _f.market.id) != null ? _g : null;
|
|
3800
4114
|
const primaryOutcomeId = (_i = (_h = selectedOutcomesByVenue[0]) == null ? void 0 : _h.outcome.id) != null ? _i : null;
|
|
3801
|
-
const chartPrimaryOutcomeId = (_k = (_j = chartOutcomesByVenue[0]) == null ? void 0 : _j.outcome.id) != null ? _k : null;
|
|
3802
|
-
const chartVenueOutcomeIds = useMemo6(() => {
|
|
3803
|
-
return chartOutcomesByVenue.map((item) => item.outcome.id);
|
|
3804
|
-
}, [chartOutcomesByVenue]);
|
|
3805
|
-
const {
|
|
3806
|
-
data: marketChartData,
|
|
3807
|
-
isLoading: isMarketChartLoading,
|
|
3808
|
-
error: marketChartError,
|
|
3809
|
-
refetch: refetchMarketChart
|
|
3810
|
-
} = useMarketChart2({
|
|
3811
|
-
marketId: chartPrimaryOutcomeId,
|
|
3812
|
-
venueMarketIds: chartVenueOutcomeIds,
|
|
3813
|
-
interval: rollingWindow.interval,
|
|
3814
|
-
startTs: rollingWindow.startTs * 1e3,
|
|
3815
|
-
endTs: rollingWindow.endTs * 1e3,
|
|
3816
|
-
enabled: chartEnabled && !!chartPrimaryOutcomeId,
|
|
3817
|
-
live,
|
|
3818
|
-
refetchIntervalMs: rollingWindow.refetchIntervalMs,
|
|
3819
|
-
// Stable cache key per user-selected range so tab/page revisits hit cache
|
|
3820
|
-
// instead of refetching on every bucket-boundary rollover.
|
|
3821
|
-
rangeKey: rollingWindow.range
|
|
3822
|
-
});
|
|
3823
|
-
const hasAutoFallenBackRangeRef = useRef5(false);
|
|
3824
|
-
useEffect4(() => {
|
|
3825
|
-
hasAutoFallenBackRangeRef.current = false;
|
|
3826
|
-
setChartRangeOverride(null);
|
|
3827
|
-
}, [chartPrimaryOutcomeId]);
|
|
3828
|
-
useEffect4(() => {
|
|
3829
|
-
if (!shouldAutoFallbackToAllRange({
|
|
3830
|
-
chartData: marketChartData,
|
|
3831
|
-
isLoading: isMarketChartLoading,
|
|
3832
|
-
error: marketChartError,
|
|
3833
|
-
currentRange: effectiveChartTimeRange,
|
|
3834
|
-
hasAlreadyFallenBack: hasAutoFallenBackRangeRef.current,
|
|
3835
|
-
// Ignore stale bars outside the rolling window — see comment on the
|
|
3836
|
-
// matching effect in event-list-item-details.
|
|
3837
|
-
domainStartTs: rollingWindow.startTs
|
|
3838
|
-
})) {
|
|
3839
|
-
return;
|
|
3840
|
-
}
|
|
3841
|
-
hasAutoFallenBackRangeRef.current = true;
|
|
3842
|
-
setChartRangeOverride("ALL");
|
|
3843
|
-
}, [
|
|
3844
|
-
marketChartData,
|
|
3845
|
-
isMarketChartLoading,
|
|
3846
|
-
marketChartError,
|
|
3847
|
-
effectiveChartTimeRange,
|
|
3848
|
-
rollingWindow.startTs
|
|
3849
|
-
]);
|
|
3850
4115
|
const marketOrderbookResult = useMarketOrderbook({
|
|
3851
4116
|
marketId: primaryVenueMarketId,
|
|
3852
4117
|
enabled: orderBookEnabled && !!primaryVenueMarketId,
|
|
@@ -3856,14 +4121,14 @@ var MarketDetailsContent = ({
|
|
|
3856
4121
|
})),
|
|
3857
4122
|
live
|
|
3858
4123
|
});
|
|
3859
|
-
const marketOrderbookDataById =
|
|
4124
|
+
const marketOrderbookDataById = useMemo7(() => {
|
|
3860
4125
|
var _a2;
|
|
3861
4126
|
return (_a2 = marketOrderbookResult.dataById) != null ? _a2 : {};
|
|
3862
4127
|
}, [marketOrderbookResult]);
|
|
3863
4128
|
const isOrderBookLoading = marketOrderbookResult.isLoading;
|
|
3864
4129
|
const orderBookError = marketOrderbookResult.error;
|
|
3865
4130
|
const refetchOrderBook = marketOrderbookResult.refetch;
|
|
3866
|
-
const aggregatedOrderbookRows =
|
|
4131
|
+
const aggregatedOrderbookRows = useMemo7(() => {
|
|
3867
4132
|
return mergeVenueOutcomeOrderbooks({
|
|
3868
4133
|
eligibleOutcomes: selectedOutcomesByVenue,
|
|
3869
4134
|
orderbooksByOutcomeId: marketOrderbookDataById
|
|
@@ -3871,7 +4136,7 @@ var MarketDetailsContent = ({
|
|
|
3871
4136
|
}, [marketOrderbookDataById, selectedOutcomesByVenue]);
|
|
3872
4137
|
const askRows = aggregatedOrderbookRows.askRows;
|
|
3873
4138
|
const bidRows = aggregatedOrderbookRows.bidRows;
|
|
3874
|
-
const unifiedEntries =
|
|
4139
|
+
const unifiedEntries = useMemo7(() => {
|
|
3875
4140
|
return resolveUnifiedOrderBookEntries({
|
|
3876
4141
|
askRows,
|
|
3877
4142
|
bidRows,
|
|
@@ -3879,7 +4144,7 @@ var MarketDetailsContent = ({
|
|
|
3879
4144
|
spread: aggregatedOrderbookRows.spread
|
|
3880
4145
|
});
|
|
3881
4146
|
}, [aggregatedOrderbookRows.midpoint, aggregatedOrderbookRows.spread, askRows, bidRows]);
|
|
3882
|
-
const orderbookSnapshotKey =
|
|
4147
|
+
const orderbookSnapshotKey = useMemo7(() => {
|
|
3883
4148
|
if (selectedOutcomesByVenue.length === 0) return null;
|
|
3884
4149
|
return selectedOutcomesByVenue.map((item) => {
|
|
3885
4150
|
var _a2, _b2;
|
|
@@ -3887,52 +4152,7 @@ var MarketDetailsContent = ({
|
|
|
3887
4152
|
return `${item.outcomeId}:${snapshotVersion}`;
|
|
3888
4153
|
}).join("|");
|
|
3889
4154
|
}, [marketOrderbookDataById, selectedOutcomesByVenue]);
|
|
3890
|
-
const
|
|
3891
|
-
return filterChartVenueOutcomesByRenderableVenues({
|
|
3892
|
-
chartData: marketChartData,
|
|
3893
|
-
venueOutcomes: chartOutcomesByVenue
|
|
3894
|
-
});
|
|
3895
|
-
}, [chartOutcomesByVenue, marketChartData]);
|
|
3896
|
-
const graphSeries = useMemo6(() => {
|
|
3897
|
-
var _a2, _b2, _c2, _d2;
|
|
3898
|
-
const baseColor = resolveSeriesColor(
|
|
3899
|
-
(_d2 = (_c2 = selectedGraphVenue != null ? selectedGraphVenue : (_a2 = chartAvailableOutcomesByVenue[0]) == null ? void 0 : _a2.venue) != null ? _c2 : (_b2 = chartOutcomesByVenue[0]) == null ? void 0 : _b2.venue) != null ? _d2 : "polymarket",
|
|
3900
|
-
0,
|
|
3901
|
-
isDarkTheme
|
|
3902
|
-
);
|
|
3903
|
-
const domainStartTs = rollingWindow.startTs;
|
|
3904
|
-
return resolveMarketChartDisplaySeries({
|
|
3905
|
-
chartData: marketChartData,
|
|
3906
|
-
selectedVenue: selectedGraphVenue,
|
|
3907
|
-
transformProbability: (value) => value
|
|
3908
|
-
}).map((seriesItem) => {
|
|
3909
|
-
return {
|
|
3910
|
-
id: `${resolvedChartOutcomeLabel != null ? resolvedChartOutcomeLabel : "graph"}-${seriesItem.venue}-${chartPrimaryOutcomeId != null ? chartPrimaryOutcomeId : "chart"}`,
|
|
3911
|
-
venue: selectedGraphVenue != null ? selectedGraphVenue : seriesItem.venue,
|
|
3912
|
-
color: seriesItem.venue === "aggregate" ? baseColor : resolveSeriesColor(seriesItem.venue, 0, isDarkTheme),
|
|
3913
|
-
// Constrain to the rolling [nowSec - rangeSeconds, …] domain so stale
|
|
3914
|
-
// bars don't bleed in across a range shrink or long mount.
|
|
3915
|
-
points: seriesItem.points.filter((point) => point.time >= domainStartTs)
|
|
3916
|
-
};
|
|
3917
|
-
});
|
|
3918
|
-
}, [
|
|
3919
|
-
isDarkTheme,
|
|
3920
|
-
chartPrimaryOutcomeId,
|
|
3921
|
-
marketChartData,
|
|
3922
|
-
rollingWindow.startTs,
|
|
3923
|
-
selectedGraphVenue,
|
|
3924
|
-
resolvedChartOutcomeLabel,
|
|
3925
|
-
chartAvailableOutcomesByVenue,
|
|
3926
|
-
chartOutcomesByVenue
|
|
3927
|
-
]);
|
|
3928
|
-
const graphLiveState = useMemo6(() => {
|
|
3929
|
-
return resolveMarketChartLiveState({
|
|
3930
|
-
chartData: marketChartData,
|
|
3931
|
-
selectedVenue: selectedGraphVenue,
|
|
3932
|
-
transformProbability: (value) => value
|
|
3933
|
-
});
|
|
3934
|
-
}, [marketChartData, selectedGraphVenue]);
|
|
3935
|
-
const otherRows = useMemo6(() => {
|
|
4155
|
+
const otherRows = useMemo7(() => {
|
|
3936
4156
|
if (!model) return [];
|
|
3937
4157
|
return resolveOtherTabRows(model.market, labels);
|
|
3938
4158
|
}, [labels, model]);
|
|
@@ -3942,7 +4162,6 @@ var MarketDetailsContent = ({
|
|
|
3942
4162
|
const isSnapshotUnavailableError = typeof orderBookError === "object" && orderBookError != null && "message" in orderBookError && typeof orderBookError.message === "string" && /^snapshot unavailable for\s+\S+/i.test(orderBookError.message);
|
|
3943
4163
|
const orderBookErrorDescription = isSnapshotUnavailableError ? labels.marketDetails.orderBookUnavailableDescription : typeof orderBookError === "object" && orderBookError != null && "message" in orderBookError && typeof orderBookError.message === "string" && orderBookError.message.trim().length > 0 ? orderBookError.message : labels.marketDetails.orderBookUnavailableDescription;
|
|
3944
4164
|
const hasNoOrderBook = isOrderBookNotFound && !isMarketResolved || !isOrderBookLoading && !hasOrderBookError && (selectedOutcomesByVenue.length === 0 || aggregatedOrderbookRows.hasNoOrderBook);
|
|
3945
|
-
const hasChartError = !!marketChartError;
|
|
3946
4165
|
const selectHeaderOutcome = ({
|
|
3947
4166
|
item,
|
|
3948
4167
|
shouldNotifyOutcomeSelect = false
|
|
@@ -3950,7 +4169,7 @@ var MarketDetailsContent = ({
|
|
|
3950
4169
|
var _a2, _b2;
|
|
3951
4170
|
if (isOutcomeSelectionLocked) return;
|
|
3952
4171
|
if (item == null ? void 0 : item.id) {
|
|
3953
|
-
const targetMarket = (_a2 =
|
|
4172
|
+
const targetMarket = (_a2 = venueMarkets.find(
|
|
3954
4173
|
(venueMarket) => venueMarket.venueMarketOutcomes.some((outcome) => outcome.id === item.id)
|
|
3955
4174
|
)) != null ? _a2 : null;
|
|
3956
4175
|
if ((targetMarket == null ? void 0 : targetMarket.id) && targetMarket.id !== (tradingContext == null ? void 0 : tradingContext.selectedMarketId)) {
|
|
@@ -3992,23 +4211,14 @@ var MarketDetailsContent = ({
|
|
|
3992
4211
|
if (!marketId) return;
|
|
3993
4212
|
onOpenChange == null ? void 0 : onOpenChange(marketId);
|
|
3994
4213
|
};
|
|
3995
|
-
const handleGraphVenueToggle = (venue) => {
|
|
3996
|
-
setSelectedGraphVenue((currentVenue) => {
|
|
3997
|
-
if (currentVenue === venue) return null;
|
|
3998
|
-
return venue;
|
|
3999
|
-
});
|
|
4000
|
-
};
|
|
4001
4214
|
const handleRetryOrderBook = () => {
|
|
4002
4215
|
void refetchOrderBook();
|
|
4003
4216
|
};
|
|
4004
|
-
const handleRetryMarketChart = () => {
|
|
4005
|
-
void refetchMarketChart();
|
|
4006
|
-
};
|
|
4007
4217
|
const orderbookState = marketTradingState.isTradingDisabled ? {
|
|
4008
4218
|
kind: "disabled",
|
|
4009
4219
|
title: marketStatePresentation.title,
|
|
4010
4220
|
description: marketStatePresentation.description,
|
|
4011
|
-
icon: /* @__PURE__ */
|
|
4221
|
+
icon: /* @__PURE__ */ jsx10(Icon, { name: marketStatePresentation.iconName, className: "h-5 w-5", "aria-hidden": "true" })
|
|
4012
4222
|
} : isOrderBookLoading ? { kind: "loading" } : hasOrderBookError ? {
|
|
4013
4223
|
kind: "error",
|
|
4014
4224
|
title: labels.marketDetails.orderBookUnavailableTitle,
|
|
@@ -4023,22 +4233,27 @@ var MarketDetailsContent = ({
|
|
|
4023
4233
|
title: labels.marketDetails.orderBookEmptyTitle,
|
|
4024
4234
|
description: labels.marketDetails.orderBookEmptyDescription
|
|
4025
4235
|
} : { kind: "data" };
|
|
4026
|
-
useEffect4(() => {
|
|
4027
|
-
if (!selectedGraphVenue) {
|
|
4028
|
-
return;
|
|
4029
|
-
}
|
|
4030
|
-
if (chartAvailableOutcomesByVenue.some((item) => item.venue === selectedGraphVenue)) {
|
|
4031
|
-
return;
|
|
4032
|
-
}
|
|
4033
|
-
setSelectedGraphVenue(null);
|
|
4034
|
-
}, [selectedGraphVenue, chartAvailableOutcomesByVenue]);
|
|
4035
4236
|
if (marketId && !resolvedMarket) {
|
|
4036
|
-
return /* @__PURE__ */
|
|
4237
|
+
return /* @__PURE__ */ jsx10(
|
|
4238
|
+
MarketDetailsNotFoundState,
|
|
4239
|
+
{
|
|
4240
|
+
marketId,
|
|
4241
|
+
ariaLabel,
|
|
4242
|
+
classNames
|
|
4243
|
+
}
|
|
4244
|
+
);
|
|
4037
4245
|
}
|
|
4038
4246
|
if (!model) {
|
|
4039
|
-
return /* @__PURE__ */
|
|
4247
|
+
return /* @__PURE__ */ jsx10(
|
|
4248
|
+
MarketDetailsUnavailableState,
|
|
4249
|
+
{
|
|
4250
|
+
marketId,
|
|
4251
|
+
ariaLabel,
|
|
4252
|
+
classNames
|
|
4253
|
+
}
|
|
4254
|
+
);
|
|
4040
4255
|
}
|
|
4041
|
-
return /* @__PURE__ */
|
|
4256
|
+
return /* @__PURE__ */ jsxs8(
|
|
4042
4257
|
Card,
|
|
4043
4258
|
{
|
|
4044
4259
|
className: cn(
|
|
@@ -4049,9 +4264,10 @@ var MarketDetailsContent = ({
|
|
|
4049
4264
|
classNames == null ? void 0 : classNames.root
|
|
4050
4265
|
),
|
|
4051
4266
|
children: [
|
|
4052
|
-
/* @__PURE__ */
|
|
4267
|
+
/* @__PURE__ */ jsxs8(
|
|
4053
4268
|
"div",
|
|
4054
4269
|
{
|
|
4270
|
+
"data-market-id": marketId || void 0,
|
|
4055
4271
|
className: cn(
|
|
4056
4272
|
"agg-market-card-header",
|
|
4057
4273
|
"flex flex-col items-stretch gap-3 px-5 py-3 md:flex-row md:flex-nowrap md:items-center md:justify-between",
|
|
@@ -4059,7 +4275,7 @@ var MarketDetailsContent = ({
|
|
|
4059
4275
|
classNames == null ? void 0 : classNames.header
|
|
4060
4276
|
),
|
|
4061
4277
|
children: [
|
|
4062
|
-
/* @__PURE__ */
|
|
4278
|
+
/* @__PURE__ */ jsxs8(
|
|
4063
4279
|
"button",
|
|
4064
4280
|
{
|
|
4065
4281
|
className: cn(
|
|
@@ -4073,17 +4289,17 @@ var MarketDetailsContent = ({
|
|
|
4073
4289
|
"aria-controls": detailsContentId,
|
|
4074
4290
|
"aria-label": isOpened ? labels.marketDetails.toggleCloseDetailsAria(model.title) : labels.marketDetails.toggleOpenDetailsAria(model.title),
|
|
4075
4291
|
children: [
|
|
4076
|
-
/* @__PURE__ */
|
|
4077
|
-
/* @__PURE__ */
|
|
4292
|
+
/* @__PURE__ */ jsxs8("div", { className: "agg-market-summary flex min-w-24 flex-1 items-center gap-3 md:gap-4", children: [
|
|
4293
|
+
!compactHeader ? /* @__PURE__ */ jsx10(
|
|
4078
4294
|
RemoteImage,
|
|
4079
4295
|
{
|
|
4080
4296
|
src: optimizedImageUrl3(model.image, 60),
|
|
4081
4297
|
alt: "",
|
|
4082
4298
|
className: "agg-market-image size-12 rounded-agg-lg object-cover md:size-[60px]"
|
|
4083
4299
|
}
|
|
4084
|
-
),
|
|
4085
|
-
/* @__PURE__ */
|
|
4086
|
-
/* @__PURE__ */
|
|
4300
|
+
) : null,
|
|
4301
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex min-w-24 flex-col", children: [
|
|
4302
|
+
/* @__PURE__ */ jsx10(Tooltip, { content: model.title, side: "top", children: /* @__PURE__ */ jsx10("div", { className: "min-w-0", children: /* @__PURE__ */ jsx10(
|
|
4087
4303
|
Typography,
|
|
4088
4304
|
{
|
|
4089
4305
|
as: "h3",
|
|
@@ -4092,16 +4308,16 @@ var MarketDetailsContent = ({
|
|
|
4092
4308
|
children: model.title
|
|
4093
4309
|
}
|
|
4094
4310
|
) }) }),
|
|
4095
|
-
/* @__PURE__ */
|
|
4311
|
+
/* @__PURE__ */ jsx10("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx10(
|
|
4096
4312
|
Typography,
|
|
4097
4313
|
{
|
|
4098
4314
|
variant: "label",
|
|
4099
4315
|
className: "agg-market-meta truncate text-agg-muted-foreground",
|
|
4100
|
-
children: model.subtitle
|
|
4316
|
+
children: subtitleOverride != null ? subtitleOverride : model.subtitle
|
|
4101
4317
|
}
|
|
4102
4318
|
) }),
|
|
4103
|
-
marketTradingState.isTradingDisabled && marketTradingState.kind !== "resolved" && !isUpcomingMarket ? /* @__PURE__ */
|
|
4104
|
-
/* @__PURE__ */
|
|
4319
|
+
marketTradingState.isTradingDisabled && marketTradingState.kind !== "resolved" && !isUpcomingMarket ? /* @__PURE__ */ jsxs8("div", { className: "mt-2 flex flex-wrap items-center gap-2 justify-center md:justify-start", children: [
|
|
4320
|
+
/* @__PURE__ */ jsxs8(
|
|
4105
4321
|
"span",
|
|
4106
4322
|
{
|
|
4107
4323
|
className: cn(
|
|
@@ -4109,7 +4325,7 @@ var MarketDetailsContent = ({
|
|
|
4109
4325
|
resolveTradingStateBadgeClassName(marketTradingState.kind)
|
|
4110
4326
|
),
|
|
4111
4327
|
children: [
|
|
4112
|
-
/* @__PURE__ */
|
|
4328
|
+
/* @__PURE__ */ jsx10(
|
|
4113
4329
|
Icon,
|
|
4114
4330
|
{
|
|
4115
4331
|
name: marketStatePresentation.iconName,
|
|
@@ -4117,20 +4333,20 @@ var MarketDetailsContent = ({
|
|
|
4117
4333
|
className: "h-3.5 w-3.5"
|
|
4118
4334
|
}
|
|
4119
4335
|
),
|
|
4120
|
-
/* @__PURE__ */
|
|
4336
|
+
/* @__PURE__ */ jsx10("span", { children: marketStatePresentation.badgeLabel })
|
|
4121
4337
|
]
|
|
4122
4338
|
}
|
|
4123
4339
|
),
|
|
4124
|
-
marketStatePresentation.timestampLabel ? /* @__PURE__ */
|
|
4125
|
-
marketStatePresentation.winningOutcomeLabel ? /* @__PURE__ */
|
|
4340
|
+
marketStatePresentation.timestampLabel ? /* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: marketStatePresentation.timestampLabel }) : null,
|
|
4341
|
+
marketStatePresentation.winningOutcomeLabel ? /* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: marketStatePresentation.winningOutcomeLabel }) : null
|
|
4126
4342
|
] }) : null
|
|
4127
4343
|
] })
|
|
4128
4344
|
] }),
|
|
4129
|
-
/* @__PURE__ */
|
|
4345
|
+
!compactHeader ? /* @__PURE__ */ jsx10(Typography, { as: "div", variant: "heading", className: "agg-market-headline shrink-0", children: formatProbabilityPercent(headlineProbability, formatPercent) }) : null
|
|
4130
4346
|
]
|
|
4131
4347
|
}
|
|
4132
4348
|
),
|
|
4133
|
-
marketTradingState.kind === "resolved" && marketTradingState.winningOutcome ? /* @__PURE__ */
|
|
4349
|
+
marketTradingState.kind === "resolved" && marketTradingState.winningOutcome ? /* @__PURE__ */ jsx10("div", { className: "agg-outcomes flex w-full items-center justify-end md:w-auto md:shrink-0", children: /* @__PURE__ */ jsxs8(
|
|
4134
4350
|
"span",
|
|
4135
4351
|
{
|
|
4136
4352
|
className: cn(
|
|
@@ -4143,7 +4359,7 @@ var MarketDetailsContent = ({
|
|
|
4143
4359
|
"border-transparent bg-agg-secondary-hover"
|
|
4144
4360
|
),
|
|
4145
4361
|
children: [
|
|
4146
|
-
/* @__PURE__ */
|
|
4362
|
+
/* @__PURE__ */ jsx10(
|
|
4147
4363
|
Icon,
|
|
4148
4364
|
{
|
|
4149
4365
|
name: marketTradingState.winningOutcome.label.trim().toLowerCase() === "yes" ? "check-circle" : "cross-circle",
|
|
@@ -4154,10 +4370,10 @@ var MarketDetailsContent = ({
|
|
|
4154
4370
|
)
|
|
4155
4371
|
}
|
|
4156
4372
|
),
|
|
4157
|
-
/* @__PURE__ */
|
|
4373
|
+
/* @__PURE__ */ jsx10(Typography, { variant: "body", children: labels.eventMarketPage.resolvedOutcome(marketTradingState.winningOutcome.label) })
|
|
4158
4374
|
]
|
|
4159
4375
|
}
|
|
4160
|
-
) }) : isUpcomingMarket ? /* @__PURE__ */
|
|
4376
|
+
) }) : isUpcomingMarket ? /* @__PURE__ */ jsx10("div", { className: "agg-outcomes flex w-full items-center justify-end md:w-auto md:shrink-0", children: /* @__PURE__ */ jsxs8(
|
|
4161
4377
|
"span",
|
|
4162
4378
|
{
|
|
4163
4379
|
className: cn(
|
|
@@ -4166,7 +4382,7 @@ var MarketDetailsContent = ({
|
|
|
4166
4382
|
resolveTradingStateBadgeClassName(marketTradingState.kind)
|
|
4167
4383
|
),
|
|
4168
4384
|
children: [
|
|
4169
|
-
/* @__PURE__ */
|
|
4385
|
+
/* @__PURE__ */ jsx10(
|
|
4170
4386
|
Icon,
|
|
4171
4387
|
{
|
|
4172
4388
|
name: marketStatePresentation.iconName,
|
|
@@ -4175,10 +4391,10 @@ var MarketDetailsContent = ({
|
|
|
4175
4391
|
"aria-hidden": "true"
|
|
4176
4392
|
}
|
|
4177
4393
|
),
|
|
4178
|
-
/* @__PURE__ */
|
|
4394
|
+
/* @__PURE__ */ jsx10("span", { children: marketStatePresentation.badgeLabel })
|
|
4179
4395
|
]
|
|
4180
4396
|
}
|
|
4181
|
-
) }) : /* @__PURE__ */
|
|
4397
|
+
) }) : /* @__PURE__ */ jsx10(
|
|
4182
4398
|
"div",
|
|
4183
4399
|
{
|
|
4184
4400
|
className: "agg-outcomes flex w-full flex-wrap gap-2 md:w-auto md:shrink-0 md:flex-nowrap",
|
|
@@ -4187,9 +4403,10 @@ var MarketDetailsContent = ({
|
|
|
4187
4403
|
onKeyDown: (eventToHandle) => handleOutcomeKeyDown(eventToHandle),
|
|
4188
4404
|
children: headerOutcomeItems.map((item) => {
|
|
4189
4405
|
const isActiveOutcome = item.id === selectedOutcomeId;
|
|
4190
|
-
return /* @__PURE__ */
|
|
4406
|
+
return /* @__PURE__ */ jsx10(
|
|
4191
4407
|
MarketDetailsOutcomeButton,
|
|
4192
4408
|
{
|
|
4409
|
+
enforceFixedWidth: headerOutcomeVariant != null,
|
|
4193
4410
|
item,
|
|
4194
4411
|
isSelected: isActiveOutcome,
|
|
4195
4412
|
enableAnimations: config.features.enableAnimations,
|
|
@@ -4213,7 +4430,8 @@ var MarketDetailsContent = ({
|
|
|
4213
4430
|
]
|
|
4214
4431
|
}
|
|
4215
4432
|
),
|
|
4216
|
-
/* @__PURE__ */
|
|
4433
|
+
headerAccessory ? /* @__PURE__ */ jsx10("div", { className: "agg-market-card-accessory border-t border-agg-separator", children: headerAccessory }) : null,
|
|
4434
|
+
/* @__PURE__ */ jsx10(
|
|
4217
4435
|
"div",
|
|
4218
4436
|
{
|
|
4219
4437
|
id: detailsContentId,
|
|
@@ -4227,9 +4445,9 @@ var MarketDetailsContent = ({
|
|
|
4227
4445
|
isOpened ? "grid-rows-[1fr] opacity-100" : "pointer-events-none grid-rows-[0fr] opacity-0"
|
|
4228
4446
|
),
|
|
4229
4447
|
"aria-hidden": !isOpened,
|
|
4230
|
-
children: /* @__PURE__ */
|
|
4231
|
-
/* @__PURE__ */
|
|
4232
|
-
/* @__PURE__ */
|
|
4448
|
+
children: /* @__PURE__ */ jsxs8("div", { className: "min-h-0", children: [
|
|
4449
|
+
/* @__PURE__ */ jsx10("div", { className: "h-px w-full bg-agg-separator" }),
|
|
4450
|
+
/* @__PURE__ */ jsxs8(
|
|
4233
4451
|
"div",
|
|
4234
4452
|
{
|
|
4235
4453
|
className: cn(
|
|
@@ -4243,8 +4461,8 @@ var MarketDetailsContent = ({
|
|
|
4243
4461
|
) : "translate-y-5 opacity-0"
|
|
4244
4462
|
),
|
|
4245
4463
|
children: [
|
|
4246
|
-
!isResolvedMarket ? /* @__PURE__ */
|
|
4247
|
-
/* @__PURE__ */
|
|
4464
|
+
!isResolvedMarket ? /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
4465
|
+
/* @__PURE__ */ jsx10("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx10(
|
|
4248
4466
|
Tabs,
|
|
4249
4467
|
{
|
|
4250
4468
|
ariaLabel: labels.marketDetails.tabsAria,
|
|
@@ -4255,10 +4473,10 @@ var MarketDetailsContent = ({
|
|
|
4255
4473
|
className: "agg-market-tabs w-full px-5"
|
|
4256
4474
|
}
|
|
4257
4475
|
) }),
|
|
4258
|
-
/* @__PURE__ */
|
|
4476
|
+
/* @__PURE__ */ jsx10("div", { className: "h-px w-full bg-agg-separator" })
|
|
4259
4477
|
] }) : null,
|
|
4260
|
-
/* @__PURE__ */
|
|
4261
|
-
effectiveSelectedTab === "order-book" ? /* @__PURE__ */
|
|
4478
|
+
/* @__PURE__ */ jsxs8("div", { className: cn("agg-market-card-body p-0", classNames == null ? void 0 : classNames.content), children: [
|
|
4479
|
+
effectiveSelectedTab === "order-book" ? /* @__PURE__ */ jsx10(
|
|
4262
4480
|
OrderbookWithStates,
|
|
4263
4481
|
{
|
|
4264
4482
|
state: orderbookState,
|
|
@@ -4284,159 +4502,29 @@ var MarketDetailsContent = ({
|
|
|
4284
4502
|
wrapperClassName: classNames == null ? void 0 : classNames.orderBook
|
|
4285
4503
|
}
|
|
4286
4504
|
) : null,
|
|
4287
|
-
effectiveSelectedTab === "graph" ? /* @__PURE__ */
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
liveCandle: selectedChartType === "candlestick" ? (_l = graphLiveState.liveCandle) != null ? _l : void 0 : void 0,
|
|
4305
|
-
lineValue: graphLiveState.lineValue,
|
|
4306
|
-
classNames: { root: "agg-chart-region w-full" },
|
|
4307
|
-
showSeriesControls: chartAvailableOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
|
|
4308
|
-
renderSeriesControls: () => {
|
|
4309
|
-
var _a2, _b2, _c2, _d2;
|
|
4310
|
-
return /* @__PURE__ */ jsxs7("div", { className: "agg-chart-toolbar w-full flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
|
|
4311
|
-
/* @__PURE__ */ jsx9("div", { className: "agg-market-venues flex flex-wrap gap-2", children: chartAvailableOutcomesByVenue.map((item) => {
|
|
4312
|
-
var _a3;
|
|
4313
|
-
const probability = formatProbabilityPercent(
|
|
4314
|
-
(_a3 = wsLivePrices.get(item.outcome.id)) != null ? _a3 : item.outcome.price,
|
|
4315
|
-
formatPercent
|
|
4316
|
-
);
|
|
4317
|
-
const isActiveVenue = selectedGraphVenue === item.venue;
|
|
4318
|
-
return /* @__PURE__ */ jsxs7(
|
|
4319
|
-
"button",
|
|
4320
|
-
{
|
|
4321
|
-
type: "button",
|
|
4322
|
-
"aria-label": `${item.venue} ${probability}`,
|
|
4323
|
-
"aria-pressed": isActiveVenue,
|
|
4324
|
-
className: cn(
|
|
4325
|
-
"agg-market-venue",
|
|
4326
|
-
"cursor-pointer",
|
|
4327
|
-
"inline-flex items-center gap-2 rounded-agg-full border px-4 py-2",
|
|
4328
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-0 focus-visible:ring-offset-agg-secondary-hover",
|
|
4329
|
-
isActiveVenue ? "border-agg-primary bg-agg-secondary" : "border-transparent bg-agg-secondary-hover"
|
|
4330
|
-
),
|
|
4331
|
-
onClick: (e) => {
|
|
4332
|
-
e.preventDefault();
|
|
4333
|
-
e.stopPropagation();
|
|
4334
|
-
handleGraphVenueToggle(item.venue);
|
|
4335
|
-
},
|
|
4336
|
-
children: [
|
|
4337
|
-
/* @__PURE__ */ jsx9(VenueLogo, { venue: item.venue, size: "small" }),
|
|
4338
|
-
/* @__PURE__ */ jsx9("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
|
|
4339
|
-
]
|
|
4340
|
-
},
|
|
4341
|
-
`${item.market.id}-${item.outcome.id}`
|
|
4342
|
-
);
|
|
4343
|
-
}) }),
|
|
4344
|
-
!isOutcomeSelectionLocked ? /* @__PURE__ */ jsx9(
|
|
4345
|
-
SwitchButton,
|
|
4346
|
-
{
|
|
4347
|
-
ariaLabel: labels.marketDetails.outcomeSelectorAria,
|
|
4348
|
-
className: "agg-outcome-switch w-full shrink-0 md:w-fit",
|
|
4349
|
-
value: (_d2 = (_c2 = (_a2 = headerOutcomeItems.find(
|
|
4350
|
-
(outcome) => outcome.label === resolvedChartOutcomeLabel
|
|
4351
|
-
)) == null ? void 0 : _a2.id) != null ? _c2 : (_b2 = headerOutcomeItems[0]) == null ? void 0 : _b2.id) != null ? _d2 : "",
|
|
4352
|
-
onValueChange: (outcomeId) => {
|
|
4353
|
-
const outcome = headerOutcomeItems.find(
|
|
4354
|
-
(headerOutcomeItem) => headerOutcomeItem.id === outcomeId
|
|
4355
|
-
);
|
|
4356
|
-
if (!outcome) return;
|
|
4357
|
-
setChartOutcomeLabel(outcome.label);
|
|
4358
|
-
},
|
|
4359
|
-
options: headerOutcomeItems.map((outcome) => {
|
|
4360
|
-
var _a3, _b3;
|
|
4361
|
-
const price = outcome.probability;
|
|
4362
|
-
return {
|
|
4363
|
-
value: outcome.id,
|
|
4364
|
-
label: `${(_a3 = outcome == null ? void 0 : outcome.title) != null ? _a3 : outcome.label} ${formatProbabilityCents(price)}`,
|
|
4365
|
-
ariaLabel: `${(_b3 = outcome == null ? void 0 : outcome.title) != null ? _b3 : outcome.label} ${formatProbabilityCents(price)}`
|
|
4366
|
-
};
|
|
4367
|
-
})
|
|
4368
|
-
}
|
|
4369
|
-
) : null
|
|
4370
|
-
] });
|
|
4371
|
-
}
|
|
4372
|
-
}
|
|
4373
|
-
),
|
|
4374
|
-
/* @__PURE__ */ jsxs7(
|
|
4375
|
-
"div",
|
|
4376
|
-
{
|
|
4377
|
-
className: cn(
|
|
4378
|
-
"agg-chart-footer",
|
|
4379
|
-
"flex flex-row justify-between gap-2 text-agg-sm leading-agg-5 text-agg-muted-foreground md:flex-row md:items-center md:justify-between",
|
|
4380
|
-
classNames == null ? void 0 : classNames.footer
|
|
4381
|
-
),
|
|
4382
|
-
children: [
|
|
4383
|
-
/* @__PURE__ */ jsx9("span", { children: typeof model.market.volume !== "number" ? labels.marketDetails.volumeUnavailable : model.market.volume > 0 ? `${config.formatting.formatCompactCurrency(model.market.volume)} ${labels.marketDetails.meta.volumeSuffix}` : "" }),
|
|
4384
|
-
/* @__PURE__ */ jsxs7("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: [
|
|
4385
|
-
/* @__PURE__ */ jsx9(
|
|
4386
|
-
ChartTypeSwitch,
|
|
4387
|
-
{
|
|
4388
|
-
className: "agg-chart-type-switch shrink-0",
|
|
4389
|
-
value: selectedChartType,
|
|
4390
|
-
onValueChange: setSelectedChartType
|
|
4391
|
-
}
|
|
4392
|
-
),
|
|
4393
|
-
/* @__PURE__ */ jsx9(
|
|
4394
|
-
"span",
|
|
4395
|
-
{
|
|
4396
|
-
"aria-hidden": "true",
|
|
4397
|
-
className: "hidden h-4 w-px bg-agg-separator md:block"
|
|
4398
|
-
}
|
|
4399
|
-
),
|
|
4400
|
-
CHART_TIME_RANGES2.map((timeRange) => {
|
|
4401
|
-
const isActive = effectiveChartTimeRange === timeRange;
|
|
4402
|
-
const isDisabled = isResolvedMarket && timeRange !== "ALL";
|
|
4403
|
-
return /* @__PURE__ */ jsx9(
|
|
4404
|
-
"button",
|
|
4405
|
-
{
|
|
4406
|
-
type: "button",
|
|
4407
|
-
disabled: isDisabled,
|
|
4408
|
-
className: cn(
|
|
4409
|
-
"agg-chart-time-range-trigger",
|
|
4410
|
-
"cursor-pointer text-agg-sm leading-agg-5",
|
|
4411
|
-
isDisabled && "cursor-not-allowed opacity-50",
|
|
4412
|
-
isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
|
|
4413
|
-
),
|
|
4414
|
-
"aria-pressed": isActive,
|
|
4415
|
-
"aria-disabled": isDisabled,
|
|
4416
|
-
onClick: (e) => {
|
|
4417
|
-
e.preventDefault();
|
|
4418
|
-
e.stopPropagation();
|
|
4419
|
-
if (isDisabled) return;
|
|
4420
|
-
setChartRangeOverride(null);
|
|
4421
|
-
setSelectedTimeRange(timeRange);
|
|
4422
|
-
},
|
|
4423
|
-
children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
|
|
4424
|
-
},
|
|
4425
|
-
timeRange
|
|
4426
|
-
);
|
|
4427
|
-
})
|
|
4428
|
-
] })
|
|
4429
|
-
]
|
|
4430
|
-
}
|
|
4431
|
-
)
|
|
4432
|
-
] }) : null,
|
|
4433
|
-
effectiveSelectedTab === "other" ? /* @__PURE__ */ jsx9("div", { className: "agg-market-meta flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx9("div", { className: "agg-market-meta-list grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs7(
|
|
4505
|
+
isOpened && effectiveSelectedTab === "graph" ? /* @__PURE__ */ jsx10(
|
|
4506
|
+
MarketDetailsGraphPanel,
|
|
4507
|
+
{
|
|
4508
|
+
venueMarkets: model.market.venueMarkets,
|
|
4509
|
+
selectedOutcomeLabel,
|
|
4510
|
+
selectedOutcomeId,
|
|
4511
|
+
livePrices,
|
|
4512
|
+
wsLivePrices,
|
|
4513
|
+
headerOutcomeItems,
|
|
4514
|
+
isResolvedMarket,
|
|
4515
|
+
isOutcomeSelectionLocked,
|
|
4516
|
+
volume: model.market.volume,
|
|
4517
|
+
live,
|
|
4518
|
+
classNames: { graph: classNames == null ? void 0 : classNames.graph, footer: classNames == null ? void 0 : classNames.footer }
|
|
4519
|
+
}
|
|
4520
|
+
) : null,
|
|
4521
|
+
effectiveSelectedTab === "other" ? /* @__PURE__ */ jsx10("div", { className: "agg-market-meta flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx10("div", { className: "agg-market-meta-list grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs8(
|
|
4434
4522
|
"div",
|
|
4435
4523
|
{
|
|
4436
4524
|
className: "agg-market-meta-row flex items-center justify-between rounded-agg-xl bg-agg-secondary-hover px-4 py-3",
|
|
4437
4525
|
children: [
|
|
4438
|
-
/* @__PURE__ */
|
|
4439
|
-
/* @__PURE__ */
|
|
4526
|
+
/* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: row.label }),
|
|
4527
|
+
/* @__PURE__ */ jsx10(Typography, { variant: "body", className: "text-right", children: row.value })
|
|
4440
4528
|
]
|
|
4441
4529
|
},
|
|
4442
4530
|
row.label
|
|
@@ -4454,9 +4542,9 @@ var MarketDetailsContent = ({
|
|
|
4454
4542
|
};
|
|
4455
4543
|
var MarketDetails = (_a) => {
|
|
4456
4544
|
var _b = _a, { isOpened } = _b, props = __objRest(_b, ["isOpened"]);
|
|
4457
|
-
const labels =
|
|
4545
|
+
const labels = useLabels7();
|
|
4458
4546
|
if (props.isLoading) {
|
|
4459
|
-
return /* @__PURE__ */
|
|
4547
|
+
return /* @__PURE__ */ jsx10(
|
|
4460
4548
|
Skeleton,
|
|
4461
4549
|
{
|
|
4462
4550
|
view: "market-details-minified",
|
|
@@ -4466,7 +4554,7 @@ var MarketDetails = (_a) => {
|
|
|
4466
4554
|
);
|
|
4467
4555
|
}
|
|
4468
4556
|
if ("venueMarkets" in props && props.venueMarkets) {
|
|
4469
|
-
return /* @__PURE__ */
|
|
4557
|
+
return /* @__PURE__ */ jsx10(
|
|
4470
4558
|
MarketDetailsContent,
|
|
4471
4559
|
__spreadProps(__spreadValues({}, props), {
|
|
4472
4560
|
isOpened,
|
|
@@ -4478,7 +4566,7 @@ var MarketDetails = (_a) => {
|
|
|
4478
4566
|
);
|
|
4479
4567
|
}
|
|
4480
4568
|
const { classNames: fallbackClassNames } = props;
|
|
4481
|
-
return /* @__PURE__ */
|
|
4569
|
+
return /* @__PURE__ */ jsx10(MarketDetailsUnavailableState, { classNames: fallbackClassNames });
|
|
4482
4570
|
};
|
|
4483
4571
|
MarketDetails.displayName = "MarketDetails";
|
|
4484
4572
|
var AFFIRMATIVE_WINNER_LABELS = /* @__PURE__ */ new Set(["yes", "up", "buy", "long", "true"]);
|
|
@@ -4535,11 +4623,11 @@ var MarketDetailsList = ({
|
|
|
4535
4623
|
midpointsResult
|
|
4536
4624
|
}) => {
|
|
4537
4625
|
var _a, _b;
|
|
4538
|
-
const labels =
|
|
4626
|
+
const labels = useLabels7();
|
|
4539
4627
|
const tradingContext = useEventTradingContext2();
|
|
4540
4628
|
const selectedMarketId = (_a = tradingContext == null ? void 0 : tradingContext.selectedMarketId) != null ? _a : null;
|
|
4541
|
-
const [expandedMarketId, setExpandedMarketId] =
|
|
4542
|
-
const [areResolvedMarketsVisible, setAreResolvedMarketsVisible] =
|
|
4629
|
+
const [expandedMarketId, setExpandedMarketId] = useState5(null);
|
|
4630
|
+
const [areResolvedMarketsVisible, setAreResolvedMarketsVisible] = useState5(false);
|
|
4543
4631
|
const resolvedEventId = eventId || "";
|
|
4544
4632
|
const {
|
|
4545
4633
|
markets: rawMarkets,
|
|
@@ -4548,11 +4636,12 @@ var MarketDetailsList = ({
|
|
|
4548
4636
|
} = useVenueMarkets2({
|
|
4549
4637
|
venueEventId: resolvedEventId,
|
|
4550
4638
|
enabled: !providedMarkets && !!resolvedEventId,
|
|
4551
|
-
status: MarketStatus.open
|
|
4552
|
-
sortBy:
|
|
4553
|
-
|
|
4639
|
+
status: MarketStatus.open
|
|
4640
|
+
// No explicit sortBy: event-scoped /venue-markets sorts by the event's
|
|
4641
|
+
// type-aware order (structureOrderBy), matching the home-card top-3 and the
|
|
4642
|
+
// markets-under-an-event ordering. Passing sortBy here would override it.
|
|
4554
4643
|
});
|
|
4555
|
-
const sourceMarkets =
|
|
4644
|
+
const sourceMarkets = useMemo7(() => {
|
|
4556
4645
|
var _a2;
|
|
4557
4646
|
if ((_a2 = eventTradingState == null ? void 0 : eventTradingState.marketStates) == null ? void 0 : _a2.length) {
|
|
4558
4647
|
return eventTradingState.marketStates.map((item) => item.market);
|
|
@@ -4560,10 +4649,10 @@ var MarketDetailsList = ({
|
|
|
4560
4649
|
if (providedMarkets) return providedMarkets;
|
|
4561
4650
|
return rawMarkets;
|
|
4562
4651
|
}, [eventTradingState == null ? void 0 : eventTradingState.marketStates, providedMarkets, rawMarkets]);
|
|
4563
|
-
const isResolvedEvent =
|
|
4652
|
+
const isResolvedEvent = useMemo7(() => {
|
|
4564
4653
|
return resolveIsResolvedEvent(sourceMarkets, eventTradingState);
|
|
4565
4654
|
}, [eventTradingState, sourceMarkets]);
|
|
4566
|
-
const groupedMarkets =
|
|
4655
|
+
const groupedMarkets = useMemo7(() => {
|
|
4567
4656
|
if (sourceMarkets.length === 0) {
|
|
4568
4657
|
return {
|
|
4569
4658
|
primary: [],
|
|
@@ -4603,21 +4692,21 @@ var MarketDetailsList = ({
|
|
|
4603
4692
|
return { primary, upcoming, resolved, closed };
|
|
4604
4693
|
}, [eventTradingState, isResolvedEvent, sourceMarkets]);
|
|
4605
4694
|
const shouldShowResolvedToggle = !isResolvedEvent && groupedMarkets.resolved.length > 0;
|
|
4606
|
-
const visibleResolvedMarkets =
|
|
4695
|
+
const visibleResolvedMarkets = useMemo7(() => {
|
|
4607
4696
|
if (isResolvedEvent || areResolvedMarketsVisible) return groupedMarkets.resolved;
|
|
4608
4697
|
return [];
|
|
4609
4698
|
}, [areResolvedMarketsVisible, groupedMarkets.resolved, isResolvedEvent]);
|
|
4610
|
-
const displayedMarkets =
|
|
4699
|
+
const displayedMarkets = useMemo7(() => {
|
|
4611
4700
|
return [...groupedMarkets.primary, ...visibleResolvedMarkets];
|
|
4612
4701
|
}, [groupedMarkets.primary, visibleResolvedMarkets]);
|
|
4613
4702
|
const hasPrefetchedMarkets = !!providedMarkets || !!((_b = eventTradingState == null ? void 0 : eventTradingState.marketStates) == null ? void 0 : _b.length);
|
|
4614
|
-
const midpointEligibleMarkets =
|
|
4703
|
+
const midpointEligibleMarkets = useMemo7(() => {
|
|
4615
4704
|
return displayedMarkets.filter(
|
|
4616
4705
|
(market) => resolveMarketTradingState(market).kind !== "resolved"
|
|
4617
4706
|
);
|
|
4618
4707
|
}, [displayedMarkets]);
|
|
4619
4708
|
const { prices: midpointsFallback, venueByOutcomeId: midpointsFallbackVenues } = useViewportMidpoints(midpointEligibleMarkets);
|
|
4620
|
-
|
|
4709
|
+
useEffect5(() => {
|
|
4621
4710
|
if (isResolvedEvent) {
|
|
4622
4711
|
setAreResolvedMarketsVisible(false);
|
|
4623
4712
|
return;
|
|
@@ -4626,7 +4715,7 @@ var MarketDetailsList = ({
|
|
|
4626
4715
|
setAreResolvedMarketsVisible(false);
|
|
4627
4716
|
}
|
|
4628
4717
|
}, [groupedMarkets.resolved.length, isResolvedEvent]);
|
|
4629
|
-
|
|
4718
|
+
useEffect5(() => {
|
|
4630
4719
|
if (displayedMarkets.length === 0) return;
|
|
4631
4720
|
if (selectedMarketId && displayedMarkets.some((market) => market.id === selectedMarketId)) {
|
|
4632
4721
|
return;
|
|
@@ -4643,7 +4732,7 @@ var MarketDetailsList = ({
|
|
|
4643
4732
|
if (!autoSelectFallbackMarket) return;
|
|
4644
4733
|
tradingContext == null ? void 0 : tradingContext.selectMarket(fallbackSelectableMarket.id, fallbackSelectableMarket);
|
|
4645
4734
|
}, [autoSelectFallbackMarket, displayedMarkets, selectedMarketId, sourceMarkets, tradingContext]);
|
|
4646
|
-
|
|
4735
|
+
useEffect5(() => {
|
|
4647
4736
|
if (!expandedMarketId) return;
|
|
4648
4737
|
if (displayedMarkets.some((market) => market.id === expandedMarketId)) return;
|
|
4649
4738
|
setExpandedMarketId(null);
|
|
@@ -4661,7 +4750,7 @@ var MarketDetailsList = ({
|
|
|
4661
4750
|
tradingContext == null ? void 0 : tradingContext.selectMarket(market.id, market);
|
|
4662
4751
|
};
|
|
4663
4752
|
if (!hasPrefetchedMarkets && isLoading) {
|
|
4664
|
-
return /* @__PURE__ */
|
|
4753
|
+
return /* @__PURE__ */ jsx10(
|
|
4665
4754
|
Skeleton,
|
|
4666
4755
|
{
|
|
4667
4756
|
view: "market-details-minified",
|
|
@@ -4671,29 +4760,29 @@ var MarketDetailsList = ({
|
|
|
4671
4760
|
);
|
|
4672
4761
|
}
|
|
4673
4762
|
if (!hasPrefetchedMarkets && error) {
|
|
4674
|
-
return /* @__PURE__ */
|
|
4763
|
+
return /* @__PURE__ */ jsx10(
|
|
4675
4764
|
StateMessage,
|
|
4676
4765
|
{
|
|
4677
4766
|
title: labels.marketDetails.unavailableTitle,
|
|
4678
4767
|
description: labels.marketDetails.unavailableDescription,
|
|
4679
|
-
icon: /* @__PURE__ */
|
|
4768
|
+
icon: /* @__PURE__ */ jsx10(SearchEmptyIcon, {}),
|
|
4680
4769
|
classNames: { root: "min-h-[280px] md:min-h-[320px]" }
|
|
4681
4770
|
}
|
|
4682
4771
|
);
|
|
4683
4772
|
}
|
|
4684
4773
|
if (displayedMarkets.length === 0 && !shouldShowResolvedToggle) {
|
|
4685
4774
|
const hasSourceMarkets = sourceMarkets.length > 0;
|
|
4686
|
-
return /* @__PURE__ */
|
|
4775
|
+
return /* @__PURE__ */ jsx10(
|
|
4687
4776
|
StateMessage,
|
|
4688
4777
|
{
|
|
4689
4778
|
title: hasSourceMarkets ? isResolvedEvent ? labels.markets.emptyResolved : labels.markets.emptyNoOpen : labels.marketDetails.notFoundTitle,
|
|
4690
4779
|
description: hasSourceMarkets ? void 0 : labels.marketDetails.notFoundDescription,
|
|
4691
|
-
icon: /* @__PURE__ */
|
|
4780
|
+
icon: /* @__PURE__ */ jsx10(SearchEmptyIcon, {}),
|
|
4692
4781
|
classNames: { root: "min-h-[280px] md:min-h-[320px]" }
|
|
4693
4782
|
}
|
|
4694
4783
|
);
|
|
4695
4784
|
}
|
|
4696
|
-
const renderMarketCard = (market) => /* @__PURE__ */
|
|
4785
|
+
const renderMarketCard = (market) => /* @__PURE__ */ jsx10("div", { children: /* @__PURE__ */ jsx10(
|
|
4697
4786
|
MarketDetails,
|
|
4698
4787
|
{
|
|
4699
4788
|
marketId: market.id,
|
|
@@ -4720,9 +4809,9 @@ var MarketDetailsList = ({
|
|
|
4720
4809
|
midpointsResult
|
|
4721
4810
|
}
|
|
4722
4811
|
) }, market.id);
|
|
4723
|
-
return /* @__PURE__ */
|
|
4812
|
+
return /* @__PURE__ */ jsxs8("div", { className: cn("agg-market-list flex flex-col gap-3", classNames == null ? void 0 : classNames.root), children: [
|
|
4724
4813
|
groupedMarkets.primary.map((market) => renderMarketCard(market)),
|
|
4725
|
-
shouldShowResolvedToggle ? /* @__PURE__ */
|
|
4814
|
+
shouldShowResolvedToggle ? /* @__PURE__ */ jsx10(
|
|
4726
4815
|
Button,
|
|
4727
4816
|
{
|
|
4728
4817
|
variant: "tertiary",
|
|
@@ -4732,7 +4821,7 @@ var MarketDetailsList = ({
|
|
|
4732
4821
|
setAreResolvedMarketsVisible((isVisible) => !isVisible);
|
|
4733
4822
|
},
|
|
4734
4823
|
"aria-expanded": areResolvedMarketsVisible,
|
|
4735
|
-
suffix: /* @__PURE__ */
|
|
4824
|
+
suffix: /* @__PURE__ */ jsx10(
|
|
4736
4825
|
Icon,
|
|
4737
4826
|
{
|
|
4738
4827
|
name: areResolvedMarketsVisible ? "chevron-up" : "chevron-down",
|
|
@@ -4756,17 +4845,17 @@ import {
|
|
|
4756
4845
|
useAppConfig as useAppConfig2,
|
|
4757
4846
|
useCategories,
|
|
4758
4847
|
useCategoryChildren,
|
|
4759
|
-
useLabels as
|
|
4760
|
-
useSdkUiConfig as
|
|
4848
|
+
useLabels as useLabels9,
|
|
4849
|
+
useSdkUiConfig as useSdkUiConfig5,
|
|
4761
4850
|
useVenueEvents
|
|
4762
4851
|
} from "@agg-build/hooks";
|
|
4763
4852
|
import { VENUES } from "@agg-build/sdk";
|
|
4764
4853
|
import * as Dialog from "@radix-ui/react-dialog";
|
|
4765
|
-
import { useEffect as
|
|
4854
|
+
import { useEffect as useEffect7, useMemo as useMemo10, useRef as useRef7, useState as useState7 } from "react";
|
|
4766
4855
|
|
|
4767
4856
|
// src/events/list/category-sidebar.tsx
|
|
4768
|
-
import { useMemo as
|
|
4769
|
-
import { jsx as
|
|
4857
|
+
import { useMemo as useMemo8 } from "react";
|
|
4858
|
+
import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
4770
4859
|
var rowBase = cn(
|
|
4771
4860
|
"flex min-h-11 w-full items-center gap-3 rounded-[6px] px-3 py-3",
|
|
4772
4861
|
"text-left text-agg-sm font-agg-normal leading-agg-5",
|
|
@@ -4788,7 +4877,7 @@ var CategorySidebar = ({
|
|
|
4788
4877
|
onToggleCategory
|
|
4789
4878
|
}) => {
|
|
4790
4879
|
const isDrilledIn = categoryPath.length > 0;
|
|
4791
|
-
const sortedBaseChildren =
|
|
4880
|
+
const sortedBaseChildren = useMemo8(() => {
|
|
4792
4881
|
var _a;
|
|
4793
4882
|
if (!baseCategoryId) return [];
|
|
4794
4883
|
const children = [...(_a = childrenByParentId.get(baseCategoryId)) != null ? _a : []];
|
|
@@ -4808,7 +4897,7 @@ var CategorySidebar = ({
|
|
|
4808
4897
|
}) => {
|
|
4809
4898
|
var _a, _b;
|
|
4810
4899
|
const hasKnownChildren = ((_b = (_a = childrenByParentId.get(entry.id)) == null ? void 0 : _a.length) != null ? _b : 0) > 0;
|
|
4811
|
-
return /* @__PURE__ */
|
|
4900
|
+
return /* @__PURE__ */ jsxs9(
|
|
4812
4901
|
"button",
|
|
4813
4902
|
{
|
|
4814
4903
|
type: "button",
|
|
@@ -4816,8 +4905,8 @@ var CategorySidebar = ({
|
|
|
4816
4905
|
className: isSelected ? selectedRowClassName : idleRowClassName,
|
|
4817
4906
|
onClick,
|
|
4818
4907
|
children: [
|
|
4819
|
-
/* @__PURE__ */
|
|
4820
|
-
hasKnownChildren ? /* @__PURE__ */
|
|
4908
|
+
/* @__PURE__ */ jsx11("span", { className: "min-w-0 flex-1 truncate first-letter:uppercase", children: entry.label }),
|
|
4909
|
+
hasKnownChildren ? /* @__PURE__ */ jsx11(
|
|
4821
4910
|
Icon,
|
|
4822
4911
|
{
|
|
4823
4912
|
name: isExpanded ? "chevron-up" : "chevron-down",
|
|
@@ -4825,7 +4914,7 @@ var CategorySidebar = ({
|
|
|
4825
4914
|
color: "currentColor",
|
|
4826
4915
|
className: "shrink-0 text-agg-muted-foreground"
|
|
4827
4916
|
}
|
|
4828
|
-
) : /* @__PURE__ */
|
|
4917
|
+
) : /* @__PURE__ */ jsx11("span", { className: "shrink-0 text-agg-muted-foreground", children: entry.eventCount })
|
|
4829
4918
|
]
|
|
4830
4919
|
},
|
|
4831
4920
|
entry.id
|
|
@@ -4843,27 +4932,27 @@ var CategorySidebar = ({
|
|
|
4843
4932
|
const hasKnownChildren = childCategories.length > 0;
|
|
4844
4933
|
const isExpanded = ((_d = categoryPath[depth]) == null ? void 0 : _d.id) === category.id && !collapsedCategoryIds.has(category.id);
|
|
4845
4934
|
const isSelected = ((_e = categoryPath[depth]) == null ? void 0 : _e.id) === category.id && categoryPath.length === depth + 1;
|
|
4846
|
-
return /* @__PURE__ */
|
|
4935
|
+
return /* @__PURE__ */ jsxs9("div", { className: "flex w-full flex-col", children: [
|
|
4847
4936
|
renderRow({
|
|
4848
4937
|
entry,
|
|
4849
4938
|
isExpanded,
|
|
4850
4939
|
isSelected,
|
|
4851
4940
|
onClick: () => onToggleCategory({ entry, depth, hasKnownChildren, isExpanded, isSelected })
|
|
4852
4941
|
}),
|
|
4853
|
-
/* @__PURE__ */
|
|
4942
|
+
/* @__PURE__ */ jsx11(
|
|
4854
4943
|
"div",
|
|
4855
4944
|
{
|
|
4856
4945
|
className: cn(
|
|
4857
4946
|
"grid transition-[grid-template-rows] duration-150 ease-in-out motion-reduce:transition-none",
|
|
4858
4947
|
isExpanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
4859
4948
|
),
|
|
4860
|
-
children: /* @__PURE__ */
|
|
4949
|
+
children: /* @__PURE__ */ jsx11("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx11("div", { className: "flex w-full flex-col gap-1 pl-4 pt-1", children: childCategories.map((child) => renderBranch(child, depth + 1)) }) })
|
|
4861
4950
|
}
|
|
4862
4951
|
)
|
|
4863
4952
|
] }, category.id);
|
|
4864
4953
|
};
|
|
4865
|
-
return /* @__PURE__ */
|
|
4866
|
-
/* @__PURE__ */
|
|
4954
|
+
return /* @__PURE__ */ jsxs9("div", { className: "flex w-full flex-col gap-1", children: [
|
|
4955
|
+
/* @__PURE__ */ jsxs9(
|
|
4867
4956
|
"button",
|
|
4868
4957
|
{
|
|
4869
4958
|
type: "button",
|
|
@@ -4871,8 +4960,8 @@ var CategorySidebar = ({
|
|
|
4871
4960
|
className: !isDrilledIn ? selectedRowClassName : idleRowClassName,
|
|
4872
4961
|
onClick: onSelectAll,
|
|
4873
4962
|
children: [
|
|
4874
|
-
/* @__PURE__ */
|
|
4875
|
-
/* @__PURE__ */
|
|
4963
|
+
/* @__PURE__ */ jsx11("span", { className: "min-w-0 flex-1 truncate", children: labels.subcategoriesAll }),
|
|
4964
|
+
/* @__PURE__ */ jsx11("span", { className: "shrink-0 text-agg-muted-foreground", children: totalEventCount })
|
|
4876
4965
|
]
|
|
4877
4966
|
}
|
|
4878
4967
|
),
|
|
@@ -4882,8 +4971,8 @@ var CategorySidebar = ({
|
|
|
4882
4971
|
CategorySidebar.displayName = "CategorySidebar";
|
|
4883
4972
|
|
|
4884
4973
|
// src/events/list/event-list-tabs.tsx
|
|
4885
|
-
import { getVenueAvailabilityState, useAppConfig, useGeoBlock, useLabels as
|
|
4886
|
-
import { useCallback as useCallback3, useEffect as
|
|
4974
|
+
import { getVenueAvailabilityState, useAppConfig, useGeoBlock, useLabels as useLabels8 } from "@agg-build/hooks";
|
|
4975
|
+
import { useCallback as useCallback3, useEffect as useEffect6, useMemo as useMemo9, useRef as useRef6, useState as useState6 } from "react";
|
|
4887
4976
|
|
|
4888
4977
|
// src/events/list/event-list.constants.ts
|
|
4889
4978
|
import { MatchStatus, Venue as Venue2 } from "@agg-build/sdk";
|
|
@@ -4950,16 +5039,16 @@ var getDefaultEventListTabs = (labels) => {
|
|
|
4950
5039
|
};
|
|
4951
5040
|
|
|
4952
5041
|
// src/events/list/event-list-tabs.tsx
|
|
4953
|
-
import { jsx as
|
|
5042
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
4954
5043
|
var renderTabIcon = (tab, isActive) => {
|
|
4955
5044
|
if (tab.iconName === "warning-filled") {
|
|
4956
|
-
return /* @__PURE__ */
|
|
5045
|
+
return /* @__PURE__ */ jsx12(Icon, { name: "warning-filled", size: "small", color: "currentColor" });
|
|
4957
5046
|
}
|
|
4958
5047
|
if (tab.venueLogo) {
|
|
4959
|
-
return /* @__PURE__ */
|
|
5048
|
+
return /* @__PURE__ */ jsx12(VenueLogo, { venue: tab.venueLogo, size: "small" });
|
|
4960
5049
|
}
|
|
4961
5050
|
if (!tab.iconName) return null;
|
|
4962
|
-
return /* @__PURE__ */
|
|
5051
|
+
return /* @__PURE__ */ jsx12(
|
|
4963
5052
|
Icon,
|
|
4964
5053
|
{
|
|
4965
5054
|
name: tab.iconName,
|
|
@@ -4969,10 +5058,10 @@ var renderTabIcon = (tab, isActive) => {
|
|
|
4969
5058
|
);
|
|
4970
5059
|
};
|
|
4971
5060
|
var useEventListTabs = (tabs) => {
|
|
4972
|
-
const labels =
|
|
5061
|
+
const labels = useLabels8();
|
|
4973
5062
|
const { disabledVenues } = useAppConfig();
|
|
4974
5063
|
const { isLocationBlocked } = useGeoBlock();
|
|
4975
|
-
return
|
|
5064
|
+
return useMemo9(() => {
|
|
4976
5065
|
const baseTabs = tabs != null ? tabs : getDefaultEventListTabs(labels);
|
|
4977
5066
|
return baseTabs.flatMap((tab) => {
|
|
4978
5067
|
if (!tab.venueLogo) return [tab];
|
|
@@ -5001,13 +5090,13 @@ var EventListTabs = ({
|
|
|
5001
5090
|
overflowBehavior
|
|
5002
5091
|
}) => {
|
|
5003
5092
|
const resolvedTabs = useEventListTabs(tabs);
|
|
5004
|
-
|
|
5093
|
+
useEffect6(() => {
|
|
5005
5094
|
const fallbackTab = resolvedTabs.find((tab) => !tab.disabled);
|
|
5006
5095
|
if (!fallbackTab) return;
|
|
5007
5096
|
if (resolvedTabs.some((tab) => tab.value === activeTab && !tab.disabled)) return;
|
|
5008
5097
|
onTabChange(fallbackTab.value);
|
|
5009
5098
|
}, [activeTab, onTabChange, resolvedTabs]);
|
|
5010
|
-
const items =
|
|
5099
|
+
const items = useMemo9(() => {
|
|
5011
5100
|
return resolvedTabs.map((tab) => {
|
|
5012
5101
|
const isActive = tab.value === activeTab;
|
|
5013
5102
|
return {
|
|
@@ -5019,7 +5108,7 @@ var EventListTabs = ({
|
|
|
5019
5108
|
};
|
|
5020
5109
|
});
|
|
5021
5110
|
}, [activeTab, resolvedTabs]);
|
|
5022
|
-
return /* @__PURE__ */
|
|
5111
|
+
return /* @__PURE__ */ jsx12(
|
|
5023
5112
|
Tabs,
|
|
5024
5113
|
{
|
|
5025
5114
|
ariaLabel,
|
|
@@ -5036,7 +5125,7 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
|
|
|
5036
5125
|
const headerRef = useRef6(null);
|
|
5037
5126
|
const titleRef = useRef6(null);
|
|
5038
5127
|
const requiredTabsWidthRef = useRef6(0);
|
|
5039
|
-
const [shouldUseSelectOverflow, setShouldUseSelectOverflow] =
|
|
5128
|
+
const [shouldUseSelectOverflow, setShouldUseSelectOverflow] = useState6(false);
|
|
5040
5129
|
const updateTabsOverflowBehavior = useCallback3(() => {
|
|
5041
5130
|
var _a;
|
|
5042
5131
|
if (typeof window === "undefined") return;
|
|
@@ -5074,10 +5163,10 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
|
|
|
5074
5163
|
if (requiredTabsWidthRef.current <= 0) return;
|
|
5075
5164
|
setShouldUseSelectOverflow(requiredTabsWidthRef.current > availableTabsWidth);
|
|
5076
5165
|
}, [options == null ? void 0 : options.minTabsInlineWidthForSelect, options == null ? void 0 : options.preferSelectOnOverflow]);
|
|
5077
|
-
|
|
5166
|
+
useEffect6(() => {
|
|
5078
5167
|
updateTabsOverflowBehavior();
|
|
5079
5168
|
}, [recomputeOn, updateTabsOverflowBehavior]);
|
|
5080
|
-
|
|
5169
|
+
useEffect6(() => {
|
|
5081
5170
|
if (typeof window === "undefined") return;
|
|
5082
5171
|
const handleResize = () => {
|
|
5083
5172
|
updateTabsOverflowBehavior();
|
|
@@ -5087,7 +5176,7 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
|
|
|
5087
5176
|
window.removeEventListener("resize", handleResize);
|
|
5088
5177
|
};
|
|
5089
5178
|
}, [updateTabsOverflowBehavior]);
|
|
5090
|
-
|
|
5179
|
+
useEffect6(() => {
|
|
5091
5180
|
if (typeof ResizeObserver === "undefined") return;
|
|
5092
5181
|
const headerElement = headerRef.current;
|
|
5093
5182
|
const titleElement = titleRef.current;
|
|
@@ -5105,7 +5194,7 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
|
|
|
5105
5194
|
};
|
|
5106
5195
|
|
|
5107
5196
|
// src/events/list/index.tsx
|
|
5108
|
-
import { jsx as
|
|
5197
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
5109
5198
|
var SORT_ICON_BY_VALUE = {
|
|
5110
5199
|
volume24hr: "sort-volume-24hr",
|
|
5111
5200
|
topArbitrage: "sort-top-arbitrage",
|
|
@@ -5143,45 +5232,45 @@ var EventList = ({
|
|
|
5143
5232
|
stateRef
|
|
5144
5233
|
}) => {
|
|
5145
5234
|
var _a, _b, _c, _d, _e;
|
|
5146
|
-
const labels =
|
|
5235
|
+
const labels = useLabels9();
|
|
5147
5236
|
const { disabledVenues } = useAppConfig2();
|
|
5148
5237
|
const {
|
|
5149
|
-
features: { enableVenueEventDiscoveryFilters }
|
|
5150
|
-
} =
|
|
5238
|
+
features: { enableVenueEventDiscoveryFilters, showSportsMarkets }
|
|
5239
|
+
} = useSdkUiConfig5();
|
|
5151
5240
|
const isDiscoveryFiltersEnabled = enableVenueEventDiscoveryFilters && !search;
|
|
5152
5241
|
const resolvedTabs = useEventListTabs();
|
|
5153
|
-
const visibleVenues =
|
|
5242
|
+
const visibleVenues = useMemo10(
|
|
5154
5243
|
() => disabledVenues.length === 0 ? void 0 : getVisibleVenueIdsByConfig(VENUES, disabledVenues),
|
|
5155
5244
|
[disabledVenues]
|
|
5156
5245
|
);
|
|
5157
|
-
const [activeTabValue, setActiveTabValue] =
|
|
5246
|
+
const [activeTabValue, setActiveTabValue] = useState7(
|
|
5158
5247
|
(_b = initialVenueTab != null ? initialVenueTab : (_a = resolvedTabs[0]) == null ? void 0 : _a.value) != null ? _b : "matched"
|
|
5159
5248
|
);
|
|
5160
|
-
const [selectedSort, setSelectedSort] =
|
|
5161
|
-
const [isSubcategoriesModalOpen, setIsSubcategoriesModalOpen] =
|
|
5162
|
-
const [categoryPath, setCategoryPath] =
|
|
5163
|
-
const [collapsedCategoryIds, setCollapsedCategoryIds] =
|
|
5164
|
-
const sortItems =
|
|
5249
|
+
const [selectedSort, setSelectedSort] = useState7("volume24hr");
|
|
5250
|
+
const [isSubcategoriesModalOpen, setIsSubcategoriesModalOpen] = useState7(false);
|
|
5251
|
+
const [categoryPath, setCategoryPath] = useState7([]);
|
|
5252
|
+
const [collapsedCategoryIds, setCollapsedCategoryIds] = useState7(() => /* @__PURE__ */ new Set());
|
|
5253
|
+
const sortItems = useMemo10(() => {
|
|
5165
5254
|
return [
|
|
5166
5255
|
{
|
|
5167
5256
|
value: "volume24hr",
|
|
5168
5257
|
label: labels.eventList.sortBy24hVolume,
|
|
5169
|
-
icon: /* @__PURE__ */
|
|
5258
|
+
icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.volume24hr, size: "small", color: "currentColor" })
|
|
5170
5259
|
},
|
|
5171
5260
|
{
|
|
5172
5261
|
value: "topArbitrage",
|
|
5173
5262
|
label: labels.eventList.sortByTopArbitrage,
|
|
5174
|
-
icon: /* @__PURE__ */
|
|
5263
|
+
icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.topArbitrage, size: "small", color: "currentColor" })
|
|
5175
5264
|
},
|
|
5176
5265
|
{
|
|
5177
5266
|
value: "volume",
|
|
5178
5267
|
label: labels.eventList.sortByTotalVolume,
|
|
5179
|
-
icon: /* @__PURE__ */
|
|
5268
|
+
icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.volume, size: "small", color: "currentColor" })
|
|
5180
5269
|
},
|
|
5181
5270
|
{
|
|
5182
5271
|
value: "endDate",
|
|
5183
5272
|
label: labels.eventList.sortByEndingSoon,
|
|
5184
|
-
icon: /* @__PURE__ */
|
|
5273
|
+
icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.endDate, size: "small", color: "currentColor" })
|
|
5185
5274
|
}
|
|
5186
5275
|
];
|
|
5187
5276
|
}, [
|
|
@@ -5191,7 +5280,7 @@ var EventList = ({
|
|
|
5191
5280
|
labels.eventList.sortByTotalVolume
|
|
5192
5281
|
]);
|
|
5193
5282
|
const baseCategoryId = (_c = categoryIds == null ? void 0 : categoryIds[0]) != null ? _c : null;
|
|
5194
|
-
|
|
5283
|
+
useEffect7(() => {
|
|
5195
5284
|
if (!isDiscoveryFiltersEnabled) return;
|
|
5196
5285
|
setCategoryPath([]);
|
|
5197
5286
|
setCollapsedCategoryIds(/* @__PURE__ */ new Set());
|
|
@@ -5201,10 +5290,10 @@ var EventList = ({
|
|
|
5201
5290
|
enabled: isDiscoveryFiltersEnabled,
|
|
5202
5291
|
limit: 100
|
|
5203
5292
|
});
|
|
5204
|
-
const sortedTopLevelCategories =
|
|
5293
|
+
const sortedTopLevelCategories = useMemo10(() => {
|
|
5205
5294
|
return sortCategoriesForNavigation(topLevelCategories);
|
|
5206
5295
|
}, [topLevelCategories]);
|
|
5207
|
-
const baseCategoryChildPrefetchIds =
|
|
5296
|
+
const baseCategoryChildPrefetchIds = useMemo10(() => {
|
|
5208
5297
|
return Array.from(
|
|
5209
5298
|
/* @__PURE__ */ new Set([
|
|
5210
5299
|
...sortedTopLevelCategories.map((category) => category.id),
|
|
@@ -5218,7 +5307,7 @@ var EventList = ({
|
|
|
5218
5307
|
parentIds: baseCategoryChildPrefetchIds,
|
|
5219
5308
|
limit: 100
|
|
5220
5309
|
});
|
|
5221
|
-
const visibleChildPrefetchIds =
|
|
5310
|
+
const visibleChildPrefetchIds = useMemo10(() => {
|
|
5222
5311
|
var _a2, _b2;
|
|
5223
5312
|
const ids = /* @__PURE__ */ new Set();
|
|
5224
5313
|
if (baseCategoryId) {
|
|
@@ -5239,7 +5328,7 @@ var EventList = ({
|
|
|
5239
5328
|
parentIds: visibleChildPrefetchIds,
|
|
5240
5329
|
limit: 100
|
|
5241
5330
|
});
|
|
5242
|
-
const visibleGrandchildPrefetchIds =
|
|
5331
|
+
const visibleGrandchildPrefetchIds = useMemo10(() => {
|
|
5243
5332
|
var _a2;
|
|
5244
5333
|
const ids = /* @__PURE__ */ new Set();
|
|
5245
5334
|
for (const expandedCategory of categoryPath) {
|
|
@@ -5255,7 +5344,7 @@ var EventList = ({
|
|
|
5255
5344
|
parentIds: visibleGrandchildPrefetchIds,
|
|
5256
5345
|
limit: 100
|
|
5257
5346
|
});
|
|
5258
|
-
const childrenByParentId =
|
|
5347
|
+
const childrenByParentId = useMemo10(() => {
|
|
5259
5348
|
return new Map([
|
|
5260
5349
|
...baseChildrenByParentId,
|
|
5261
5350
|
...visibleChildrenByParentId,
|
|
@@ -5263,33 +5352,33 @@ var EventList = ({
|
|
|
5263
5352
|
]);
|
|
5264
5353
|
}, [baseChildrenByParentId, visibleChildrenByParentId, visibleGrandchildrenByParentId]);
|
|
5265
5354
|
const shouldRenderSubcategoryFilters = isDiscoveryFiltersEnabled && baseCategoryId !== null && (((_e = (_d = childrenByParentId.get(baseCategoryId)) == null ? void 0 : _d.length) != null ? _e : 0) > 0 || categoryPath.length > 0);
|
|
5266
|
-
const baseCategoryEventCount =
|
|
5355
|
+
const baseCategoryEventCount = useMemo10(() => {
|
|
5267
5356
|
var _a2, _b2;
|
|
5268
5357
|
return (_b2 = (_a2 = sortedTopLevelCategories.find((c) => c.id === baseCategoryId)) == null ? void 0 : _a2.eventCount) != null ? _b2 : 0;
|
|
5269
5358
|
}, [baseCategoryId, sortedTopLevelCategories]);
|
|
5270
|
-
const resolvedCategoryIds =
|
|
5359
|
+
const resolvedCategoryIds = useMemo10(() => {
|
|
5271
5360
|
if (!isDiscoveryFiltersEnabled) return categoryIds;
|
|
5272
5361
|
return resolveCategoryIdsFromPath(categoryPath, baseCategoryId ? [baseCategoryId] : void 0);
|
|
5273
5362
|
}, [baseCategoryId, categoryIds, categoryPath, isDiscoveryFiltersEnabled]);
|
|
5274
|
-
const sortQueryParams =
|
|
5363
|
+
const sortQueryParams = useMemo10(() => {
|
|
5275
5364
|
return resolveSortQueryParams(selectedSort);
|
|
5276
5365
|
}, [selectedSort]);
|
|
5277
|
-
const activeTab =
|
|
5366
|
+
const activeTab = useMemo10(() => {
|
|
5278
5367
|
return resolvedTabs.find((tab) => tab.value === activeTabValue);
|
|
5279
5368
|
}, [activeTabValue, resolvedTabs]);
|
|
5280
|
-
const venues =
|
|
5369
|
+
const venues = useMemo10(() => {
|
|
5281
5370
|
return resolveTabVenus(activeTab, visibleVenues);
|
|
5282
5371
|
}, [activeTab, visibleVenues]);
|
|
5283
|
-
const matchStatus =
|
|
5372
|
+
const matchStatus = useMemo10(() => {
|
|
5284
5373
|
return activeTabValue === "matched" ? activeTab == null ? void 0 : activeTab.matchStatus : void 0;
|
|
5285
5374
|
}, [activeTabValue, activeTab]);
|
|
5286
|
-
const resolvedMaxVisibleItems =
|
|
5375
|
+
const resolvedMaxVisibleItems = useMemo10(() => {
|
|
5287
5376
|
if (!Number.isFinite(maxVisibleItems)) return void 0;
|
|
5288
5377
|
return Math.max(1, Math.floor(maxVisibleItems));
|
|
5289
5378
|
}, [maxVisibleItems]);
|
|
5290
5379
|
const requestLimit = resolvedMaxVisibleItems != null ? resolvedMaxVisibleItems : limit;
|
|
5291
5380
|
const shouldPaginate = resolvedMaxVisibleItems == null;
|
|
5292
|
-
const endDateFrom =
|
|
5381
|
+
const endDateFrom = useMemo10(() => {
|
|
5293
5382
|
if (search) return void 0;
|
|
5294
5383
|
const BUCKET_MINUTES = 5;
|
|
5295
5384
|
const bucket = /* @__PURE__ */ new Date();
|
|
@@ -5316,23 +5405,27 @@ var EventList = ({
|
|
|
5316
5405
|
sortBy: sortQueryParams.sortBy,
|
|
5317
5406
|
sortDir: sortQueryParams.sortDir,
|
|
5318
5407
|
endDateFrom,
|
|
5408
|
+
// Fold same-venue companion events into one tile per game when the sports
|
|
5409
|
+
// markets experience is enabled (the sports event-detail view loads the
|
|
5410
|
+
// folded companions via aggKey). Gated on the same flag as that view.
|
|
5411
|
+
grouped: showSportsMarkets,
|
|
5319
5412
|
initialPages: initialLoadedPageCount
|
|
5320
5413
|
});
|
|
5321
|
-
|
|
5414
|
+
useEffect7(() => {
|
|
5322
5415
|
if (stateRef) {
|
|
5323
5416
|
stateRef.current = { venueTab: activeTabValue, loadedPageCount };
|
|
5324
5417
|
}
|
|
5325
5418
|
}, [stateRef, activeTabValue, loadedPageCount]);
|
|
5326
|
-
const filteredEvents =
|
|
5419
|
+
const filteredEvents = useMemo10(() => {
|
|
5327
5420
|
return filterEventsByTabValue(events, activeTabValue);
|
|
5328
5421
|
}, [events, activeTabValue]);
|
|
5329
|
-
const groupedEvents =
|
|
5422
|
+
const groupedEvents = useMemo10(() => {
|
|
5330
5423
|
return splitEventsByLifecycle(filteredEvents);
|
|
5331
5424
|
}, [filteredEvents]);
|
|
5332
|
-
const orderedEvents =
|
|
5425
|
+
const orderedEvents = useMemo10(() => {
|
|
5333
5426
|
return groupedEvents.open;
|
|
5334
5427
|
}, [groupedEvents.open]);
|
|
5335
|
-
const tileEvents =
|
|
5428
|
+
const tileEvents = useMemo10(() => {
|
|
5336
5429
|
const normalizedEvents = orderedEvents.map((event) => mapEventToEventListItemEvent(event)).filter((event) => event != null);
|
|
5337
5430
|
if (resolvedMaxVisibleItems == null) return normalizedEvents;
|
|
5338
5431
|
return normalizedEvents.slice(0, resolvedMaxVisibleItems);
|
|
@@ -5341,7 +5434,7 @@ var EventList = ({
|
|
|
5341
5434
|
const shouldRenderEmptyState = !isLoading && !isError && tileEvents.length === 0;
|
|
5342
5435
|
const shouldRenderPaginationLoadingItems = shouldPaginate && hasNextPage;
|
|
5343
5436
|
const loadMoreRef = useRef7(null);
|
|
5344
|
-
|
|
5437
|
+
useEffect7(() => {
|
|
5345
5438
|
if (!shouldPaginate) return;
|
|
5346
5439
|
if (!hasNextPage) return;
|
|
5347
5440
|
if (typeof IntersectionObserver === "undefined") return;
|
|
@@ -5392,7 +5485,7 @@ var EventList = ({
|
|
|
5392
5485
|
onCategoryRootChange == null ? void 0 : onCategoryRootChange(baseCategoryId != null ? baseCategoryId : void 0);
|
|
5393
5486
|
};
|
|
5394
5487
|
if (shouldRenderLoadingState) {
|
|
5395
|
-
return /* @__PURE__ */
|
|
5488
|
+
return /* @__PURE__ */ jsx13(
|
|
5396
5489
|
Skeleton,
|
|
5397
5490
|
{
|
|
5398
5491
|
view: "event-list",
|
|
@@ -5401,8 +5494,8 @@ var EventList = ({
|
|
|
5401
5494
|
}
|
|
5402
5495
|
);
|
|
5403
5496
|
}
|
|
5404
|
-
return /* @__PURE__ */
|
|
5405
|
-
/* @__PURE__ */
|
|
5497
|
+
return /* @__PURE__ */ jsxs10("section", { className: "agg-event-list flex w-full flex-col gap-2 md:gap-5 t", children: [
|
|
5498
|
+
/* @__PURE__ */ jsxs10(
|
|
5406
5499
|
"header",
|
|
5407
5500
|
{
|
|
5408
5501
|
className: cn(
|
|
@@ -5411,9 +5504,9 @@ var EventList = ({
|
|
|
5411
5504
|
"gap-2 sm:flex-row sm:items-center sm:gap-4"
|
|
5412
5505
|
),
|
|
5413
5506
|
children: [
|
|
5414
|
-
/* @__PURE__ */
|
|
5415
|
-
/* @__PURE__ */
|
|
5416
|
-
/* @__PURE__ */
|
|
5507
|
+
/* @__PURE__ */ jsx13("div", { className: "agg-event-list-title min-w-32", children: /* @__PURE__ */ jsx13(Typography, { as: "h2", variant: "title", className: "truncate first-letter:uppercase", children: title }) }),
|
|
5508
|
+
/* @__PURE__ */ jsxs10("div", { className: "hidden min-w-0 max-w-full items-center gap-3 md:flex", children: [
|
|
5509
|
+
/* @__PURE__ */ jsx13(
|
|
5417
5510
|
EventListTabs,
|
|
5418
5511
|
{
|
|
5419
5512
|
ariaLabel: labels.eventList.tabsAria(title),
|
|
@@ -5423,7 +5516,7 @@ var EventList = ({
|
|
|
5423
5516
|
overflowBehavior: "scroll"
|
|
5424
5517
|
}
|
|
5425
5518
|
),
|
|
5426
|
-
/* @__PURE__ */
|
|
5519
|
+
/* @__PURE__ */ jsx13(
|
|
5427
5520
|
Select,
|
|
5428
5521
|
{
|
|
5429
5522
|
ariaLabel: labels.eventList.sortByLabel,
|
|
@@ -5439,8 +5532,8 @@ var EventList = ({
|
|
|
5439
5532
|
]
|
|
5440
5533
|
}
|
|
5441
5534
|
),
|
|
5442
|
-
/* @__PURE__ */
|
|
5443
|
-
/* @__PURE__ */
|
|
5535
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex w-full gap-2 md:hidden mb-3", children: [
|
|
5536
|
+
/* @__PURE__ */ jsx13(
|
|
5444
5537
|
EventListTabs,
|
|
5445
5538
|
{
|
|
5446
5539
|
ariaLabel: labels.eventList.tabsAria(title),
|
|
@@ -5450,7 +5543,7 @@ var EventList = ({
|
|
|
5450
5543
|
overflowBehavior: "select"
|
|
5451
5544
|
}
|
|
5452
5545
|
),
|
|
5453
|
-
/* @__PURE__ */
|
|
5546
|
+
/* @__PURE__ */ jsx13(
|
|
5454
5547
|
Select,
|
|
5455
5548
|
{
|
|
5456
5549
|
ariaLabel: labels.eventList.sortByLabel,
|
|
@@ -5461,23 +5554,23 @@ var EventList = ({
|
|
|
5461
5554
|
contentClassName: "rounded-[12px] py-2 shadow-[0_8px_16px_rgba(0,0,0,0.1)]"
|
|
5462
5555
|
}
|
|
5463
5556
|
),
|
|
5464
|
-
shouldRenderSubcategoryFilters ? /* @__PURE__ */
|
|
5557
|
+
shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx13(
|
|
5465
5558
|
"button",
|
|
5466
5559
|
{
|
|
5467
5560
|
type: "button",
|
|
5468
5561
|
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-[8px] border-2 border-agg-primary bg-agg-secondary text-agg-foreground cursor-pointer",
|
|
5469
5562
|
"aria-label": labels.eventList.subcategoriesOpenAria,
|
|
5470
5563
|
onClick: () => setIsSubcategoriesModalOpen(true),
|
|
5471
|
-
children: /* @__PURE__ */
|
|
5564
|
+
children: /* @__PURE__ */ jsx13(Icon, { name: "apps", size: "small", color: "currentColor" })
|
|
5472
5565
|
}
|
|
5473
5566
|
) : null
|
|
5474
5567
|
] }),
|
|
5475
|
-
/* @__PURE__ */
|
|
5568
|
+
/* @__PURE__ */ jsxs10(
|
|
5476
5569
|
"div",
|
|
5477
5570
|
{
|
|
5478
5571
|
className: cn("flex w-full gap-6", shouldRenderSubcategoryFilters ? "md:items-start" : ""),
|
|
5479
5572
|
children: [
|
|
5480
|
-
shouldRenderSubcategoryFilters ? /* @__PURE__ */
|
|
5573
|
+
shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx13("aside", { className: "hidden w-[200px] shrink-0 md:block self-start sticky top-4", children: /* @__PURE__ */ jsx13("div", { className: "agg-sidebar max-h-[calc(100vh-19rem)] overflow-y-auto rounded-[8px] border border-agg-separator bg-agg-secondary p-2", children: /* @__PURE__ */ jsx13(
|
|
5481
5574
|
CategorySidebar,
|
|
5482
5575
|
{
|
|
5483
5576
|
baseCategoryId,
|
|
@@ -5490,7 +5583,7 @@ var EventList = ({
|
|
|
5490
5583
|
onToggleCategory: handleToggleSubcategory
|
|
5491
5584
|
}
|
|
5492
5585
|
) }) }) : null,
|
|
5493
|
-
/* @__PURE__ */
|
|
5586
|
+
/* @__PURE__ */ jsxs10(
|
|
5494
5587
|
"div",
|
|
5495
5588
|
{
|
|
5496
5589
|
className: cn(
|
|
@@ -5501,7 +5594,7 @@ var EventList = ({
|
|
|
5501
5594
|
gridClassName
|
|
5502
5595
|
),
|
|
5503
5596
|
children: [
|
|
5504
|
-
tileEvents.map((event) => /* @__PURE__ */
|
|
5597
|
+
tileEvents.map((event) => /* @__PURE__ */ jsx13(
|
|
5505
5598
|
EventListItem,
|
|
5506
5599
|
{
|
|
5507
5600
|
event,
|
|
@@ -5516,7 +5609,7 @@ var EventList = ({
|
|
|
5516
5609
|
},
|
|
5517
5610
|
event.id
|
|
5518
5611
|
)),
|
|
5519
|
-
shouldRenderPaginationLoadingItems ? Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */
|
|
5612
|
+
shouldRenderPaginationLoadingItems ? Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ jsx13(
|
|
5520
5613
|
EventListItem,
|
|
5521
5614
|
{
|
|
5522
5615
|
isLoading: true,
|
|
@@ -5526,20 +5619,20 @@ var EventList = ({
|
|
|
5526
5619
|
},
|
|
5527
5620
|
`loading-${index}`
|
|
5528
5621
|
)) : null,
|
|
5529
|
-
shouldRenderEmptyState ? /* @__PURE__ */
|
|
5622
|
+
shouldRenderEmptyState ? /* @__PURE__ */ jsx13("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx13(
|
|
5530
5623
|
StateMessage,
|
|
5531
5624
|
{
|
|
5532
5625
|
title: labels.eventList.emptyTitle,
|
|
5533
5626
|
description: labels.eventList.emptyDescription,
|
|
5534
|
-
icon: /* @__PURE__ */
|
|
5627
|
+
icon: /* @__PURE__ */ jsx13(Icon, { name: "search-empty" })
|
|
5535
5628
|
}
|
|
5536
5629
|
) }) : null,
|
|
5537
|
-
isError ? /* @__PURE__ */
|
|
5630
|
+
isError ? /* @__PURE__ */ jsx13("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx13(
|
|
5538
5631
|
StateMessage,
|
|
5539
5632
|
{
|
|
5540
5633
|
title: labels.eventList.errorTitle,
|
|
5541
5634
|
description: labels.eventList.errorDescription,
|
|
5542
|
-
icon: /* @__PURE__ */
|
|
5635
|
+
icon: /* @__PURE__ */ jsx13(Icon, { name: "warning" })
|
|
5543
5636
|
}
|
|
5544
5637
|
) }) : null
|
|
5545
5638
|
]
|
|
@@ -5548,7 +5641,7 @@ var EventList = ({
|
|
|
5548
5641
|
]
|
|
5549
5642
|
}
|
|
5550
5643
|
),
|
|
5551
|
-
shouldRenderSubcategoryFilters ? /* @__PURE__ */
|
|
5644
|
+
shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx13(Modal, { open: isSubcategoriesModalOpen, onOpenChange: setIsSubcategoriesModalOpen, children: /* @__PURE__ */ jsx13(
|
|
5552
5645
|
Modal.Container,
|
|
5553
5646
|
{
|
|
5554
5647
|
classNames: {
|
|
@@ -5557,20 +5650,20 @@ var EventList = ({
|
|
|
5557
5650
|
content: "items-end p-0 pointer-events-none",
|
|
5558
5651
|
container: "w-full max-w-none border-0 bg-transparent shadow-none"
|
|
5559
5652
|
},
|
|
5560
|
-
children: /* @__PURE__ */
|
|
5561
|
-
/* @__PURE__ */
|
|
5562
|
-
/* @__PURE__ */
|
|
5563
|
-
/* @__PURE__ */
|
|
5564
|
-
/* @__PURE__ */
|
|
5653
|
+
children: /* @__PURE__ */ jsxs10("div", { className: "pointer-events-auto w-full rounded-t-[12px] border border-agg-separator bg-agg-secondary", children: [
|
|
5654
|
+
/* @__PURE__ */ jsx13("div", { className: "flex justify-center pb-1 pt-3", "aria-hidden": "true", children: /* @__PURE__ */ jsx13("div", { className: "h-1 w-10 rounded-full bg-agg-muted-foreground/30" }) }),
|
|
5655
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center justify-between px-4 pb-2 pt-1", children: [
|
|
5656
|
+
/* @__PURE__ */ jsx13(Dialog.Title, { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.eventList.subcategoriesLabel }),
|
|
5657
|
+
/* @__PURE__ */ jsx13(
|
|
5565
5658
|
Dialog.Close,
|
|
5566
5659
|
{
|
|
5567
5660
|
className: "flex cursor-pointer items-center justify-center rounded-full p-1 text-agg-muted-foreground hover:bg-agg-secondary-hover",
|
|
5568
5661
|
"aria-label": labels.common.close,
|
|
5569
|
-
children: /* @__PURE__ */
|
|
5662
|
+
children: /* @__PURE__ */ jsx13(CloseIcon, { className: "h-5 w-5" })
|
|
5570
5663
|
}
|
|
5571
5664
|
)
|
|
5572
5665
|
] }),
|
|
5573
|
-
/* @__PURE__ */
|
|
5666
|
+
/* @__PURE__ */ jsx13("div", { className: "flex flex-col gap-1 px-4 pb-4", children: /* @__PURE__ */ jsx13(
|
|
5574
5667
|
CategorySidebar,
|
|
5575
5668
|
{
|
|
5576
5669
|
baseCategoryId,
|
|
@@ -5586,7 +5679,7 @@ var EventList = ({
|
|
|
5586
5679
|
] })
|
|
5587
5680
|
}
|
|
5588
5681
|
) }) : null,
|
|
5589
|
-
shouldPaginate && hasNextPage ? /* @__PURE__ */
|
|
5682
|
+
shouldPaginate && hasNextPage ? /* @__PURE__ */ jsx13("div", { ref: loadMoreRef, className: "agg-event-list-sentinel h-px w-full", "aria-hidden": true }) : null
|
|
5590
5683
|
] });
|
|
5591
5684
|
};
|
|
5592
5685
|
EventList.displayName = "EventList";
|
|
@@ -5599,6 +5692,7 @@ export {
|
|
|
5599
5692
|
collectEligibleVenueOutcomeIds,
|
|
5600
5693
|
mergeVenueOutcomeOrderbooks,
|
|
5601
5694
|
SettlementSummary,
|
|
5695
|
+
resolveEventDetailsSyncKey,
|
|
5602
5696
|
EventListItemDetails,
|
|
5603
5697
|
orderbookRowLimitDefault,
|
|
5604
5698
|
useCenterOrderbookSpread,
|