courthive-components 3.4.9 → 3.5.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/dist/components/policy-catalog/editors/privacy/domain/privacyProjections.d.ts +23 -0
- package/dist/components/policy-catalog/editors/privacy/index.d.ts +9 -0
- package/dist/components/policy-catalog/editors/privacy/privacyEditorControl.d.ts +20 -0
- package/dist/components/policy-catalog/editors/privacy/privacyEditorPanel.d.ts +6 -0
- package/dist/components/policy-catalog/editors/privacy/privacyEditorStore.d.ts +15 -0
- package/dist/components/policy-catalog/editors/privacy/types.d.ts +19 -0
- package/dist/components/policy-catalog/index.d.ts +2 -0
- package/dist/courthive-components.css +1 -1
- package/dist/courthive-components.es.js +287 -116
- package/dist/courthive-components.umd.js +2 -2
- package/package.json +1 -1
|
@@ -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.
|
|
14706
|
+
version: "3.5.0",
|
|
14707
14707
|
engines: { node: ">=22" },
|
|
14708
14708
|
description: "Components for competitions projects",
|
|
14709
14709
|
files: ["dist"],
|
|
@@ -32237,12 +32237,183 @@ var DJ = class e {
|
|
|
32237
32237
|
}
|
|
32238
32238
|
};
|
|
32239
32239
|
}
|
|
32240
|
-
}, OJ =
|
|
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
|
|
32414
|
+
function gY(e) {
|
|
32244
32415
|
let t = document.createElement("div");
|
|
32245
|
-
t.className =
|
|
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
|
|
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
|
-
}),
|
|
32263
|
-
|
|
32264
|
-
|
|
32265
|
-
EY
|
|
32266
|
-
|
|
32267
|
-
|
|
32268
|
-
|
|
32269
|
-
|
|
32270
|
-
|
|
32271
|
-
|
|
32272
|
-
|
|
32273
|
-
|
|
32274
|
-
|
|
32275
|
-
|
|
32276
|
-
|
|
32277
|
-
|
|
32278
|
-
|
|
32279
|
-
|
|
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
|
|
32282
|
-
return
|
|
32283
|
-
}
|
|
32284
|
-
function
|
|
32285
|
-
return e === "rankingPoints" ? KW() : e === "scheduling" ? iK() : e === "scoring" ? lq() : e === "seeding" ? qq() : {};
|
|
32286
|
-
}
|
|
32287
|
-
var
|
|
32288
|
-
|
|
32289
|
-
|
|
32290
|
-
|
|
32291
|
-
|
|
32292
|
-
|
|
32293
|
-
|
|
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
|
|
32468
|
+
function GY(e, t) {
|
|
32298
32469
|
let n = t.toLowerCase().trim();
|
|
32299
32470
|
return n ? e.filter((e) => {
|
|
32300
|
-
let t =
|
|
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
|
|
32481
|
+
function KY(e, t) {
|
|
32311
32482
|
let n = /* @__PURE__ */ new Map();
|
|
32312
32483
|
if (t === "type") {
|
|
32313
|
-
for (let e of
|
|
32484
|
+
for (let e of WY) n.set(e, []);
|
|
32314
32485
|
for (let t of e) {
|
|
32315
|
-
let 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
|
|
32498
|
+
function qY(e) {
|
|
32328
32499
|
let t = document.createElement("div");
|
|
32329
|
-
t.className =
|
|
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 =
|
|
32502
|
+
i.className = WJ();
|
|
32332
32503
|
let a = document.createElement("div");
|
|
32333
|
-
a.className =
|
|
32504
|
+
a.className = GJ(), a.textContent = "Policy Catalog";
|
|
32334
32505
|
let o = document.createElement("div");
|
|
32335
|
-
o.className =
|
|
32506
|
+
o.className = KJ(), i.appendChild(a), i.appendChild(o), t.appendChild(i);
|
|
32336
32507
|
let s = document.createElement("div");
|
|
32337
|
-
s.className =
|
|
32508
|
+
s.className = qJ();
|
|
32338
32509
|
let c = document.createElement("input");
|
|
32339
|
-
c.type = "text", c.placeholder = "Search policies...", c.className =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
32541
|
+
m.className = XJ(), t.appendChild(m);
|
|
32371
32542
|
function h(t) {
|
|
32372
32543
|
r = t;
|
|
32373
|
-
let i =
|
|
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 =
|
|
32548
|
+
a.className = ZJ();
|
|
32378
32549
|
let s = n.has(i), c = document.createElement("div");
|
|
32379
|
-
c.className =
|
|
32550
|
+
c.className = QJ();
|
|
32380
32551
|
let l = document.createElement("span");
|
|
32381
|
-
l.className =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
32409
|
-
let s =
|
|
32410
|
-
c.className =
|
|
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 = `${
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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 ?
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
32788
|
+
function XY(e) {
|
|
32618
32789
|
let t = document.createElement("div");
|
|
32619
|
-
t.className =
|
|
32790
|
+
t.className = UJ();
|
|
32620
32791
|
let n = document.createElement("div");
|
|
32621
|
-
n.className =
|
|
32792
|
+
n.className = aY();
|
|
32622
32793
|
let r = document.createElement("div");
|
|
32623
|
-
r.className =
|
|
32794
|
+
r.className = oY();
|
|
32624
32795
|
let i = document.createElement("div");
|
|
32625
|
-
i.className =
|
|
32796
|
+
i.className = sY();
|
|
32626
32797
|
let a = document.createElement("div");
|
|
32627
|
-
a.className =
|
|
32798
|
+
a.className = GJ();
|
|
32628
32799
|
let o = document.createElement("input");
|
|
32629
|
-
o.type = "text", o.className = `${
|
|
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 =
|
|
32802
|
+
s.className = iY();
|
|
32632
32803
|
let c = document.createElement("span");
|
|
32633
|
-
c.className =
|
|
32804
|
+
c.className = iY(), c.textContent = "read-only", c.style.display = "none";
|
|
32634
32805
|
let l = document.createElement("div");
|
|
32635
|
-
l.className =
|
|
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 =
|
|
32808
|
+
u.className = cY();
|
|
32638
32809
|
let d = document.createElement("button");
|
|
32639
|
-
d.className =
|
|
32810
|
+
d.className = lY(), d.textContent = "Reset", d.addEventListener("click", () => e.onReset());
|
|
32640
32811
|
let f = document.createElement("button");
|
|
32641
|
-
f.className =
|
|
32812
|
+
f.className = uY(), f.textContent = "Save", f.addEventListener("click", () => e.onSave());
|
|
32642
32813
|
let p = document.createElement("button");
|
|
32643
|
-
p.className =
|
|
32814
|
+
p.className = lY(), p.textContent = "Apply", p.addEventListener("click", () => e.onApply());
|
|
32644
32815
|
let m = document.createElement("button");
|
|
32645
|
-
m.className =
|
|
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 =
|
|
32818
|
+
h.className = cY();
|
|
32648
32819
|
let g = document.createElement("button");
|
|
32649
|
-
g.className =
|
|
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 =
|
|
32822
|
+
_.className = fY(), n.appendChild(r), n.appendChild(_);
|
|
32652
32823
|
let v = document.createElement("div");
|
|
32653
|
-
v.className =
|
|
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 =
|
|
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
|
|
32843
|
+
function ZY(e) {
|
|
32673
32844
|
let t = document.createElement("div");
|
|
32674
|
-
t.className =
|
|
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 =
|
|
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
|
|
32873
|
+
var QY = class {
|
|
32703
32874
|
constructor(e) {
|
|
32704
|
-
this.currentEditor = null, this.container = null, this.store = new
|
|
32705
|
-
let t =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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++)
|
|
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++)
|
|
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
|
|
32957
|
+
function tX(e, t) {
|
|
32787
32958
|
if (!e.defaultDailyLimits) return;
|
|
32788
32959
|
let n = e.defaultDailyLimits;
|
|
32789
|
-
|
|
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
|
|
32962
|
+
function nX(e) {
|
|
32792
32963
|
let t = [];
|
|
32793
|
-
return
|
|
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
|
|
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++)
|
|
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
|
|
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++)
|
|
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
|
|
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
|
|
32833
|
-
let n = new
|
|
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,
|
|
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 };
|