@agg-build/ui 4.17.0 → 4.17.2

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.
Files changed (36) hide show
  1. package/dist/{chunk-M6U2RKBD.mjs → chunk-3Y2GCNVL.mjs} +100 -52
  2. package/dist/{chunk-D2BTU7QI.mjs → chunk-7E4UXCEX.mjs} +223 -169
  3. package/dist/{chunk-QGONLJLE.mjs → chunk-B5ALKYD5.mjs} +210 -184
  4. package/dist/{chunk-RR44PSKH.mjs → chunk-BBDFSTIA.mjs} +3 -1
  5. package/dist/{chunk-5SCDQSNA.mjs → chunk-JI5KV4QI.mjs} +2 -2
  6. package/dist/{chunk-NIRCF54M.mjs → chunk-RZLM3M5R.mjs} +2 -2
  7. package/dist/{chunk-HFMKCV4L.mjs → chunk-TK62UB5F.mjs} +27 -16
  8. package/dist/events.js +29 -16
  9. package/dist/events.mjs +3 -3
  10. package/dist/index.js +1033 -920
  11. package/dist/index.mjs +9 -38
  12. package/dist/modals.js +212 -184
  13. package/dist/modals.mjs +3 -3
  14. package/dist/pages.js +814 -674
  15. package/dist/pages.mjs +6 -6
  16. package/dist/primitives.js +3 -1
  17. package/dist/primitives.mjs +1 -1
  18. package/dist/styles.css +1 -1
  19. package/dist/tailwind.css +1 -1
  20. package/dist/trading.js +535 -442
  21. package/dist/trading.mjs +4 -4
  22. package/dist/types/auth/connect-button-view/connect-button-view.types.d.mts +0 -2
  23. package/dist/types/auth/connect-button-view/connect-button-view.types.d.ts +0 -2
  24. package/dist/types/auth/connect-button-view/index.d.mts +1 -1
  25. package/dist/types/auth/connect-button-view/index.d.ts +1 -1
  26. package/dist/types/pages/user-profile/components/available-balance-card.d.mts +3 -1
  27. package/dist/types/pages/user-profile/components/available-balance-card.d.ts +3 -1
  28. package/dist/types/pages/user-profile/user-profile.types.d.mts +8 -0
  29. package/dist/types/pages/user-profile/user-profile.types.d.ts +8 -0
  30. package/dist/types/primitives/modal/index.d.mts +1 -1
  31. package/dist/types/primitives/modal/index.d.ts +1 -1
  32. package/dist/types/primitives/modal/modal.types.d.mts +6 -0
  33. package/dist/types/primitives/modal/modal.types.d.ts +6 -0
  34. package/dist/types/trading/place-order/index.place-order.utils.d.mts +12 -1
  35. package/dist/types/trading/place-order/index.place-order.utils.d.ts +12 -1
  36. package/package.json +3 -3
@@ -19,7 +19,7 @@ import {
19
19
  selectPrimaryVenueMarket,
20
20
  skeletonViews,
21
21
  sortOutcomes
22
- } from "./chunk-RR44PSKH.mjs";
22
+ } from "./chunk-BBDFSTIA.mjs";
23
23
 
24
24
  // src/trading/trading-context/index.tsx
25
25
  import { useEventTradingContext } from "@agg-build/hooks";
