courthive-components 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/components/policy-catalog/editors/seeding/domain/seedingProjections.d.ts +10 -0
- package/dist/components/policy-catalog/editors/seeding/index.d.ts +8 -0
- package/dist/components/policy-catalog/editors/seeding/sections/drawTypeOverridesSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/seeding/sections/flagsSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/seeding/sections/profileSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/seeding/sections/thresholdsSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/seeding/seedingEditorControl.d.ts +20 -0
- package/dist/components/policy-catalog/editors/seeding/seedingEditorPanel.d.ts +6 -0
- package/dist/components/policy-catalog/editors/seeding/seedingEditorStore.d.ts +26 -0
- package/dist/components/policy-catalog/editors/seeding/styles.d.ts +24 -0
- package/dist/components/policy-catalog/editors/seeding/types.d.ts +41 -0
- package/dist/components/policy-catalog/index.d.ts +2 -0
- package/dist/courthive-components.css +1 -1
- package/dist/courthive-components.es.js +608 -119
- package/dist/courthive-components.umd.js +2 -2
- package/package.json +3 -3
|
@@ -14608,8 +14608,8 @@ function zx(e) {
|
|
|
14608
14608
|
}
|
|
14609
14609
|
var Bx = {
|
|
14610
14610
|
name: "courthive-components",
|
|
14611
|
-
packageManager: "pnpm@11.5.
|
|
14612
|
-
version: "3.0
|
|
14611
|
+
packageManager: "pnpm@11.5.1",
|
|
14612
|
+
version: "3.1.0",
|
|
14613
14613
|
engines: { node: ">=22" },
|
|
14614
14614
|
description: "Components for competitions projects",
|
|
14615
14615
|
files: ["dist"],
|
|
@@ -14719,7 +14719,7 @@ var Bx = {
|
|
|
14719
14719
|
"focus-trap": "^8.0.0",
|
|
14720
14720
|
"timepicker-ui": "^4.1.2",
|
|
14721
14721
|
"tippy.js": "6.3.7",
|
|
14722
|
-
"tods-competition-factory": "5.2.
|
|
14722
|
+
"tods-competition-factory": "5.2.3",
|
|
14723
14723
|
"vanillajs-datepicker": "1.3.4"
|
|
14724
14724
|
}
|
|
14725
14725
|
};
|
|
@@ -29551,13 +29551,502 @@ function tW(e, t) {
|
|
|
29551
29551
|
return n.render(t), n;
|
|
29552
29552
|
}
|
|
29553
29553
|
//#endregion
|
|
29554
|
-
//#region src/components/policy-catalog/
|
|
29555
|
-
var nW =
|
|
29554
|
+
//#region src/components/policy-catalog/editors/seeding/domain/seedingProjections.ts
|
|
29555
|
+
var nW = [
|
|
29556
|
+
{
|
|
29557
|
+
value: "SEPARATE",
|
|
29558
|
+
label: "Separate",
|
|
29559
|
+
description: "Each seed placed in its own section of the draw"
|
|
29560
|
+
},
|
|
29561
|
+
{
|
|
29562
|
+
value: "WATERFALL",
|
|
29563
|
+
label: "Waterfall",
|
|
29564
|
+
description: "Seeds cascade down section by section"
|
|
29565
|
+
},
|
|
29566
|
+
{
|
|
29567
|
+
value: "CLUSTER",
|
|
29568
|
+
label: "Cluster",
|
|
29569
|
+
description: "Seeds grouped in clusters (e.g. 5-8 together)"
|
|
29570
|
+
}
|
|
29571
|
+
], rW = [
|
|
29572
|
+
"SINGLE_ELIMINATION",
|
|
29573
|
+
"DOUBLE_ELIMINATION",
|
|
29574
|
+
"ROUND_ROBIN",
|
|
29575
|
+
"ROUND_ROBIN_WITH_PLAYOFF",
|
|
29576
|
+
"FEED_IN",
|
|
29577
|
+
"FEED_IN_CHAMPIONSHIP",
|
|
29578
|
+
"FEED_IN_CHAMPIONSHIP_TO_SF",
|
|
29579
|
+
"FEED_IN_CHAMPIONSHIP_TO_QF",
|
|
29580
|
+
"FEED_IN_CHAMPIONSHIP_TO_R16",
|
|
29581
|
+
"FIRST_MATCH_LOSER_CONSOLATION",
|
|
29582
|
+
"CURTIS_CONSOLATION",
|
|
29583
|
+
"COMPASS",
|
|
29584
|
+
"OLYMPIC"
|
|
29585
|
+
];
|
|
29586
|
+
function iW() {
|
|
29587
|
+
return {
|
|
29588
|
+
policyName: "",
|
|
29589
|
+
seedingProfile: { positioning: "SEPARATE" },
|
|
29590
|
+
validSeedPositions: { ignore: !0 },
|
|
29591
|
+
duplicateSeedNumbers: !0,
|
|
29592
|
+
drawSizeProgression: !0,
|
|
29593
|
+
seedsCountThresholds: [
|
|
29594
|
+
{
|
|
29595
|
+
drawSize: 4,
|
|
29596
|
+
minimumParticipantCount: 3,
|
|
29597
|
+
seedsCount: 2
|
|
29598
|
+
},
|
|
29599
|
+
{
|
|
29600
|
+
drawSize: 16,
|
|
29601
|
+
minimumParticipantCount: 12,
|
|
29602
|
+
seedsCount: 4
|
|
29603
|
+
},
|
|
29604
|
+
{
|
|
29605
|
+
drawSize: 32,
|
|
29606
|
+
minimumParticipantCount: 24,
|
|
29607
|
+
seedsCount: 8
|
|
29608
|
+
},
|
|
29609
|
+
{
|
|
29610
|
+
drawSize: 64,
|
|
29611
|
+
minimumParticipantCount: 48,
|
|
29612
|
+
seedsCount: 16
|
|
29613
|
+
}
|
|
29614
|
+
]
|
|
29615
|
+
};
|
|
29616
|
+
}
|
|
29617
|
+
//#endregion
|
|
29618
|
+
//#region src/components/policy-catalog/editors/seeding/seedingEditorStore.ts
|
|
29619
|
+
function aW(e) {
|
|
29620
|
+
return structuredClone(e);
|
|
29621
|
+
}
|
|
29622
|
+
var oW = class {
|
|
29623
|
+
constructor(e) {
|
|
29624
|
+
this.listeners = /* @__PURE__ */ new Set(), this.config = e, this.state = {
|
|
29625
|
+
draft: aW(e.initialPolicy ?? iW()),
|
|
29626
|
+
expandedSections: new Set([
|
|
29627
|
+
"profile",
|
|
29628
|
+
"flags",
|
|
29629
|
+
"thresholds",
|
|
29630
|
+
"drawTypeOverrides"
|
|
29631
|
+
]),
|
|
29632
|
+
dirty: !1
|
|
29633
|
+
};
|
|
29634
|
+
}
|
|
29635
|
+
getState() {
|
|
29636
|
+
return this.state;
|
|
29637
|
+
}
|
|
29638
|
+
getData() {
|
|
29639
|
+
return aW(this.state.draft);
|
|
29640
|
+
}
|
|
29641
|
+
setData(e) {
|
|
29642
|
+
this.state = {
|
|
29643
|
+
...this.state,
|
|
29644
|
+
draft: aW(e),
|
|
29645
|
+
dirty: !1
|
|
29646
|
+
}, this.emit();
|
|
29647
|
+
}
|
|
29648
|
+
toggleSection(e) {
|
|
29649
|
+
let t = new Set(this.state.expandedSections);
|
|
29650
|
+
t.has(e) ? t.delete(e) : t.add(e), this.state = {
|
|
29651
|
+
...this.state,
|
|
29652
|
+
expandedSections: t
|
|
29653
|
+
}, this.emit();
|
|
29654
|
+
}
|
|
29655
|
+
setPolicyName(e) {
|
|
29656
|
+
let t = aW(this.state.draft);
|
|
29657
|
+
t.policyName = e, this.commitDraft(t);
|
|
29658
|
+
}
|
|
29659
|
+
setPositioning(e) {
|
|
29660
|
+
let t = aW(this.state.draft);
|
|
29661
|
+
t.seedingProfile ??= {}, t.seedingProfile.positioning = e, this.commitDraft(t);
|
|
29662
|
+
}
|
|
29663
|
+
setValidSeedPositionsIgnore(e) {
|
|
29664
|
+
let t = aW(this.state.draft);
|
|
29665
|
+
t.validSeedPositions = { ignore: e }, this.commitDraft(t);
|
|
29666
|
+
}
|
|
29667
|
+
setDuplicateSeedNumbers(e) {
|
|
29668
|
+
let t = aW(this.state.draft);
|
|
29669
|
+
t.duplicateSeedNumbers = e, this.commitDraft(t);
|
|
29670
|
+
}
|
|
29671
|
+
setDrawSizeProgression(e) {
|
|
29672
|
+
let t = aW(this.state.draft);
|
|
29673
|
+
t.drawSizeProgression = e, this.commitDraft(t);
|
|
29674
|
+
}
|
|
29675
|
+
addThreshold() {
|
|
29676
|
+
let e = aW(this.state.draft);
|
|
29677
|
+
e.seedsCountThresholds ??= [];
|
|
29678
|
+
let t = e.seedsCountThresholds.at(-1), n = t ? t.drawSize * 2 : 4;
|
|
29679
|
+
e.seedsCountThresholds.push({
|
|
29680
|
+
drawSize: n,
|
|
29681
|
+
minimumParticipantCount: Math.max(1, Math.floor(n * .75)),
|
|
29682
|
+
seedsCount: Math.max(2, Math.floor(n / 4))
|
|
29683
|
+
}), this.commitDraft(e);
|
|
29684
|
+
}
|
|
29685
|
+
removeThreshold(e) {
|
|
29686
|
+
let t = aW(this.state.draft);
|
|
29687
|
+
t.seedsCountThresholds && (t.seedsCountThresholds.splice(e, 1), this.commitDraft(t));
|
|
29688
|
+
}
|
|
29689
|
+
setThresholdField(e, t, n) {
|
|
29690
|
+
let r = aW(this.state.draft), i = r.seedsCountThresholds?.[e];
|
|
29691
|
+
i && (i[t] = n, this.commitDraft(r));
|
|
29692
|
+
}
|
|
29693
|
+
sortThresholds() {
|
|
29694
|
+
let e = aW(this.state.draft);
|
|
29695
|
+
e.seedsCountThresholds && (e.seedsCountThresholds.sort((e, t) => e.drawSize - t.drawSize), this.commitDraft(e));
|
|
29696
|
+
}
|
|
29697
|
+
addDrawTypeOverride(e, t) {
|
|
29698
|
+
if (!e) return;
|
|
29699
|
+
let n = aW(this.state.draft);
|
|
29700
|
+
n.seedingProfile ??= {}, n.seedingProfile.drawTypes ??= {}, n.seedingProfile.drawTypes[e] = { positioning: t }, this.commitDraft(n);
|
|
29701
|
+
}
|
|
29702
|
+
removeDrawTypeOverride(e) {
|
|
29703
|
+
let t = aW(this.state.draft);
|
|
29704
|
+
t.seedingProfile?.drawTypes && (delete t.seedingProfile.drawTypes[e], Object.keys(t.seedingProfile.drawTypes).length === 0 && delete t.seedingProfile.drawTypes, this.commitDraft(t));
|
|
29705
|
+
}
|
|
29706
|
+
setDrawTypeOverridePositioning(e, t) {
|
|
29707
|
+
let n = aW(this.state.draft), r = n.seedingProfile?.drawTypes;
|
|
29708
|
+
r?.[e] && (r[e] = { positioning: t }, this.commitDraft(n));
|
|
29709
|
+
}
|
|
29710
|
+
subscribe(e) {
|
|
29711
|
+
return this.listeners.add(e), () => {
|
|
29712
|
+
this.listeners.delete(e);
|
|
29713
|
+
};
|
|
29714
|
+
}
|
|
29715
|
+
commitDraft(e) {
|
|
29716
|
+
this.state = {
|
|
29717
|
+
...this.state,
|
|
29718
|
+
draft: e,
|
|
29719
|
+
dirty: !0
|
|
29720
|
+
}, this.emit(), this.config.onChange?.(aW(e));
|
|
29721
|
+
}
|
|
29722
|
+
emit() {
|
|
29723
|
+
for (let e of this.listeners) e(this.state);
|
|
29724
|
+
}
|
|
29725
|
+
}, sW = () => "sd-editor", cW = () => "sd-section", lW = () => "sd-section-header", uW = () => "sd-section-chevron", dW = () => "sd-section-body", fW = () => "sd-field-row", pW = () => "sd-field-label", mW = () => "sd-field-input", hW = () => "sd-checkbox-row", gW = () => "sd-checkbox-desc", _W = () => "sd-radio-group", vW = () => "sd-radio-option", yW = () => "sp-btn sp-btn--sm sp-btn--outline sd-add-btn", bW = () => "sp-btn sp-btn--sm sp-btn--ghost sd-sort-btn", xW = () => "sp-btn-icon sp-btn-icon--danger sd-remove-btn", SW = () => "sd-table-wrap", CW = () => "sd-table", wW = () => "sd-number-cell-input", TW = () => "sd-empty", EW = () => "sd-actions-row", DW = () => "sd-override-row", OW = () => "sd-override-add-row", kW = () => "sd-override-drawtype", AW = () => "sd-select";
|
|
29726
|
+
//#endregion
|
|
29727
|
+
//#region src/components/policy-catalog/editors/seeding/sections/profileSection.ts
|
|
29728
|
+
function jW(e) {
|
|
29729
|
+
let t = document.createElement("div"), n = document.createElement("div");
|
|
29730
|
+
n.className = fW();
|
|
29731
|
+
let r = document.createElement("div");
|
|
29732
|
+
r.className = pW(), r.textContent = "Policy name";
|
|
29733
|
+
let i = document.createElement("input");
|
|
29734
|
+
i.type = "text", i.className = mW() + " sd-field-input--wide", i.placeholder = "e.g. USTA SEEDING", i.addEventListener("input", () => e.setPolicyName(i.value)), n.appendChild(r), n.appendChild(i), t.appendChild(n);
|
|
29735
|
+
let a = document.createElement("div");
|
|
29736
|
+
a.className = fW() + " sd-field-row--top";
|
|
29737
|
+
let o = document.createElement("div");
|
|
29738
|
+
o.className = pW(), o.textContent = "Default positioning", a.appendChild(o);
|
|
29739
|
+
let s = document.createElement("div");
|
|
29740
|
+
s.className = _W();
|
|
29741
|
+
let c = [];
|
|
29742
|
+
for (let t of nW) {
|
|
29743
|
+
let n = document.createElement("label");
|
|
29744
|
+
n.className = vW();
|
|
29745
|
+
let r = document.createElement("input");
|
|
29746
|
+
r.type = "radio", r.name = "sd-positioning", r.value = t.value, r.addEventListener("change", () => {
|
|
29747
|
+
r.checked && e.setPositioning(t.value);
|
|
29748
|
+
});
|
|
29749
|
+
let i = document.createElement("span");
|
|
29750
|
+
i.innerHTML = `<strong>${t.label}</strong><div class="sd-radio-desc">${t.description}</div>`, n.appendChild(r), n.appendChild(i), s.appendChild(n), c.push({
|
|
29751
|
+
value: t.value,
|
|
29752
|
+
input: r
|
|
29753
|
+
});
|
|
29754
|
+
}
|
|
29755
|
+
a.appendChild(s), t.appendChild(a);
|
|
29756
|
+
function l(e) {
|
|
29757
|
+
document.activeElement !== i && (i.value = e.draft.policyName ?? "");
|
|
29758
|
+
let t = e.draft.seedingProfile?.positioning;
|
|
29759
|
+
for (let e of c) e.input.checked = e.value === t;
|
|
29760
|
+
}
|
|
29761
|
+
return {
|
|
29762
|
+
element: t,
|
|
29763
|
+
update: l
|
|
29764
|
+
};
|
|
29765
|
+
}
|
|
29766
|
+
//#endregion
|
|
29767
|
+
//#region src/components/policy-catalog/editors/seeding/sections/flagsSection.ts
|
|
29768
|
+
function MW(e) {
|
|
29769
|
+
let t = document.createElement("div"), n = [
|
|
29770
|
+
{
|
|
29771
|
+
id: "sd-valid-seed-positions-ignore",
|
|
29772
|
+
label: "Ignore valid seed positions",
|
|
29773
|
+
description: "Allow seeds to be placed at any drawPosition (rather than only canonical seeded positions).",
|
|
29774
|
+
read: (e) => e.draft.validSeedPositions?.ignore ?? !1,
|
|
29775
|
+
write: (t) => e.setValidSeedPositionsIgnore(t)
|
|
29776
|
+
},
|
|
29777
|
+
{
|
|
29778
|
+
id: "sd-duplicate-seed-numbers",
|
|
29779
|
+
label: "Allow duplicate seed numbers",
|
|
29780
|
+
description: "Permit shared seed numbers (e.g. multiple #5 seeds in CLUSTER positioning).",
|
|
29781
|
+
read: (e) => e.draft.duplicateSeedNumbers ?? !1,
|
|
29782
|
+
write: (t) => e.setDuplicateSeedNumbers(t)
|
|
29783
|
+
},
|
|
29784
|
+
{
|
|
29785
|
+
id: "sd-draw-size-progression",
|
|
29786
|
+
label: "Draw size progression",
|
|
29787
|
+
description: "Apply thresholds at or below the matched draw size, instead of requiring an exact match.",
|
|
29788
|
+
read: (e) => e.draft.drawSizeProgression ?? !1,
|
|
29789
|
+
write: (t) => e.setDrawSizeProgression(t)
|
|
29790
|
+
}
|
|
29791
|
+
], r = [];
|
|
29792
|
+
for (let e of n) {
|
|
29793
|
+
let n = document.createElement("div");
|
|
29794
|
+
n.className = hW();
|
|
29795
|
+
let i = document.createElement("input");
|
|
29796
|
+
i.type = "checkbox", i.id = e.id, i.addEventListener("change", () => e.write(i.checked));
|
|
29797
|
+
let a = document.createElement("label");
|
|
29798
|
+
a.htmlFor = e.id, a.textContent = e.label;
|
|
29799
|
+
let o = document.createElement("div");
|
|
29800
|
+
o.className = gW(), o.textContent = e.description;
|
|
29801
|
+
let s = document.createElement("div");
|
|
29802
|
+
s.appendChild(a), s.appendChild(o), n.appendChild(i), n.appendChild(s), t.appendChild(n), r.push({
|
|
29803
|
+
def: e,
|
|
29804
|
+
input: i
|
|
29805
|
+
});
|
|
29806
|
+
}
|
|
29807
|
+
function i(e) {
|
|
29808
|
+
for (let t of r) t.input.checked = t.def.read(e);
|
|
29809
|
+
}
|
|
29810
|
+
return {
|
|
29811
|
+
element: t,
|
|
29812
|
+
update: i
|
|
29813
|
+
};
|
|
29814
|
+
}
|
|
29815
|
+
//#endregion
|
|
29816
|
+
//#region src/components/policy-catalog/editors/seeding/sections/thresholdsSection.ts
|
|
29817
|
+
var NW = [
|
|
29818
|
+
{
|
|
29819
|
+
field: "drawSize",
|
|
29820
|
+
label: "Draw size",
|
|
29821
|
+
min: 2,
|
|
29822
|
+
placeholder: "32"
|
|
29823
|
+
},
|
|
29824
|
+
{
|
|
29825
|
+
field: "minimumParticipantCount",
|
|
29826
|
+
label: "Min participants",
|
|
29827
|
+
min: 0,
|
|
29828
|
+
placeholder: "24"
|
|
29829
|
+
},
|
|
29830
|
+
{
|
|
29831
|
+
field: "seedsCount",
|
|
29832
|
+
label: "Seeds",
|
|
29833
|
+
min: 0,
|
|
29834
|
+
placeholder: "8"
|
|
29835
|
+
}
|
|
29836
|
+
];
|
|
29837
|
+
function PW(e) {
|
|
29838
|
+
let t = document.createElement("div"), n = document.createElement("div");
|
|
29839
|
+
n.className = SW();
|
|
29840
|
+
let r = document.createElement("table");
|
|
29841
|
+
r.className = CW();
|
|
29842
|
+
let i = document.createElement("thead"), a = document.createElement("tr");
|
|
29843
|
+
for (let e of NW) {
|
|
29844
|
+
let t = document.createElement("th");
|
|
29845
|
+
t.textContent = e.label, a.appendChild(t);
|
|
29846
|
+
}
|
|
29847
|
+
let o = document.createElement("th");
|
|
29848
|
+
o.setAttribute("aria-label", "Actions"), a.appendChild(o), i.appendChild(a), r.appendChild(i);
|
|
29849
|
+
let s = document.createElement("tbody");
|
|
29850
|
+
r.appendChild(s), n.appendChild(r), t.appendChild(n);
|
|
29851
|
+
let c = document.createElement("div");
|
|
29852
|
+
c.className = TW(), c.textContent = "No seed-count thresholds defined. Add a row to configure seeds per draw size.", t.appendChild(c);
|
|
29853
|
+
let l = document.createElement("div");
|
|
29854
|
+
l.className = EW();
|
|
29855
|
+
let u = document.createElement("button");
|
|
29856
|
+
u.type = "button", u.className = yW(), u.textContent = "+ Add threshold", u.addEventListener("click", () => e.addThreshold());
|
|
29857
|
+
let d = document.createElement("button");
|
|
29858
|
+
d.type = "button", d.className = bW(), d.textContent = "Sort by draw size", d.addEventListener("click", () => e.sortThresholds()), l.appendChild(u), l.appendChild(d), t.appendChild(l);
|
|
29859
|
+
function f(t) {
|
|
29860
|
+
let n = t.draft.seedsCountThresholds ?? [];
|
|
29861
|
+
if (s.innerHTML = "", n.length === 0) {
|
|
29862
|
+
r.style.display = "none", c.style.display = "block", d.disabled = !0;
|
|
29863
|
+
return;
|
|
29864
|
+
}
|
|
29865
|
+
r.style.display = "", c.style.display = "none", d.disabled = n.length < 2;
|
|
29866
|
+
for (let t = 0; t < n.length; t++) {
|
|
29867
|
+
let r = n[t], i = document.createElement("tr");
|
|
29868
|
+
for (let n of NW) {
|
|
29869
|
+
let a = document.createElement("td"), o = document.createElement("input");
|
|
29870
|
+
o.type = "number", o.min = String(n.min), o.className = wW(), o.value = String(r[n.field]), n.placeholder && (o.placeholder = n.placeholder);
|
|
29871
|
+
let s = t, c = n.field;
|
|
29872
|
+
o.addEventListener("change", () => {
|
|
29873
|
+
let t = parseInt(o.value, 10);
|
|
29874
|
+
!isNaN(t) && t >= n.min ? e.setThresholdField(s, c, t) : o.value = String(r[n.field]);
|
|
29875
|
+
}), a.appendChild(o), i.appendChild(a);
|
|
29876
|
+
}
|
|
29877
|
+
let a = document.createElement("td"), o = document.createElement("button");
|
|
29878
|
+
o.type = "button", o.className = xW(), o.setAttribute("aria-label", `Remove threshold row ${t + 1}`), o.textContent = "×";
|
|
29879
|
+
let c = t;
|
|
29880
|
+
o.addEventListener("click", () => e.removeThreshold(c)), a.appendChild(o), i.appendChild(a), s.appendChild(i);
|
|
29881
|
+
}
|
|
29882
|
+
}
|
|
29883
|
+
return {
|
|
29884
|
+
element: t,
|
|
29885
|
+
update: f
|
|
29886
|
+
};
|
|
29887
|
+
}
|
|
29888
|
+
//#endregion
|
|
29889
|
+
//#region src/components/policy-catalog/editors/seeding/sections/drawTypeOverridesSection.ts
|
|
29890
|
+
function FW(e, t) {
|
|
29891
|
+
let n = document.createElement("select");
|
|
29892
|
+
n.className = AW();
|
|
29893
|
+
for (let e of nW) {
|
|
29894
|
+
let t = document.createElement("option");
|
|
29895
|
+
t.value = e.value, t.textContent = e.label, n.appendChild(t);
|
|
29896
|
+
}
|
|
29897
|
+
return n.value = e, n.addEventListener("change", () => t(n.value)), n;
|
|
29898
|
+
}
|
|
29899
|
+
function IW(e, t) {
|
|
29900
|
+
let n = document.createElement("div"), r = t.drawTypes ?? rW, i = document.createElement("div");
|
|
29901
|
+
n.appendChild(i);
|
|
29902
|
+
let a = document.createElement("div");
|
|
29903
|
+
a.className = TW(), a.textContent = "No draw-type overrides. The default positioning is used for every drawType.", n.appendChild(a);
|
|
29904
|
+
let o = document.createElement("div");
|
|
29905
|
+
o.className = OW();
|
|
29906
|
+
let s = document.createElement("select");
|
|
29907
|
+
s.className = AW();
|
|
29908
|
+
function c(e) {
|
|
29909
|
+
s.innerHTML = "";
|
|
29910
|
+
let t = document.createElement("option");
|
|
29911
|
+
t.value = "", t.textContent = "Select drawType…", s.appendChild(t);
|
|
29912
|
+
for (let t of r) {
|
|
29913
|
+
if (e.has(t)) continue;
|
|
29914
|
+
let n = document.createElement("option");
|
|
29915
|
+
n.value = t, n.textContent = t, s.appendChild(n);
|
|
29916
|
+
}
|
|
29917
|
+
}
|
|
29918
|
+
let l = FW("WATERFALL", () => {}), u = document.createElement("button");
|
|
29919
|
+
u.type = "button", u.className = yW(), u.textContent = "+ Add override", u.addEventListener("click", () => {
|
|
29920
|
+
let t = s.value;
|
|
29921
|
+
t && e.addDrawTypeOverride(t, l.value);
|
|
29922
|
+
});
|
|
29923
|
+
let d = document.createElement("div");
|
|
29924
|
+
d.className = EW(), d.appendChild(s), d.appendChild(l), d.appendChild(u), o.appendChild(d), n.appendChild(o);
|
|
29925
|
+
function f(t) {
|
|
29926
|
+
let n = t.draft.seedingProfile?.drawTypes ?? {}, r = Object.entries(n);
|
|
29927
|
+
if (i.innerHTML = "", r.length === 0) a.style.display = "block";
|
|
29928
|
+
else {
|
|
29929
|
+
a.style.display = "none";
|
|
29930
|
+
for (let [t, { positioning: n }] of r) {
|
|
29931
|
+
let r = document.createElement("div");
|
|
29932
|
+
r.className = DW();
|
|
29933
|
+
let a = document.createElement("div");
|
|
29934
|
+
a.className = kW(), a.textContent = t;
|
|
29935
|
+
let o = FW(n, (n) => e.setDrawTypeOverridePositioning(t, n)), s = document.createElement("button");
|
|
29936
|
+
s.type = "button", s.className = xW(), s.setAttribute("aria-label", `Remove override for ${t}`), s.textContent = "×", s.addEventListener("click", () => e.removeDrawTypeOverride(t)), r.appendChild(a), r.appendChild(o), r.appendChild(s), i.appendChild(r);
|
|
29937
|
+
}
|
|
29938
|
+
}
|
|
29939
|
+
c(new Set(Object.keys(n))), u.disabled = s.options.length <= 1;
|
|
29940
|
+
}
|
|
29941
|
+
return {
|
|
29942
|
+
element: n,
|
|
29943
|
+
update: f
|
|
29944
|
+
};
|
|
29945
|
+
}
|
|
29946
|
+
//#endregion
|
|
29947
|
+
//#region src/components/policy-catalog/editors/seeding/seedingEditorPanel.ts
|
|
29948
|
+
function LW(e, t) {
|
|
29949
|
+
let n = document.createElement("div");
|
|
29950
|
+
n.className = sW();
|
|
29951
|
+
let r = [
|
|
29952
|
+
{
|
|
29953
|
+
id: "profile",
|
|
29954
|
+
label: "Profile",
|
|
29955
|
+
factory: () => jW(e)
|
|
29956
|
+
},
|
|
29957
|
+
{
|
|
29958
|
+
id: "flags",
|
|
29959
|
+
label: "Flags",
|
|
29960
|
+
factory: () => MW(e)
|
|
29961
|
+
},
|
|
29962
|
+
{
|
|
29963
|
+
id: "thresholds",
|
|
29964
|
+
label: "Seed Count Thresholds",
|
|
29965
|
+
factory: () => PW(e)
|
|
29966
|
+
},
|
|
29967
|
+
{
|
|
29968
|
+
id: "drawTypeOverrides",
|
|
29969
|
+
label: "Draw Type Overrides",
|
|
29970
|
+
factory: () => IW(e, t)
|
|
29971
|
+
}
|
|
29972
|
+
], i = [];
|
|
29973
|
+
for (let t of r) {
|
|
29974
|
+
let r = document.createElement("div");
|
|
29975
|
+
r.className = cW();
|
|
29976
|
+
let a = document.createElement("div");
|
|
29977
|
+
a.className = lW();
|
|
29978
|
+
let o = document.createElement("span");
|
|
29979
|
+
o.className = uW();
|
|
29980
|
+
let s = document.createElement("span");
|
|
29981
|
+
s.textContent = t.label, a.appendChild(o), a.appendChild(s), a.addEventListener("click", () => e.toggleSection(t.id));
|
|
29982
|
+
let c = document.createElement("div");
|
|
29983
|
+
c.className = dW();
|
|
29984
|
+
let l = t.factory();
|
|
29985
|
+
c.appendChild(l.element), r.appendChild(a), r.appendChild(c), n.appendChild(r), i.push({
|
|
29986
|
+
id: t.id,
|
|
29987
|
+
chevron: o,
|
|
29988
|
+
bodyEl: c,
|
|
29989
|
+
inner: l
|
|
29990
|
+
});
|
|
29991
|
+
}
|
|
29992
|
+
function a(e) {
|
|
29993
|
+
for (let t of i) {
|
|
29994
|
+
let n = e.expandedSections.has(t.id);
|
|
29995
|
+
t.chevron.textContent = n ? "▼" : "▶", t.bodyEl.style.display = n ? "block" : "none", n && t.inner.update(e);
|
|
29996
|
+
}
|
|
29997
|
+
}
|
|
29998
|
+
return {
|
|
29999
|
+
element: n,
|
|
30000
|
+
update: a
|
|
30001
|
+
};
|
|
30002
|
+
}
|
|
30003
|
+
//#endregion
|
|
30004
|
+
//#region src/components/policy-catalog/editors/seeding/seedingEditorControl.ts
|
|
30005
|
+
var RW = class e {
|
|
30006
|
+
constructor(e) {
|
|
30007
|
+
this.container = null, this.store = new oW(e), this.panel = LW(this.store, e), this.unsubscribe = this.store.subscribe((e) => {
|
|
30008
|
+
this.panel.update(e);
|
|
30009
|
+
}), this.panel.update(this.store.getState());
|
|
30010
|
+
}
|
|
30011
|
+
render(e) {
|
|
30012
|
+
this.container = e, e.appendChild(this.panel.element);
|
|
30013
|
+
}
|
|
30014
|
+
destroy() {
|
|
30015
|
+
this.unsubscribe(), this.container && this.panel.element.parentNode === this.container && this.container.removeChild(this.panel.element), this.container = null;
|
|
30016
|
+
}
|
|
30017
|
+
getData() {
|
|
30018
|
+
return this.store.getData();
|
|
30019
|
+
}
|
|
30020
|
+
setData(e) {
|
|
30021
|
+
this.store.setData(e);
|
|
30022
|
+
}
|
|
30023
|
+
getStore() {
|
|
30024
|
+
return this.store;
|
|
30025
|
+
}
|
|
30026
|
+
static createEditorInstance(t) {
|
|
30027
|
+
let n = new e({
|
|
30028
|
+
initialPolicy: t.initialData,
|
|
30029
|
+
onChange: (e) => t.onChange(e)
|
|
30030
|
+
});
|
|
30031
|
+
return {
|
|
30032
|
+
element: n.panel.element,
|
|
30033
|
+
setData(e) {
|
|
30034
|
+
n.setData(e);
|
|
30035
|
+
},
|
|
30036
|
+
getData() {
|
|
30037
|
+
return n.getData();
|
|
30038
|
+
},
|
|
30039
|
+
destroy() {
|
|
30040
|
+
n.destroy();
|
|
30041
|
+
}
|
|
30042
|
+
};
|
|
30043
|
+
}
|
|
30044
|
+
}, zW = () => "pc-layout", BW = () => "pc-panel", VW = () => "pc-panel-header", HW = () => "pc-panel-title", UW = () => "pc-panel-meta", WW = () => "pc-toolbar", GW = () => "pc-input", KW = () => "pc-select", qW = () => "pc-catalog", JW = () => "pc-group", YW = () => "pc-group-header", XW = () => "pc-group-chevron", ZW = () => "pc-group-body", QW = () => "pc-card", $W = () => "pc-card-title", eG = () => "pc-card-meta", tG = () => "pc-type-badge", nG = () => "pc-editor", rG = () => "pc-editor-header", iG = () => "pc-editor-header-left", aG = () => "pc-editor-actions", oG = () => "sp-btn sp-btn--sm", sG = () => "sp-btn sp-btn--sm sp-btn--accent", cG = () => "pc-dirty-dot", lG = () => "pc-editor-body", uG = () => "pc-empty", dG = () => "pc-json-editor", fG = () => "pc-json-error";
|
|
29556
30045
|
//#endregion
|
|
29557
30046
|
//#region src/components/policy-catalog/ui/policyCatalogLayout.ts
|
|
29558
|
-
function
|
|
30047
|
+
function pG(e) {
|
|
29559
30048
|
let t = document.createElement("div");
|
|
29560
|
-
t.className =
|
|
30049
|
+
t.className = zW(), t.appendChild(e.catalogPanel.element), t.appendChild(e.editorShell.element);
|
|
29561
30050
|
function n(t) {
|
|
29562
30051
|
e.catalogPanel.update(t), e.editorShell.update(t);
|
|
29563
30052
|
}
|
|
@@ -29568,51 +30057,51 @@ function AW(e) {
|
|
|
29568
30057
|
}
|
|
29569
30058
|
//#endregion
|
|
29570
30059
|
//#region src/components/policy-catalog/domain/policyDefaults.ts
|
|
29571
|
-
var
|
|
30060
|
+
var mG = "scheduling", hG = "scoring", gG = "seeding", _G = "draws", vG = "avoidance", yG = "feedIn", bG = "progression", xG = "roundNaming", SG = "positionActions", CG = "matchUpActions", wG = "roundRobinTally", TG = "rankingPoints", EG = "competitiveBands", DG = "voluntaryConsolation", OG = "participant", kG = "display", AG = "audit", jG = "Tournament Operations", MG = "Scoring & Results", NG = "Ranking Points", PG = "Draw Configuration", FG = "Participants", IG = "Display & Audit", LG = (e, t, n, r, i) => ({
|
|
29572
30061
|
policyType: e,
|
|
29573
30062
|
label: t,
|
|
29574
30063
|
description: n,
|
|
29575
30064
|
group: r,
|
|
29576
30065
|
hasEditor: i
|
|
29577
|
-
}),
|
|
29578
|
-
|
|
29579
|
-
|
|
29580
|
-
|
|
29581
|
-
|
|
29582
|
-
|
|
29583
|
-
|
|
29584
|
-
|
|
29585
|
-
|
|
29586
|
-
|
|
29587
|
-
|
|
29588
|
-
|
|
29589
|
-
|
|
29590
|
-
|
|
29591
|
-
|
|
29592
|
-
|
|
29593
|
-
|
|
29594
|
-
|
|
30066
|
+
}), RG = [
|
|
30067
|
+
LG(mG, "Scheduling", "Match scheduling, average times, recovery times, daily limits", jG, !0),
|
|
30068
|
+
LG(SG, "Position Actions", "Allowed position actions (alternates, walkovers, withdrawals)", jG, !1),
|
|
30069
|
+
LG(CG, "MatchUp Actions", "Allowed matchUp status transitions and actions", jG, !1),
|
|
30070
|
+
LG(vG, "Avoidance", "Draw placement avoidance rules (club, nationality, region)", jG, !1),
|
|
30071
|
+
LG(hG, "Scoring", "Score entry validation and completion rules", MG, !1),
|
|
30072
|
+
LG(wG, "Round Robin Tally", "Round-robin group standing calculation method", MG, !1),
|
|
30073
|
+
LG(TG, "Ranking Points", "Point allocation by draw size, round, and result", NG, !0),
|
|
30074
|
+
LG(EG, "Competitive Bands", "Rating/ranking band definitions for competitive grouping", MG, !1),
|
|
30075
|
+
LG(_G, "Draws", "Draw generation rules and structure options", PG, !1),
|
|
30076
|
+
LG(gG, "Seeding", "Seeding thresholds and placement rules by draw size", PG, !0),
|
|
30077
|
+
LG(yG, "Feed-In", "Feed-in consolation structure rules", PG, !1),
|
|
30078
|
+
LG(bG, "Progression", "Player progression between draw structures", PG, !1),
|
|
30079
|
+
LG(DG, "Voluntary Consolation", "Voluntary consolation entry rules", PG, !1),
|
|
30080
|
+
LG(xG, "Round Naming", "Custom round name labels (QF, SF, F, etc.)", PG, !1),
|
|
30081
|
+
LG(OG, "Participant", "Participant display and data rules", FG, !1),
|
|
30082
|
+
LG(kG, "Display", "Client display configuration (public vs admin views)", IG, !1),
|
|
30083
|
+
LG(AG, "Audit", "Audit trail and change logging configuration", IG, !1)
|
|
29595
30084
|
];
|
|
29596
|
-
function
|
|
29597
|
-
return
|
|
29598
|
-
}
|
|
29599
|
-
function
|
|
29600
|
-
return e === "rankingPoints" ? YV() : e === "scheduling" ? sU() : {};
|
|
29601
|
-
}
|
|
29602
|
-
var
|
|
29603
|
-
|
|
29604
|
-
|
|
29605
|
-
|
|
29606
|
-
|
|
29607
|
-
|
|
29608
|
-
|
|
30085
|
+
function zG(e) {
|
|
30086
|
+
return RG.find((t) => t.policyType === e);
|
|
30087
|
+
}
|
|
30088
|
+
function BG(e) {
|
|
30089
|
+
return e === "rankingPoints" ? YV() : e === "scheduling" ? sU() : e === "seeding" ? iW() : {};
|
|
30090
|
+
}
|
|
30091
|
+
var VG = [
|
|
30092
|
+
jG,
|
|
30093
|
+
MG,
|
|
30094
|
+
NG,
|
|
30095
|
+
PG,
|
|
30096
|
+
FG,
|
|
30097
|
+
IG
|
|
29609
30098
|
];
|
|
29610
30099
|
//#endregion
|
|
29611
30100
|
//#region src/components/policy-catalog/domain/catalogProjections.ts
|
|
29612
|
-
function
|
|
30101
|
+
function HG(e, t) {
|
|
29613
30102
|
let n = t.toLowerCase().trim();
|
|
29614
30103
|
return n ? e.filter((e) => {
|
|
29615
|
-
let t =
|
|
30104
|
+
let t = zG(e.policyType);
|
|
29616
30105
|
return [
|
|
29617
30106
|
e.name,
|
|
29618
30107
|
e.description,
|
|
@@ -29622,12 +30111,12 @@ function aG(e, t) {
|
|
|
29622
30111
|
].join(" ").toLowerCase().includes(n);
|
|
29623
30112
|
}) : e;
|
|
29624
30113
|
}
|
|
29625
|
-
function
|
|
30114
|
+
function UG(e, t) {
|
|
29626
30115
|
let n = /* @__PURE__ */ new Map();
|
|
29627
30116
|
if (t === "type") {
|
|
29628
|
-
for (let e of
|
|
30117
|
+
for (let e of VG) n.set(e, []);
|
|
29629
30118
|
for (let t of e) {
|
|
29630
|
-
let e =
|
|
30119
|
+
let e = zG(t.policyType)?.group ?? "Display & Audit", r = n.get(e);
|
|
29631
30120
|
r ? r.push(t) : n.set(e, [t]);
|
|
29632
30121
|
}
|
|
29633
30122
|
for (let [e, t] of n) t.length === 0 && n.delete(e);
|
|
@@ -29639,21 +30128,21 @@ function oG(e, t) {
|
|
|
29639
30128
|
}
|
|
29640
30129
|
//#endregion
|
|
29641
30130
|
//#region src/components/policy-catalog/ui/policyCatalogPanel.ts
|
|
29642
|
-
function
|
|
30131
|
+
function WG(e) {
|
|
29643
30132
|
let t = document.createElement("div");
|
|
29644
|
-
t.className =
|
|
30133
|
+
t.className = BW(), t.style.overflowY = "auto", t.style.scrollbarWidth = "thin", t.style.scrollbarColor = "var(--sp-scrollbar) transparent";
|
|
29645
30134
|
let n = /* @__PURE__ */ new Set(), r = null, i = document.createElement("div");
|
|
29646
|
-
i.className =
|
|
30135
|
+
i.className = VW();
|
|
29647
30136
|
let a = document.createElement("div");
|
|
29648
|
-
a.className =
|
|
30137
|
+
a.className = HW(), a.textContent = "Policy Catalog";
|
|
29649
30138
|
let o = document.createElement("div");
|
|
29650
|
-
o.className =
|
|
30139
|
+
o.className = UW(), i.appendChild(a), i.appendChild(o), t.appendChild(i);
|
|
29651
30140
|
let s = document.createElement("div");
|
|
29652
|
-
s.className =
|
|
30141
|
+
s.className = WW();
|
|
29653
30142
|
let c = document.createElement("input");
|
|
29654
|
-
c.type = "text", c.placeholder = "Search policies...", c.className =
|
|
30143
|
+
c.type = "text", c.placeholder = "Search policies...", c.className = GW(), c.addEventListener("input", () => e.onSearchChange(c.value));
|
|
29655
30144
|
let l = document.createElement("select");
|
|
29656
|
-
l.className =
|
|
30145
|
+
l.className = KW();
|
|
29657
30146
|
for (let [e, t] of [["type", "By Type"], ["source", "By Source"]]) {
|
|
29658
30147
|
let n = document.createElement("option");
|
|
29659
30148
|
n.value = e, n.textContent = t, l.appendChild(n);
|
|
@@ -29665,7 +30154,7 @@ function sG(e) {
|
|
|
29665
30154
|
d.className = "sp-btn-icon", d.textContent = "+", d.title = "New policy", d.style.cssText = "font-size:1rem;font-weight:700";
|
|
29666
30155
|
let f = document.createElement("div");
|
|
29667
30156
|
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";
|
|
29668
|
-
let p =
|
|
30157
|
+
let p = RG.filter((e) => e.hasEditor);
|
|
29669
30158
|
for (let t of p) {
|
|
29670
30159
|
let n = document.createElement("div");
|
|
29671
30160
|
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", () => {
|
|
@@ -29682,31 +30171,31 @@ function sG(e) {
|
|
|
29682
30171
|
f.style.display = "none";
|
|
29683
30172
|
}), u.appendChild(d), u.appendChild(f), s.appendChild(c), s.appendChild(l), s.appendChild(u), t.appendChild(s);
|
|
29684
30173
|
let m = document.createElement("div");
|
|
29685
|
-
m.className =
|
|
30174
|
+
m.className = qW(), t.appendChild(m);
|
|
29686
30175
|
function h(t) {
|
|
29687
30176
|
r = t;
|
|
29688
|
-
let i =
|
|
30177
|
+
let i = HG(t.catalog, t.searchQuery), a = UG(i, t.groupBy);
|
|
29689
30178
|
o.textContent = `${i.length} policies`, c.value !== t.searchQuery && (c.value = t.searchQuery), l.value !== t.groupBy && (l.value = t.groupBy), m.innerHTML = "";
|
|
29690
30179
|
for (let [i, o] of a) {
|
|
29691
30180
|
let a = document.createElement("div");
|
|
29692
|
-
a.className =
|
|
30181
|
+
a.className = JW();
|
|
29693
30182
|
let s = n.has(i), c = document.createElement("div");
|
|
29694
|
-
c.className =
|
|
30183
|
+
c.className = YW();
|
|
29695
30184
|
let l = document.createElement("span");
|
|
29696
|
-
l.className =
|
|
30185
|
+
l.className = XW(), l.textContent = s ? "▶" : "▼";
|
|
29697
30186
|
let u = document.createElement("span");
|
|
29698
30187
|
u.textContent = `${i} (${o.length})`, c.appendChild(l), c.appendChild(u), c.addEventListener("click", () => {
|
|
29699
30188
|
n.has(i) ? n.delete(i) : n.add(i), r && h(r);
|
|
29700
30189
|
});
|
|
29701
30190
|
let d = document.createElement("div");
|
|
29702
|
-
d.className =
|
|
30191
|
+
d.className = ZW(), s && (d.style.display = "none");
|
|
29703
30192
|
for (let n of o) {
|
|
29704
30193
|
let r = document.createElement("div");
|
|
29705
|
-
r.className =
|
|
30194
|
+
r.className = QW(), n.id === t.selectedId && r.classList.add("active"), r.addEventListener("click", () => e.onSelectPolicy(n.id));
|
|
29706
30195
|
let i = document.createElement("div");
|
|
29707
30196
|
i.style.cssText = "display:flex;align-items:center;gap:4px";
|
|
29708
30197
|
let a = document.createElement("div");
|
|
29709
|
-
if (a.className =
|
|
30198
|
+
if (a.className = $W(), a.style.flex = "1", a.textContent = n.name, i.appendChild(a), e.onDuplicatePolicy) {
|
|
29710
30199
|
let t = document.createElement("span");
|
|
29711
30200
|
t.style.cssText = "font-size:10px;cursor:pointer;color:var(--sp-muted);padding:2px", t.textContent = "⎘", t.title = "Duplicate", t.addEventListener("click", (t) => {
|
|
29712
30201
|
t.stopPropagation(), e.onDuplicatePolicy?.(n.id);
|
|
@@ -29720,11 +30209,11 @@ function sG(e) {
|
|
|
29720
30209
|
}
|
|
29721
30210
|
r.appendChild(i);
|
|
29722
30211
|
let o = document.createElement("div");
|
|
29723
|
-
o.className =
|
|
29724
|
-
let s =
|
|
29725
|
-
c.className =
|
|
30212
|
+
o.className = eG();
|
|
30213
|
+
let s = zG(n.policyType), c = document.createElement("span");
|
|
30214
|
+
c.className = tG(), c.textContent = s?.label ?? n.policyType;
|
|
29726
30215
|
let l = document.createElement("span");
|
|
29727
|
-
l.className = `${
|
|
30216
|
+
l.className = `${tG()} ${n.source}`, l.textContent = n.source, o.appendChild(c), o.appendChild(l), r.appendChild(o), d.appendChild(r);
|
|
29728
30217
|
}
|
|
29729
30218
|
a.appendChild(c), a.appendChild(d), m.appendChild(a);
|
|
29730
30219
|
}
|
|
@@ -29736,12 +30225,12 @@ function sG(e) {
|
|
|
29736
30225
|
}
|
|
29737
30226
|
//#endregion
|
|
29738
30227
|
//#region src/components/policy-catalog/domain/utils.ts
|
|
29739
|
-
function
|
|
30228
|
+
function GG(e) {
|
|
29740
30229
|
return structuredClone(e);
|
|
29741
30230
|
}
|
|
29742
30231
|
//#endregion
|
|
29743
30232
|
//#region src/components/policy-catalog/engine/policyCatalogStore.ts
|
|
29744
|
-
var
|
|
30233
|
+
var KG = class {
|
|
29745
30234
|
constructor(e) {
|
|
29746
30235
|
this.listeners = /* @__PURE__ */ new Set(), this.config = e;
|
|
29747
30236
|
let t = new Set((e.builtinPolicies ?? []).map((e) => e.id)), n = [...e.builtinPolicies ?? [], ...(e.userPolicies ?? []).filter((e) => !t.has(e.id))];
|
|
@@ -29771,7 +30260,7 @@ var lG = class {
|
|
|
29771
30260
|
let t = this.state.catalog.find((t) => t.id === e);
|
|
29772
30261
|
t && (this.setState({
|
|
29773
30262
|
selectedId: e,
|
|
29774
|
-
editorDraft:
|
|
30263
|
+
editorDraft: GG(t.policyData),
|
|
29775
30264
|
dirty: !1
|
|
29776
30265
|
}), this.config.onSelectionChanged?.(t));
|
|
29777
30266
|
}
|
|
@@ -29799,7 +30288,7 @@ var lG = class {
|
|
|
29799
30288
|
if (!e || !this.state.editorDraft) return;
|
|
29800
30289
|
let t = {
|
|
29801
30290
|
...e,
|
|
29802
|
-
policyData:
|
|
30291
|
+
policyData: GG(this.state.editorDraft)
|
|
29803
30292
|
}, n = this.state.catalog.map((e) => e.id === t.id ? t : e);
|
|
29804
30293
|
this.state = {
|
|
29805
30294
|
...this.state,
|
|
@@ -29810,7 +30299,7 @@ var lG = class {
|
|
|
29810
30299
|
resetDraft() {
|
|
29811
30300
|
let e = this.getSelectedItem();
|
|
29812
30301
|
e && this.setState({
|
|
29813
|
-
editorDraft:
|
|
30302
|
+
editorDraft: GG(e.policyData),
|
|
29814
30303
|
dirty: !1
|
|
29815
30304
|
});
|
|
29816
30305
|
}
|
|
@@ -29819,7 +30308,7 @@ var lG = class {
|
|
|
29819
30308
|
if (!e) return;
|
|
29820
30309
|
let t = {
|
|
29821
30310
|
...e,
|
|
29822
|
-
policyData: this.state.editorDraft ?
|
|
30311
|
+
policyData: this.state.editorDraft ? GG(this.state.editorDraft) : GG(e.policyData)
|
|
29823
30312
|
};
|
|
29824
30313
|
this.config.onPolicyApplied?.(t);
|
|
29825
30314
|
}
|
|
@@ -29830,13 +30319,13 @@ var lG = class {
|
|
|
29830
30319
|
policyType: e,
|
|
29831
30320
|
source: "user",
|
|
29832
30321
|
description: "",
|
|
29833
|
-
policyData:
|
|
30322
|
+
policyData: BG(e)
|
|
29834
30323
|
}, r = [...this.state.catalog, n];
|
|
29835
30324
|
return this.state = {
|
|
29836
30325
|
...this.state,
|
|
29837
30326
|
catalog: r,
|
|
29838
30327
|
selectedId: t,
|
|
29839
|
-
editorDraft:
|
|
30328
|
+
editorDraft: GG(n.policyData),
|
|
29840
30329
|
dirty: !1
|
|
29841
30330
|
}, this.emit(), this.config.onPolicyCreated?.(n), this.config.onSelectionChanged?.(n), t;
|
|
29842
30331
|
}
|
|
@@ -29849,13 +30338,13 @@ var lG = class {
|
|
|
29849
30338
|
policyType: t.policyType,
|
|
29850
30339
|
source: "user",
|
|
29851
30340
|
description: t.description,
|
|
29852
|
-
policyData:
|
|
30341
|
+
policyData: GG(t.policyData)
|
|
29853
30342
|
}, i = [...this.state.catalog, r];
|
|
29854
30343
|
return this.state = {
|
|
29855
30344
|
...this.state,
|
|
29856
30345
|
catalog: i,
|
|
29857
30346
|
selectedId: n,
|
|
29858
|
-
editorDraft:
|
|
30347
|
+
editorDraft: GG(r.policyData),
|
|
29859
30348
|
dirty: !1
|
|
29860
30349
|
}, this.emit(), this.config.onPolicyCreated?.(r), this.config.onSelectionChanged?.(r), n;
|
|
29861
30350
|
}
|
|
@@ -29890,48 +30379,48 @@ var lG = class {
|
|
|
29890
30379
|
};
|
|
29891
30380
|
//#endregion
|
|
29892
30381
|
//#region src/components/policy-catalog/ui/editorShell.ts
|
|
29893
|
-
function
|
|
30382
|
+
function qG(e) {
|
|
29894
30383
|
let t = document.createElement("div");
|
|
29895
|
-
t.className =
|
|
30384
|
+
t.className = BW();
|
|
29896
30385
|
let n = document.createElement("div");
|
|
29897
|
-
n.className =
|
|
30386
|
+
n.className = nG();
|
|
29898
30387
|
let r = document.createElement("div");
|
|
29899
|
-
r.className =
|
|
30388
|
+
r.className = rG();
|
|
29900
30389
|
let i = document.createElement("div");
|
|
29901
|
-
i.className =
|
|
30390
|
+
i.className = iG();
|
|
29902
30391
|
let a = document.createElement("div");
|
|
29903
|
-
a.className =
|
|
30392
|
+
a.className = HW();
|
|
29904
30393
|
let o = document.createElement("span");
|
|
29905
|
-
o.className =
|
|
30394
|
+
o.className = tG();
|
|
29906
30395
|
let s = document.createElement("span");
|
|
29907
|
-
s.className =
|
|
30396
|
+
s.className = tG(), s.textContent = "read-only", s.style.display = "none";
|
|
29908
30397
|
let c = document.createElement("div");
|
|
29909
|
-
c.className =
|
|
30398
|
+
c.className = cG(), c.style.display = "none", c.title = "Unsaved changes", i.appendChild(c), i.appendChild(a), i.appendChild(o), i.appendChild(s);
|
|
29910
30399
|
let l = document.createElement("div");
|
|
29911
|
-
l.className =
|
|
30400
|
+
l.className = aG();
|
|
29912
30401
|
let u = document.createElement("button");
|
|
29913
|
-
u.className =
|
|
30402
|
+
u.className = oG(), u.textContent = "Reset", u.addEventListener("click", () => e.onReset());
|
|
29914
30403
|
let d = document.createElement("button");
|
|
29915
|
-
d.className =
|
|
30404
|
+
d.className = sG(), d.textContent = "Save", d.addEventListener("click", () => e.onSave());
|
|
29916
30405
|
let f = document.createElement("button");
|
|
29917
|
-
f.className =
|
|
30406
|
+
f.className = oG(), f.textContent = "Apply", f.addEventListener("click", () => e.onApply());
|
|
29918
30407
|
let p = document.createElement("button");
|
|
29919
|
-
p.className =
|
|
30408
|
+
p.className = oG(), p.textContent = "Duplicate", p.addEventListener("click", () => e.onDuplicate()), l.appendChild(u), l.appendChild(d), l.appendChild(f), l.appendChild(p);
|
|
29920
30409
|
let m = document.createElement("div");
|
|
29921
|
-
m.className =
|
|
30410
|
+
m.className = aG();
|
|
29922
30411
|
let h = document.createElement("button");
|
|
29923
|
-
h.className =
|
|
30412
|
+
h.className = sG(), h.textContent = "Use as Template", h.addEventListener("click", () => e.onDuplicate()), m.appendChild(h), r.appendChild(i), r.appendChild(l), r.appendChild(m);
|
|
29924
30413
|
let g = document.createElement("div");
|
|
29925
|
-
g.className =
|
|
30414
|
+
g.className = lG(), n.appendChild(r), n.appendChild(g);
|
|
29926
30415
|
let _ = document.createElement("div");
|
|
29927
|
-
_.className =
|
|
30416
|
+
_.className = uG(), _.textContent = "Select a policy to edit", t.appendChild(n), t.appendChild(_);
|
|
29928
30417
|
function v(e) {
|
|
29929
30418
|
let t = e.selectedId !== null;
|
|
29930
30419
|
if (n.style.display = t ? "flex" : "none", _.style.display = t ? "none" : "flex", !t) return;
|
|
29931
30420
|
let r = e.catalog.find((t) => t.id === e.selectedId);
|
|
29932
30421
|
if (!r) return;
|
|
29933
30422
|
let i = r.source === "builtin";
|
|
29934
|
-
a.textContent = r.name, o.textContent =
|
|
30423
|
+
a.textContent = r.name, o.textContent = zG(r.policyType)?.label ?? r.policyType, s.style.display = i ? "" : "none", l.style.display = i ? "none" : "flex", m.style.display = i ? "flex" : "none", c.style.display = !i && e.dirty ? "block" : "none";
|
|
29935
30424
|
}
|
|
29936
30425
|
return {
|
|
29937
30426
|
element: t,
|
|
@@ -29941,13 +30430,13 @@ function uG(e) {
|
|
|
29941
30430
|
}
|
|
29942
30431
|
//#endregion
|
|
29943
30432
|
//#region src/components/policy-catalog/ui/jsonEditor.ts
|
|
29944
|
-
function
|
|
30433
|
+
function JG(e) {
|
|
29945
30434
|
let t = document.createElement("div");
|
|
29946
|
-
t.className =
|
|
30435
|
+
t.className = dG();
|
|
29947
30436
|
let n = document.createElement("textarea");
|
|
29948
30437
|
n.value = JSON.stringify(e.initialData, null, 2);
|
|
29949
30438
|
let r = document.createElement("div");
|
|
29950
|
-
r.className =
|
|
30439
|
+
r.className = fG(), r.style.display = "none";
|
|
29951
30440
|
let i = { ...e.initialData };
|
|
29952
30441
|
return n.addEventListener("input", () => {
|
|
29953
30442
|
try {
|
|
@@ -29971,10 +30460,10 @@ function dG(e) {
|
|
|
29971
30460
|
}
|
|
29972
30461
|
//#endregion
|
|
29973
30462
|
//#region src/components/policy-catalog/controller/policyCatalogControl.ts
|
|
29974
|
-
var
|
|
30463
|
+
var YG = class {
|
|
29975
30464
|
constructor(e) {
|
|
29976
|
-
this.currentEditor = null, this.container = null, this.store = new
|
|
29977
|
-
let t =
|
|
30465
|
+
this.currentEditor = null, this.container = null, this.store = new KG(e);
|
|
30466
|
+
let t = WG({
|
|
29978
30467
|
onSearchChange: (e) => this.store.setCatalogSearch(e),
|
|
29979
30468
|
onGroupByChange: (e) => this.store.setCatalogGroupBy(e),
|
|
29980
30469
|
onSelectPolicy: (e) => this.handleSelectPolicy(e),
|
|
@@ -29988,7 +30477,7 @@ var fG = class {
|
|
|
29988
30477
|
this.store.deletePolicy(e), this.store.getSelectedItem() || this.destroyCurrentEditor();
|
|
29989
30478
|
}
|
|
29990
30479
|
});
|
|
29991
|
-
this.editorShell =
|
|
30480
|
+
this.editorShell = qG({
|
|
29992
30481
|
onSave: () => this.store.savePolicy(),
|
|
29993
30482
|
onReset: () => {
|
|
29994
30483
|
this.store.resetDraft(), this.syncEditorFromStore();
|
|
@@ -29998,7 +30487,7 @@ var fG = class {
|
|
|
29998
30487
|
let e = this.store.getSelectedItem();
|
|
29999
30488
|
e && (this.store.duplicatePolicy(e.id), this.mountEditorForSelection());
|
|
30000
30489
|
}
|
|
30001
|
-
}), this.layout =
|
|
30490
|
+
}), this.layout = pG({
|
|
30002
30491
|
catalogPanel: t,
|
|
30003
30492
|
editorShell: this.editorShell
|
|
30004
30493
|
}), this.unsubscribe = this.store.subscribe((e) => {
|
|
@@ -30028,7 +30517,7 @@ var fG = class {
|
|
|
30028
30517
|
},
|
|
30029
30518
|
readonly: t
|
|
30030
30519
|
};
|
|
30031
|
-
e.policyType === "scheduling" ? this.currentEditor = eW.createEditorInstance(n) : e.policyType === "rankingPoints" ? this.currentEditor = iU.createEditorInstance(n) : this.currentEditor =
|
|
30520
|
+
e.policyType === "scheduling" ? this.currentEditor = eW.createEditorInstance(n) : e.policyType === "rankingPoints" ? this.currentEditor = iU.createEditorInstance(n) : e.policyType === "seeding" ? this.currentEditor = RW.createEditorInstance(n) : this.currentEditor = JG(n), this.editorShell.bodyElement.innerHTML = "", this.editorShell.bodyElement.appendChild(this.currentEditor.element);
|
|
30032
30521
|
}
|
|
30033
30522
|
syncEditorFromStore() {
|
|
30034
30523
|
let e = this.store.getState();
|
|
@@ -30040,30 +30529,30 @@ var fG = class {
|
|
|
30040
30529
|
};
|
|
30041
30530
|
//#endregion
|
|
30042
30531
|
//#region src/components/policy-catalog/editors/scheduling/domain/schedulingValidation.ts
|
|
30043
|
-
function
|
|
30532
|
+
function XG(e, t, n, r) {
|
|
30044
30533
|
e !== void 0 && e < 0 && r.push({
|
|
30045
30534
|
severity: "error",
|
|
30046
30535
|
path: t,
|
|
30047
30536
|
message: n
|
|
30048
30537
|
});
|
|
30049
30538
|
}
|
|
30050
|
-
function
|
|
30539
|
+
function ZG(e, t) {
|
|
30051
30540
|
if (!e.defaultTimes) return;
|
|
30052
30541
|
let n = e.defaultTimes.averageTimes;
|
|
30053
|
-
if (n) for (let e = 0; e < n.length; e++)
|
|
30542
|
+
if (n) for (let e = 0; e < n.length; e++) XG(n[e].minutes.default, `defaultTimes.averageTimes[${e}].minutes.default`, "Default average time must be non-negative", t), XG(n[e].minutes.DOUBLES, `defaultTimes.averageTimes[${e}].minutes.DOUBLES`, "Doubles average time must be non-negative", t);
|
|
30054
30543
|
let r = e.defaultTimes.recoveryTimes;
|
|
30055
|
-
if (r) for (let e = 0; e < r.length; e++)
|
|
30544
|
+
if (r) for (let e = 0; e < r.length; e++) XG(r[e].minutes.default, `defaultTimes.recoveryTimes[${e}].minutes.default`, "Default recovery time must be non-negative", t);
|
|
30056
30545
|
}
|
|
30057
|
-
function
|
|
30546
|
+
function QG(e, t) {
|
|
30058
30547
|
if (!e.defaultDailyLimits) return;
|
|
30059
30548
|
let n = e.defaultDailyLimits;
|
|
30060
|
-
|
|
30549
|
+
XG(n.SINGLES, "defaultDailyLimits.SINGLES", "Singles daily limit must be non-negative", t), XG(n.DOUBLES, "defaultDailyLimits.DOUBLES", "Doubles daily limit must be non-negative", t), XG(n.total, "defaultDailyLimits.total", "Total daily limit must be non-negative", t);
|
|
30061
30550
|
}
|
|
30062
|
-
function
|
|
30551
|
+
function $G(e) {
|
|
30063
30552
|
let t = [];
|
|
30064
|
-
return
|
|
30553
|
+
return ZG(e, t), QG(e, t), e.matchUpAverageTimes && eK(e.matchUpAverageTimes, "matchUpAverageTimes", "averageTimes", t), e.matchUpRecoveryTimes && tK(e.matchUpRecoveryTimes, "matchUpRecoveryTimes", t), nK(e, t), t;
|
|
30065
30554
|
}
|
|
30066
|
-
function
|
|
30555
|
+
function eK(e, t, n, r) {
|
|
30067
30556
|
for (let i = 0; i < e.length; i++) {
|
|
30068
30557
|
let a = e[i];
|
|
30069
30558
|
a.matchUpFormatCodes.length || r.push({
|
|
@@ -30072,10 +30561,10 @@ function _G(e, t, n, r) {
|
|
|
30072
30561
|
message: "At least one format code is required per format group"
|
|
30073
30562
|
});
|
|
30074
30563
|
let o = a[n];
|
|
30075
|
-
if (o) for (let e = 0; e < o.length; e++)
|
|
30564
|
+
if (o) for (let e = 0; e < o.length; e++) XG(o[e].minutes.default, `${t}[${i}].${n}[${e}].minutes.default`, "Time must be non-negative", r), XG(o[e].minutes.DOUBLES, `${t}[${i}].${n}[${e}].minutes.DOUBLES`, "Doubles time must be non-negative", r);
|
|
30076
30565
|
}
|
|
30077
30566
|
}
|
|
30078
|
-
function
|
|
30567
|
+
function tK(e, t, n) {
|
|
30079
30568
|
for (let r = 0; r < e.length; r++) {
|
|
30080
30569
|
let i = e[r];
|
|
30081
30570
|
i.matchUpFormatCodes.length || n.push({
|
|
@@ -30083,10 +30572,10 @@ function vG(e, t, n) {
|
|
|
30083
30572
|
path: `${t}[${r}].matchUpFormatCodes`,
|
|
30084
30573
|
message: "At least one format code is required per format group"
|
|
30085
30574
|
});
|
|
30086
|
-
for (let e = 0; e < i.recoveryTimes.length; e++)
|
|
30575
|
+
for (let e = 0; e < i.recoveryTimes.length; e++) XG(i.recoveryTimes[e].minutes.default, `${t}[${r}].recoveryTimes[${e}].minutes.default`, "Recovery time must be non-negative", n), XG(i.recoveryTimes[e].minutes.DOUBLES, `${t}[${r}].recoveryTimes[${e}].minutes.DOUBLES`, "Doubles recovery time must be non-negative", n);
|
|
30087
30576
|
}
|
|
30088
30577
|
}
|
|
30089
|
-
function
|
|
30578
|
+
function nK(e, t) {
|
|
30090
30579
|
let n = (e, n) => {
|
|
30091
30580
|
if (!e) return;
|
|
30092
30581
|
let r = /* @__PURE__ */ new Map();
|
|
@@ -30100,9 +30589,9 @@ function yG(e, t) {
|
|
|
30100
30589
|
}
|
|
30101
30590
|
//#endregion
|
|
30102
30591
|
//#region src/components/policy-catalog/index.ts
|
|
30103
|
-
function
|
|
30104
|
-
let n = new
|
|
30592
|
+
function rK(e, t) {
|
|
30593
|
+
let n = new YG(e);
|
|
30105
30594
|
return n.render(t), n;
|
|
30106
30595
|
}
|
|
30107
30596
|
//#endregion
|
|
30108
|
-
export { VP as AvailabilityGrid, Bv as COMPETITIVENESS_BUCKETS, Vk as COMPETITIVENESS_COLORS, Dh as COURT_SVG_RESOURCE_SUB_TYPE, cB as CompositionEditorStore, zk as DEFAULT_COMPETITIVE_BANDS, B_ as DEFAULT_COURT_CARD_CONFIG, iy as DEFAULT_DRAW_CARD_CONFIG, Xy as DEFAULT_EVENT_CARD_CONFIG, Bz as DEFAULT_SCHEDULE_CELL_CONFIG, Gh as DEFAULT_TOURNAMENT_CARD_CONFIG, Xg as DEFAULT_VENUE_CARD_CONFIG, $x as DrawStateManager, Zy as EVENT_CARD_LIGHT_MODE_THRESHOLD, As as InlineScoringManager, Hx as MATCH_FORMATS, Hk as NEUTRAL_SEGMENT_COLOR,
|
|
30597
|
+
export { VP as AvailabilityGrid, Bv as COMPETITIVENESS_BUCKETS, Vk as COMPETITIVENESS_COLORS, Dh as COURT_SVG_RESOURCE_SUB_TYPE, cB as CompositionEditorStore, zk as DEFAULT_COMPETITIVE_BANDS, B_ as DEFAULT_COURT_CARD_CONFIG, iy as DEFAULT_DRAW_CARD_CONFIG, Xy as DEFAULT_EVENT_CARD_CONFIG, Bz as DEFAULT_SCHEDULE_CELL_CONFIG, Gh as DEFAULT_TOURNAMENT_CARD_CONFIG, Xg as DEFAULT_VENUE_CARD_CONFIG, $x as DrawStateManager, Zy as EVENT_CARD_LIGHT_MODE_THRESHOLD, As as InlineScoringManager, Hx as MATCH_FORMATS, Hk as NEUTRAL_SEGMENT_COLOR, VG as POLICY_TYPE_GROUPS, RG as POLICY_TYPE_METADATA, YG as PolicyCatalogControl, KG as PolicyCatalogStore, EN as ProfileStore, vz as SchedulePageControl, _z as SchedulePageStore, eW as SchedulingEditorControl, cU as SchedulingEditorStore, zN as SchedulingProfileControl, VL as TopologyBuilderControl, BF as TopologyStore, oB as activateScheduleCellTypeAhead, Uv as aggregateCompetitiveness, gN as applyDropCommit, Th as badmintonCourt, mj as barButton, Sh as baseballDiamond, xh as basketballCourt, Lz as buildActiveStripPanel, Wh as buildCardSkeleton, Kv as buildCompetitivenessBar, ry as buildCompetitivenessDonut, ov as buildCourtCard, gz as buildCourtGridSlot, Sv as buildCourtSkeletonCard, LN as buildDateStrip, wy as buildDrawCard, Uy as buildDrawSkeletonCard, FI as buildEdgeEditor, qG as buildEditorShell, wb as buildEventCard, Hb as buildEventSkeletonCard, Ix as buildHiveIDLogin, UV as buildInteractiveScoringShell, mN as buildIssueIndex, QM as buildIssuesPanel, JG as buildJsonEditor, cz as buildMatchUpCard, dz as buildMatchUpCatalog, CI as buildNodeEditor, pG as buildPolicyCatalogLayout, WG as buildPolicyCatalogPanel, oj as buildRatingDistributionChart, MN as buildRoundCard, qM as buildRoundCatalog, hz as buildScheduleDateStrip, Vz as buildScheduleGridCell, tz as buildScheduleInspectorPanel, fz as buildScheduleIssueIndex, mz as buildScheduleIssuesPanel, ZR as buildSchedulePageLayout, $U as buildSchedulingEditorPanel, AM as buildSchedulingProfileLayout, ac as buildSetScore, Pg as buildSkeletonCard, DF as buildStructureCard, Ri as buildStructureMinimap, Lv as buildTeamCard, uL as buildToolbar, dL as buildTopologyBuilderLayout, ZF as buildTopologyCanvas, gg as buildTournamentCard, PN as buildVenueBoard, __ as buildVenueCard, P_ as buildVenueSkeletonCard, bA as burstChart, B as cModal, tc as calculateComplement, Xk as competitivenessColor, Lx as completeMagicLink, ki as compositions, oz as computeBaseRoundByEvent, Dx as consumeMagicLink, Mj as controlBar, Vx as courthiveComponentsVersion, HP as createAvailabilityGrid, jM as createCardPopoverManager, lV as createCompositionEditor, Ph as createCourtSvg, VV as createInlineScoringFooter, ph as createNotesEditor, rK as createPolicyCatalog, hV as createPrintCompositionEditor, sB as createSchedulePage, tW as createSchedulingEditor, BN as createSchedulingProfile, _h as destroyTipster, Pd as drawer, lj as dropDownButton, sU as emptySchedulingPolicy, Os as engineToMatchUp, Uh as extractCourtSvgSport, Hh as extractImageURL, VM as filterCatalog, az as filterMatchUpCatalog, HG as filterPolicyCatalog, SN as findIssuesForLocator, Ih as formatAddress, aU as formatCodeLabel, Bh as formatDateRange, Gg as formatFeeRange, Lh as formatVenueLocation, EA as fromFactoryDrawData, kA as fromLegacyDraw, rF as generatePreviewMatchUps, Wo as getAgeCategoryModal, qo as getCategoryModal, qk as getCompetitivenessBand, Jk as getCompetitivenessFromScoreString, ws as getFlightProfileModal, oa as getGenerateTeamsModal, no as getMatchUpFormatModal, ec as getMatchWinner, Xs as getMaxAllowedScore, ea as getMockParticipantsModal, UM as getPlannedRoundKeys, zG as getPolicyTypeMeta, OF as getPortPosition, xN as getRoundAt, Ns as getScoringConfig, qs as getSetFormatForIndex, Qs as getSetWinner, bN as getVenueRounds, HM as groupCatalog, sz as groupMatchUpCatalog, UG as groupPolicyCatalog, Ch as hockeyRink, Fd as initDrawer, iz as isCompletedStatus, Ox as isExistingUserConflict, $s as isMatchComplete, Zs as isSetComplete, Js as isSetTiebreakOnly, Ys as isSetTimed, kv as mapCourtToCardData, Yy as mapDrawDefinitionToCardData, ax as mapEventToCardData, aB as mapMatchUpToCellData, Yg as mapTournamentToCardData, z_ as mapVenueToCardData, QR as matchUpLabel, ez as matchUpSearchKey, wN as maxSeverity, V_ as mergeCourtCardConfig, ay as mergeDrawCardConfig, Qy as mergeEventCardConfig, Kh as mergeTournamentCardConfig, Zg as mergeVenueCardConfig, Ym as notesToolbar, fa as openCompositionEditorModal, ma as openScheduleCellConfigModal, Eh as padelCourt, $R as participantLabel, wh as pickleballCourt, Ux 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, jV as renderScorecard, _i as renderStructure, MV as renderTeamVsHeader, Ex as requestMagicLink, Fs as resetScoringConfig, Mh as resolveCourtSport, Gb as resolveEventStatus, ji as resolvePublishedComposition, zg as resolveTournamentStatus, Cu as scoringModal, dj as selectItem, Ps as setScoringConfig, nc as shouldApplySmartComplement, ic as shouldCreateNextSet, rc as shouldShowTiebreak, zP as showCourtAvailabilityModal, wx as signup, jh as sportFromMatchUpFormat, jL as standardTemplates, rS as syncClearVisibility, bh as tennisCourt, vh as tipster, Sj as toggleOverlay, iR as topologyToDrawOptions, Wv as totalBuckets, Zm as updateHeadingSelect, NV as updateTieScore, Xm as updateToolbarState, nN as validateProfile, $G as validateSchedulingPolicy, GI as validateTopology, Dn as validator, Qx as validators, Tx as verifyExisting, nS as wrapSearchWithClear };
|