courthive-components 3.4.9 → 3.5.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.
@@ -14703,7 +14703,7 @@ function Jx(e) {
14703
14703
  var Yx = {
14704
14704
  name: "courthive-components",
14705
14705
  packageManager: "pnpm@11.9.0",
14706
- version: "3.4.9",
14706
+ version: "3.5.1",
14707
14707
  engines: { node: ">=22" },
14708
14708
  description: "Components for competitions projects",
14709
14709
  files: ["dist"],
@@ -14813,7 +14813,7 @@ var Yx = {
14813
14813
  "focus-trap": "^8.0.0",
14814
14814
  "timepicker-ui": "^4.1.2",
14815
14815
  "tippy.js": "6.3.7",
14816
- "tods-competition-factory": "6.0.0",
14816
+ "tods-competition-factory": "6.0.2",
14817
14817
  "vanillajs-datepicker": "1.3.4"
14818
14818
  }
14819
14819
  };
@@ -32237,12 +32237,183 @@ var DJ = class e {
32237
32237
  }
32238
32238
  };
32239
32239
  }
32240
- }, OJ = () => "pc-layout", kJ = () => "pc-panel", AJ = () => "pc-panel-header", jJ = () => "pc-panel-title", MJ = () => "pc-panel-meta", NJ = () => "pc-toolbar", PJ = () => "pc-input", FJ = () => "pc-select", IJ = () => "pc-catalog", LJ = () => "pc-group", RJ = () => "pc-group-header", zJ = () => "pc-group-chevron", BJ = () => "pc-group-body", VJ = () => "pc-card", HJ = () => "pc-card-title", UJ = () => "pc-card-meta", WJ = () => "pc-type-badge", GJ = () => "pc-editor", KJ = () => "pc-editor-header", qJ = () => "pc-editor-header-left", JJ = () => "pc-editor-actions", YJ = () => "sp-btn sp-btn--sm", XJ = () => "sp-btn sp-btn--sm sp-btn--accent", ZJ = () => "pc-dirty-dot", QJ = () => "pc-editor-body", $J = () => "pc-empty", eY = () => "pc-json-editor", tY = () => "pc-json-error";
32240
+ }, OJ = s.policyConstants.POLICY_TYPE_PARTICIPANT;
32241
+ function kJ(e) {
32242
+ return structuredClone(e);
32243
+ }
32244
+ function AJ() {
32245
+ return kJ(c.policies.POLICY_PRIVACY_DEFAULT[OJ]);
32246
+ }
32247
+ function jJ(e) {
32248
+ return e?.participant ?? {};
32249
+ }
32250
+ function MJ(e) {
32251
+ let t = e.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2");
32252
+ return t.charAt(0).toUpperCase() + t.slice(1);
32253
+ }
32254
+ function NJ() {
32255
+ let e = jJ(AJ()), t = Object.keys(e).filter((t) => typeof e[t] == "boolean").map((e) => ({
32256
+ field: e,
32257
+ group: "participant",
32258
+ label: MJ(e)
32259
+ })), n = Object.keys(e.person ?? {}).filter((t) => typeof e.person[t] == "boolean").map((e) => ({
32260
+ field: e,
32261
+ group: "person",
32262
+ label: MJ(e)
32263
+ }));
32264
+ return [...t, ...n];
32265
+ }
32266
+ function PJ(e, t, n) {
32267
+ let r = jJ(e);
32268
+ return t === "person" ? !!r.person?.[n] : !!r[n];
32269
+ }
32270
+ function FJ(e, t, n, r) {
32271
+ let i = jJ(e), a = (e, t) => {
32272
+ e && n in e && (e[n] = r), t && n in t && (t[n] = r);
32273
+ };
32274
+ t === "person" ? a(i.person, i.individualParticipants?.person) : a(i, i.individualParticipants);
32275
+ }
32276
+ function IJ(e) {
32277
+ return e?.policyName ?? "";
32278
+ }
32279
+ function LJ(e, t) {
32280
+ e && (e.policyName = t);
32281
+ }
32282
+ //#endregion
32283
+ //#region src/components/policy-catalog/editors/privacy/privacyEditorStore.ts
32284
+ function RJ(e) {
32285
+ return structuredClone(e);
32286
+ }
32287
+ var zJ = class {
32288
+ constructor(e) {
32289
+ this.listeners = /* @__PURE__ */ new Set(), this.config = e, this.state = {
32290
+ draft: RJ(e.initialPolicy ?? AJ()),
32291
+ dirty: !1
32292
+ };
32293
+ }
32294
+ getState() {
32295
+ return this.state;
32296
+ }
32297
+ getData() {
32298
+ return RJ(this.state.draft);
32299
+ }
32300
+ setData(e) {
32301
+ this.state = {
32302
+ ...this.state,
32303
+ draft: RJ(e),
32304
+ dirty: !1
32305
+ }, this.emit();
32306
+ }
32307
+ setPolicyName(e) {
32308
+ let t = RJ(this.state.draft);
32309
+ LJ(t, e), this.commitDraft(t);
32310
+ }
32311
+ setField(e, t, n) {
32312
+ let r = RJ(this.state.draft);
32313
+ FJ(r, e, t, n), this.commitDraft(r);
32314
+ }
32315
+ subscribe(e) {
32316
+ return this.listeners.add(e), () => {
32317
+ this.listeners.delete(e);
32318
+ };
32319
+ }
32320
+ commitDraft(e) {
32321
+ this.state = {
32322
+ ...this.state,
32323
+ draft: e,
32324
+ dirty: !0
32325
+ }, this.emit(), this.config.onChange?.(RJ(e));
32326
+ }
32327
+ emit() {
32328
+ for (let e of this.listeners) e(this.state);
32329
+ }
32330
+ };
32331
+ //#endregion
32332
+ //#region src/components/policy-catalog/editors/privacy/privacyEditorPanel.ts
32333
+ function BJ(e, t) {
32334
+ let n = document.createElement("div");
32335
+ n.className = "privacy-editor";
32336
+ let r = document.createElement("p");
32337
+ r.className = "privacy-editor__intro", r.textContent = "Choose which participant details are published publicly. Unchecked = kept private.", n.appendChild(r);
32338
+ let i = document.createElement("label");
32339
+ i.className = "privacy-editor__name";
32340
+ let a = document.createElement("span");
32341
+ a.textContent = "Policy name";
32342
+ let o = document.createElement("input");
32343
+ o.type = "text", o.placeholder = "e.g. Public roster privacy", o.addEventListener("input", () => e.setPolicyName(o.value)), i.append(a, o), n.appendChild(i);
32344
+ let s = NJ(), c = /* @__PURE__ */ new Map(), l = (t, r) => {
32345
+ let i = document.createElement("section");
32346
+ i.className = "privacy-editor__group";
32347
+ let a = document.createElement("h4");
32348
+ a.textContent = r, i.appendChild(a);
32349
+ let o = document.createElement("div");
32350
+ o.className = "privacy-editor__grid";
32351
+ for (let n of s.filter((e) => e.group === t)) {
32352
+ let r = document.createElement("label");
32353
+ r.className = "privacy-editor__toggle";
32354
+ let i = document.createElement("input");
32355
+ i.type = "checkbox", i.addEventListener("change", () => e.setField(t, n.field, i.checked));
32356
+ let a = document.createElement("span");
32357
+ a.textContent = n.label, r.append(i, a), o.appendChild(r), c.set(`${t}.${n.field}`, i);
32358
+ }
32359
+ i.appendChild(o), n.appendChild(i);
32360
+ };
32361
+ return l("person", "Person details"), l("participant", "Participant details"), {
32362
+ element: n,
32363
+ update: (e) => {
32364
+ o.value = IJ(e.draft);
32365
+ for (let t of s) {
32366
+ let n = c.get(`${t.group}.${t.field}`);
32367
+ n && (n.checked = PJ(e.draft, t.group, t.field));
32368
+ }
32369
+ }
32370
+ };
32371
+ }
32372
+ //#endregion
32373
+ //#region src/components/policy-catalog/editors/privacy/privacyEditorControl.ts
32374
+ var VJ = class e {
32375
+ constructor(e) {
32376
+ this.container = null, this.store = new zJ(e), this.panel = BJ(this.store, e), this.unsubscribe = this.store.subscribe((e) => this.panel.update(e)), this.panel.update(this.store.getState());
32377
+ }
32378
+ render(e) {
32379
+ this.container = e, e.appendChild(this.panel.element);
32380
+ }
32381
+ destroy() {
32382
+ this.unsubscribe(), this.container && this.panel.element.parentNode === this.container && this.container.removeChild(this.panel.element), this.container = null;
32383
+ }
32384
+ getData() {
32385
+ return this.store.getData();
32386
+ }
32387
+ setData(e) {
32388
+ this.store.setData(e);
32389
+ }
32390
+ getStore() {
32391
+ return this.store;
32392
+ }
32393
+ static createEditorInstance(t) {
32394
+ let n = {
32395
+ initialPolicy: t.initialData,
32396
+ onChange: (e) => t.onChange(e)
32397
+ }, r = new e(n);
32398
+ return {
32399
+ element: r.panel.element,
32400
+ setData(e) {
32401
+ r.setData(e);
32402
+ },
32403
+ getData() {
32404
+ return r.getData();
32405
+ },
32406
+ destroy() {
32407
+ r.destroy();
32408
+ }
32409
+ };
32410
+ }
32411
+ }, HJ = () => "pc-layout", UJ = () => "pc-panel", WJ = () => "pc-panel-header", GJ = () => "pc-panel-title", KJ = () => "pc-panel-meta", qJ = () => "pc-toolbar", JJ = () => "pc-input", YJ = () => "pc-select", XJ = () => "pc-catalog", ZJ = () => "pc-group", QJ = () => "pc-group-header", $J = () => "pc-group-chevron", eY = () => "pc-group-body", tY = () => "pc-card", nY = () => "pc-card-title", rY = () => "pc-card-meta", iY = () => "pc-type-badge", aY = () => "pc-editor", oY = () => "pc-editor-header", sY = () => "pc-editor-header-left", cY = () => "pc-editor-actions", lY = () => "sp-btn sp-btn--sm", uY = () => "sp-btn sp-btn--sm sp-btn--accent", dY = () => "pc-dirty-dot", fY = () => "pc-editor-body", pY = () => "pc-empty", mY = () => "pc-json-editor", hY = () => "pc-json-error";
32241
32412
  //#endregion
