@agg-build/ui 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-2QJXRRYP.mjs → chunk-43K4PFBC.mjs} +3 -2
- package/dist/{chunk-I2WBGEWK.mjs → chunk-5ES2VJHO.mjs} +159 -93
- package/dist/{chunk-DMKKNK76.mjs → chunk-BYMLPLEZ.mjs} +791 -583
- package/dist/{chunk-C7T56TJR.mjs → chunk-HD6HBTK2.mjs} +1 -1
- package/dist/{chunk-CGNDMLQL.mjs → chunk-LPNZOX3E.mjs} +123 -52
- package/dist/{chunk-75IGOQ4N.mjs → chunk-WLXYCBZV.mjs} +62 -32
- package/dist/{chunk-6NS7D73S.mjs → chunk-YZNO6IUD.mjs} +740 -521
- package/dist/events.js +196 -93
- package/dist/events.mjs +3 -3
- package/dist/index.js +3396 -2806
- package/dist/index.mjs +13 -7
- package/dist/modals.js +798 -535
- package/dist/modals.mjs +3 -3
- package/dist/pages.js +378 -176
- package/dist/pages.mjs +6 -6
- package/dist/primitives.js +713 -531
- package/dist/primitives.mjs +7 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/trading.js +242 -54
- package/dist/trading.mjs +4 -4
- package/dist/types/deposit/steps/card-payment-pending.d.mts +3 -1
- package/dist/types/deposit/steps/card-payment-pending.d.ts +3 -1
- package/dist/types/deposit/steps/crypto-transfer.d.mts +1 -1
- package/dist/types/deposit/steps/crypto-transfer.d.ts +1 -1
- package/dist/types/events/item/event-list-item.utils.d.mts +57 -0
- package/dist/types/events/item/event-list-item.utils.d.ts +57 -0
- package/dist/types/events/item-details/event-list-item-details.types.d.mts +16 -1
- package/dist/types/events/item-details/event-list-item-details.types.d.ts +16 -1
- package/dist/types/events/market-details/market-details.types.d.mts +8 -0
- package/dist/types/events/market-details/market-details.types.d.ts +8 -0
- package/dist/types/primitives/copy-button/index.d.mts +25 -0
- package/dist/types/primitives/copy-button/index.d.ts +25 -0
- package/dist/types/primitives/index.d.mts +2 -0
- package/dist/types/primitives/index.d.ts +2 -0
- package/dist/types/primitives/toast/index.d.mts +4 -0
- package/dist/types/primitives/toast/index.d.ts +4 -0
- package/dist/types/primitives/toast/toast.types.d.mts +31 -0
- package/dist/types/primitives/toast/toast.types.d.ts +31 -0
- package/dist/types/trading/place-order/index.place-order.constants.d.mts +8 -0
- package/dist/types/trading/place-order/index.place-order.constants.d.ts +8 -0
- package/dist/types/trading/place-order/index.place-order.types.d.mts +6 -0
- package/dist/types/trading/place-order/index.place-order.types.d.ts +6 -0
- package/dist/types/trading/place-order/index.place-order.utils.d.mts +4 -7
- package/dist/types/trading/place-order/index.place-order.utils.d.ts +4 -7
- package/dist/types/withdraw/index.d.mts +2 -2
- package/dist/types/withdraw/index.d.ts +2 -2
- package/dist/types/withdraw/steps/withdraw-amount.d.mts +6 -3
- package/dist/types/withdraw/steps/withdraw-amount.d.ts +6 -3
- package/dist/types/withdraw/steps/withdraw-success.d.mts +8 -1
- package/dist/types/withdraw/steps/withdraw-success.d.ts +8 -1
- package/dist/types/withdraw/steps/withdraw-success.utils.d.mts +36 -0
- package/dist/types/withdraw/steps/withdraw-success.utils.d.ts +36 -0
- package/dist/types/withdraw/withdraw-modal.types.d.mts +25 -15
- package/dist/types/withdraw/withdraw-modal.types.d.ts +25 -15
- package/package.json +6 -5
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
import {
|
|
3
3
|
formatProbabilityCents,
|
|
4
4
|
resolveOrderEligibilityMessage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-HD6HBTK2.mjs";
|
|
6
6
|
import {
|
|
7
7
|
GeoBlockBanner
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-43K4PFBC.mjs";
|
|
9
9
|
import {
|
|
10
|
+
AGG_TERMS_OF_SERVICE_URL,
|
|
10
11
|
Button,
|
|
11
12
|
Card,
|
|
12
13
|
CloseIcon,
|
|
@@ -27,8 +28,9 @@ import {
|
|
|
27
28
|
cn,
|
|
28
29
|
formatUsd,
|
|
29
30
|
getMotionClassName,
|
|
31
|
+
normalizeVenueMarketCluster,
|
|
30
32
|
skeletonViews
|
|
31
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-YZNO6IUD.mjs";
|
|
32
34
|
|
|
33
35
|
// src/trading/types.ts
|
|
34
36
|
import { Venue, enumGuard, isFiniteNonNeg, safeParse } from "@agg-build/sdk";
|
|
@@ -500,6 +502,7 @@ import {
|
|
|
500
502
|
useGeoBlock,
|
|
501
503
|
useLabels as useLabels3,
|
|
502
504
|
useLiveOutcomePrices,
|
|
505
|
+
useMidpoints,
|
|
503
506
|
useQueryClient,
|
|
504
507
|
useSdkUiConfig as useSdkUiConfig2,
|
|
505
508
|
useSmartRoute
|
|
@@ -632,7 +635,9 @@ var useKalshiKycFlow = ({
|
|
|
632
635
|
};
|
|
633
636
|
|
|
634
637
|
// src/trading/place-order/index.place-order.constants.ts
|
|
638
|
+
var PLACE_ORDER_DEFAULT_AMOUNT = 20;
|
|
635
639
|
var MIN_BUY_ORDER_AMOUNT = 1;
|
|
640
|
+
var MIN_SELL_ORDER_SHARES = 1;
|
|
636
641
|
var DEFAULT_SLIPPAGE_VALUE = "0.5";
|
|
637
642
|
var HIGH_SLIPPAGE_THRESHOLD = 10;
|
|
638
643
|
var PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT = 3;
|
|
@@ -843,10 +848,12 @@ var resolvePlaceOrderQuoteStatus = ({
|
|
|
843
848
|
var buildLiveRouteCards = ({
|
|
844
849
|
labels,
|
|
845
850
|
quoteData,
|
|
846
|
-
tradeSide
|
|
851
|
+
tradeSide,
|
|
852
|
+
eventVenues = []
|
|
847
853
|
}) => {
|
|
848
854
|
var _a, _b, _c;
|
|
849
855
|
const geoBlockedVenues = extractGeoBlockedVenues(quoteData.warnings);
|
|
856
|
+
const eventVenueSet = new Set(eventVenues);
|
|
850
857
|
const primaryResult = resolvePlaceOrderQuoteResult({ labels, quoteData, tradeSide });
|
|
851
858
|
const primaryVenue = (_a = quoteData.fills[0]) == null ? void 0 : _a.venue;
|
|
852
859
|
const parsedPrimaryVenue = parseVenue(primaryVenue);
|
|
@@ -944,24 +951,26 @@ var buildLiveRouteCards = ({
|
|
|
944
951
|
});
|
|
945
952
|
const baseCards = primaryCard ? [primaryCard, ...soloCards] : soloCards;
|
|
946
953
|
const coveredVenueStrings = new Set(
|
|
947
|
-
[...baseCards, ...unavailableCards].flatMap((
|
|
954
|
+
[...baseCards, ...unavailableCards].flatMap((card) => card.venue ? [card.venue] : [])
|
|
948
955
|
);
|
|
949
|
-
const
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
return
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
956
|
+
const parsedKalshiVenue = parseVenue("kalshi");
|
|
957
|
+
const kalshiVenue = parsedKalshiVenue.success ? parsedKalshiVenue.data : void 0;
|
|
958
|
+
const warningOnlyUnavailableCards = geoBlockedVenues.has("kalshi") && !!kalshiVenue && eventVenueSet.has(kalshiVenue) && !coveredVenueStrings.has("kalshi") ? (() => {
|
|
959
|
+
return [
|
|
960
|
+
{
|
|
961
|
+
id: "live-geo-blocked-kalshi",
|
|
962
|
+
hint: "",
|
|
963
|
+
kind: "venue",
|
|
964
|
+
label: getTradingVenueLabel(kalshiVenue),
|
|
965
|
+
numericValue: 0,
|
|
966
|
+
quoteData,
|
|
967
|
+
value: "",
|
|
968
|
+
venue: kalshiVenue,
|
|
969
|
+
isUnavailable: true
|
|
970
|
+
}
|
|
971
|
+
];
|
|
972
|
+
})() : [];
|
|
973
|
+
return [...baseCards, ...unavailableCards, ...warningOnlyUnavailableCards];
|
|
965
974
|
};
|
|
966
975
|
var resolveExecutionVenueFromQuote = (quoteData) => {
|
|
967
976
|
if (!(quoteData == null ? void 0 : quoteData.fills.length)) return void 0;
|
|
@@ -1123,14 +1132,18 @@ var groupPlaceOrderFailureSteps = (steps) => {
|
|
|
1123
1132
|
};
|
|
1124
1133
|
var buildPlaceOrderExecutionStepGroupsFromFailureSummary = ({
|
|
1125
1134
|
labels,
|
|
1126
|
-
summary
|
|
1135
|
+
summary,
|
|
1136
|
+
// When the partial-fill steps are rendered inside the success view (auto
|
|
1137
|
+
// 95%+ skip or after the user clicks Skip), surface them as completed
|
|
1138
|
+
// checks instead of warnings — the order is being treated as complete.
|
|
1139
|
+
treatPartialAsComplete = false
|
|
1127
1140
|
}) => {
|
|
1128
1141
|
var _a;
|
|
1129
1142
|
const failureStepGroups = groupPlaceOrderFailureSteps(summary.steps).map(
|
|
1130
1143
|
(group) => group.map((step) => ({
|
|
1131
1144
|
id: step.id,
|
|
1132
1145
|
label: step.label,
|
|
1133
|
-
tone: step.tone,
|
|
1146
|
+
tone: treatPartialAsComplete && (step.tone === "warning" || step.tone === "error") ? "complete" : step.tone,
|
|
1134
1147
|
venue: step.venue
|
|
1135
1148
|
}))
|
|
1136
1149
|
);
|
|
@@ -1591,10 +1604,6 @@ var PlaceOrderFailureView = ({
|
|
|
1591
1604
|
] }),
|
|
1592
1605
|
summary.eventSubtitle ? /* @__PURE__ */ jsx3("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: summary.eventSubtitle }) : null
|
|
1593
1606
|
] }),
|
|
1594
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex min-h-12 w-full items-center justify-center gap-3 rounded-agg-full agg-bg-brand px-8 text-agg-base font-agg-bold leading-agg-6 text-agg-on-primary", children: [
|
|
1595
|
-
/* @__PURE__ */ jsx3(LoadingIcon, { size: "small", className: "text-agg-on-primary!" }),
|
|
1596
|
-
/* @__PURE__ */ jsx3("span", { children: summary.actionLabel })
|
|
1597
|
-
] }),
|
|
1598
1607
|
/* @__PURE__ */ jsx3("div", { className: "flex flex-col gap-4", children: failureStepGroups.map((group, groupIndex) => /* @__PURE__ */ jsx3("div", { className: "flex flex-col gap-2", children: group.map((step) => renderPartialFailureStep(step)) }, `failure-group-${groupIndex}`)) }),
|
|
1599
1608
|
/* @__PURE__ */ jsx3("div", { className: "flex items-center gap-4", children: summary.actions.map((action) => /* @__PURE__ */ jsx3(
|
|
1600
1609
|
Button,
|
|
@@ -1699,19 +1708,6 @@ var PlaceOrderSuccessView = ({
|
|
|
1699
1708
|
] }),
|
|
1700
1709
|
summary.eventDateLabel ? /* @__PURE__ */ jsx4("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: summary.eventDateLabel }) : null
|
|
1701
1710
|
] }) : null,
|
|
1702
|
-
/* @__PURE__ */ jsxs3(
|
|
1703
|
-
"div",
|
|
1704
|
-
{
|
|
1705
|
-
className: cn(
|
|
1706
|
-
"agg-order-success-pill flex min-h-12 w-full items-center justify-center gap-2 rounded-agg-full px-6 py-2.5 text-center text-agg-base font-agg-bold leading-agg-6 text-agg-on-primary",
|
|
1707
|
-
resolvedActionTone === "positive" ? "bg-agg-success" : "bg-agg-error"
|
|
1708
|
-
),
|
|
1709
|
-
children: [
|
|
1710
|
-
/* @__PURE__ */ jsx4(Icon, { name: "success-check", size: "small", className: "h-4 w-4 shrink-0 text-current" }),
|
|
1711
|
-
/* @__PURE__ */ jsx4("span", { children: resolvedActionLabel })
|
|
1712
|
-
]
|
|
1713
|
-
}
|
|
1714
|
-
),
|
|
1715
1711
|
executionStepGroups.length > 0 ? /* @__PURE__ */ jsxs3("div", { className: "agg-order-success-timeline flex flex-col gap-2", children: [
|
|
1716
1712
|
/* @__PURE__ */ jsx4(
|
|
1717
1713
|
"div",
|
|
@@ -1801,6 +1797,19 @@ var PlaceOrderSuccessView = ({
|
|
|
1801
1797
|
/* @__PURE__ */ jsx4("p", { className: "min-w-0 flex-1", children: finalStep.label })
|
|
1802
1798
|
] }) : null
|
|
1803
1799
|
] }) : null,
|
|
1800
|
+
/* @__PURE__ */ jsxs3(
|
|
1801
|
+
"div",
|
|
1802
|
+
{
|
|
1803
|
+
className: cn(
|
|
1804
|
+
"agg-order-success-pill flex min-h-12 w-full items-center justify-center gap-2 rounded-agg-full px-6 py-2.5 text-center text-agg-base font-agg-bold leading-agg-6 text-agg-on-primary",
|
|
1805
|
+
resolvedActionTone === "positive" ? "bg-agg-success" : "bg-agg-error"
|
|
1806
|
+
),
|
|
1807
|
+
children: [
|
|
1808
|
+
/* @__PURE__ */ jsx4(Icon, { name: "success-check", size: "small", className: "h-4 w-4 shrink-0 text-current" }),
|
|
1809
|
+
/* @__PURE__ */ jsx4("span", { children: resolvedActionLabel })
|
|
1810
|
+
]
|
|
1811
|
+
}
|
|
1812
|
+
),
|
|
1804
1813
|
/* @__PURE__ */ jsxs3("div", { className: "agg-order-success-summary flex items-center justify-between gap-4", children: [
|
|
1805
1814
|
/* @__PURE__ */ jsx4("p", { className: "text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: tradingLabels.amount(resolvedTradeSide) }),
|
|
1806
1815
|
/* @__PURE__ */ jsx4("p", { className: "text-right text-[30px] font-agg-bold leading-[36px] text-agg-foreground", children: resolvedAmountLabel })
|
|
@@ -2510,7 +2519,7 @@ var InitiateKycButton = ({ label, onOpen }) => /* @__PURE__ */ jsx5(
|
|
|
2510
2519
|
size: "large",
|
|
2511
2520
|
variant: "primary",
|
|
2512
2521
|
onClick: onOpen,
|
|
2513
|
-
className: "agg-order-kyc-action h-12 w-full px-8 text-agg-base leading-agg-6 shadow-none
|
|
2522
|
+
className: "agg-order-kyc-action h-12 w-full px-8 text-agg-base leading-agg-6 shadow-none",
|
|
2514
2523
|
children: label
|
|
2515
2524
|
}
|
|
2516
2525
|
);
|
|
@@ -2707,6 +2716,14 @@ var PlaceOrder = ({
|
|
|
2707
2716
|
const livePrices = useLiveOutcomePrices(
|
|
2708
2717
|
scopedSelectedMarket ? [scopedSelectedMarket] : void 0
|
|
2709
2718
|
);
|
|
2719
|
+
const midpointsClusterMarkets = useMemo3(() => {
|
|
2720
|
+
if (!scopedSelectedMarket) return [];
|
|
2721
|
+
return normalizeVenueMarketCluster(
|
|
2722
|
+
resolvedEventTradingState.displayMarkets,
|
|
2723
|
+
scopedSelectedMarket.id
|
|
2724
|
+
);
|
|
2725
|
+
}, [resolvedEventTradingState.displayMarkets, scopedSelectedMarket]);
|
|
2726
|
+
const { prices: clusterMidpoints } = useMidpoints(midpointsClusterMarkets);
|
|
2710
2727
|
const outcomes = useMemo3(
|
|
2711
2728
|
() => mapVenueMarketOutcomesToPlaceOrderOutcomes(scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.venueMarketOutcomes),
|
|
2712
2729
|
[scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.venueMarketOutcomes]
|
|
@@ -2714,7 +2731,8 @@ var PlaceOrder = ({
|
|
|
2714
2731
|
const buyTabRef = useRef3(null);
|
|
2715
2732
|
const sellTabRef = useRef3(null);
|
|
2716
2733
|
const [internalTab, setInternalTab] = useState4("buy");
|
|
2717
|
-
const [internalAmount, setInternalAmount] = useState4(
|
|
2734
|
+
const [internalAmount, setInternalAmount] = useState4(PLACE_ORDER_DEFAULT_AMOUNT);
|
|
2735
|
+
const [sellFilledForOutcomeId, setSellFilledForOutcomeId] = useState4(null);
|
|
2718
2736
|
const [internalSlippage, setInternalSlippage] = useState4(DEFAULT_SLIPPAGE_VALUE);
|
|
2719
2737
|
const [isRoutesExpanded, setIsRoutesExpanded] = useState4(false);
|
|
2720
2738
|
const [selectedRouteCardId, setSelectedRouteCardId] = useState4(null);
|
|
@@ -2784,13 +2802,28 @@ var PlaceOrder = ({
|
|
|
2784
2802
|
if (!Number.isFinite(currentSellableShares)) return 0;
|
|
2785
2803
|
return currentSellableShares;
|
|
2786
2804
|
}, [currentSellableShares]);
|
|
2805
|
+
useEffect3(() => {
|
|
2806
|
+
if (!isSell || isCurrentSellableSharesLoading) return;
|
|
2807
|
+
if (scopedSelectedOutcomeId === sellFilledForOutcomeId) return;
|
|
2808
|
+
setInternalAmount(displayedCurrentSellableShares);
|
|
2809
|
+
setSellFilledForOutcomeId(scopedSelectedOutcomeId != null ? scopedSelectedOutcomeId : null);
|
|
2810
|
+
onAmountChange == null ? void 0 : onAmountChange(displayedCurrentSellableShares);
|
|
2811
|
+
}, [
|
|
2812
|
+
isSell,
|
|
2813
|
+
isCurrentSellableSharesLoading,
|
|
2814
|
+
scopedSelectedOutcomeId,
|
|
2815
|
+
sellFilledForOutcomeId,
|
|
2816
|
+
displayedCurrentSellableShares,
|
|
2817
|
+
onAmountChange
|
|
2818
|
+
]);
|
|
2787
2819
|
const routeCards = useMemo3(
|
|
2788
2820
|
() => smartRoute.data ? buildLiveRouteCards({
|
|
2821
|
+
eventVenues: scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.venueMarkets.map((market) => market.venue),
|
|
2789
2822
|
labels: tradingLabels,
|
|
2790
2823
|
quoteData: smartRoute.data,
|
|
2791
2824
|
tradeSide: isSell ? "sell" : "buy"
|
|
2792
2825
|
}) : [],
|
|
2793
|
-
[smartRoute.data, tradingLabels, isSell]
|
|
2826
|
+
[smartRoute.data, tradingLabels, isSell, scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.venueMarkets]
|
|
2794
2827
|
);
|
|
2795
2828
|
const resolvedSelectedRouteCardId = useMemo3(() => {
|
|
2796
2829
|
var _a2, _b2, _c2, _d2;
|
|
@@ -2904,7 +2937,10 @@ var PlaceOrder = ({
|
|
|
2904
2937
|
potentialReturnLabel,
|
|
2905
2938
|
executionStepGroups: (partialFillSummary == null ? void 0 : partialFillSummary.kind) === "partial_fill" ? buildPlaceOrderExecutionStepGroupsFromFailureSummary({
|
|
2906
2939
|
labels: tradingLabels,
|
|
2907
|
-
summary: partialFillSummary
|
|
2940
|
+
summary: partialFillSummary,
|
|
2941
|
+
// Inside the success view (auto-95% skip or user-clicked
|
|
2942
|
+
// Skip), surface partial-fill steps as completed checks.
|
|
2943
|
+
treatPartialAsComplete: true
|
|
2908
2944
|
}) : buildPlaceOrderExecutionStepGroups({
|
|
2909
2945
|
labels: tradingLabels,
|
|
2910
2946
|
orderId: orderId != null ? orderId : (_h2 = executionProgress.submittedOrders[0]) == null ? void 0 : _h2.orderId,
|
|
@@ -3077,13 +3113,24 @@ var PlaceOrder = ({
|
|
|
3077
3113
|
}, [smartRoute.error, tradingLabels.quoteUnavailable]);
|
|
3078
3114
|
const progressActionLabel = (internalTab === "buy" ? tradingLabels.buyingOutcome(selectedOutcomeLabel) : tradingLabels.sellingOutcome(selectedOutcomeLabel)).trim();
|
|
3079
3115
|
const canRetryRemaining = useMemo3(() => {
|
|
3080
|
-
if (isSell) return true;
|
|
3081
3116
|
const remaining = getPlaceOrderUnfilledRemaining({
|
|
3082
3117
|
originalAmount: internalAmount,
|
|
3083
3118
|
terminalOrderEvents: executionProgress.terminalOrderEvents
|
|
3084
3119
|
});
|
|
3085
|
-
|
|
3120
|
+
const minRemainder = isSell ? MIN_SELL_ORDER_SHARES : MIN_BUY_ORDER_AMOUNT;
|
|
3121
|
+
return remaining >= minRemainder;
|
|
3086
3122
|
}, [executionProgress.terminalOrderEvents, internalAmount, isSell]);
|
|
3123
|
+
const PARTIAL_FILL_AUTO_SUCCESS_THRESHOLD = 0.95;
|
|
3124
|
+
const shouldAutoSkipPartialFill = useMemo3(() => {
|
|
3125
|
+
if (internalAmount <= 0) return false;
|
|
3126
|
+
const remaining = getPlaceOrderUnfilledRemaining({
|
|
3127
|
+
originalAmount: internalAmount,
|
|
3128
|
+
terminalOrderEvents: executionProgress.terminalOrderEvents
|
|
3129
|
+
});
|
|
3130
|
+
const filled = Math.max(0, internalAmount - remaining);
|
|
3131
|
+
const fillRatio = filled / internalAmount;
|
|
3132
|
+
return fillRatio >= PARTIAL_FILL_AUTO_SUCCESS_THRESHOLD || !canRetryRemaining;
|
|
3133
|
+
}, [canRetryRemaining, executionProgress.terminalOrderEvents, internalAmount]);
|
|
3087
3134
|
const failureSummary = useMemo3(() => {
|
|
3088
3135
|
var _a2;
|
|
3089
3136
|
if ((submissionProgressState == null ? void 0 : submissionProgressState.phase) !== "failed") return void 0;
|
|
@@ -3140,6 +3187,7 @@ var PlaceOrder = ({
|
|
|
3140
3187
|
setSubmissionProgressState(null);
|
|
3141
3188
|
setSubmissionFeedback(null);
|
|
3142
3189
|
setInternalAmount(0);
|
|
3190
|
+
setSellFilledForOutcomeId(null);
|
|
3143
3191
|
setInternalSlippage(DEFAULT_SLIPPAGE_VALUE);
|
|
3144
3192
|
setInternalTab("buy");
|
|
3145
3193
|
setIsRoutesExpanded(false);
|
|
@@ -3203,6 +3251,17 @@ var PlaceOrder = ({
|
|
|
3203
3251
|
failureSummary,
|
|
3204
3252
|
selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData
|
|
3205
3253
|
]);
|
|
3254
|
+
useEffect3(() => {
|
|
3255
|
+
if ((submissionProgressState == null ? void 0 : submissionProgressState.phase) !== "failed") return;
|
|
3256
|
+
if ((failureSummary == null ? void 0 : failureSummary.kind) !== "partial_fill") return;
|
|
3257
|
+
if (!shouldAutoSkipPartialFill) return;
|
|
3258
|
+
handleSkipToSuccess();
|
|
3259
|
+
}, [
|
|
3260
|
+
failureSummary == null ? void 0 : failureSummary.kind,
|
|
3261
|
+
handleSkipToSuccess,
|
|
3262
|
+
shouldAutoSkipPartialFill,
|
|
3263
|
+
submissionProgressState == null ? void 0 : submissionProgressState.phase
|
|
3264
|
+
]);
|
|
3206
3265
|
const handleRetrySubmission = useCallback3(() => __async(null, null, function* () {
|
|
3207
3266
|
var _a2, _b2, _c2;
|
|
3208
3267
|
if (!orderEligibility.canPlaceOrder) {
|
|
@@ -3245,6 +3304,7 @@ var PlaceOrder = ({
|
|
|
3245
3304
|
throw new Error(tradingLabels.quoteUnavailable);
|
|
3246
3305
|
}
|
|
3247
3306
|
const refreshedCards = buildLiveRouteCards({
|
|
3307
|
+
eventVenues: scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.venueMarkets.map((market) => market.venue),
|
|
3248
3308
|
labels: tradingLabels,
|
|
3249
3309
|
quoteData: refetchedQuoteData,
|
|
3250
3310
|
tradeSide: internalTab
|
|
@@ -3281,6 +3341,7 @@ var PlaceOrder = ({
|
|
|
3281
3341
|
isSell,
|
|
3282
3342
|
onAmountChange,
|
|
3283
3343
|
orderEligibility.canPlaceOrder,
|
|
3344
|
+
scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.venueMarkets,
|
|
3284
3345
|
scopedSelectedOutcomeId,
|
|
3285
3346
|
selectedRouteCardId,
|
|
3286
3347
|
smartRoute,
|
|
@@ -3339,11 +3400,20 @@ var PlaceOrder = ({
|
|
|
3339
3400
|
const handleTabChange = (nextTab) => {
|
|
3340
3401
|
if (!orderEligibility.canPlaceOrder) return;
|
|
3341
3402
|
setInternalTab(nextTab);
|
|
3403
|
+
if (nextTab === "sell") {
|
|
3404
|
+
setInternalAmount(0);
|
|
3405
|
+
setSellFilledForOutcomeId(null);
|
|
3406
|
+
onAmountChange == null ? void 0 : onAmountChange(0);
|
|
3407
|
+
} else {
|
|
3408
|
+
setInternalAmount(PLACE_ORDER_DEFAULT_AMOUNT);
|
|
3409
|
+
onAmountChange == null ? void 0 : onAmountChange(PLACE_ORDER_DEFAULT_AMOUNT);
|
|
3410
|
+
}
|
|
3342
3411
|
onTabChange == null ? void 0 : onTabChange(nextTab);
|
|
3343
3412
|
};
|
|
3344
3413
|
const handleOutcomeChange = (nextOutcomeId) => {
|
|
3345
3414
|
if (isResolvedOutcomeCtaLocked) return;
|
|
3346
3415
|
if (!orderEligibility.canPlaceOrder) return;
|
|
3416
|
+
if (isSell) setSellFilledForOutcomeId(null);
|
|
3347
3417
|
onOutcomeChange == null ? void 0 : onOutcomeChange(nextOutcomeId);
|
|
3348
3418
|
tradingContext == null ? void 0 : tradingContext.selectOutcome(nextOutcomeId);
|
|
3349
3419
|
};
|
|
@@ -3351,6 +3421,7 @@ var PlaceOrder = ({
|
|
|
3351
3421
|
if (!orderEligibility.canPlaceOrder) return;
|
|
3352
3422
|
const resolvedNextValue = nextValue != null ? nextValue : 0;
|
|
3353
3423
|
setInternalAmount(resolvedNextValue);
|
|
3424
|
+
if (isSell) setSellFilledForOutcomeId(scopedSelectedOutcomeId != null ? scopedSelectedOutcomeId : null);
|
|
3354
3425
|
onAmountChange == null ? void 0 : onAmountChange(resolvedNextValue);
|
|
3355
3426
|
};
|
|
3356
3427
|
const handleFillSellableShares = () => {
|
|
@@ -3490,11 +3561,11 @@ var PlaceOrder = ({
|
|
|
3490
3561
|
}
|
|
3491
3562
|
),
|
|
3492
3563
|
outcomes.length >= 2 ? /* @__PURE__ */ jsx5("div", { className: "agg-outcomes flex w-full max-w-full gap-2", children: outcomes.map((outcome, index) => {
|
|
3493
|
-
var _a2, _b2;
|
|
3494
|
-
const price = (_a2 =
|
|
3564
|
+
var _a2, _b2, _c2;
|
|
3565
|
+
const price = (_b2 = (_a2 = clusterMidpoints.get(outcome.id)) != null ? _a2 : livePrices.get(outcome.id)) != null ? _b2 : outcome.price;
|
|
3495
3566
|
const isActive = outcome.id === scopedSelectedOutcomeId;
|
|
3496
3567
|
const isPositive = resolveIsPositiveOutcome(outcome, index);
|
|
3497
|
-
const displayLabel = ((
|
|
3568
|
+
const displayLabel = ((_c2 = outcome.title) == null ? void 0 : _c2.trim()) || outcome.label;
|
|
3498
3569
|
return /* @__PURE__ */ jsxs4(
|
|
3499
3570
|
"button",
|
|
3500
3571
|
{
|
|
@@ -3601,7 +3672,7 @@ var PlaceOrder = ({
|
|
|
3601
3672
|
card,
|
|
3602
3673
|
enableAnimations,
|
|
3603
3674
|
isExpanded: card.kind === "split" ? isSplitDetailOpen : isRoutesExpanded,
|
|
3604
|
-
isSelected: card.id === resolvedSelectedRouteCardId,
|
|
3675
|
+
isSelected: !card.isUnavailable && card.id === resolvedSelectedRouteCardId,
|
|
3605
3676
|
onSelect: handleRouteCardSelect,
|
|
3606
3677
|
tradingLabels
|
|
3607
3678
|
}) }, card.id);
|
|
@@ -3732,7 +3803,7 @@ var PlaceOrder = ({
|
|
|
3732
3803
|
{
|
|
3733
3804
|
size: "large",
|
|
3734
3805
|
variant: hasEnteredAmount && !shouldShowGeoBlockBanner ? "primary" : "secondary",
|
|
3735
|
-
className: "agg-order-submit h-12 w-full px-8 text-agg-base leading-agg-6 shadow-none
|
|
3806
|
+
className: "agg-order-submit h-12 w-full px-8 text-agg-base leading-agg-6 shadow-none",
|
|
3736
3807
|
disabled: isActionDisabled || shouldShowGeoBlockBanner,
|
|
3737
3808
|
isLoading: isActionLoading,
|
|
3738
3809
|
"aria-label": actionLabel,
|
|
@@ -3742,7 +3813,7 @@ var PlaceOrder = ({
|
|
|
3742
3813
|
children: actionLabel
|
|
3743
3814
|
}
|
|
3744
3815
|
),
|
|
3745
|
-
shouldShowGeoBlockBanner ? /* @__PURE__ */ jsx5(GeoBlockBanner, { venue: geoBlockVenueLabel }) : null,
|
|
3816
|
+
shouldShowGeoBlockBanner ? /* @__PURE__ */ jsx5(GeoBlockBanner, { venue: geoBlockVenueLabel, termsUrl: AGG_TERMS_OF_SERVICE_URL }) : null,
|
|
3746
3817
|
!shouldShowGeoBlockBanner ? /* @__PURE__ */ jsx5("p", { className: "agg-order-disclaimer text-center text-agg-xs leading-agg-4 text-agg-muted-foreground", children: tradingLabels.disclaimer }) : null
|
|
3747
3818
|
]
|
|
3748
3819
|
}
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
isErrorWithStatus,
|
|
10
10
|
useEventListTabs,
|
|
11
11
|
useEventListTabsHeaderOverflow
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5ES2VJHO.mjs";
|
|
13
13
|
import {
|
|
14
14
|
DEPOSIT_MODAL_OPEN_EVENT,
|
|
15
15
|
PlaceOrder,
|
|
16
16
|
SettlementDetails,
|
|
17
17
|
WITHDRAW_MODAL_OPEN_EVENT
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-LPNZOX3E.mjs";
|
|
19
19
|
import {
|
|
20
20
|
AggErrorBoundary,
|
|
21
21
|
Button,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
filterOpenEvents,
|
|
45
45
|
resolveTabVenus,
|
|
46
46
|
venueLogoNames
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-YZNO6IUD.mjs";
|
|
48
48
|
|
|
49
49
|
// src/pages/home/index.tsx
|
|
50
50
|
import {
|
|
@@ -741,11 +741,32 @@ var HomeSearchResults = ({
|
|
|
741
741
|
]
|
|
742
742
|
}
|
|
743
743
|
),
|
|
744
|
+
!isError && openEvents.length === 0 ? /* @__PURE__ */ jsx2("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx2(
|
|
745
|
+
StateMessage,
|
|
746
|
+
{
|
|
747
|
+
title: labels.eventList.emptyTitle,
|
|
748
|
+
description: labels.eventList.emptyDescription,
|
|
749
|
+
classNames: {
|
|
750
|
+
title: "!text-agg-base leading-agg-6",
|
|
751
|
+
description: "!text-agg-sm leading-agg-5"
|
|
752
|
+
},
|
|
753
|
+
icon: /* @__PURE__ */ jsx2(Icon, { name: "search-empty" })
|
|
754
|
+
}
|
|
755
|
+
) }) : null,
|
|
756
|
+
isError ? /* @__PURE__ */ jsx2(
|
|
757
|
+
StateMessage,
|
|
758
|
+
{
|
|
759
|
+
title: labels.eventList.errorTitle,
|
|
760
|
+
description: labels.eventList.errorDescription,
|
|
761
|
+
icon: /* @__PURE__ */ jsx2(Icon, { name: "warning" })
|
|
762
|
+
}
|
|
763
|
+
) : null,
|
|
744
764
|
/* @__PURE__ */ jsxs2(
|
|
745
765
|
"div",
|
|
746
766
|
{
|
|
747
767
|
className: cn(
|
|
748
768
|
"agg-event-list-grid grid grid-cols-[repeat(auto-fill,minmax(240px,1fr))] md:grid-cols-[repeat(auto-fill,minmax(360px,1fr))] gap-4 transition-opacity duration-200",
|
|
769
|
+
"empty:hidden",
|
|
749
770
|
isPlaceholderData && "opacity-60"
|
|
750
771
|
),
|
|
751
772
|
children: [
|
|
@@ -780,27 +801,7 @@ var HomeSearchResults = ({
|
|
|
780
801
|
}
|
|
781
802
|
},
|
|
782
803
|
`search-results-loading-${index}`
|
|
783
|
-
)) : null
|
|
784
|
-
!isError && openEvents.length === 0 ? /* @__PURE__ */ jsx2("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx2(
|
|
785
|
-
StateMessage,
|
|
786
|
-
{
|
|
787
|
-
title: labels.eventList.emptyTitle,
|
|
788
|
-
description: labels.eventList.emptyDescription,
|
|
789
|
-
classNames: {
|
|
790
|
-
title: "!text-agg-base leading-agg-6",
|
|
791
|
-
description: "!text-agg-sm leading-agg-5"
|
|
792
|
-
},
|
|
793
|
-
icon: /* @__PURE__ */ jsx2(Icon, { name: "search-empty" })
|
|
794
|
-
}
|
|
795
|
-
) }) : null,
|
|
796
|
-
isError ? /* @__PURE__ */ jsx2(
|
|
797
|
-
StateMessage,
|
|
798
|
-
{
|
|
799
|
-
title: labels.eventList.errorTitle,
|
|
800
|
-
description: labels.eventList.errorDescription,
|
|
801
|
-
icon: /* @__PURE__ */ jsx2(Icon, { name: "warning" })
|
|
802
|
-
}
|
|
803
|
-
) : null
|
|
804
|
+
)) : null
|
|
804
805
|
]
|
|
805
806
|
}
|
|
806
807
|
),
|
|
@@ -1377,13 +1378,13 @@ var AmountTimeStack = ({
|
|
|
1377
1378
|
var TradeTypeCell = ({
|
|
1378
1379
|
activity,
|
|
1379
1380
|
tone
|
|
1380
|
-
}) => /* @__PURE__ */ jsxs4("div", { className: "hidden w-
|
|
1381
|
+
}) => /* @__PURE__ */ jsxs4("div", { className: "hidden w-[108px] shrink-0 items-center gap-3 sm:flex", children: [
|
|
1381
1382
|
/* @__PURE__ */ jsx4(VenueLogo, { venue: activity.venue, size: "small", className: "shrink-0" }),
|
|
1382
1383
|
/* @__PURE__ */ jsx4(
|
|
1383
1384
|
"p",
|
|
1384
1385
|
{
|
|
1385
1386
|
className: cn(
|
|
1386
|
-
"agg-activity-type w-
|
|
1387
|
+
"agg-activity-type w-20 font-agg-sans text-agg-sm leading-agg-5 font-agg-normal",
|
|
1387
1388
|
tone.primary
|
|
1388
1389
|
),
|
|
1389
1390
|
children: activity.type
|
|
@@ -1393,7 +1394,7 @@ var TradeTypeCell = ({
|
|
|
1393
1394
|
var TransferTypeCell = ({
|
|
1394
1395
|
activity,
|
|
1395
1396
|
tone
|
|
1396
|
-
}) => /* @__PURE__ */ jsxs4("div", { className: "hidden w-[
|
|
1397
|
+
}) => /* @__PURE__ */ jsxs4("div", { className: "hidden w-[108px] shrink-0 items-center gap-3 sm:flex", children: [
|
|
1397
1398
|
/* @__PURE__ */ jsx4(
|
|
1398
1399
|
Icon,
|
|
1399
1400
|
{
|
|
@@ -1406,7 +1407,7 @@ var TransferTypeCell = ({
|
|
|
1406
1407
|
"p",
|
|
1407
1408
|
{
|
|
1408
1409
|
className: cn(
|
|
1409
|
-
"agg-activity-type w-
|
|
1410
|
+
"agg-activity-type w-20 font-agg-sans text-agg-sm leading-agg-5 font-agg-normal",
|
|
1410
1411
|
tone.primary
|
|
1411
1412
|
),
|
|
1412
1413
|
children: activity.type
|
|
@@ -1523,7 +1524,6 @@ var TransferRow = ({
|
|
|
1523
1524
|
onClick
|
|
1524
1525
|
}) => {
|
|
1525
1526
|
const tone = resolveToneClasses(activity);
|
|
1526
|
-
const isDeposit = activity.kind === "deposit";
|
|
1527
1527
|
const transferIconName = TRANSFER_ICON[activity.kind];
|
|
1528
1528
|
return /* @__PURE__ */ jsx4("button", { type: "button", className, onClick, children: /* @__PURE__ */ jsxs4(
|
|
1529
1529
|
"div",
|
|
@@ -1549,7 +1549,7 @@ var TransferRow = ({
|
|
|
1549
1549
|
] }) }),
|
|
1550
1550
|
/* @__PURE__ */ jsxs4("div", { className: "flex w-full items-center justify-between sm:contents", children: [
|
|
1551
1551
|
/* @__PURE__ */ jsxs4("div", { className: "flex min-w-0 flex-1 items-center gap-3 sm:gap-4", children: [
|
|
1552
|
-
/* @__PURE__ */ jsx4("div", { className: "agg-activity-deposit-square hidden h-15 w-15 shrink-0 items-center justify-center rounded-agg-lg bg-agg-secondary-hover sm:flex", children:
|
|
1552
|
+
/* @__PURE__ */ jsx4("div", { className: "agg-activity-deposit-square hidden h-15 w-15 shrink-0 items-center justify-center rounded-agg-lg bg-agg-secondary-hover sm:flex", children: /* @__PURE__ */ jsx4(Icon, { name: "badge-check-thin", size: "medium", className: "text-agg-muted-foreground" }) }),
|
|
1553
1553
|
/* @__PURE__ */ jsxs4("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-1", children: [
|
|
1554
1554
|
/* @__PURE__ */ jsx4(
|
|
1555
1555
|
"p",
|
|
@@ -1558,7 +1558,7 @@ var TransferRow = ({
|
|
|
1558
1558
|
"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap font-agg-sans text-agg-sm leading-agg-5 font-agg-bold sm:text-agg-base sm:leading-agg-6",
|
|
1559
1559
|
tone.primary
|
|
1560
1560
|
),
|
|
1561
|
-
children:
|
|
1561
|
+
children: activity.title
|
|
1562
1562
|
}
|
|
1563
1563
|
),
|
|
1564
1564
|
/* @__PURE__ */ jsx4(
|
|
@@ -2659,6 +2659,7 @@ var twoDecimalUsdFormatter = new Intl.NumberFormat("en-US", {
|
|
|
2659
2659
|
maximumFractionDigits: 2
|
|
2660
2660
|
});
|
|
2661
2661
|
var DEFAULT_TOKEN_DECIMALS = 6;
|
|
2662
|
+
var LEGACY_TWELVE_DECIMAL_SCALE = BigInt("1000000000000");
|
|
2662
2663
|
var TOKEN_DECIMALS_BY_SYMBOL = {
|
|
2663
2664
|
BNB: 18,
|
|
2664
2665
|
ETH: 18,
|
|
@@ -2727,9 +2728,38 @@ var parseRawTokenValue = (value, decimals) => {
|
|
|
2727
2728
|
return parsed / __pow(10, decimals);
|
|
2728
2729
|
}
|
|
2729
2730
|
};
|
|
2731
|
+
var shouldUseLegacyEighteenDecimalFallback = ({
|
|
2732
|
+
value,
|
|
2733
|
+
parsed,
|
|
2734
|
+
decimals,
|
|
2735
|
+
tokenSymbol,
|
|
2736
|
+
chainId
|
|
2737
|
+
}) => {
|
|
2738
|
+
if (parsed == null || decimals !== 6 || value.includes(".")) return false;
|
|
2739
|
+
const normalizedSymbol = tokenSymbol.trim().toUpperCase();
|
|
2740
|
+
if (normalizedSymbol !== "USDC" && normalizedSymbol !== "USDT") return false;
|
|
2741
|
+
const normalizedChainId = chainId == null ? void 0 : chainId.trim();
|
|
2742
|
+
if (normalizedChainId === "56") return false;
|
|
2743
|
+
if (!/^\d+$/.test(value)) return false;
|
|
2744
|
+
try {
|
|
2745
|
+
const raw = BigInt(value);
|
|
2746
|
+
if (raw % LEGACY_TWELVE_DECIMAL_SCALE !== BigInt(0)) return false;
|
|
2747
|
+
const parsedAsEighteen = Number(raw / LEGACY_TWELVE_DECIMAL_SCALE) / 1e6;
|
|
2748
|
+
return Number.isFinite(parsedAsEighteen) && parsed > 1e6 && parsedAsEighteen < 1e6;
|
|
2749
|
+
} catch (e) {
|
|
2750
|
+
return false;
|
|
2751
|
+
}
|
|
2752
|
+
};
|
|
2730
2753
|
var formatTokenAmountTwoDecimals = (value, tokenSymbol, chainId) => {
|
|
2731
|
-
const
|
|
2754
|
+
const decimals = getTokenDecimals(tokenSymbol, chainId);
|
|
2755
|
+
const parsed = parseRawTokenValue(value, decimals);
|
|
2732
2756
|
if (parsed == null) return "0.00";
|
|
2757
|
+
if (value && shouldUseLegacyEighteenDecimalFallback({ value, parsed, decimals, tokenSymbol, chainId })) {
|
|
2758
|
+
const fallbackParsed = parseRawTokenValue(value, 18);
|
|
2759
|
+
if (fallbackParsed != null) {
|
|
2760
|
+
return twoDecimalNumberFormatter.format(fallbackParsed);
|
|
2761
|
+
}
|
|
2762
|
+
}
|
|
2733
2763
|
return twoDecimalNumberFormatter.format(parsed);
|
|
2734
2764
|
};
|
|
2735
2765
|
var getFilledUsdValue = (filledAmountRaw) => {
|