@@ -400,13 +400,14 @@ var parseSettlementDateMs = (value) => {
400
400
  var isDateLikeDifference = (canonicalKey) => {
401
401
  return canonicalKey === "resolution_timing" || canonicalKey === "start_date" || canonicalKey === "end_date";
402
402
  };
403
- var hasEqualNormalizedDateValues = (difference, canonicalKey) => {
404
- if (!isDateLikeDifference(canonicalKey)) return false;
403
+ var hasEqualValuesAcrossVenues = (difference) => {
405
404
  const values = Object.values(difference.perVenue);
406
405
  if (values.length < 2) return false;
407
406
  const timestamps = values.map(parseSettlementDateMs);
408
- if (timestamps.some((timestamp) => timestamp === null)) return false;
409
- return new Set(timestamps).size === 1;
407
+ if (timestamps.every((timestamp) => timestamp !== null)) {
408
+ return new Set(timestamps).size === 1;
409
+ }
410
+ return new Set(values.map(normalizeSettlementForCompare)).size === 1;
410
411
  };
411
412
  var resolveDifferenceSeverity = (difference, canonicalKey) => {
412
413
  var _a;
@@ -441,7 +442,7 @@ var prepareSettlementDifferences = (differences) => {
441
442
  if (!title || Object.keys(perVenue).length === 0) continue;
442
443
  const difference = __spreadProps(__spreadValues({}, rawDifference), { title, perVenue });
443
444
  const canonicalKey = resolveCanonicalDifferenceKey(difference);
444
- if (hasEqualNormalizedDateValues(difference, canonicalKey)) continue;
445
+ if (hasEqualValuesAcrossVenues(difference)) continue;
445
446
  const existing = byCanonicalKey.get(canonicalKey);
446
447
  if (existing) {
447
448
  byCanonicalKey.set(canonicalKey, __spreadProps(__spreadValues({}, existing), {
@@ -455,7 +456,7 @@ var prepareSettlementDifferences = (differences) => {
455
456
  originalIndex
456
457
  }));
457
458
  }
458
- return Array.from(byCanonicalKey.values()).sort((left, right) => {
459
+ return Array.from(byCanonicalKey.values()).filter((difference) => !hasEqualValuesAcrossVenues(difference)).sort((left, right) => {
459
460
  const severityDelta = Number(right.severity === "critical") - Number(left.severity === "critical");
460
461
  if (severityDelta !== 0) return severityDelta;
461
462
  return left.originalIndex - right.originalIndex;
@@ -469,9 +470,7 @@ var resolveSettlementVenueLabel = (venue, labels) => {
469
470
  return (_a = labels.venues[venue]) != null ? _a : formatVenueFallbackLabel(venue);
470
471
  };
471
472
  var resolveDifferenceVenueKeys = (difference, settlementVenues) => {
472
- const explicitVenues = Object.keys(difference.perVenue);
473
- if (!isDateLikeDifference(difference.canonicalKey)) return explicitVenues;
474
- const allVenues = [...settlementVenues != null ? settlementVenues : [], ...explicitVenues];
473
+ const allVenues = [...settlementVenues != null ? settlementVenues : [], ...Object.keys(difference.perVenue)];
475
474
  return Array.from(new Set(allVenues.filter((venue) => venue.trim().length > 0)));
476
475
  };
477
476
  var resolveDifferenceIconClassName = (canonicalKey) => {
@@ -510,6 +509,12 @@ var buildSettlementVenueRules = ({
510
509
  if (!venueRules.includes(content2)) venueRules.push(content2);
511
510
  rulesByVenue.set(venue2, venueRules);
512
511
  }
512
+ if (rulesByVenue.size > 0) {
513
+ for (const venue2 of settlementVenues != null ? settlementVenues : []) {
514
+ const trimmedVenue = venue2.trim();
515
+ if (trimmedVenue && !rulesByVenue.has(trimmedVenue)) rulesByVenue.set(trimmedVenue, []);
516
+ }
517
+ }
513
518
  return Array.from(rulesByVenue, ([venue2, contents]) => ({
514
519
  venue: venue2,
515
520
  content: contents.join("\n\n")
@@ -519,6 +524,11 @@ var buildSettlementVenueRules = ({
519
524
  const venue = (_b = settlementVenues == null ? void 0 : settlementVenues.find((candidate) => candidate.trim().length > 0)) == null ? void 0 : _b.trim();
520
525
  return content && venue ? [{ venue, content }] : [];
521
526
  };
527
+ var repeatsQuestion = (content, question) => {
528
+ const normalizedQuestion = normalizeSettlementForCompare(question != null ? question : "");
529
+ if (!normalizedQuestion) return false;
530
+ return normalizeSettlementForCompare(content) === normalizedQuestion;
531
+ };
522
532
  var isDuplicatedByVenueRules = (content, venueRules) => {
523
533
  const normalizedContent = normalizeSettlementForCompare(content);
524
534
  if (!normalizedContent) return false;
@@ -535,8 +545,8 @@ var SettlementVenueRules = ({
535
545
  /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.trading.settlementFullRulesTitle }),
536
546
  /* @__PURE__ */ jsx2("div", { className: "flex w-full flex-col items-start gap-4", children: rules.map((rule) => {
537
547
  const venueLabel = resolveSettlementVenueLabel(rule.venue, labels);
538
- return /* @__PURE__ */ jsxs2("details", { className: "group/agg-settlement-rule w-full", children: [
539
- /* @__PURE__ */ jsxs2("summary", { className: "flex cursor-pointer list-none items-center gap-2 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground group-hover/agg-settlement-rule:text-agg-muted-foreground transition-colors marker:hidden", children: [
548
+ return /* @__PURE__ */ jsxs2("details", { className: "w-full", children: [
549
+ /* @__PURE__ */ jsxs2("summary", { className: "group/agg-settlement-rule flex w-fit cursor-pointer list-none items-center gap-2 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground transition-colors marker:hidden", children: [
540
550
  /* @__PURE__ */ jsx2(
541
551
  VenueLogo,
542
552
  {
@@ -560,7 +570,7 @@ var SettlementVenueRules = ({
560
570
  }
561
571
  )
562
572
  ] }),
563
- /* @__PURE__ */ jsx2("div", { className: "mt-3 pl-6", children: /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: rule.content }) })
573
+ /* @__PURE__ */ jsx2("div", { className: "mt-3 pl-6", children: rule.content ? /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: rule.content }) : /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-muted-foreground", children: labels.trading.settlementValueUnavailable }) })
564
574
  ] }, rule.venue);
565
575
  }) })
566
576
  ] });
@@ -588,9 +598,10 @@ var Settlement = ({
588
598
  }),
589
599
  [eventDescription, marketDescription, primaryRules]
590
600
  );
601
+ const isSingleVenueCluster = settlementVenues !== void 0 && settlementVenues.length < 2;
591
602
  const settlementDifferences = useMemo(
592
- () => prepareSettlementDifferences(settlementDiff == null ? void 0 : settlementDiff.differences),
593
- [settlementDiff == null ? void 0 : settlementDiff.differences]
603
+ () => isSingleVenueCluster ? [] : prepareSettlementDifferences(settlementDiff == null ? void 0 : settlementDiff.differences),
604
+ [isSingleVenueCluster, settlementDiff == null ? void 0 : settlementDiff.differences]
594
605
  );
595
606
  const eventBlock = (_a = blocks.find((block) => block.key === "eventDescription")) != null ? _a : null;
596
607
  const marketBlock = (_b = blocks.find((block) => block.key === "marketDescription")) != null ? _b : null;
@@ -606,7 +617,7 @@ var Settlement = ({
606
617
  );
607
618
  const hasSettlementDifferences = settlementDifferences.length > 0;
608
619
  const hasVenueSettlementRules = venueRuleBlocks.length > 0;
609
- const standaloneEventBlock = eventBlock && !isDuplicatedByVenueRules(eventBlock.content, venueRuleBlocks) ? eventBlock : null;
620
+ const standaloneEventBlock = eventBlock && !isDuplicatedByVenueRules(eventBlock.content, venueRuleBlocks) && !repeatsQuestion(eventBlock.content, question) ? eventBlock : null;
610
621
  const standaloneMarketBlock = hasVenueSettlementRules ? null : marketBlock;
611
622
  const standalonePrimaryRulesBlock = hasVenueSettlementRules ? null : primaryRulesBlock;
612
623
  const hasStandaloneSettlementText = hasVenueSettlementRules ? standaloneEventBlock !== null : blocks.length > 0;
package/dist/events.js CHANGED
@@ -6623,7 +6623,8 @@ var ModalContainer = ({
6623
6623
  maxWidth = "600px",
6624
6624
  classNames,
6625
6625
  "aria-label": ariaLabel,
6626
- "aria-labelledby": ariaLabelledBy
6626
+ "aria-labelledby": ariaLabelledBy,
6627
+ onOpenAutoFocus
6627
6628
  }) => {
6628
6629
  const {
6629
6630
  general: { rootClassName },
@@ -6654,6 +6655,7 @@ var ModalContainer = ({
6654
6655
  ),
6655
6656
  "aria-label": ariaLabel,
6656
6657
  "aria-labelledby": ariaLabelledBy,
6658
+ onOpenAutoFocus,
6657
6659
  onCloseAutoFocus: (event) => {
6658
6660
  event.preventDefault();
6659
6661
  },
@@ -11411,13 +11413,14 @@ var parseSettlementDateMs = (value) => {
11411
11413
  var isDateLikeDifference = (canonicalKey) => {
11412
11414
  return canonicalKey === "resolution_timing" || canonicalKey === "start_date" || canonicalKey === "end_date";
11413
11415
  };
11414
- var hasEqualNormalizedDateValues = (difference, canonicalKey) => {
11415
- if (!isDateLikeDifference(canonicalKey)) return false;
11416
+ var hasEqualValuesAcrossVenues = (difference) => {
11416
11417
  const values = Object.values(difference.perVenue);
11417
11418
  if (values.length < 2) return false;
11418
11419
  const timestamps = values.map(parseSettlementDateMs);
11419
- if (timestamps.some((timestamp) => timestamp === null)) return false;
11420
- return new Set(timestamps).size === 1;
11420
+ if (timestamps.every((timestamp) => timestamp !== null)) {
11421
+ return new Set(timestamps).size === 1;
11422
+ }
11423
+ return new Set(values.map(normalizeSettlementForCompare)).size === 1;
11421
11424
  };
11422
11425
  var resolveDifferenceSeverity = (difference, canonicalKey) => {
11423
11426
  var _a;
@@ -11452,7 +11455,7 @@ var prepareSettlementDifferences = (differences) => {
11452
11455
  if (!title2 || Object.keys(perVenue).length === 0) continue;
11453
11456
  const difference = __spreadProps(__spreadValues({}, rawDifference), { title: title2, perVenue });
11454
11457
  const canonicalKey = resolveCanonicalDifferenceKey(difference);
11455
- if (hasEqualNormalizedDateValues(difference, canonicalKey)) continue;
11458
+ if (hasEqualValuesAcrossVenues(difference)) continue;
11456
11459
  const existing = byCanonicalKey.get(canonicalKey);
11457
11460
  if (existing) {
11458
11461
  byCanonicalKey.set(canonicalKey, __spreadProps(__spreadValues({}, existing), {
@@ -11466,7 +11469,7 @@ var prepareSettlementDifferences = (differences) => {
11466
11469
  originalIndex
11467
11470
  }));
11468
11471
  }
11469
- return Array.from(byCanonicalKey.values()).sort((left, right) => {
11472
+ return Array.from(byCanonicalKey.values()).filter((difference) => !hasEqualValuesAcrossVenues(difference)).sort((left, right) => {
11470
11473
  const severityDelta = Number(right.severity === "critical") - Number(left.severity === "critical");
11471
11474
  if (severityDelta !== 0) return severityDelta;
11472
11475
  return left.originalIndex - right.originalIndex;
@@ -11480,9 +11483,7 @@ var resolveSettlementVenueLabel = (venue, labels) => {
11480
11483
  return (_a = labels.venues[venue]) != null ? _a : formatVenueFallbackLabel(venue);
11481
11484
  };
11482
11485
  var resolveDifferenceVenueKeys = (difference, settlementVenues) => {
11483
- const explicitVenues = Object.keys(difference.perVenue);
11484
- if (!isDateLikeDifference(difference.canonicalKey)) return explicitVenues;
11485
- const allVenues = [...settlementVenues != null ? settlementVenues : [], ...explicitVenues];
11486
+ const allVenues = [...settlementVenues != null ? settlementVenues : [], ...Object.keys(difference.perVenue)];
11486
11487
  return Array.from(new Set(allVenues.filter((venue) => venue.trim().length > 0)));
11487
11488
  };
11488
11489
  var resolveDifferenceIconClassName = (canonicalKey) => {
@@ -11521,6 +11522,12 @@ var buildSettlementVenueRules = ({
11521
11522
  if (!venueRules.includes(content2)) venueRules.push(content2);
11522
11523
  rulesByVenue.set(venue2, venueRules);
11523
11524
  }
11525
+ if (rulesByVenue.size > 0) {
11526
+ for (const venue2 of settlementVenues != null ? settlementVenues : []) {
11527
+ const trimmedVenue = venue2.trim();
11528
+ if (trimmedVenue && !rulesByVenue.has(trimmedVenue)) rulesByVenue.set(trimmedVenue, []);
11529
+ }
11530
+ }
11524
11531
  return Array.from(rulesByVenue, ([venue2, contents]) => ({
11525
11532
  venue: venue2,
11526
11533
  content: contents.join("\n\n")
@@ -11530,6 +11537,11 @@ var buildSettlementVenueRules = ({
11530
11537
  const venue = (_b = settlementVenues == null ? void 0 : settlementVenues.find((candidate) => candidate.trim().length > 0)) == null ? void 0 : _b.trim();
11531
11538
  return content && venue ? [{ venue, content }] : [];
11532
11539
  };
11540
+ var repeatsQuestion = (content, question) => {
11541
+ const normalizedQuestion = normalizeSettlementForCompare(question != null ? question : "");
11542
+ if (!normalizedQuestion) return false;
11543
+ return normalizeSettlementForCompare(content) === normalizedQuestion;
11544
+ };
11533
11545
  var isDuplicatedByVenueRules = (content, venueRules) => {
11534
11546
  const normalizedContent = normalizeSettlementForCompare(content);
11535
11547
  if (!normalizedContent) return false;
@@ -11546,8 +11558,8 @@ var SettlementVenueRules = ({
11546
11558
  /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.trading.settlementFullRulesTitle }),
11547
11559
  /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "flex w-full flex-col items-start gap-4", children: rules.map((rule) => {
11548
11560
  const venueLabel = resolveSettlementVenueLabel(rule.venue, labels);
11549
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("details", { className: "group/agg-settlement-rule w-full", children: [
11550
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("summary", { className: "flex cursor-pointer list-none items-center gap-2 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground group-hover/agg-settlement-rule:text-agg-muted-foreground transition-colors marker:hidden", children: [
11561
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("details", { className: "w-full", children: [
11562
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("summary", { className: "group/agg-settlement-rule flex w-fit cursor-pointer list-none items-center gap-2 text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground transition-colors marker:hidden", children: [
11551
11563
  /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
11552
11564
  VenueLogo,
11553
11565
  {
@@ -11571,7 +11583,7 @@ var SettlementVenueRules = ({
11571
11583
  }
11572
11584
  )
11573
11585
  ] }),
11574
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "mt-3 pl-6", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(SettlementTextRenderer, { content: rule.content }) })
11586
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "mt-3 pl-6", children: rule.content ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(SettlementTextRenderer, { content: rule.content }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-muted-foreground", children: labels.trading.settlementValueUnavailable }) })
11575
11587
  ] }, rule.venue);
11576
11588
  }) })
11577
11589
  ] });
@@ -11599,9 +11611,10 @@ var Settlement = ({
11599
11611
  }),
11600
11612
  [eventDescription, marketDescription, primaryRules]
11601
11613
  );
11614
+ const isSingleVenueCluster = settlementVenues !== void 0 && settlementVenues.length < 2;
11602
11615
  const settlementDifferences = (0, import_react16.useMemo)(
11603
- () => prepareSettlementDifferences(settlementDiff == null ? void 0 : settlementDiff.differences),
11604
- [settlementDiff == null ? void 0 : settlementDiff.differences]
11616
+ () => isSingleVenueCluster ? [] : prepareSettlementDifferences(settlementDiff == null ? void 0 : settlementDiff.differences),
11617
+ [isSingleVenueCluster, settlementDiff == null ? void 0 : settlementDiff.differences]
11605
11618
  );
11606
11619
  const eventBlock = (_a = blocks.find((block) => block.key === "eventDescription")) != null ? _a : null;
11607
11620
  const marketBlock = (_b = blocks.find((block) => block.key === "marketDescription")) != null ? _b : null;
@@ -11617,7 +11630,7 @@ var Settlement = ({
11617
11630
  );
11618
11631
  const hasSettlementDifferences = settlementDifferences.length > 0;
11619
11632
  const hasVenueSettlementRules = venueRuleBlocks.length > 0;
11620
- const standaloneEventBlock = eventBlock && !isDuplicatedByVenueRules(eventBlock.content, venueRuleBlocks) ? eventBlock : null;
11633
+ const standaloneEventBlock = eventBlock && !isDuplicatedByVenueRules(eventBlock.content, venueRuleBlocks) && !repeatsQuestion(eventBlock.content, question) ? eventBlock : null;
11621
11634
  const standaloneMarketBlock = hasVenueSettlementRules ? null : marketBlock;
11622
11635
  const standalonePrimaryRulesBlock = hasVenueSettlementRules ? null : primaryRulesBlock;
11623
11636
  const hasStandaloneSettlementText = hasVenueSettlementRules ? standaloneEventBlock !== null : blocks.length > 0;
package/dist/events.mjs CHANGED
@@ -17,13 +17,13 @@ import {
17
17
  orderbookRowLimitDefault,
18
18
  resolveEventDetailsSyncKey,
19
19
  useCenterOrderbookSpread
20
- } from "./chunk-NIRCF54M.mjs";
20
+ } from "./chunk-RZLM3M5R.mjs";
21
21
  import {
22
22
  formatProbabilityCents,
23
23
  resolveOrderBookRows,
24
24
  resolveUnifiedOrderBookEntries
25
- } from "./chunk-HFMKCV4L.mjs";
26
- import "./chunk-RR44PSKH.mjs";
25
+ } from "./chunk-TK62UB5F.mjs";
26
+ import "./chunk-BBDFSTIA.mjs";
27
27
  export {
28
28
  EventList,
29
29
  EventListItem,