32242
32413
  //#region src/components/policy-catalog/ui/policyCatalogLayout.ts
32243
- function nY(e) {
32414
+ function gY(e) {
32244
32415
  let t = document.createElement("div");
32245
- t.className = OJ(), t.appendChild(e.catalogPanel.element), t.appendChild(e.editorShell.element);
32416
+ t.className = HJ(), t.appendChild(e.catalogPanel.element), t.appendChild(e.editorShell.element);
32246
32417
  function n(t) {
32247
32418
  e.catalogPanel.update(t), e.editorShell.update(t);
32248
32419
  }
@@ -32253,51 +32424,51 @@ function nY(e) {
32253
32424
  }
32254
32425
  //#endregion
32255
32426
  //#region src/components/policy-catalog/domain/policyDefaults.ts
32256
- var rY = "scheduling", iY = "scoring", aY = "seeding", oY = "draws", sY = "avoidance", cY = "feedIn", lY = "progression", uY = "roundNaming", dY = "positionActions", fY = "matchUpActions", pY = "roundRobinTally", mY = "rankingPoints", hY = "competitiveBands", gY = "voluntaryConsolation", _Y = "participant", vY = "display", yY = "audit", bY = "Tournament Operations", xY = "Scoring & Results", SY = "Ranking Points", CY = "Draw Configuration", wY = "Participants", TY = "Display & Audit", EY = (e, t, n, r, i) => ({
32427
+ var _Y = "scheduling", vY = "scoring", yY = "seeding", bY = "draws", xY = "avoidance", SY = "feedIn", CY = "progression", wY = "roundNaming", TY = "positionActions", EY = "matchUpActions", DY = "roundRobinTally", OY = "rankingPoints", kY = "competitiveBands", AY = "voluntaryConsolation", jY = "participant", MY = "display", NY = "audit", PY = "Tournament Operations", FY = "Scoring & Results", IY = "Ranking Points", LY = "Draw Configuration", RY = "Participants", zY = "Display & Audit", BY = (e, t, n, r, i) => ({
32257
32428
  policyType: e,
32258
32429
  label: t,
32259
32430
  description: n,
32260
32431
  group: r,
32261
32432
  hasEditor: i
32262
- }), DY = [
32263
- EY(rY, "Scheduling", "Match scheduling, average times, recovery times, daily limits", bY, !0),
32264
- EY(dY, "Position Actions", "Allowed position actions (alternates, walkovers, withdrawals)", bY, !1),
32265
- EY(fY, "MatchUp Actions", "Allowed matchUp status transitions and actions", bY, !1),
32266
- EY(sY, "Avoidance", "Draw placement avoidance rules (club, nationality, region)", bY, !1),
32267
- EY(iY, "Scoring", "Score entry validation and completion rules", xY, !0),
32268
- EY(pY, "Round Robin Tally", "Round-robin group standing calculation method", xY, !1),
32269
- EY(mY, "Ranking Points", "Point allocation by draw size, round, and result", SY, !0),
32270
- EY(hY, "Competitive Bands", "Rating/ranking band definitions for competitive grouping", xY, !1),
32271
- EY(oY, "Draws", "Draw generation rules and structure options", CY, !1),
32272
- EY(aY, "Seeding", "Seeding thresholds and placement rules by draw size", CY, !0),
32273
- EY(cY, "Feed-In", "Feed-in consolation structure rules", CY, !1),
32274
- EY(lY, "Progression", "Player progression between draw structures", CY, !1),
32275
- EY(gY, "Voluntary Consolation", "Voluntary consolation entry rules", CY, !1),
32276
- EY(uY, "Round Naming", "Custom round name labels (QF, SF, F, etc.)", CY, !1),
32277
- EY(_Y, "Participant", "Participant display and data rules", wY, !1),
32278
- EY(vY, "Display", "Client display configuration (public vs admin views)", TY, !1),
32279
- EY(yY, "Audit", "Audit trail and change logging configuration", TY, !1)
32433
+ }), VY = [
32434
+ BY(_Y, "Scheduling", "Match scheduling, average times, recovery times, daily limits", PY, !0),
32435
+ BY(TY, "Position Actions", "Allowed position actions (alternates, walkovers, withdrawals)", PY, !1),
32436
+ BY(EY, "MatchUp Actions", "Allowed matchUp status transitions and actions", PY, !1),
32437
+ BY(xY, "Avoidance", "Draw placement avoidance rules (club, nationality, region)", PY, !1),
32438
+ BY(vY, "Scoring", "Score entry validation and completion rules", FY, !0),
32439
+ BY(DY, "Round Robin Tally", "Round-robin group standing calculation method", FY, !1),
32440
+ BY(OY, "Ranking Points", "Point allocation by draw size, round, and result", IY, !0),
32441
+ BY(kY, "Competitive Bands", "Rating/ranking band definitions for competitive grouping", FY, !1),
32442
+ BY(bY, "Draws", "Draw generation rules and structure options", LY, !1),
32443
+ BY(yY, "Seeding", "Seeding thresholds and placement rules by draw size", LY, !0),
32444
+ BY(SY, "Feed-In", "Feed-in consolation structure rules", LY, !1),
32445
+ BY(CY, "Progression", "Player progression between draw structures", LY, !1),
32446
+ BY(AY, "Voluntary Consolation", "Voluntary consolation entry rules", LY, !1),
32447
+ BY(wY, "Round Naming", "Custom round name labels (QF, SF, F, etc.)", LY, !1),
32448
+ BY(jY, "Participant Privacy", "Which participant details are published publicly", RY, !0),
32449
+ BY(MY, "Display", "Client display configuration (public vs admin views)", zY, !1),
32450
+ BY(NY, "Audit", "Audit trail and change logging configuration", zY, !1)
32280
32451
  ];
32281
- function OY(e) {
32282
- return DY.find((t) => t.policyType === e);
32283
- }
32284
- function kY(e) {
32285
- return e === "rankingPoints" ? KW() : e === "scheduling" ? iK() : e === "scoring" ? lq() : e === "seeding" ? qq() : {};
32286
- }
32287
- var AY = [
32288
- bY,
32289
- xY,
32290
- SY,
32291
- CY,
32292
- wY,
32293
- TY
32452
+ function HY(e) {
32453
+ return VY.find((t) => t.policyType === e);
32454
+ }
32455
+ function UY(e) {
32456
+ return e === "rankingPoints" ? KW() : e === "scheduling" ? iK() : e === "scoring" ? lq() : e === "seeding" ? qq() : e === "participant" ? AJ() : {};
32457
+ }
32458
+ var WY = [
32459
+ PY,
32460
+ FY,
32461
+ IY,
32462
+ LY,
32463
+ RY,
32464
+ zY
32294
32465
  ];
32295
32466
  //#endregion
32296
32467
  //#region src/components/policy-catalog/domain/catalogProjections.ts
32297
- function jY(e, t) {
32468
+ function GY(e, t) {
32298
32469
  let n = t.toLowerCase().trim();
32299
32470
  return n ? e.filter((e) => {
32300
- let t = OY(e.policyType);
32471
+ let t = HY(e.policyType);
32301
32472
  return [
32302
32473
  e.name,
32303
32474
  e.description,
@@ -32307,12 +32478,12 @@ function jY(e, t) {
32307
32478
  ].join(" ").toLowerCase().includes(n);
32308
32479
  }) : e;
32309
32480
  }
32310
- function MY(e, t) {
32481
+ function KY(e, t) {
32311
32482
  let n = /* @__PURE__ */ new Map();
32312
32483
  if (t === "type") {
32313
- for (let e of AY) n.set(e, []);
32484
+ for (let e of WY) n.set(e, []);
32314
32485
  for (let t of e) {
32315
- let e = OY(t.policyType)?.group ?? "Display & Audit", r = n.get(e);
32486
+ let e = HY(t.policyType)?.group ?? "Display & Audit", r = n.get(e);
32316
32487
  r ? r.push(t) : n.set(e, [t]);
32317
32488
  }
32318
32489
  for (let [e, t] of n) t.length === 0 && n.delete(e);
@@ -32324,21 +32495,21 @@ function MY(e, t) {
32324
32495
  }
32325
32496
  //#endregion
32326
32497
  //#region src/components/policy-catalog/ui/policyCatalogPanel.ts
32327
- function NY(e) {
32498
+ function qY(e) {
32328
32499
  let t = document.createElement("div");
32329
- t.className = kJ(), t.style.overflowY = "auto", t.style.scrollbarWidth = "thin", t.style.scrollbarColor = "var(--sp-scrollbar) transparent";
32500
+ t.className = UJ(), t.style.overflowY = "auto", t.style.scrollbarWidth = "thin", t.style.scrollbarColor = "var(--sp-scrollbar) transparent";
32330
32501
  let n = /* @__PURE__ */ new Set(), r = null, i = document.createElement("div");
32331
- i.className = AJ();
32502
+ i.className = WJ();
32332
32503
  let a = document.createElement("div");
32333
- a.className = jJ(), a.textContent = "Policy Catalog";
32504
+ a.className = GJ(), a.textContent = "Policy Catalog";
32334
32505
  let o = document.createElement("div");
32335
- o.className = MJ(), i.appendChild(a), i.appendChild(o), t.appendChild(i);
32506
+ o.className = KJ(), i.appendChild(a), i.appendChild(o), t.appendChild(i);
32336
32507
  let s = document.createElement("div");
32337
- s.className = NJ();
32508
+ s.className = qJ();
32338
32509
  let c = document.createElement("input");
32339
- c.type = "text", c.placeholder = "Search policies...", c.className = PJ(), c.addEventListener("input", () => e.onSearchChange(c.value));
32510
+ c.type = "text", c.placeholder = "Search policies...", c.className = JJ(), c.addEventListener("input", () => e.onSearchChange(c.value));
32340
32511
  let l = document.createElement("select");
32341
- l.className = FJ();
32512
+ l.className = YJ();
32342
32513
  for (let [e, t] of [["type", "By Type"], ["source", "By Source"]]) {
32343
32514
  let n = document.createElement("option");
32344
32515
  n.value = e, n.textContent = t, l.appendChild(n);
@@ -32350,7 +32521,7 @@ function NY(e) {
32350
32521
  d.className = "sp-btn-icon", d.textContent = "+", d.title = "New policy", d.style.cssText = "font-size:1rem;font-weight:700";
32351
32522
  let f = document.createElement("div");
32352
32523
  f.style.cssText = "display:none;position:absolute;top:100%;right:0;z-index:100;min-width:180px;background:var(--sp-panel-bg);border:1px solid var(--sp-border);border-radius:12px;box-shadow:var(--sp-panel-shadow);padding:4px;margin-top:4px";
32353
- let p = DY.filter((e) => e.hasEditor);
32524
+ let p = VY.filter((e) => e.hasEditor);
32354
32525
  for (let t of p) {
32355
32526
  let n = document.createElement("div");
32356
32527
  n.style.cssText = "padding:6px 10px;font-size:12px;border-radius:8px;cursor:pointer;color:var(--sp-text)", n.textContent = t.label, n.addEventListener("mouseenter", () => {
@@ -32367,31 +32538,31 @@ function NY(e) {
32367
32538
  f.style.display = "none";
32368
32539
  }), u.appendChild(d), u.appendChild(f), s.appendChild(c), s.appendChild(l), s.appendChild(u), t.appendChild(s);
32369
32540
  let m = document.createElement("div");
32370
- m.className = IJ(), t.appendChild(m);
32541
+ m.className = XJ(), t.appendChild(m);
32371
32542
  function h(t) {
32372
32543
  r = t;
32373
- let i = jY(t.catalog, t.searchQuery), a = MY(i, t.groupBy);
32544
+ let i = GY(t.catalog, t.searchQuery), a = KY(i, t.groupBy);
32374
32545
  o.textContent = `${i.length} policies`, c.value !== t.searchQuery && (c.value = t.searchQuery), l.value !== t.groupBy && (l.value = t.groupBy), m.innerHTML = "";
32375
32546
  for (let [i, o] of a) {
32376
32547
  let a = document.createElement("div");
32377
- a.className = LJ();
32548
+ a.className = ZJ();
32378
32549
  let s = n.has(i), c = document.createElement("div");
32379
- c.className = RJ();
32550
+ c.className = QJ();
32380
32551
  let l = document.createElement("span");
32381
- l.className = zJ(), l.textContent = s ? "▶" : "▼";
32552
+ l.className = $J(), l.textContent = s ? "▶" : "▼";
32382
32553
  let u = document.createElement("span");
32383
32554
  u.textContent = `${i} (${o.length})`, c.appendChild(l), c.appendChild(u), c.addEventListener("click", () => {
32384
32555
  n.has(i) ? n.delete(i) : n.add(i), r && h(r);
32385
32556
  });
32386
32557
  let d = document.createElement("div");
32387
- d.className = BJ(), s && (d.style.display = "none");
32558
+ d.className = eY(), s && (d.style.display = "none");
32388
32559
  for (let n of o) {
32389
32560
  let r = document.createElement("div");
32390
- r.className = VJ(), n.id === t.selectedId && r.classList.add("active"), r.addEventListener("click", () => e.onSelectPolicy(n.id));
32561
+ r.className = tY(), n.id === t.selectedId && r.classList.add("active"), r.addEventListener("click", () => e.onSelectPolicy(n.id));
32391
32562
  let i = document.createElement("div");
32392
32563
  i.style.cssText = "display:flex;align-items:center;gap:4px";
32393
32564
  let a = document.createElement("div");
32394
- if (a.className = HJ(), a.style.flex = "1", a.textContent = n.name, i.appendChild(a), e.onDuplicatePolicy) {
32565
+ if (a.className = nY(), a.style.flex = "1", a.textContent = n.name, i.appendChild(a), e.onDuplicatePolicy) {
32395
32566
  let t = document.createElement("span");
32396
32567
  t.style.cssText = "font-size:10px;cursor:pointer;color:var(--sp-muted);padding:2px", t.textContent = "⎘", t.title = "Duplicate", t.addEventListener("click", (t) => {
32397
32568
  t.stopPropagation(), e.onDuplicatePolicy?.(n.id);
@@ -32405,11 +32576,11 @@ function NY(e) {
32405
32576
  }
32406
32577
  r.appendChild(i);
32407
32578
  let o = document.createElement("div");
32408
- o.className = UJ();
32409
- let s = OY(n.policyType), c = document.createElement("span");
32410
- c.className = WJ(), c.textContent = s?.label ?? n.policyType;
32579
+ o.className = rY();
32580
+ let s = HY(n.policyType), c = document.createElement("span");
32581
+ c.className = iY(), c.textContent = s?.label ?? n.policyType;
32411
32582
  let l = document.createElement("span");
32412
- l.className = `${WJ()} ${n.source}`, l.textContent = n.source, o.appendChild(c), o.appendChild(l), r.appendChild(o), d.appendChild(r);
32583
+ l.className = `${iY()} ${n.source}`, l.textContent = n.source, o.appendChild(c), o.appendChild(l), r.appendChild(o), d.appendChild(r);
32413
32584
  }
32414
32585
  a.appendChild(c), a.appendChild(d), m.appendChild(a);
32415
32586
  }
@@ -32421,12 +32592,12 @@ function NY(e) {
32421
32592
  }
32422
32593
  //#endregion
32423
32594
  //#region src/components/policy-catalog/domain/utils.ts
32424
- function PY(e) {
32595
+ function JY(e) {
32425
32596
  return structuredClone(e);
32426
32597
  }
32427
32598
  //#endregion
32428
32599
  //#region src/components/policy-catalog/engine/policyCatalogStore.ts
32429
- var FY = class {
32600
+ var YY = class {
32430
32601
  constructor(e) {
32431
32602
  this.listeners = /* @__PURE__ */ new Set(), this.localIdCounter = 0, this.config = e;
32432
32603
  let t = new Set((e.builtinPolicies ?? []).map((e) => e.id)), n = [...e.builtinPolicies ?? [], ...(e.userPolicies ?? []).filter((e) => !t.has(e.id))];
@@ -32457,7 +32628,7 @@ var FY = class {
32457
32628
  let t = this.state.catalog.find((t) => t.id === e);
32458
32629
  t && (this.setState({
32459
32630
  selectedId: e,
32460
- editorDraft: PY(t.policyData),
32631
+ editorDraft: JY(t.policyData),
32461
32632
  editedName: t.name,
32462
32633
  dirty: !1
32463
32634
  }), this.config.onSelectionChanged?.(t));
@@ -32496,7 +32667,7 @@ var FY = class {
32496
32667
  let t = {
32497
32668
  ...e,
32498
32669
  name: this.state.editedName ?? e.name,
32499
- policyData: PY(this.state.editorDraft)
32670
+ policyData: JY(this.state.editorDraft)
32500
32671
  }, n = this.state.catalog.map((e) => e.id === t.id ? t : e);
32501
32672
  this.state = {
32502
32673
  ...this.state,
@@ -32507,7 +32678,7 @@ var FY = class {
32507
32678
  resetDraft() {
32508
32679
  let e = this.getSelectedItem();
32509
32680
  e && this.setState({
32510
- editorDraft: PY(e.policyData),
32681
+ editorDraft: JY(e.policyData),
32511
32682
  editedName: e.name,
32512
32683
  dirty: !1
32513
32684
  });
@@ -32517,7 +32688,7 @@ var FY = class {
32517
32688
  if (!e) return;
32518
32689
  let t = {
32519
32690
  ...e,
32520
- policyData: this.state.editorDraft ? PY(this.state.editorDraft) : PY(e.policyData)
32691
+ policyData: this.state.editorDraft ? JY(this.state.editorDraft) : JY(e.policyData)
32521
32692
  };
32522
32693
  this.config.onPolicyApplied?.(t);
32523
32694
  }
@@ -32528,7 +32699,7 @@ var FY = class {
32528
32699
  policyType: e,
32529
32700
  source: "user",
32530
32701
  description: "",
32531
- policyData: kY(e)
32702
+ policyData: UY(e)
32532
32703
  };
32533
32704
  return this.appendAndSelect(n), this.runCreateAndReconcile(n), t;
32534
32705
  }
@@ -32541,7 +32712,7 @@ var FY = class {
32541
32712
  policyType: t.policyType,
32542
32713
  source: "user",
32543
32714
  description: t.description,
32544
- policyData: PY(t.policyData)
32715
+ policyData: JY(t.policyData)
32545
32716
  };
32546
32717
  return this.appendAndSelect(r), this.runCreateAndReconcile(r), n;
32547
32718
  }
@@ -32594,7 +32765,7 @@ var FY = class {
32594
32765
  ...this.state,
32595
32766
  catalog: t,
32596
32767
  selectedId: e.id,
32597
- editorDraft: PY(e.policyData),
32768
+ editorDraft: JY(e.policyData),
32598
32769
  editedName: e.name,
32599
32770
  dirty: !1
32600
32771
  }, this.emit(), this.config.onSelectionChanged?.(e);
@@ -32614,43 +32785,43 @@ var FY = class {
32614
32785
  };
32615
32786
  //#endregion
32616
32787
  //#region src/components/policy-catalog/ui/editorShell.ts
32617
- function IY(e) {
32788
+ function XY(e) {
32618
32789
  let t = document.createElement("div");
32619
- t.className = kJ();
32790
+ t.className = UJ();
32620
32791
  let n = document.createElement("div");
32621
- n.className = GJ();
32792
+ n.className = aY();
32622
32793
  let r = document.createElement("div");
32623
- r.className = KJ();
32794
+ r.className = oY();
32624
32795
  let i = document.createElement("div");
32625
- i.className = qJ();
32796
+ i.className = sY();
32626
32797
  let a = document.createElement("div");
32627
- a.className = jJ();
32798
+ a.className = GJ();
32628
32799
  let o = document.createElement("input");
32629
- o.type = "text", o.className = `${jJ()} pc-name-input`, o.setAttribute("aria-label", "Policy name"), o.setAttribute("data-testid", "pc-name-input"), o.placeholder = "Policy name", o.addEventListener("input", () => e.onRename(o.value));
32800
+ o.type = "text", o.className = `${GJ()} pc-name-input`, o.setAttribute("aria-label", "Policy name"), o.setAttribute("data-testid", "pc-name-input"), o.placeholder = "Policy name", o.addEventListener("input", () => e.onRename(o.value));
32630
32801
  let s = document.createElement("span");
32631
- s.className = WJ();
32802
+ s.className = iY();
32632
32803
  let c = document.createElement("span");
32633
- c.className = WJ(), c.textContent = "read-only", c.style.display = "none";
32804
+ c.className = iY(), c.textContent = "read-only", c.style.display = "none";
32634
32805
  let l = document.createElement("div");
32635
- l.className = ZJ(), l.style.display = "none", l.title = "Unsaved changes", i.appendChild(l), i.appendChild(a), i.appendChild(o), i.appendChild(s), i.appendChild(c);
32806
+ l.className = dY(), l.style.display = "none", l.title = "Unsaved changes", i.appendChild(l), i.appendChild(a), i.appendChild(o), i.appendChild(s), i.appendChild(c);
32636
32807
  let u = document.createElement("div");
32637
- u.className = JJ();
32808
+ u.className = cY();
32638
32809
  let d = document.createElement("button");
32639
- d.className = YJ(), d.textContent = "Reset", d.addEventListener("click", () => e.onReset());
32810
+ d.className = lY(), d.textContent = "Reset", d.addEventListener("click", () => e.onReset());
32640
32811
  let f = document.createElement("button");
32641
- f.className = XJ(), f.textContent = "Save", f.addEventListener("click", () => e.onSave());
32812
+ f.className = uY(), f.textContent = "Save", f.addEventListener("click", () => e.onSave());
32642
32813
  let p = document.createElement("button");
32643
- p.className = YJ(), p.textContent = "Apply", p.addEventListener("click", () => e.onApply());
32814
+ p.className = lY(), p.textContent = "Apply", p.addEventListener("click", () => e.onApply());
32644
32815
  let m = document.createElement("button");
32645
- m.className = YJ(), m.textContent = "Duplicate", m.addEventListener("click", () => e.onDuplicate()), u.appendChild(d), u.appendChild(f), u.appendChild(p), u.appendChild(m);
32816
+ m.className = lY(), m.textContent = "Duplicate", m.addEventListener("click", () => e.onDuplicate()), u.appendChild(d), u.appendChild(f), u.appendChild(p), u.appendChild(m);
32646
32817
  let h = document.createElement("div");
32647
- h.className = JJ();
32818
+ h.className = cY();
32648
32819
  let g = document.createElement("button");
32649
- g.className = XJ(), g.textContent = "Use as Template", g.addEventListener("click", () => e.onDuplicate()), h.appendChild(g), r.appendChild(i), r.appendChild(u), r.appendChild(h);
32820
+ g.className = uY(), g.textContent = "Use as Template", g.addEventListener("click", () => e.onDuplicate()), h.appendChild(g), r.appendChild(i), r.appendChild(u), r.appendChild(h);
32650
32821
  let _ = document.createElement("div");
32651
- _.className = QJ(), n.appendChild(r), n.appendChild(_);
32822
+ _.className = fY(), n.appendChild(r), n.appendChild(_);
32652
32823
  let v = document.createElement("div");
32653
- v.className = $J(), v.textContent = "Select a policy to edit", t.appendChild(n), t.appendChild(v);
32824
+ v.className = pY(), v.textContent = "Select a policy to edit", t.appendChild(n), t.appendChild(v);
32654
32825
  function y(e) {
32655
32826
  let t = e.selectedId !== null;
32656
32827
  if (n.style.display = t ? "flex" : "none", v.style.display = t ? "none" : "flex", !t) return;
@@ -32658,7 +32829,7 @@ function IY(e) {
32658
32829
  if (!r) return;
32659
32830
  let i = r.source === "builtin", d = e.editedName ?? r.name;
32660
32831
  a.textContent = d, document.activeElement !== o && o.value !== d && (o.value = d);
32661
- let f = OY(r.policyType);
32832
+ let f = HY(r.policyType);
32662
32833
  s.textContent = f?.label ?? r.policyType, a.style.display = i ? "" : "none", o.style.display = i ? "none" : "", c.style.display = i ? "" : "none", u.style.display = i ? "none" : "flex", h.style.display = i ? "flex" : "none", l.style.display = !i && e.dirty ? "block" : "none";
32663
32834
  }
32664
32835
  return {
@@ -32669,13 +32840,13 @@ function IY(e) {
32669
32840
  }
32670
32841
  //#endregion
32671
32842
  //#region src/components/policy-catalog/ui/jsonEditor.ts
32672
- function LY(e) {
32843
+ function ZY(e) {
32673
32844
  let t = document.createElement("div");
32674
- t.className = eY();
32845
+ t.className = mY();
32675
32846
  let n = document.createElement("textarea");
32676
32847
  n.value = JSON.stringify(e.initialData, null, 2);
32677
32848
  let r = document.createElement("div");
32678
- r.className = tY(), r.style.display = "none";
32849
+ r.className = hY(), r.style.display = "none";
32679
32850
  let i = { ...e.initialData };
32680
32851
  return n.addEventListener("input", () => {
32681
32852
  try {
@@ -32699,10 +32870,10 @@ function LY(e) {
32699
32870
  }
32700
32871
  //#endregion
32701
32872
  //#region src/components/policy-catalog/controller/policyCatalogControl.ts
32702
- var RY = class {
32873
+ var QY = class {
32703
32874
  constructor(e) {
32704
- this.currentEditor = null, this.container = null, this.store = new FY(e);
32705
- let t = NY({
32875
+ this.currentEditor = null, this.container = null, this.store = new YY(e);
32876
+ let t = qY({
32706
32877
  onSearchChange: (e) => this.store.setCatalogSearch(e),
32707
32878
  onGroupByChange: (e) => this.store.setCatalogGroupBy(e),
32708
32879
  onSelectPolicy: (e) => this.handleSelectPolicy(e),
@@ -32716,7 +32887,7 @@ var RY = class {
32716
32887
  this.store.deletePolicy(e), this.store.getSelectedItem() || this.destroyCurrentEditor();
32717
32888
  }
32718
32889
  });
32719
- this.editorShell = IY({
32890
+ this.editorShell = XY({
32720
32891
  onSave: () => this.store.savePolicy(),
32721
32892
  onReset: () => {
32722
32893
  this.store.resetDraft(), this.syncEditorFromStore();
@@ -32727,7 +32898,7 @@ var RY = class {
32727
32898
  e && (this.store.duplicatePolicy(e.id), this.mountEditorForSelection());
32728
32899
  },
32729
32900
  onRename: (e) => this.store.renamePolicy(e)
32730
- }), this.layout = nY({
32901
+ }), this.layout = gY({
32731
32902
  catalogPanel: t,
32732
32903
  editorShell: this.editorShell
32733
32904
  }), this.unsubscribe = this.store.subscribe((e) => {
@@ -32757,7 +32928,7 @@ var RY = class {
32757
32928
  },
32758
32929
  readonly: t
32759
32930
  };
32760
- e.policyType === "scheduling" ? this.currentEditor = QK.createEditorInstance(n) : e.policyType === "rankingPoints" ? this.currentEditor = tK.createEditorInstance(n) : e.policyType === "seeding" ? this.currentEditor = DJ.createEditorInstance(n) : e.policyType === "scoring" ? this.currentEditor = Wq.createEditorInstance(n) : this.currentEditor = LY(n), this.editorShell.bodyElement.innerHTML = "", this.editorShell.bodyElement.appendChild(this.currentEditor.element);
32931
+ e.policyType === "scheduling" ? this.currentEditor = QK.createEditorInstance(n) : e.policyType === "rankingPoints" ? this.currentEditor = tK.createEditorInstance(n) : e.policyType === "seeding" ? this.currentEditor = DJ.createEditorInstance(n) : e.policyType === "scoring" ? this.currentEditor = Wq.createEditorInstance(n) : e.policyType === "participant" ? this.currentEditor = VJ.createEditorInstance(n) : this.currentEditor = ZY(n), this.editorShell.bodyElement.innerHTML = "", this.editorShell.bodyElement.appendChild(this.currentEditor.element);
32761
32932
  }
32762
32933
  syncEditorFromStore() {
32763
32934
  let e = this.store.getState();
@@ -32769,30 +32940,30 @@ var RY = class {
32769
32940
  };
32770
32941
  //#endregion
32771
32942
  //#region src/components/policy-catalog/editors/scheduling/domain/schedulingValidation.ts
32772
- function zY(e, t, n, r) {
32943
+ function $Y(e, t, n, r) {
32773
32944
  e !== void 0 && e < 0 && r.push({
32774
32945
  severity: "error",
32775
32946
  path: t,
32776
32947
  message: n
32777
32948
  });
32778
32949
  }
32779
- function BY(e, t) {
32950
+ function eX(e, t) {
32780
32951
  if (!e.defaultTimes) return;
32781
32952
  let n = e.defaultTimes.averageTimes;
32782
- if (n) for (let e = 0; e < n.length; e++) zY(n[e].minutes.default, `defaultTimes.averageTimes[${e}].minutes.default`, "Default average time must be non-negative", t), zY(n[e].minutes.DOUBLES, `defaultTimes.averageTimes[${e}].minutes.DOUBLES`, "Doubles average time must be non-negative", t);
32953
+ if (n) for (let e = 0; e < n.length; e++) $Y(n[e].minutes.default, `defaultTimes.averageTimes[${e}].minutes.default`, "Default average time must be non-negative", t), $Y(n[e].minutes.DOUBLES, `defaultTimes.averageTimes[${e}].minutes.DOUBLES`, "Doubles average time must be non-negative", t);
32783
32954
  let r = e.defaultTimes.recoveryTimes;
32784
- if (r) for (let e = 0; e < r.length; e++) zY(r[e].minutes.default, `defaultTimes.recoveryTimes[${e}].minutes.default`, "Default recovery time must be non-negative", t);
32955
+ if (r) for (let e = 0; e < r.length; e++) $Y(r[e].minutes.default, `defaultTimes.recoveryTimes[${e}].minutes.default`, "Default recovery time must be non-negative", t);
32785
32956
  }
32786
- function VY(e, t) {
32957
+ function tX(e, t) {
32787
32958
  if (!e.defaultDailyLimits) return;
32788
32959
  let n = e.defaultDailyLimits;
32789
- zY(n.SINGLES, "defaultDailyLimits.SINGLES", "Singles daily limit must be non-negative", t), zY(n.DOUBLES, "defaultDailyLimits.DOUBLES", "Doubles daily limit must be non-negative", t), zY(n.total, "defaultDailyLimits.total", "Total daily limit must be non-negative", t);
32960
+ $Y(n.SINGLES, "defaultDailyLimits.SINGLES", "Singles daily limit must be non-negative", t), $Y(n.DOUBLES, "defaultDailyLimits.DOUBLES", "Doubles daily limit must be non-negative", t), $Y(n.total, "defaultDailyLimits.total", "Total daily limit must be non-negative", t);
32790
32961
  }
32791
- function HY(e) {
32962
+ function nX(e) {
32792
32963
  let t = [];
32793
- return BY(e, t), VY(e, t), e.matchUpAverageTimes && UY(e.matchUpAverageTimes, "matchUpAverageTimes", "averageTimes", t), e.matchUpRecoveryTimes && WY(e.matchUpRecoveryTimes, "matchUpRecoveryTimes", t), GY(e, t), t;
32964
+ return eX(e, t), tX(e, t), e.matchUpAverageTimes && rX(e.matchUpAverageTimes, "matchUpAverageTimes", "averageTimes", t), e.matchUpRecoveryTimes && iX(e.matchUpRecoveryTimes, "matchUpRecoveryTimes", t), aX(e, t), t;
32794
32965
  }
32795
- function UY(e, t, n, r) {
32966
+ function rX(e, t, n, r) {
32796
32967
  for (let i = 0; i < e.length; i++) {
32797
32968
  let a = e[i];
32798
32969
  a.matchUpFormatCodes.length || r.push({
@@ -32801,10 +32972,10 @@ function UY(e, t, n, r) {
32801
32972
  message: "At least one format code is required per format group"
32802
32973
  });
32803
32974
  let o = a[n];
32804
- if (o) for (let e = 0; e < o.length; e++) zY(o[e].minutes.default, `${t}[${i}].${n}[${e}].minutes.default`, "Time must be non-negative", r), zY(o[e].minutes.DOUBLES, `${t}[${i}].${n}[${e}].minutes.DOUBLES`, "Doubles time must be non-negative", r);
32975
+ if (o) for (let e = 0; e < o.length; e++) $Y(o[e].minutes.default, `${t}[${i}].${n}[${e}].minutes.default`, "Time must be non-negative", r), $Y(o[e].minutes.DOUBLES, `${t}[${i}].${n}[${e}].minutes.DOUBLES`, "Doubles time must be non-negative", r);
32805
32976
  }
32806
32977
  }
32807
- function WY(e, t, n) {
32978
+ function iX(e, t, n) {
32808
32979
  for (let r = 0; r < e.length; r++) {
32809
32980
  let i = e[r];
32810
32981
  i.matchUpFormatCodes.length || n.push({
@@ -32812,10 +32983,10 @@ function WY(e, t, n) {
32812
32983
  path: `${t}[${r}].matchUpFormatCodes`,
32813
32984
  message: "At least one format code is required per format group"
32814
32985
  });
32815
- for (let e = 0; e < i.recoveryTimes.length; e++) zY(i.recoveryTimes[e].minutes.default, `${t}[${r}].recoveryTimes[${e}].minutes.default`, "Recovery time must be non-negative", n), zY(i.recoveryTimes[e].minutes.DOUBLES, `${t}[${r}].recoveryTimes[${e}].minutes.DOUBLES`, "Doubles recovery time must be non-negative", n);
32986
+ for (let e = 0; e < i.recoveryTimes.length; e++) $Y(i.recoveryTimes[e].minutes.default, `${t}[${r}].recoveryTimes[${e}].minutes.default`, "Recovery time must be non-negative", n), $Y(i.recoveryTimes[e].minutes.DOUBLES, `${t}[${r}].recoveryTimes[${e}].minutes.DOUBLES`, "Doubles recovery time must be non-negative", n);
32816
32987
  }
32817
32988
  }
32818
- function GY(e, t) {
32989
+ function aX(e, t) {
32819
32990
  let n = (e, n) => {
32820
32991
  if (!e) return;
32821
32992
  let r = /* @__PURE__ */ new Map();
@@ -32829,9 +33000,9 @@ function GY(e, t) {
32829
33000
  }
32830
33001
  //#endregion
32831
33002
  //#region src/components/policy-catalog/index.ts
32832
- function KY(e, t) {
32833
- let n = new RY(e);
33003
+ function oX(e, t) {
33004
+ let n = new QY(e);
32834
33005
  return n.render(t), n;
32835
33006
  }
32836
33007
  //#endregion
32837
- export { PL as AvailabilityGrid, Yv as COMPETITIVENESS_BUCKETS, EM as COMPETITIVENESS_COLORS, Dh as COURT_SVG_RESOURCE_SUB_TYPE, aU as CompositionEditorStore, wM as DEFAULT_COMPETITIVE_BANDS, Y_ as DEFAULT_COURT_CARD_CONFIG, py as DEFAULT_DRAW_CARD_CONFIG, ab as DEFAULT_EVENT_CARD_CONFIG, LH as DEFAULT_SCHEDULE_CELL_CONFIG, Zh as DEFAULT_TOURNAMENT_CARD_CONFIG, a_ as DEFAULT_VENUE_CARD_CONFIG, cS as DrawStateManager, ob as EVENT_CARD_LIGHT_MODE_THRESHOLD, As as InlineScoringManager, Zx as MATCH_FORMATS, DM as NEUTRAL_SEGMENT_COLOR, AY as POLICY_TYPE_GROUPS, DY as POLICY_TYPE_METADATA, RY as PolicyCatalogControl, FY as PolicyCatalogStore, yI as ProfileStore, hH as SchedulePageControl, mH as SchedulePageStore, QK as SchedulingEditorControl, oK as SchedulingEditorStore, MI as SchedulingProfileControl, PB as TopologyBuilderControl, NR as TopologyStore, rU as activateScheduleCellTypeAhead, Qv as aggregateCompetitiveness, lI as applyDropCommit, Th as badmintonCourt, sP as barButton, Sh as baseballDiamond, xh as basketballCourt, PH as buildActiveStripPanel, Xh as buildCardSkeleton, ty as buildCompetitivenessBar, fy as buildCompetitivenessDonut, hv as buildCourtCard, pH as buildCourtGridSlot, jv as buildCourtSkeletonCard, AI as buildDateStrip, Ny as buildDrawCard, Qy as buildDrawSkeletonCard, Oz as buildEdgeEditor, IY as buildEditorShell, Nb as buildEventCard, Zb as buildEventSkeletonCard, Gx as buildHiveIDLogin, BW as buildInteractiveScoringShell, sI as buildIssueIndex, GF as buildIssuesPanel, LY as buildJsonEditor, QN as buildLadderChart, aH as buildMatchUpCard, cH as buildMatchUpCatalog, gz as buildNodeEditor, nY as buildPolicyCatalogLayout, NY as buildPolicyCatalogPanel, GN as buildRatingDistributionChart, TI as buildRoundCard, BF as buildRoundCatalog, fH as buildScheduleDateStrip, RH as buildScheduleGridCell, JV as buildScheduleInspectorPanel, lH as buildScheduleIssueIndex, dH as buildScheduleIssuesPanel, WV as buildSchedulePageLayout, ZK as buildSchedulingEditorPanel, CF as buildSchedulingProfileLayout, ac as buildSetScore, Hg as buildSkeletonCard, bR as buildStructureCard, Ri as buildStructureMinimap, Kv as buildTeamCard, rB as buildToolbar, iB as buildTopologyBuilderLayout, WR as buildTopologyCanvas, Cg as buildTournamentCard, DI as buildVenueBoard, E_ as buildVenueCard, U_ as buildVenueSkeletonCard, aN as burstChart, B as cModal, tc as calculateComplement, FM as competitivenessColor, Kx as completeMagicLink, ki as compositions, $V as computeBaseRoundByEvent, Ix as consumeMagicLink, TP as controlBar, Xx as courthiveComponentsVersion, FL as createAvailabilityGrid, wF as createCardPopoverManager, oW as createCompositionEditor, Ph as createCourtSvg, RW as createInlineScoringFooter, ph as createNotesEditor, KY as createPolicyCatalog, fW as createPrintCompositionEditor, iU as createSchedulePage, $K as createSchedulingEditor, NI as createSchedulingProfile, _h as destroyTipster, Pd as drawer, nP as dropDownButton, iK as emptySchedulingPolicy, Os as engineToMatchUp, Yh as extractCourtSvgSport, Jh as extractImageURL, PF as filterCatalog, QV as filterMatchUpCatalog, jY as filterPolicyCatalog, hI as findIssuesForLocator, Ih as formatAddress, nK as formatCodeLabel, Kh as formatDateRange, $g as formatFeeRange, Lh as formatVenueLocation, dN as fromFactoryDrawData, mN as fromLegacyDraw, XL as generatePreviewMatchUps, Wo as getAgeCategoryModal, qo as getCategoryModal, MM as getCompetitivenessBand, NM as getCompetitivenessFromScoreString, ws as getFlightProfileModal, oa as getGenerateTeamsModal, no as getMatchUpFormatModal, ec as getMatchWinner, Xs as getMaxAllowedScore, ea as getMockParticipantsModal, IF as getPlannedRoundKeys, OY as getPolicyTypeMeta, xR as getPortPosition, mI as getRoundAt, Ns as getScoringConfig, qs as getSetFormatForIndex, Qs as getSetWinner, pI as getVenueRounds, FF as groupCatalog, iH as groupMatchUpCatalog, MY as groupPolicyCatalog, Ch as hockeyRink, Fd as initDrawer, ZV as isCompletedStatus, Lx as isExistingUserConflict, $s as isMatchComplete, Zs as isSetComplete, Js as isSetTiebreakOnly, Ys as isSetTimed, Rv as mapCourtToCardData, ib as mapDrawDefinitionToCardData, mx as mapEventToCardData, nU as mapMatchUpToCellData, r_ as mapTournamentToCardData, J_ as mapVenueToCardData, GV as matchUpLabel, qV as matchUpSearchKey, _I as maxSeverity, X_ as mergeCourtCardConfig, my as mergeDrawCardConfig, sb as mergeEventCardConfig, Qh as mergeTournamentCardConfig, o_ as mergeVenueCardConfig, Ym as notesToolbar, fa as openCompositionEditorModal, ma as openScheduleCellConfigModal, Eh as padelCourt, KV as participantLabel, wh as pickleballCourt, Qx as renderButtons, yi as renderContainer, jn as renderField, Ui as renderForm, Es as renderInlineMatchUp, hi as renderMatchUp, mh as renderMenu, An as renderOptions, Ar as renderParticipant, Rn as renderParticipantInput, gi as renderRound, Mr as renderRoundHeader, Bi as renderSchematicMatchUp, Vi as renderSchematicRound, Hi as renderSchematicStructure, OW as renderScorecard, _i as renderStructure, kW as renderTeamVsHeader, Fx as requestMagicLink, Fs as resetScoringConfig, Mh as resolveCourtSport, ex as resolveEventStatus, ji as resolvePublishedComposition, qg as resolveTournamentStatus, Cu as scoringModal, iP as selectItem, Ps as setScoringConfig, nc as shouldApplySmartComplement, ic as shouldCreateNextSet, rc as shouldShowTiebreak, ML as showCourtAvailabilityModal, Nx as signup, jh as sportFromMatchUpFormat, wB as standardTemplates, fS as syncClearVisibility, bh as tennisCourt, vh as tipster, hP as toggleOverlay, ZB as topologyToDrawOptions, $v as totalBuckets, Zm as updateHeadingSelect, AW as updateTieScore, Xm as updateToolbarState, YF as validateProfile, HY as validateSchedulingPolicy, Rz as validateTopology, Dn as validator, sS as validators, Px as verifyExisting, dS as wrapSearchWithClear };
33008
+ export { PL as AvailabilityGrid, Yv as COMPETITIVENESS_BUCKETS, EM as COMPETITIVENESS_COLORS, Dh as COURT_SVG_RESOURCE_SUB_TYPE, aU as CompositionEditorStore, wM as DEFAULT_COMPETITIVE_BANDS, Y_ as DEFAULT_COURT_CARD_CONFIG, py as DEFAULT_DRAW_CARD_CONFIG, ab as DEFAULT_EVENT_CARD_CONFIG, LH as DEFAULT_SCHEDULE_CELL_CONFIG, Zh as DEFAULT_TOURNAMENT_CARD_CONFIG, a_ as DEFAULT_VENUE_CARD_CONFIG, cS as DrawStateManager, ob as EVENT_CARD_LIGHT_MODE_THRESHOLD, As as InlineScoringManager, Zx as MATCH_FORMATS, DM as NEUTRAL_SEGMENT_COLOR, WY as POLICY_TYPE_GROUPS, VY as POLICY_TYPE_METADATA, QY as PolicyCatalogControl, YY as PolicyCatalogStore, yI as ProfileStore, hH as SchedulePageControl, mH as SchedulePageStore, QK as SchedulingEditorControl, oK as SchedulingEditorStore, MI as SchedulingProfileControl, PB as TopologyBuilderControl, NR as TopologyStore, rU as activateScheduleCellTypeAhead, Qv as aggregateCompetitiveness, lI as applyDropCommit, Th as badmintonCourt, sP as barButton, Sh as baseballDiamond, xh as basketballCourt, PH as buildActiveStripPanel, Xh as buildCardSkeleton, ty as buildCompetitivenessBar, fy as buildCompetitivenessDonut, hv as buildCourtCard, pH as buildCourtGridSlot, jv as buildCourtSkeletonCard, AI as buildDateStrip, Ny as buildDrawCard, Qy as buildDrawSkeletonCard, Oz as buildEdgeEditor, XY as buildEditorShell, Nb as buildEventCard, Zb as buildEventSkeletonCard, Gx as buildHiveIDLogin, BW as buildInteractiveScoringShell, sI as buildIssueIndex, GF as buildIssuesPanel, ZY as buildJsonEditor, QN as buildLadderChart, aH as buildMatchUpCard, cH as buildMatchUpCatalog, gz as buildNodeEditor, gY as buildPolicyCatalogLayout, qY as buildPolicyCatalogPanel, GN as buildRatingDistributionChart, TI as buildRoundCard, BF as buildRoundCatalog, fH as buildScheduleDateStrip, RH as buildScheduleGridCell, JV as buildScheduleInspectorPanel, lH as buildScheduleIssueIndex, dH as buildScheduleIssuesPanel, WV as buildSchedulePageLayout, ZK as buildSchedulingEditorPanel, CF as buildSchedulingProfileLayout, ac as buildSetScore, Hg as buildSkeletonCard, bR as buildStructureCard, Ri as buildStructureMinimap, Kv as buildTeamCard, rB as buildToolbar, iB as buildTopologyBuilderLayout, WR as buildTopologyCanvas, Cg as buildTournamentCard, DI as buildVenueBoard, E_ as buildVenueCard, U_ as buildVenueSkeletonCard, aN as burstChart, B as cModal, tc as calculateComplement, FM as competitivenessColor, Kx as completeMagicLink, ki as compositions, $V as computeBaseRoundByEvent, Ix as consumeMagicLink, TP as controlBar, Xx as courthiveComponentsVersion, FL as createAvailabilityGrid, wF as createCardPopoverManager, oW as createCompositionEditor, Ph as createCourtSvg, RW as createInlineScoringFooter, ph as createNotesEditor, oX as createPolicyCatalog, fW as createPrintCompositionEditor, iU as createSchedulePage, $K as createSchedulingEditor, NI as createSchedulingProfile, _h as destroyTipster, Pd as drawer, nP as dropDownButton, iK as emptySchedulingPolicy, Os as engineToMatchUp, Yh as extractCourtSvgSport, Jh as extractImageURL, PF as filterCatalog, QV as filterMatchUpCatalog, GY as filterPolicyCatalog, hI as findIssuesForLocator, Ih as formatAddress, nK as formatCodeLabel, Kh as formatDateRange, $g as formatFeeRange, Lh as formatVenueLocation, dN as fromFactoryDrawData, mN as fromLegacyDraw, XL as generatePreviewMatchUps, Wo as getAgeCategoryModal, qo as getCategoryModal, MM as getCompetitivenessBand, NM as getCompetitivenessFromScoreString, ws as getFlightProfileModal, oa as getGenerateTeamsModal, no as getMatchUpFormatModal, ec as getMatchWinner, Xs as getMaxAllowedScore, ea as getMockParticipantsModal, IF as getPlannedRoundKeys, HY as getPolicyTypeMeta, xR as getPortPosition, mI as getRoundAt, Ns as getScoringConfig, qs as getSetFormatForIndex, Qs as getSetWinner, pI as getVenueRounds, FF as groupCatalog, iH as groupMatchUpCatalog, KY as groupPolicyCatalog, Ch as hockeyRink, Fd as initDrawer, ZV as isCompletedStatus, Lx as isExistingUserConflict, $s as isMatchComplete, Zs as isSetComplete, Js as isSetTiebreakOnly, Ys as isSetTimed, Rv as mapCourtToCardData, ib as mapDrawDefinitionToCardData, mx as mapEventToCardData, nU as mapMatchUpToCellData, r_ as mapTournamentToCardData, J_ as mapVenueToCardData, GV as matchUpLabel, qV as matchUpSearchKey, _I as maxSeverity, X_ as mergeCourtCardConfig, my as mergeDrawCardConfig, sb as mergeEventCardConfig, Qh as mergeTournamentCardConfig, o_ as mergeVenueCardConfig, Ym as notesToolbar, fa as openCompositionEditorModal, ma as openScheduleCellConfigModal, Eh as padelCourt, KV as participantLabel, wh as pickleballCourt, Qx as renderButtons, yi as renderContainer, jn as renderField, Ui as renderForm, Es as renderInlineMatchUp, hi as renderMatchUp, mh as renderMenu, An as renderOptions, Ar as renderParticipant, Rn as renderParticipantInput, gi as renderRound, Mr as renderRoundHeader, Bi as renderSchematicMatchUp, Vi as renderSchematicRound, Hi as renderSchematicStructure, OW as renderScorecard, _i as renderStructure, kW as renderTeamVsHeader, Fx as requestMagicLink, Fs as resetScoringConfig, Mh as resolveCourtSport, ex as resolveEventStatus, ji as resolvePublishedComposition, qg as resolveTournamentStatus, Cu as scoringModal, iP as selectItem, Ps as setScoringConfig, nc as shouldApplySmartComplement, ic as shouldCreateNextSet, rc as shouldShowTiebreak, ML as showCourtAvailabilityModal, Nx as signup, jh as sportFromMatchUpFormat, wB as standardTemplates, fS as syncClearVisibility, bh as tennisCourt, vh as tipster, hP as toggleOverlay, ZB as topologyToDrawOptions, $v as totalBuckets, Zm as updateHeadingSelect, AW as updateTieScore, Xm as updateToolbarState, YF as validateProfile, nX as validateSchedulingPolicy, Rz as validateTopology, Dn as validator, sS as validators, Px as verifyExisting, dS as wrapSearchWithClear };