courthive-components 1.1.0 → 1.2.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/assets/team-logos/index.d.ts +9 -0
- package/dist/components/burstChart/burstChart.d.ts +108 -0
- package/dist/components/burstChart/matchUpTransform.d.ts +11 -0
- package/dist/components/burstChart/textHelpers.d.ts +11 -0
- package/dist/components/button/barButton.d.ts +1 -0
- package/dist/components/button/cvaButton.d.ts +8 -0
- package/dist/components/button/dropDownButton.d.ts +5 -0
- package/dist/components/categories/ageCategory/ageCategory.d.ts +54 -0
- package/dist/components/categories/ageCategory/ageCategoryLogic.d.ts +55 -0
- package/dist/components/categories/category/category.d.ts +47 -0
- package/dist/components/composition-editor/compositionEditor.d.ts +6 -0
- package/dist/components/composition-editor/compositionEditorStore.d.ts +24 -0
- package/dist/components/composition-editor/compositionEditorTypes.d.ts +37 -0
- package/dist/components/composition-editor/compositionPreview.d.ts +2 -0
- package/dist/components/composition-editor/scaleConstants.d.ts +7 -0
- package/dist/components/composition-editor/sections/displaySection.d.ts +3 -0
- package/dist/components/composition-editor/sections/fieldBuilders.d.ts +20 -0
- package/dist/components/composition-editor/sections/layoutSection.d.ts +3 -0
- package/dist/components/composition-editor/sections/participantSection.d.ts +3 -0
- package/dist/components/composition-editor/sections/placeholderSection.d.ts +3 -0
- package/dist/components/composition-editor/sections/scaleSection.d.ts +3 -0
- package/dist/components/composition-editor/sections/scoreSection.d.ts +3 -0
- package/dist/components/composition-editor/sections/sectionBuilder.d.ts +8 -0
- package/dist/components/composition-editor/sections/themeSection.d.ts +3 -0
- package/dist/components/composition-editor/styles.d.ts +26 -0
- package/dist/components/controlBar/controlBar.d.ts +11 -0
- package/dist/components/controlBar/toggleOverlay.d.ts +3 -0
- package/dist/components/courts/courts.d.ts +7 -0
- package/dist/components/courts/index.d.ts +1 -0
- package/dist/components/drawer/drawer.d.ts +14 -0
- package/dist/components/flightProfile/flightProfileLogic.d.ts +51 -0
- package/dist/components/flightProfile/flightProfileNew.d.ts +34 -0
- package/dist/components/flightProfile/getFlightProfileFormItems.d.ts +13 -0
- package/dist/components/flightProfile/getFlightProfileFormRelationships.d.ts +1 -0
- package/dist/components/forms/createMultiSelect.d.ts +34 -0
- package/dist/components/forms/renderButtons.d.ts +3 -0
- package/dist/components/forms/renderField.d.ts +7 -0
- package/dist/components/forms/renderForm.d.ts +1 -0
- package/dist/components/forms/renderMenu.d.ts +3 -0
- package/dist/components/forms/renderValidator.d.ts +113 -0
- package/dist/components/forms/styles.d.ts +0 -0
- package/dist/components/generateRound.d.ts +6 -0
- package/dist/components/inline-scoring/engineToMatchUp.d.ts +6 -0
- package/dist/components/inline-scoring/index.d.ts +5 -0
- package/dist/components/inline-scoring/inlineScoringFooter.d.ts +18 -0
- package/dist/components/inline-scoring/inlineScoringManager.d.ts +49 -0
- package/dist/components/inline-scoring/inlineScoringTypes.d.ts +40 -0
- package/dist/components/inline-scoring/renderInlineMatchUp.d.ts +27 -0
- package/dist/components/interactive-scoring/buildInteractiveScoringShell.d.ts +28 -0
- package/dist/components/interactive-scoring/index.d.ts +2 -0
- package/dist/components/interactive-scoring/types.d.ts +60 -0
- package/dist/components/matchUpFormat/matchUpFormat.d.ts +81 -0
- package/dist/components/matchUpFormat/matchUpFormatLogic.d.ts +112 -0
- package/dist/components/modal/cmodal.d.ts +30 -0
- package/dist/components/modal/cmodalStyles.d.ts +8 -0
- package/dist/components/modal/compositionEditorModal.d.ts +46 -0
- package/dist/components/modal/generateTeamsModal.d.ts +26 -0
- package/dist/components/modal/mockParticipants.d.ts +91 -0
- package/dist/components/modal/scheduleCellConfigModal.d.ts +44 -0
- package/dist/components/modal/selectItem.d.ts +24 -0
- package/dist/components/notes-toolbar/notesToolbar.d.ts +20 -0
- package/dist/components/policy-catalog/controller/policyCatalogControl.d.ts +18 -0
- package/dist/components/policy-catalog/domain/catalogProjections.d.ts +11 -0
- package/dist/components/policy-catalog/domain/policyDefaults.d.ts +26 -0
- package/dist/components/policy-catalog/domain/utils.d.ts +4 -0
- package/dist/components/policy-catalog/editors/ranking/domain/emptyRankingPolicy.d.ts +2 -0
- package/dist/components/policy-catalog/editors/ranking/domain/rankingProjections.d.ts +32 -0
- package/dist/components/policy-catalog/editors/ranking/index.d.ts +9 -0
- package/dist/components/policy-catalog/editors/ranking/rankingPointsEditorControl.d.ts +27 -0
- package/dist/components/policy-catalog/editors/ranking/rankingPointsEditorPanel.d.ts +8 -0
- package/dist/components/policy-catalog/editors/ranking/rankingPointsEditorStore.d.ts +53 -0
- package/dist/components/policy-catalog/editors/ranking/sections/aggregationSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/bonusPointsRow.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/metadataSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/perWinPointsRow.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/positionPointsTable.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/profileCard.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/qualityWinSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/sections/scopeBadges.d.ts +2 -0
- package/dist/components/policy-catalog/editors/ranking/sections/scopeEditor.d.ts +6 -0
- package/dist/components/policy-catalog/editors/ranking/styles.d.ts +25 -0
- package/dist/components/policy-catalog/editors/ranking/types.d.ts +146 -0
- package/dist/components/policy-catalog/editors/scheduling/domain/schedulingProjections.d.ts +5 -0
- package/dist/components/policy-catalog/editors/scheduling/domain/schedulingValidation.d.ts +2 -0
- package/dist/components/policy-catalog/editors/scheduling/index.d.ts +11 -0
- package/dist/components/policy-catalog/editors/scheduling/schedulingEditorControl.d.ts +26 -0
- package/dist/components/policy-catalog/editors/scheduling/schedulingEditorPanel.d.ts +6 -0
- package/dist/components/policy-catalog/editors/scheduling/schedulingEditorStore.d.ts +32 -0
- package/dist/components/policy-catalog/editors/scheduling/sections/averageTimesSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/scheduling/sections/dailyLimitsSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/scheduling/sections/defaultTimesSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/scheduling/sections/formatTimeRow.d.ts +22 -0
- package/dist/components/policy-catalog/editors/scheduling/sections/modificationFlagsSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/scheduling/sections/recoveryTimesSection.d.ts +6 -0
- package/dist/components/policy-catalog/editors/scheduling/styles.d.ts +27 -0
- package/dist/components/policy-catalog/editors/scheduling/types.d.ts +65 -0
- package/dist/components/policy-catalog/engine/policyCatalogStore.d.ts +25 -0
- package/dist/components/policy-catalog/index.d.ts +22 -0
- package/dist/components/policy-catalog/types.d.ts +57 -0
- package/dist/components/policy-catalog/ui/editorShell.d.ts +11 -0
- package/dist/components/policy-catalog/ui/jsonEditor.d.ts +5 -0
- package/dist/components/policy-catalog/ui/policyCatalogLayout.d.ts +6 -0
- package/dist/components/policy-catalog/ui/policyCatalogPanel.d.ts +10 -0
- package/dist/components/policy-catalog/ui/styles.d.ts +28 -0
- package/dist/components/popover/tipster.d.ts +14 -0
- package/dist/components/print-composition-editor/printCompositionEditor.d.ts +2 -0
- package/dist/components/print-composition-editor/printCompositionEditorTypes.d.ts +77 -0
- package/dist/components/renderSchematicStructure/index.d.ts +4 -0
- package/dist/components/renderSchematicStructure/renderSchematicMatchUp.d.ts +26 -0
- package/dist/components/renderSchematicStructure/renderSchematicRound.d.ts +15 -0
- package/dist/components/renderSchematicStructure/renderSchematicStructure.d.ts +12 -0
- package/dist/components/renderStructure/isLuckyDraw.d.ts +9 -0
- package/dist/components/renderStructure/renderAddress.d.ts +5 -0
- package/dist/components/renderStructure/renderCenterInfo.d.ts +10 -0
- package/dist/components/renderStructure/renderContainer.d.ts +4 -0
- package/dist/components/renderStructure/renderFlag.d.ts +6 -0
- package/dist/components/renderStructure/renderFrill.d.ts +10 -0
- package/dist/components/renderStructure/renderGameScore.d.ts +3 -0
- package/dist/components/renderStructure/renderIndividual.d.ts +12 -0
- package/dist/components/renderStructure/renderMatchUp.d.ts +14 -0
- package/dist/components/renderStructure/renderParticipant.d.ts +11 -0
- package/dist/components/renderStructure/renderParticipantDetail.d.ts +7 -0
- package/dist/components/renderStructure/renderParticipantInput.d.ts +10 -0
- package/dist/components/renderStructure/renderPersonAttribute.d.ts +6 -0
- package/dist/components/renderStructure/renderRound.d.ts +17 -0
- package/dist/components/renderStructure/renderRoundHeader.d.ts +8 -0
- package/dist/components/renderStructure/renderScale.d.ts +8 -0
- package/dist/components/renderStructure/renderSchedule.d.ts +5 -0
- package/dist/components/renderStructure/renderSeeding.d.ts +6 -0
- package/dist/components/renderStructure/renderSide.d.ts +9 -0
- package/dist/components/renderStructure/renderSideScore.d.ts +16 -0
- package/dist/components/renderStructure/renderStatusPill.d.ts +3 -0
- package/dist/components/renderStructure/renderStructure.d.ts +13 -0
- package/dist/components/renderStructure/renderTeam.d.ts +5 -0
- package/dist/components/renderStructure/renderTeamLogo.d.ts +4 -0
- package/dist/components/renderStructure/renderTick.d.ts +3 -0
- package/dist/components/schedule-page/controller/schedulePageControl.d.ts +21 -0
- package/dist/components/schedule-page/domain/activeStrip.d.ts +72 -0
- package/dist/components/schedule-page/domain/matchUpCatalogProjections.d.ts +4 -0
- package/dist/components/schedule-page/domain/scheduleIssues.d.ts +2 -0
- package/dist/components/schedule-page/domain/utils.d.ts +5 -0
- package/dist/components/schedule-page/engine/schedulePageStore.d.ts +36 -0
- package/dist/components/schedule-page/index.d.ts +28 -0
- package/dist/components/schedule-page/types.d.ts +221 -0
- package/dist/components/schedule-page/ui/activeStrip.d.ts +46 -0
- package/dist/components/schedule-page/ui/courtGridSlot.d.ts +8 -0
- package/dist/components/schedule-page/ui/dateStrip.d.ts +5 -0
- package/dist/components/schedule-page/ui/inspectorPanel.d.ts +2 -0
- package/dist/components/schedule-page/ui/issuesPanel.d.ts +2 -0
- package/dist/components/schedule-page/ui/matchUpCard.d.ts +5 -0
- package/dist/components/schedule-page/ui/matchUpCatalog.d.ts +11 -0
- package/dist/components/schedule-page/ui/scheduleCellTypeAhead.d.ts +23 -0
- package/dist/components/schedule-page/ui/scheduleGridCell.d.ts +8 -0
- package/dist/components/schedule-page/ui/schedulePageLayout.d.ts +18 -0
- package/dist/components/schedule-page/ui/styles.d.ts +41 -0
- package/dist/components/scheduling-profile/controller/schedulingProfileControl.d.ts +14 -0
- package/dist/components/scheduling-profile/domain/catalogProjections.d.ts +16 -0
- package/dist/components/scheduling-profile/domain/dndApply.d.ts +2 -0
- package/dist/components/scheduling-profile/domain/issueIndex.d.ts +2 -0
- package/dist/components/scheduling-profile/domain/profileProjections.d.ts +6 -0
- package/dist/components/scheduling-profile/domain/utils.d.ts +7 -0
- package/dist/components/scheduling-profile/domain/validateProfile.d.ts +13 -0
- package/dist/components/scheduling-profile/engine/profileStore.d.ts +27 -0
- package/dist/components/scheduling-profile/index.d.ts +25 -0
- package/dist/components/scheduling-profile/types.d.ts +197 -0
- package/dist/components/scheduling-profile/ui/cardPopover.d.ts +11 -0
- package/dist/components/scheduling-profile/ui/dateStrip.d.ts +5 -0
- package/dist/components/scheduling-profile/ui/inspectorPanel.d.ts +2 -0
- package/dist/components/scheduling-profile/ui/issuesPanel.d.ts +5 -0
- package/dist/components/scheduling-profile/ui/roundCard.d.ts +12 -0
- package/dist/components/scheduling-profile/ui/roundCatalog.d.ts +8 -0
- package/dist/components/scheduling-profile/ui/schedulingProfileLayout.d.ts +15 -0
- package/dist/components/scheduling-profile/ui/styles.d.ts +46 -0
- package/dist/components/scheduling-profile/ui/venueBoard.d.ts +7 -0
- package/dist/components/scorecard/index.d.ts +2 -0
- package/dist/components/scorecard/renderScorecard.d.ts +26 -0
- package/dist/components/scoring/approaches/dialPadApproach.d.ts +2 -0
- package/dist/components/scoring/approaches/dialPadLogic.d.ts +12 -0
- package/dist/components/scoring/approaches/dynamicSetsApproach.d.ts +2 -0
- package/dist/components/scoring/approaches/freeScoreApproach.d.ts +2 -0
- package/dist/components/scoring/approaches/inlineScoringApproach.d.ts +2 -0
- package/dist/components/scoring/config.d.ts +28 -0
- package/dist/components/scoring/index.d.ts +6 -0
- package/dist/components/scoring/logic/dynamicSetsLogic.d.ts +124 -0
- package/dist/components/scoring/scoringModal.d.ts +2 -0
- package/dist/components/scoring/types.d.ts +60 -0
- package/dist/components/scoring/utils/scoreFormatters.d.ts +12 -0
- package/dist/components/scoring/utils/scoreValidator.d.ts +16 -0
- package/dist/components/scoring/utils/setExpansionLogic.d.ts +24 -0
- package/dist/components/temporal-grid/controller/temporalGridControl.d.ts +137 -0
- package/dist/components/temporal-grid/controller/viewProjections.d.ts +220 -0
- package/dist/components/temporal-grid/engine/viewState.d.ts +34 -0
- package/dist/components/temporal-grid/index.d.ts +18 -0
- package/dist/components/temporal-grid/timeline/CourtTimeline.d.ts +77 -0
- package/dist/components/temporal-grid/timeline/InteractionManager.d.ts +59 -0
- package/dist/components/temporal-grid/timeline/ItemRenderer.d.ts +35 -0
- package/dist/components/temporal-grid/timeline/RowLayout.d.ts +38 -0
- package/dist/components/temporal-grid/timeline/TimeAxis.d.ts +41 -0
- package/dist/components/temporal-grid/timeline/TimeScale.d.ts +106 -0
- package/dist/components/temporal-grid/timeline/types.d.ts +124 -0
- package/dist/components/temporal-grid/ui/blockPopover.d.ts +29 -0
- package/dist/components/temporal-grid/ui/courtAvailabilityModal.d.ts +29 -0
- package/dist/components/temporal-grid/ui/modernTimePicker.d.ts +46 -0
- package/dist/components/temporal-grid/ui/statsBar.d.ts +21 -0
- package/dist/components/temporal-grid/ui/temporalGrid.d.ts +149 -0
- package/dist/components/temporal-grid/ui/viewToolbar.d.ts +37 -0
- package/dist/components/topology-builder/controller/topologyBuilderControl.d.ts +19 -0
- package/dist/components/topology-builder/domain/feedRounds.d.ts +42 -0
- package/dist/components/topology-builder/domain/generateDrawFromTopology.d.ts +16 -0
- package/dist/components/topology-builder/domain/playoffProfilesCache.d.ts +16 -0
- package/dist/components/topology-builder/domain/previewGenerator.d.ts +9 -0
- package/dist/components/topology-builder/domain/templates.d.ts +2 -0
- package/dist/components/topology-builder/domain/topologyToDrawOptions.d.ts +6 -0
- package/dist/components/topology-builder/domain/topologyValidator.d.ts +8 -0
- package/dist/components/topology-builder/engine/topologyStore.d.ts +30 -0
- package/dist/components/topology-builder/index.d.ts +23 -0
- package/dist/components/topology-builder/types.d.ts +59 -0
- package/dist/components/topology-builder/ui/edgeEditor.d.ts +7 -0
- package/dist/components/topology-builder/ui/nodeEditor.d.ts +9 -0
- package/dist/components/topology-builder/ui/structureCard.d.ts +39 -0
- package/dist/components/topology-builder/ui/toolbar.d.ts +15 -0
- package/dist/components/topology-builder/ui/topologyBuilderLayout.d.ts +7 -0
- package/dist/components/topology-builder/ui/topologyCanvas.d.ts +10 -0
- package/dist/components/validators/numericRange.d.ts +1 -0
- package/dist/components/validators/numericValidator.d.ts +1 -0
- package/dist/compositions/compositions.d.ts +2 -0
- package/dist/compositions/lineHeights.d.ts +5 -0
- package/dist/compositions/resolvePublishedComposition.d.ts +12 -0
- package/dist/constants/matchUpFormats.d.ts +34 -0
- package/dist/courthive-components.css +1 -1
- package/dist/courthive-components.es.js +803 -626
- package/dist/courthive-components.umd.js +4 -4
- package/dist/data/componentConstants.d.ts +1 -0
- package/dist/data/generateEventData.d.ts +15 -0
- package/dist/data/generateMatchUps.d.ts +25 -0
- package/dist/helpers/createTypeAhead.d.ts +14 -0
- package/dist/helpers/drawStateManager.d.ts +91 -0
- package/dist/helpers/getAttr.d.ts +4 -0
- package/dist/helpers/typeOf.d.ts +4 -0
- package/dist/index.d.ts +80 -4006
- package/dist/styles/centerInfoStyle.d.ts +6 -0
- package/dist/styles/containerStyle.d.ts +1 -0
- package/dist/styles/flagStyle.d.ts +3 -0
- package/dist/styles/getChevronStyle.d.ts +4 -0
- package/dist/styles/getLinkStyle.d.ts +25 -0
- package/dist/styles/getMatchUpStyle.d.ts +4 -0
- package/dist/styles/getSelectedMatchUpStyle.d.ts +1 -0
- package/dist/styles/groupNameStyle.d.ts +1 -0
- package/dist/styles/groupSeparatorStyle.d.ts +4 -0
- package/dist/styles/matchUpContainerStyle.d.ts +1 -0
- package/dist/styles/participantDetailStyle.d.ts +1 -0
- package/dist/styles/participantStyle.d.ts +17 -0
- package/dist/styles/pillStyle.d.ts +3 -0
- package/dist/styles/resultStyles.d.ts +4 -0
- package/dist/styles/roundContainerStyle.d.ts +1 -0
- package/dist/styles/roundHeaderStyle.d.ts +1 -0
- package/dist/styles/roundStyle.d.ts +3 -0
- package/dist/styles/scaleStyle.d.ts +3 -0
- package/dist/styles/schedulingStyle.d.ts +1 -0
- package/dist/styles/scoreStyles.d.ts +9 -0
- package/dist/styles/scoreWrapperStyle.d.ts +4 -0
- package/dist/styles/seedStyle.d.ts +1 -0
- package/dist/styles/sideStyles.d.ts +3 -0
- package/dist/styles/structureStyle.d.ts +1 -0
- package/dist/styles/teamLogoStyle.d.ts +1 -0
- package/dist/styles/themes/australianTheme.d.ts +1 -0
- package/dist/styles/themes/basicCardTheme.d.ts +1 -0
- package/dist/styles/themes/basicTheme.d.ts +1 -0
- package/dist/styles/themes/createTheme.d.ts +5 -0
- package/dist/styles/themes/frenchTheme.d.ts +1 -0
- package/dist/styles/themes/index.d.ts +7 -0
- package/dist/styles/themes/itfTheme.d.ts +1 -0
- package/dist/styles/themes/usOpenTheme.d.ts +1 -0
- package/dist/styles/themes/wimbledonTheme.d.ts +1 -0
- package/dist/tools/freeScore/freeScore.d.ts +79 -0
- package/dist/types.d.ts +321 -0
- package/dist/utilities/isElement.d.ts +1 -0
- package/dist/validators/dateValidator.d.ts +1 -0
- package/dist/validators/emailValidator.d.ts +1 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/nameValidator.d.ts +1 -0
- package/dist/validators/numericRange.d.ts +1 -0
- package/dist/validators/numericValidator.d.ts +1 -0
- package/dist/validators/passwordValidator.d.ts +1 -0
- package/dist/validators/wordValidator.d.ts +1 -0
- package/dist/version.d.ts +1 -0
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,4006 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export
|
|
46
|
-
|
|
47
|
-
export
|
|
48
|
-
|
|
49
|
-
export
|
|
50
|
-
|
|
51
|
-
export
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
color: string;
|
|
82
|
-
label: string;
|
|
83
|
-
}>;
|
|
84
|
-
currentType?: string;
|
|
85
|
-
startTime?: string;
|
|
86
|
-
endTime?: string;
|
|
87
|
-
onTypeSelected: (type: string) => void;
|
|
88
|
-
onAdjustTime?: (startTime: string, endTime: string) => void;
|
|
89
|
-
onDelete?: () => void;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
declare type BlockType = temporal.BlockType;
|
|
93
|
-
|
|
94
|
-
declare type BlockType_2 = temporal.BlockType;
|
|
95
|
-
|
|
96
|
-
export declare function buildCourtGridSlot(courtGridElement: HTMLElement | undefined, callbacks: CourtGridSlotCallbacks, options?: CourtGridSlotOptions): UIPanel_3<SchedulePageState>;
|
|
97
|
-
|
|
98
|
-
export declare function buildDateStrip(callbacks: DateStripCallbacks): UIPanel<ProfileStoreState>;
|
|
99
|
-
|
|
100
|
-
export declare function buildEdgeEditor(callbacks: EdgeEditorCallbacks): UIPanel_2<TopologyState>;
|
|
101
|
-
|
|
102
|
-
export declare function buildEditorShell(callbacks: EditorShellCallbacks): EditorShellPanel;
|
|
103
|
-
|
|
104
|
-
export declare function buildInspectorPanel(): UIPanel<ProfileStoreState>;
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Build a mobile-first full-page interactive scoring shell around a
|
|
108
|
-
* `ScoringEngine` (wrapped by the existing `InlineScoringManager`).
|
|
109
|
-
*
|
|
110
|
-
* This is the courthive-public Phase 2 scoring UI: anonymous,
|
|
111
|
-
* local-only, mobile-first. It does NOT persist state itself —
|
|
112
|
-
* consumers subscribe to `stateChanged` events and handle
|
|
113
|
-
* persistence (IndexedDB in courthive-public's case).
|
|
114
|
-
*
|
|
115
|
-
* Phase 2 targets standard tennis matchUpFormats (`SET3-S:6/TB7`,
|
|
116
|
-
* `SET5-S:6/TB7`, etc.). INTENNSE bolt scoring, pickleball score
|
|
117
|
-
* caps, doubles lineup changes, and other format-specific behaviors
|
|
118
|
-
* are deferred to Phase 2.5+.
|
|
119
|
-
*
|
|
120
|
-
* The DOM structure:
|
|
121
|
-
* ```
|
|
122
|
-
* .chc-interactive-scoring-shell
|
|
123
|
-
* .chc-iss-header (side names + format indicator)
|
|
124
|
-
* .chc-iss-score-display (current set scores + game score)
|
|
125
|
-
* .chc-iss-point-buttons (big Side 1 / Side 2 point-won buttons)
|
|
126
|
-
* .chc-iss-control-bar (undo, reset, complete indicator)
|
|
127
|
-
* ```
|
|
128
|
-
*
|
|
129
|
-
* All styling lives in `interactive-scoring.css` using the shared
|
|
130
|
-
* `--sp-*` / `--chc-*` theme variables.
|
|
131
|
-
*/
|
|
132
|
-
export declare function buildInteractiveScoringShell(config: InteractiveScoringShellConfig): InteractiveScoringShell;
|
|
133
|
-
|
|
134
|
-
export declare function buildIssueIndex(results: ValidationResult[]): IssueIndex;
|
|
135
|
-
|
|
136
|
-
export declare function buildIssuesPanel(callbacks: IssuesPanelCallbacks): UIPanel<ProfileStoreState>;
|
|
137
|
-
|
|
138
|
-
export declare function buildJsonEditor(config: {
|
|
139
|
-
initialData: Record<string, unknown>;
|
|
140
|
-
onChange: (data: Record<string, unknown>) => void;
|
|
141
|
-
}): PolicyEditorInstance;
|
|
142
|
-
|
|
143
|
-
export declare function buildMatchUpCard(item: CatalogMatchUpItem, callbacks: MatchUpCardCallbacks): HTMLElement;
|
|
144
|
-
|
|
145
|
-
export declare function buildMatchUpCatalog(callbacks: MatchUpCatalogCallbacks): UIPanel_3<SchedulePageState>;
|
|
146
|
-
|
|
147
|
-
export declare function buildNodeEditor(callbacks: NodeEditorCallbacks): UIPanel_2<TopologyState>;
|
|
148
|
-
|
|
149
|
-
export declare function buildPolicyCatalogLayout(panels: {
|
|
150
|
-
catalogPanel: UIPanel_4<PolicyCatalogState>;
|
|
151
|
-
editorShell: EditorShellPanel;
|
|
152
|
-
}): UIPanel_4<PolicyCatalogState>;
|
|
153
|
-
|
|
154
|
-
export declare function buildPolicyCatalogPanel(callbacks: PolicyCatalogPanelCallbacks): UIPanel_4<PolicyCatalogState>;
|
|
155
|
-
|
|
156
|
-
export declare function buildRoundCard(data: RoundCardData, callbacks: RoundCardCallbacks): HTMLElement;
|
|
157
|
-
|
|
158
|
-
export declare function buildRoundCatalog(callbacks: RoundCatalogCallbacks): UIPanel<ProfileStoreState>;
|
|
159
|
-
|
|
160
|
-
export declare function buildScheduleDateStrip(callbacks: DateStripCallbacks_2): UIPanel_3<SchedulePageState>;
|
|
161
|
-
|
|
162
|
-
export declare function buildScheduleGridCell(data: ScheduleCellData, config?: ScheduleCellConfig): HTMLElement;
|
|
163
|
-
|
|
164
|
-
export declare function buildScheduleInspectorPanel(): UIPanel_3<SchedulePageState>;
|
|
165
|
-
|
|
166
|
-
export declare function buildScheduleIssueIndex(issues: ScheduleIssue[]): ScheduleIssueIndex;
|
|
167
|
-
|
|
168
|
-
export declare function buildScheduleIssuesPanel(): UIPanel_3<SchedulePageState>;
|
|
169
|
-
|
|
170
|
-
export declare function buildSchedulePageLayout(panels: SchedulePageLayoutPanels, callbacks: SchedulePageLayoutCallbacks, options?: {
|
|
171
|
-
hideLeft?: boolean;
|
|
172
|
-
catalogSide?: 'left' | 'right';
|
|
173
|
-
}): {
|
|
174
|
-
element: HTMLElement;
|
|
175
|
-
update: (state: SchedulePageState) => void;
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
export declare function buildSchedulingEditorPanel(store: SchedulingEditorStore, config: SchedulingEditorConfig): {
|
|
179
|
-
element: HTMLElement;
|
|
180
|
-
update(state: SchedulingEditorState): void;
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
export declare function buildSchedulingProfileLayout(panels: LayoutPanels, options?: {
|
|
184
|
-
hideLeft?: boolean;
|
|
185
|
-
catalogSide?: 'left' | 'right';
|
|
186
|
-
}): {
|
|
187
|
-
element: HTMLElement;
|
|
188
|
-
update: (state: ProfileStoreState) => void;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Build a SetScore object from input values
|
|
193
|
-
* Assigns winningSide if set is complete
|
|
194
|
-
*/
|
|
195
|
-
export declare function buildSetScore(setIndex: number, side1Value: string, side2Value: string, tiebreakValue: string | undefined, config: MatchUpConfig): SetScore;
|
|
196
|
-
|
|
197
|
-
export declare function buildStructureCard(node: TopologyNode, callbacks: StructureCardCallbacks, isSelected: boolean, hasWinnerLink: boolean, roundAnnotations?: RoundAnnotation[], warnings?: string[], advanceInfo?: string, positionChips?: PositionChip[]): HTMLElement;
|
|
198
|
-
|
|
199
|
-
export declare function buildToolbar(callbacks: ToolbarCallbacks, templates: TopologyTemplate[], options?: ToolbarOptions): UIPanel_2<TopologyState>;
|
|
200
|
-
|
|
201
|
-
export declare function buildTopologyBuilderLayout({ toolbar, canvas, nodeEditor, edgeEditor }: {
|
|
202
|
-
toolbar: UIPanel_2<TopologyState>;
|
|
203
|
-
canvas: UIPanel_2<TopologyState>;
|
|
204
|
-
nodeEditor: UIPanel_2<TopologyState>;
|
|
205
|
-
edgeEditor: UIPanel_2<TopologyState>;
|
|
206
|
-
}): UIPanel_2<TopologyState>;
|
|
207
|
-
|
|
208
|
-
export declare function buildTopologyCanvas(callbacks: CanvasCallbacks): UIPanel_2<TopologyState>;
|
|
209
|
-
|
|
210
|
-
export declare function buildVenueBoard(callbacks: VenueBoardCallbacks): UIPanel<ProfileStoreState>;
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Factory function to create a burst chart renderer.
|
|
214
|
-
* Accepts either SunburstDrawData (new) or TournamentDraw (legacy, auto-converted).
|
|
215
|
-
*/
|
|
216
|
-
export declare function burstChart(options?: BurstChartOptions): {
|
|
217
|
-
render: (container: HTMLElement, drawData: SunburstDrawData, title: string) => BurstChartInstance;
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
export declare interface BurstChartEventHandlers {
|
|
221
|
-
clickSegment?: (data: SegmentData) => void;
|
|
222
|
-
clickCenter?: () => void;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/** Handle returned by render() for controlling the chart after rendering */
|
|
226
|
-
export declare interface BurstChartInstance {
|
|
227
|
-
/** Highlight all segments belonging to a player. Returns count of highlighted nodes. Omit name to clear. */
|
|
228
|
-
highlightPlayer: (playerName?: string) => number;
|
|
229
|
-
/** Show or hide the entire chart SVG */
|
|
230
|
-
hide: (hidden: boolean) => void;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
export declare interface BurstChartOptions {
|
|
234
|
-
width?: number;
|
|
235
|
-
height?: number;
|
|
236
|
-
title?: string;
|
|
237
|
-
colorBySeeds?: boolean;
|
|
238
|
-
countryCodes?: Record<string, string>;
|
|
239
|
-
eventHandlers?: BurstChartEventHandlers;
|
|
240
|
-
textScaleFactor?: number;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Calculate the complement score for smart complement entry
|
|
245
|
-
* Returns null if no predictable complement exists
|
|
246
|
-
*
|
|
247
|
-
* @param digit - The digit entered (0-9)
|
|
248
|
-
* @param setFormat - The format for this set
|
|
249
|
-
* @returns Complement value or null if digit >= setTo (no predictable complement)
|
|
250
|
-
*/
|
|
251
|
-
export declare function calculateComplement(digit: number, setFormat?: SetFormat): number | null;
|
|
252
|
-
|
|
253
|
-
declare interface CanvasCallbacks {
|
|
254
|
-
onSelectNode: (nodeId: string | null) => void;
|
|
255
|
-
onSelectEdge: (edgeId: string | null) => void;
|
|
256
|
-
onDoubleClickNode?: (nodeId: string) => void;
|
|
257
|
-
onMoveNode: (nodeId: string, x: number, y: number) => void;
|
|
258
|
-
onCreateEdge: (sourceNodeId: string, targetNodeId: string, linkType: 'WINNER' | 'LOSER' | 'POSITION') => void;
|
|
259
|
-
onPortMouseDown: (nodeId: string, portType: 'winner' | 'loser') => void;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
declare interface CardPopoverCallbacks {
|
|
263
|
-
onDelete: (locator: RoundLocator) => void;
|
|
264
|
-
onSetNotBeforeTime: (locator: RoundLocator) => void;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
declare interface CardPopoverManager {
|
|
268
|
-
show(target: HTMLElement, locator: RoundLocator): void;
|
|
269
|
-
destroy(): void;
|
|
270
|
-
isActiveFor(locator: RoundLocator): boolean;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
declare interface CatalogDragPayload {
|
|
274
|
-
type: 'CATALOG_ROUND';
|
|
275
|
-
roundRef: CatalogRoundItem;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export declare interface CatalogFilters {
|
|
279
|
-
eventType?: string;
|
|
280
|
-
eventName?: string;
|
|
281
|
-
drawName?: string;
|
|
282
|
-
gender?: string;
|
|
283
|
-
roundName?: string;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
export declare type CatalogGroupBy = 'event' | 'draw' | 'round';
|
|
287
|
-
|
|
288
|
-
export declare interface CatalogMatchUpDragPayload {
|
|
289
|
-
type: 'CATALOG_MATCHUP';
|
|
290
|
-
matchUp: CatalogMatchUpItem;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
export declare interface CatalogMatchUpItem {
|
|
294
|
-
matchUpId: string;
|
|
295
|
-
eventId: string;
|
|
296
|
-
eventName: string;
|
|
297
|
-
drawId: string;
|
|
298
|
-
drawName?: string;
|
|
299
|
-
structureId: string;
|
|
300
|
-
roundNumber: number;
|
|
301
|
-
roundName?: string;
|
|
302
|
-
matchUpFormat?: string;
|
|
303
|
-
matchUpType?: 'SINGLES' | 'DOUBLES';
|
|
304
|
-
matchUpStatus?: string;
|
|
305
|
-
gender?: string;
|
|
306
|
-
sides?: MatchUpSide[];
|
|
307
|
-
isScheduled: boolean;
|
|
308
|
-
scheduledTime?: string;
|
|
309
|
-
scheduledCourtName?: string;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
export declare interface CatalogRoundItem {
|
|
313
|
-
tournamentId: string;
|
|
314
|
-
eventId: string;
|
|
315
|
-
eventName: string;
|
|
316
|
-
drawId: string;
|
|
317
|
-
drawName?: string;
|
|
318
|
-
structureId: string;
|
|
319
|
-
structureType?: string;
|
|
320
|
-
roundNumber: number;
|
|
321
|
-
roundName?: string;
|
|
322
|
-
matchCountEstimate?: number;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
export declare interface Category {
|
|
326
|
-
ageCategoryCode?: string;
|
|
327
|
-
ageMax?: number;
|
|
328
|
-
ageMaxDate?: string;
|
|
329
|
-
ageMin?: number;
|
|
330
|
-
ageMinDate?: string;
|
|
331
|
-
ballType?: string;
|
|
332
|
-
categoryName?: string;
|
|
333
|
-
categoryType?: string;
|
|
334
|
-
notes?: string;
|
|
335
|
-
ratingMax?: number;
|
|
336
|
-
ratingMin?: number;
|
|
337
|
-
ratingType?: string;
|
|
338
|
-
type?: 'AGE' | 'RATING' | 'BOTH';
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
export declare interface CategoryConfig {
|
|
342
|
-
labels?: {
|
|
343
|
-
title?: string;
|
|
344
|
-
categoryNameLabel?: string;
|
|
345
|
-
typeLabel?: string;
|
|
346
|
-
ageCategoryCodeLabel?: string;
|
|
347
|
-
ratingTypeLabel?: string;
|
|
348
|
-
ratingMinLabel?: string;
|
|
349
|
-
ratingMaxLabel?: string;
|
|
350
|
-
ballTypeLabel?: string;
|
|
351
|
-
notesLabel?: string;
|
|
352
|
-
};
|
|
353
|
-
options?: {
|
|
354
|
-
types?: string[];
|
|
355
|
-
ratingTypes?: string[];
|
|
356
|
-
ballTypes?: string[];
|
|
357
|
-
};
|
|
358
|
-
defaultConsideredDate?: string;
|
|
359
|
-
modalConfig?: any;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
export declare const cModal: {
|
|
363
|
-
close: (conditional?: boolean) => void;
|
|
364
|
-
open: ({ title, content, buttons, footer, config, onClose }?: ModalParams) => {
|
|
365
|
-
setContent: ({ content: newContent, config }: {
|
|
366
|
-
content?: ModalContent;
|
|
367
|
-
config?: ModalConfig;
|
|
368
|
-
}) => void;
|
|
369
|
-
setButtons: ({ buttons, config }: {
|
|
370
|
-
buttons: ModalButton[];
|
|
371
|
-
config?: ModalConfig;
|
|
372
|
-
}) => void;
|
|
373
|
-
update: ({ content: newContent, buttons, title, config: newConfig, onClose }: {
|
|
374
|
-
content?: ModalContent;
|
|
375
|
-
buttons?: ModalButton[];
|
|
376
|
-
title?: string;
|
|
377
|
-
config?: ModalConfig;
|
|
378
|
-
onClose?: (params: {
|
|
379
|
-
content?: any;
|
|
380
|
-
}) => void;
|
|
381
|
-
}) => void;
|
|
382
|
-
};
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
declare interface Composition {
|
|
386
|
-
theme: string;
|
|
387
|
-
configuration?: Configuration;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
export declare interface CompositionEditorConfig {
|
|
391
|
-
/** Initial composition to edit */
|
|
392
|
-
composition?: Composition;
|
|
393
|
-
/** Name for display/save */
|
|
394
|
-
compositionName?: string;
|
|
395
|
-
/** View-only mode */
|
|
396
|
-
readOnly?: boolean;
|
|
397
|
-
/** Called when user saves */
|
|
398
|
-
onSave?: (result: SavedComposition) => void;
|
|
399
|
-
/** Called on every change (live preview) */
|
|
400
|
-
onChange?: (composition: Composition) => void;
|
|
401
|
-
/** Restrict available theme choices */
|
|
402
|
-
availableThemes?: string[];
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
export declare type CompositionEditorListener = (state: CompositionEditorState) => void;
|
|
406
|
-
|
|
407
|
-
export declare interface CompositionEditorOptions {
|
|
408
|
-
initialPreset?: string;
|
|
409
|
-
initialHeader?: Partial<HeaderConfig>;
|
|
410
|
-
initialFooter?: Partial<FooterConfig>;
|
|
411
|
-
onApply?: (result: CompositionEditorResult) => void;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/** Standard panel interface */
|
|
415
|
-
export declare interface CompositionEditorPanel {
|
|
416
|
-
element: HTMLElement;
|
|
417
|
-
update(state: CompositionEditorState): void;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
export declare interface CompositionEditorResult {
|
|
421
|
-
header: HeaderConfig;
|
|
422
|
-
footer: FooterConfig;
|
|
423
|
-
preset?: string;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
export declare type CompositionEditorSectionId = 'theme' | 'display' | 'score' | 'participant' | 'placeholder' | 'scale' | 'layout';
|
|
427
|
-
|
|
428
|
-
export declare interface CompositionEditorState {
|
|
429
|
-
compositionName: string;
|
|
430
|
-
theme: string;
|
|
431
|
-
configuration: Configuration;
|
|
432
|
-
expandedSections: Set<CompositionEditorSectionId>;
|
|
433
|
-
isDirty: boolean;
|
|
434
|
-
readOnly: boolean;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
export declare class CompositionEditorStore {
|
|
438
|
-
private state;
|
|
439
|
-
private readonly listeners;
|
|
440
|
-
private readonly config;
|
|
441
|
-
constructor(config: CompositionEditorConfig);
|
|
442
|
-
getState(): CompositionEditorState;
|
|
443
|
-
subscribe(listener: CompositionEditorListener): () => void;
|
|
444
|
-
toggleSection(sectionId: CompositionEditorSectionId): void;
|
|
445
|
-
setTheme(theme: string): void;
|
|
446
|
-
setCompositionName(name: string): void;
|
|
447
|
-
setConfigField<K extends keyof Configuration>(key: K, value: Configuration[K]): void;
|
|
448
|
-
/** Update a nested object field (e.g., gameScore, placeHolders, scaleAttributes) */
|
|
449
|
-
setConfigNestedField<K extends keyof Configuration>(key: K, nestedKey: string, value: unknown): void;
|
|
450
|
-
/** Replace the entire configuration (e.g., loading a preset) */
|
|
451
|
-
setConfiguration(configuration: Configuration): void;
|
|
452
|
-
/** Load a full composition (theme + config + name) */
|
|
453
|
-
loadComposition(name: string, theme: string, configuration: Configuration): void;
|
|
454
|
-
resetToInitial(): void;
|
|
455
|
-
private setState;
|
|
456
|
-
private emit;
|
|
457
|
-
private notifyChange;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
export declare const compositions: Record<string, Composition>;
|
|
461
|
-
|
|
462
|
-
declare interface Configuration {
|
|
463
|
-
flags?: boolean;
|
|
464
|
-
flag?: boolean;
|
|
465
|
-
teamLogo?: boolean;
|
|
466
|
-
roundHeader?: boolean;
|
|
467
|
-
winnerChevron?: boolean;
|
|
468
|
-
centerInfo?: boolean;
|
|
469
|
-
resultsInfo?: boolean;
|
|
470
|
-
scoreBox?: boolean;
|
|
471
|
-
gameScoreOnly?: boolean;
|
|
472
|
-
gameScore?: {
|
|
473
|
-
position?: 'leading' | 'trailing';
|
|
474
|
-
inverted?: boolean;
|
|
475
|
-
};
|
|
476
|
-
drawPositions?: boolean;
|
|
477
|
-
allDrawPositions?: boolean;
|
|
478
|
-
drawPositionColor?: string;
|
|
479
|
-
bracketedSeeds?: boolean | 'square';
|
|
480
|
-
scheduleInfo?: boolean;
|
|
481
|
-
matchUpFooter?: boolean;
|
|
482
|
-
showAddress?: boolean;
|
|
483
|
-
seedingElement?: 'sup' | 'span';
|
|
484
|
-
matchUpHover?: boolean | string;
|
|
485
|
-
participantDetail?: string;
|
|
486
|
-
inlineAssignment?: boolean;
|
|
487
|
-
participantProvider?: () => Participant[];
|
|
488
|
-
assignmentInputFontSize?: string;
|
|
489
|
-
persistInputFields?: boolean;
|
|
490
|
-
hasQualifying?: boolean;
|
|
491
|
-
inlineScoring?: {
|
|
492
|
-
mode: 'points' | 'games';
|
|
493
|
-
showFooter?: boolean;
|
|
494
|
-
showSituation?: boolean;
|
|
495
|
-
canUndo?: boolean;
|
|
496
|
-
canRedo?: boolean;
|
|
497
|
-
isComplete?: boolean;
|
|
498
|
-
isDirty?: boolean;
|
|
499
|
-
situationText?: string;
|
|
500
|
-
};
|
|
501
|
-
useParticipantName?: boolean;
|
|
502
|
-
genderColor?: boolean | string;
|
|
503
|
-
winnerColor?: boolean | string;
|
|
504
|
-
placeHolders?: {
|
|
505
|
-
tbd?: string;
|
|
506
|
-
bye?: string;
|
|
507
|
-
qualifier?: string;
|
|
508
|
-
};
|
|
509
|
-
scaleAttributes?: {
|
|
510
|
-
scaleColor?: string;
|
|
511
|
-
scaleType?: string;
|
|
512
|
-
scaleName?: string;
|
|
513
|
-
accessor?: string;
|
|
514
|
-
eventType?: string;
|
|
515
|
-
fallback?: boolean;
|
|
516
|
-
scalePosition?: 'left' | 'right';
|
|
517
|
-
rawValue?: any;
|
|
518
|
-
};
|
|
519
|
-
clickAway?: boolean;
|
|
520
|
-
backdrop?: boolean;
|
|
521
|
-
maxWidth?: number;
|
|
522
|
-
fontSize?: string;
|
|
523
|
-
padding?: string;
|
|
524
|
-
className?: string;
|
|
525
|
-
style?: Partial<CSSStyleDeclaration>;
|
|
526
|
-
info?: string;
|
|
527
|
-
menu?: {
|
|
528
|
-
menuItems: Array<{
|
|
529
|
-
label: string;
|
|
530
|
-
onClick: () => void;
|
|
531
|
-
active?: boolean;
|
|
532
|
-
}>;
|
|
533
|
-
};
|
|
534
|
-
title?: {
|
|
535
|
-
padding?: string;
|
|
536
|
-
};
|
|
537
|
-
content?: {
|
|
538
|
-
padding?: string;
|
|
539
|
-
};
|
|
540
|
-
footer?: {
|
|
541
|
-
padding?: string;
|
|
542
|
-
className?: string;
|
|
543
|
-
};
|
|
544
|
-
dictionary?: {
|
|
545
|
-
close?: string;
|
|
546
|
-
};
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
declare interface ContentBlock {
|
|
550
|
-
draw?: DrawContent;
|
|
551
|
-
schedule?: ScheduleContent;
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
export declare function controlBar(params: {
|
|
555
|
-
table?: any;
|
|
556
|
-
targetClassName?: string;
|
|
557
|
-
items?: any[];
|
|
558
|
-
onSelection?: (rows: any[]) => void;
|
|
559
|
-
target?: HTMLElement;
|
|
560
|
-
selectItemFn?: (params: any) => void;
|
|
561
|
-
}): {
|
|
562
|
-
elements: Record<string, HTMLElement>;
|
|
563
|
-
inputs: Record<string, HTMLInputElement>;
|
|
564
|
-
};
|
|
565
|
-
|
|
566
|
-
declare interface CourtAvailabilityModalConfig {
|
|
567
|
-
title: string;
|
|
568
|
-
currentDay: string;
|
|
569
|
-
currentStartTime: string;
|
|
570
|
-
currentEndTime: string;
|
|
571
|
-
showScopeToggle?: boolean;
|
|
572
|
-
venueBounds?: {
|
|
573
|
-
startTime: string;
|
|
574
|
-
endTime: string;
|
|
575
|
-
};
|
|
576
|
-
onConfirm: (params: {
|
|
577
|
-
startTime: string;
|
|
578
|
-
endTime: string;
|
|
579
|
-
scope: 'current-day' | 'all-days';
|
|
580
|
-
}) => void;
|
|
581
|
-
onCancel?: () => void;
|
|
582
|
-
/** Custom labels for UI text */
|
|
583
|
-
labels?: {
|
|
584
|
-
startTime?: string;
|
|
585
|
-
endTime?: string;
|
|
586
|
-
applyTo?: string;
|
|
587
|
-
currentDayOnly?: string;
|
|
588
|
-
allDays?: string;
|
|
589
|
-
cancel?: string;
|
|
590
|
-
apply?: string;
|
|
591
|
-
venueWarning?: string;
|
|
592
|
-
};
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
declare interface CourtGridSlotCallbacks {
|
|
596
|
-
onMatchUpDrop?: (payload: SchedulePageDragPayload, event: DragEvent) => void;
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
declare interface CourtGridSlotOptions {
|
|
600
|
-
gridMaxHeight?: string;
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
export declare function courthiveComponentsVersion(): string;
|
|
604
|
-
|
|
605
|
-
declare type CourtRef = temporal.CourtRef;
|
|
606
|
-
|
|
607
|
-
declare type CourtRef_2 = temporal.CourtRef;
|
|
608
|
-
|
|
609
|
-
declare class CourtTimeline {
|
|
610
|
-
private options;
|
|
611
|
-
private callbacks;
|
|
612
|
-
private scale;
|
|
613
|
-
private timeAxis;
|
|
614
|
-
private layout;
|
|
615
|
-
private renderer;
|
|
616
|
-
private interaction;
|
|
617
|
-
private rootEl;
|
|
618
|
-
private bodyEl;
|
|
619
|
-
private resizeObserver;
|
|
620
|
-
private _batchUpdating;
|
|
621
|
-
private eventListeners;
|
|
622
|
-
constructor(container: HTMLElement, items: TimelineItemData[], groups: TimelineGroupData[], options?: TimelineOptions);
|
|
623
|
-
setGroups(groups: TimelineGroupData[]): void;
|
|
624
|
-
setItems(items: TimelineItemData[]): void;
|
|
625
|
-
setWindow(start: Date, end: Date, _opts?: {
|
|
626
|
-
animation?: boolean;
|
|
627
|
-
}): void;
|
|
628
|
-
setOptions(opts: Partial<TimelineOptions>): void;
|
|
629
|
-
on(event: string, handler: (...args: any[]) => void): void;
|
|
630
|
-
off(event: string, handler: (...args: any[]) => void): void;
|
|
631
|
-
private emit;
|
|
632
|
-
/** Register callback for multi-row ghost creation */
|
|
633
|
-
onMultiRowCreate(handler: (span: MultiRowSpan) => void): void;
|
|
634
|
-
/** Register onAdd callback (double-click on empty area → single block) */
|
|
635
|
-
onAdd(handler: (item: {
|
|
636
|
-
group: string;
|
|
637
|
-
start: Date;
|
|
638
|
-
end: Date;
|
|
639
|
-
}) => void): void;
|
|
640
|
-
/** Register onMove callback (drag/resize completed) */
|
|
641
|
-
onMove(handler: (item: {
|
|
642
|
-
id: string;
|
|
643
|
-
group: string;
|
|
644
|
-
start: Date;
|
|
645
|
-
end: Date;
|
|
646
|
-
}) => boolean): void;
|
|
647
|
-
/** Register onMoving callback (live validation during drag) */
|
|
648
|
-
onMoving(handler: (item: {
|
|
649
|
-
id: string;
|
|
650
|
-
group: string;
|
|
651
|
-
start: Date;
|
|
652
|
-
end: Date;
|
|
653
|
-
}) => {
|
|
654
|
-
start: Date;
|
|
655
|
-
end: Date;
|
|
656
|
-
} | null): void;
|
|
657
|
-
/** Register callback for click on a day label in the axis header */
|
|
658
|
-
onDayClick(handler: (dayStr: string) => void): void;
|
|
659
|
-
/** Get the content area element (for external DOM queries like popover anchoring) */
|
|
660
|
-
getContentElement(): HTMLElement;
|
|
661
|
-
/**
|
|
662
|
-
* Set daily operating bounds. Overnight gaps are collapsed so each day
|
|
663
|
-
* only shows the operating window (e.g., "07:00" to "21:00").
|
|
664
|
-
*/
|
|
665
|
-
setDailyBounds(startTime: string, endTime: string): void;
|
|
666
|
-
/** Remove daily bounds — return to continuous 24-hour mode */
|
|
667
|
-
clearDailyBounds(): void;
|
|
668
|
-
/**
|
|
669
|
-
* Set the explicit list of days to display. In daily-bounds mode, only
|
|
670
|
-
* these days get column space — gap days are fully collapsed.
|
|
671
|
-
*/
|
|
672
|
-
setVisibleDays(days: string[]): void;
|
|
673
|
-
/** Clear visible days restriction while keeping daily bounds active */
|
|
674
|
-
clearVisibleDays(): void;
|
|
675
|
-
/**
|
|
676
|
-
* Begin a batch update. While batching, renderAll() calls are suppressed.
|
|
677
|
-
* Call endBatchUpdate() when done to trigger a single render.
|
|
678
|
-
*/
|
|
679
|
-
beginBatchUpdate(): void;
|
|
680
|
-
/** End batch update and trigger a single render. */
|
|
681
|
-
endBatchUpdate(): void;
|
|
682
|
-
private renderAll;
|
|
683
|
-
destroy(): void;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
export declare function createCardPopoverManager(callbacks: CardPopoverCallbacks): CardPopoverManager;
|
|
687
|
-
|
|
688
|
-
export declare function createCompositionEditor(container: HTMLElement, config: CompositionEditorConfig): {
|
|
689
|
-
destroy: () => void;
|
|
690
|
-
getComposition: () => SavedComposition;
|
|
691
|
-
};
|
|
692
|
-
|
|
693
|
-
/**
|
|
694
|
-
* Creates an interactive footer bar for inline scoring:
|
|
695
|
-
* [Undo] [Redo] [Clear] [Submit] | situation flags
|
|
696
|
-
*/
|
|
697
|
-
export declare function createInlineScoringFooter(params: FooterParams): {
|
|
698
|
-
element: HTMLElement;
|
|
699
|
-
update: () => void;
|
|
700
|
-
};
|
|
701
|
-
|
|
702
|
-
export declare function createPolicyCatalog(config: PolicyCatalogConfig, container: HTMLElement): PolicyCatalogControl;
|
|
703
|
-
|
|
704
|
-
export declare function createPrintCompositionEditor(container: HTMLElement, config: PrintCompositionEditorConfig): PrintCompositionEditorHandle;
|
|
705
|
-
|
|
706
|
-
export declare function createSchedulePage(config: SchedulePageConfig, container: HTMLElement): SchedulePageControl;
|
|
707
|
-
|
|
708
|
-
/**
|
|
709
|
-
* Convenience factory for standalone use (e.g., TMX scheduling page).
|
|
710
|
-
*/
|
|
711
|
-
export declare function createSchedulingEditor(config: SchedulingEditorConfig, container: HTMLElement): SchedulingEditorControl;
|
|
712
|
-
|
|
713
|
-
export declare function createSchedulingProfile(config: SchedulingProfileConfig, container: HTMLElement): SchedulingProfileControl;
|
|
714
|
-
|
|
715
|
-
/**
|
|
716
|
-
* Create and render a temporal grid
|
|
717
|
-
*/
|
|
718
|
-
export declare function createTemporalGrid(config: TemporalGridConfig, container: HTMLElement): TemporalGrid;
|
|
719
|
-
|
|
720
|
-
declare interface DateStripCallbacks {
|
|
721
|
-
onDateSelected: (date: string) => void;
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
declare interface DateStripCallbacks_2 {
|
|
725
|
-
onDateSelected: (date: string) => void;
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
declare function dateValidator(value: any): boolean;
|
|
729
|
-
|
|
730
|
-
declare type DayId = temporal.DayId;
|
|
731
|
-
|
|
732
|
-
declare type DayId_2 = temporal.DayId;
|
|
733
|
-
|
|
734
|
-
declare type DayId_3 = temporal.DayId;
|
|
735
|
-
|
|
736
|
-
declare const DEFAULT_COLOR_SCHEME: BlockColorScheme;
|
|
737
|
-
|
|
738
|
-
export declare const DEFAULT_SCHEDULE_CELL_CONFIG: ScheduleCellConfig;
|
|
739
|
-
|
|
740
|
-
export declare interface DemandAdapter {
|
|
741
|
-
estimateDayDemandMinutes: (date: string, profile: SchedulingProfile) => number;
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
export declare interface DependencyAdapter {
|
|
745
|
-
/**
|
|
746
|
-
* Returns roundKeyStrings for all rounds that must complete
|
|
747
|
-
* before the given round can proceed.
|
|
748
|
-
* Key format: "tournamentId|eventId|drawId|structureId|roundNumber"
|
|
749
|
-
*/
|
|
750
|
-
getRoundDependencies: (roundKeyString: string) => string[];
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
export declare function destroyTipster(target?: HTMLElement | any): void;
|
|
754
|
-
|
|
755
|
-
export declare interface DisplayExtensionValue {
|
|
756
|
-
compositionName?: string;
|
|
757
|
-
theme?: string;
|
|
758
|
-
configuration?: Partial<Configuration>;
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
export declare type DragPayload = CatalogDragPayload | PlannedDragPayload;
|
|
762
|
-
|
|
763
|
-
declare interface DrawContent {
|
|
764
|
-
includeSeedings?: boolean;
|
|
765
|
-
includeScores?: boolean;
|
|
766
|
-
showByes?: boolean;
|
|
767
|
-
showDrawPositions?: boolean;
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
export declare const drawer: (drawerId?: string) => any;
|
|
771
|
-
|
|
772
|
-
export declare interface DrawerOptions {
|
|
773
|
-
title?: string;
|
|
774
|
-
content?: string | ((elem: HTMLElement, close: () => void) => any);
|
|
775
|
-
side?: 'left' | 'right';
|
|
776
|
-
width?: string;
|
|
777
|
-
footer?: string | ((elem: HTMLElement, close: () => void) => any);
|
|
778
|
-
callback?: () => void;
|
|
779
|
-
onClose?: () => boolean | void;
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
export declare interface DrawOptionsResult {
|
|
783
|
-
drawOptions: any;
|
|
784
|
-
postGenerationMethods: any[];
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
export declare class DrawStateManager {
|
|
788
|
-
private tournamentRecord;
|
|
789
|
-
private readonly drawId;
|
|
790
|
-
private readonly structureId;
|
|
791
|
-
private readonly eventId;
|
|
792
|
-
private renderCallback?;
|
|
793
|
-
private focusDrawPosition?;
|
|
794
|
-
constructor({ tournamentRecord, drawId, structureId, eventId }: {
|
|
795
|
-
tournamentRecord: any;
|
|
796
|
-
drawId: string;
|
|
797
|
-
structureId: string;
|
|
798
|
-
eventId?: string;
|
|
799
|
-
});
|
|
800
|
-
/**
|
|
801
|
-
* Set callback to trigger re-render when state changes
|
|
802
|
-
*/
|
|
803
|
-
setRenderCallback(callback: RenderCallback): void;
|
|
804
|
-
/**
|
|
805
|
-
* Get participant IDs from draw entries (via flight profile or drawDefinition.entries)
|
|
806
|
-
*/
|
|
807
|
-
private getDrawEntryParticipantIds;
|
|
808
|
-
/**
|
|
809
|
-
* Get participants entered in the draw (including qualifiers)
|
|
810
|
-
*/
|
|
811
|
-
getAllParticipants(): Participant[];
|
|
812
|
-
/**
|
|
813
|
-
* Get participants that haven't been assigned to draw positions yet
|
|
814
|
-
*/
|
|
815
|
-
getAvailableParticipants(): Participant[];
|
|
816
|
-
/**
|
|
817
|
-
* Remove participant assignment from a draw position
|
|
818
|
-
*/
|
|
819
|
-
removeAssignment({ drawPosition }: {
|
|
820
|
-
drawPosition: number;
|
|
821
|
-
}): {
|
|
822
|
-
success: boolean;
|
|
823
|
-
error?: any;
|
|
824
|
-
};
|
|
825
|
-
/**
|
|
826
|
-
* Assign a participant to a specific draw position
|
|
827
|
-
* Note: Direct assignment replaces existing assignment (even with scores)
|
|
828
|
-
*/
|
|
829
|
-
assignParticipant({ drawPosition, participantId }: {
|
|
830
|
-
drawPosition: number;
|
|
831
|
-
participantId: string;
|
|
832
|
-
}): {
|
|
833
|
-
success: boolean;
|
|
834
|
-
error?: any;
|
|
835
|
-
};
|
|
836
|
-
/**
|
|
837
|
-
* Get and clear the drawPosition that should receive focus
|
|
838
|
-
*/
|
|
839
|
-
getAndClearFocusDrawPosition(): number | undefined;
|
|
840
|
-
/**
|
|
841
|
-
* Assign a BYE to a specific draw position
|
|
842
|
-
* Note: Direct assignment replaces existing assignment (even with scores)
|
|
843
|
-
*/
|
|
844
|
-
assignBye({ drawPosition }: {
|
|
845
|
-
drawPosition: number;
|
|
846
|
-
}): {
|
|
847
|
-
success: boolean;
|
|
848
|
-
error?: any;
|
|
849
|
-
};
|
|
850
|
-
/**
|
|
851
|
-
* Assign a QUALIFIER placeholder to a specific draw position
|
|
852
|
-
* Note: Used when structure has qualifying stage feeding into it
|
|
853
|
-
*/
|
|
854
|
-
assignQualifier({ drawPosition }: {
|
|
855
|
-
drawPosition: number;
|
|
856
|
-
}): {
|
|
857
|
-
success: boolean;
|
|
858
|
-
error?: any;
|
|
859
|
-
};
|
|
860
|
-
/**
|
|
861
|
-
* Get all matchUps for the draw with properly populated drawPosition data
|
|
862
|
-
*/
|
|
863
|
-
getMatchUps(): any[];
|
|
864
|
-
/**
|
|
865
|
-
* Get current tournament state
|
|
866
|
-
*/
|
|
867
|
-
getState(): any;
|
|
868
|
-
/**
|
|
869
|
-
* Get draw context information
|
|
870
|
-
*/
|
|
871
|
-
getContext(): {
|
|
872
|
-
drawId: string;
|
|
873
|
-
structureId: string;
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
|
-
|
|
877
|
-
export declare function dropDownButton({ target, button, stateChange }: {
|
|
878
|
-
target?: HTMLElement;
|
|
879
|
-
button: any;
|
|
880
|
-
stateChange?: () => void;
|
|
881
|
-
}): HTMLDivElement;
|
|
882
|
-
|
|
883
|
-
export declare interface DropResult {
|
|
884
|
-
ok: boolean;
|
|
885
|
-
profile: SchedulingProfile;
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
export declare interface DropTarget {
|
|
889
|
-
date: string;
|
|
890
|
-
venueId: string;
|
|
891
|
-
index: number;
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
declare interface EdgeEditorCallbacks {
|
|
895
|
-
onUpdateEdge: (edgeId: string, updates: Partial<TopologyEdge>) => void;
|
|
896
|
-
onDeleteEdge: (edgeId: string) => void;
|
|
897
|
-
readOnly?: boolean;
|
|
898
|
-
}
|
|
899
|
-
|
|
900
|
-
declare interface EditorShellCallbacks {
|
|
901
|
-
onSave: () => void;
|
|
902
|
-
onReset: () => void;
|
|
903
|
-
onApply: () => void;
|
|
904
|
-
onDuplicate: () => void;
|
|
905
|
-
}
|
|
906
|
-
|
|
907
|
-
declare interface EditorShellPanel extends UIPanel_4<PolicyCatalogState> {
|
|
908
|
-
bodyElement: HTMLElement;
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
declare const emailValidator: (value: string) => RegExpMatchArray | null;
|
|
912
|
-
|
|
913
|
-
/** Create empty scheduling policy with sensible structure */
|
|
914
|
-
export declare function emptySchedulingPolicy(): SchedulingPolicyData;
|
|
915
|
-
|
|
916
|
-
declare interface EngineBlockPopoverOptions {
|
|
917
|
-
itemId: string;
|
|
918
|
-
blockId: string;
|
|
919
|
-
engine: TemporalEngine;
|
|
920
|
-
day: string;
|
|
921
|
-
onBlockChanged: () => void;
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
/**
|
|
925
|
-
* Bridge: converts ScoringEngine state into a TODS-compatible MatchUp object
|
|
926
|
-
* suitable for renderMatchUp(). Injects live point display into the active set.
|
|
927
|
-
*/
|
|
928
|
-
export declare function engineToMatchUp(engine: any, baseMatchUp: MatchUp): MatchUp;
|
|
929
|
-
|
|
930
|
-
declare interface EventHandlers {
|
|
931
|
-
matchUpClick?: (params: {
|
|
932
|
-
pointerEvent: MouseEvent;
|
|
933
|
-
matchUp: MatchUp;
|
|
934
|
-
}) => void;
|
|
935
|
-
participantClick?: (params: {
|
|
936
|
-
individualParticipant: IndividualParticipant;
|
|
937
|
-
matchUp?: MatchUp;
|
|
938
|
-
pointerEvent: MouseEvent;
|
|
939
|
-
participant?: Participant;
|
|
940
|
-
side?: Side;
|
|
941
|
-
}) => void;
|
|
942
|
-
assignParticipant?: (params: {
|
|
943
|
-
matchUp: MatchUp;
|
|
944
|
-
side: Side;
|
|
945
|
-
sideNumber: number;
|
|
946
|
-
participant: Participant;
|
|
947
|
-
pointerEvent?: Event;
|
|
948
|
-
}) => void;
|
|
949
|
-
assignBye?: (params: {
|
|
950
|
-
matchUp: MatchUp;
|
|
951
|
-
side: Side;
|
|
952
|
-
sideNumber: number;
|
|
953
|
-
pointerEvent?: Event;
|
|
954
|
-
}) => void;
|
|
955
|
-
assignQualifier?: (params: {
|
|
956
|
-
matchUp: MatchUp;
|
|
957
|
-
side: Side;
|
|
958
|
-
sideNumber: number;
|
|
959
|
-
pointerEvent?: Event;
|
|
960
|
-
}) => void;
|
|
961
|
-
removeAssignment?: (params: {
|
|
962
|
-
matchUp: MatchUp;
|
|
963
|
-
side: Side;
|
|
964
|
-
sideNumber: number;
|
|
965
|
-
pointerEvent?: Event;
|
|
966
|
-
}) => void;
|
|
967
|
-
scoreClick?: (params: {
|
|
968
|
-
pointerEvent: MouseEvent;
|
|
969
|
-
matchUp: MatchUp;
|
|
970
|
-
}) => void;
|
|
971
|
-
pillClick?: (params: {
|
|
972
|
-
pointerEvent: MouseEvent;
|
|
973
|
-
matchUp: MatchUp;
|
|
974
|
-
sideNumber: number;
|
|
975
|
-
}) => void;
|
|
976
|
-
scoreIncrement?: (params: {
|
|
977
|
-
matchUpId: string;
|
|
978
|
-
sideNumber: number;
|
|
979
|
-
scoreType: 'point' | 'game' | 'set';
|
|
980
|
-
}) => void;
|
|
981
|
-
inlineUndo?: (params: {
|
|
982
|
-
matchUpId: string;
|
|
983
|
-
}) => void;
|
|
984
|
-
inlineRedo?: (params: {
|
|
985
|
-
matchUpId: string;
|
|
986
|
-
}) => void;
|
|
987
|
-
inlineClear?: (params: {
|
|
988
|
-
matchUpId: string;
|
|
989
|
-
}) => void;
|
|
990
|
-
inlineSubmit?: (params: {
|
|
991
|
-
matchUpId: string;
|
|
992
|
-
}) => void;
|
|
993
|
-
[key: string]: any;
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
export declare function filterCatalog(catalog: CatalogRoundItem[], query: string, plannedKeys: Set<string>, behavior?: PlannedRoundBehavior): Array<CatalogRoundItem & {
|
|
997
|
-
isPlanned: boolean;
|
|
998
|
-
}>;
|
|
999
|
-
|
|
1000
|
-
export declare function filterMatchUpCatalog(catalog: CatalogMatchUpItem[], query: string, behavior?: ScheduledBehavior, filters?: CatalogFilters, showCompleted?: boolean): CatalogMatchUpItem[];
|
|
1001
|
-
|
|
1002
|
-
/**
|
|
1003
|
-
* Filter catalog items by search query.
|
|
1004
|
-
* Matches against name, policyType label, description, and source.
|
|
1005
|
-
*/
|
|
1006
|
-
export declare function filterPolicyCatalog(catalog: PolicyCatalogItem[], searchQuery: string): PolicyCatalogItem[];
|
|
1007
|
-
|
|
1008
|
-
export declare function findIssuesForLocator(ruleResults: ValidationResult[], locator: RoundLocator): ValidationResult[];
|
|
1009
|
-
|
|
1010
|
-
export declare interface FixAction {
|
|
1011
|
-
kind: FixActionKind;
|
|
1012
|
-
label: string;
|
|
1013
|
-
locator?: RoundLocator;
|
|
1014
|
-
after?: RoundLocator;
|
|
1015
|
-
before?: RoundLocator;
|
|
1016
|
-
date?: string;
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
declare type FixActionKind = 'JUMP_TO_ITEM' | 'OPEN_TEMPORAL_GRID' | 'MOVE_ITEM_AFTER' | 'MOVE_ITEM_BEFORE';
|
|
1020
|
-
|
|
1021
|
-
export declare interface FlightProfileConfig {
|
|
1022
|
-
labels?: {
|
|
1023
|
-
title?: string;
|
|
1024
|
-
flightsCountLabel?: string;
|
|
1025
|
-
namingTypeLabel?: string;
|
|
1026
|
-
customNameLabel?: string;
|
|
1027
|
-
suffixTypeLabel?: string;
|
|
1028
|
-
scaleTypeLabel?: string;
|
|
1029
|
-
scaleNameLabel?: string;
|
|
1030
|
-
eventTypeLabel?: string;
|
|
1031
|
-
splitMethodLabel?: string;
|
|
1032
|
-
flightNamesLabel?: string;
|
|
1033
|
-
cancel?: string;
|
|
1034
|
-
ok?: string;
|
|
1035
|
-
existingNote?: string;
|
|
1036
|
-
};
|
|
1037
|
-
options?: {
|
|
1038
|
-
eventTypes?: string[];
|
|
1039
|
-
ratingTypes?: string[];
|
|
1040
|
-
};
|
|
1041
|
-
eventType?: string;
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
|
-
declare interface FooterBlock {
|
|
1045
|
-
layout?: PrintFooterLayout;
|
|
1046
|
-
showTimestamp?: boolean;
|
|
1047
|
-
showPageNumbers?: boolean;
|
|
1048
|
-
}
|
|
1049
|
-
|
|
1050
|
-
declare interface FooterConfig {
|
|
1051
|
-
layout: string;
|
|
1052
|
-
showPageNumbers?: boolean;
|
|
1053
|
-
showTimestamp?: boolean;
|
|
1054
|
-
releaseDate?: string;
|
|
1055
|
-
drawCeremonyDate?: string;
|
|
1056
|
-
notes?: string[];
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
declare interface FooterParams {
|
|
1060
|
-
matchUpId: string;
|
|
1061
|
-
manager: InlineScoringManager;
|
|
1062
|
-
baseMatchUp: MatchUp;
|
|
1063
|
-
onUpdate: (matchUp: MatchUp) => void;
|
|
1064
|
-
showSituation?: boolean;
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
/** Get a human-readable description for a matchUp format code */
|
|
1068
|
-
export declare function formatCodeLabel(code: string): string;
|
|
1069
|
-
|
|
1070
|
-
/**
|
|
1071
|
-
* Convert a tods-competition-factory `getEventData().drawsData[i].structures[0]`
|
|
1072
|
-
* object into the TODS-aligned SunburstDrawData that the sunburst consumes.
|
|
1073
|
-
*/
|
|
1074
|
-
export declare function fromFactoryDrawData(structure: any): SunburstDrawData;
|
|
1075
|
-
|
|
1076
|
-
/**
|
|
1077
|
-
* Convert a legacy TournamentDraw (with R128/R64/.../F/W round keys)
|
|
1078
|
-
* into the TODS-aligned SunburstDrawData.
|
|
1079
|
-
*/
|
|
1080
|
-
export declare function fromLegacyDraw(tournamentDraw: any): SunburstDrawData;
|
|
1081
|
-
|
|
1082
|
-
export declare function generatePreviewMatchUps({ structureType, drawSize, stage, structureId, qualifyingPositions, structureOptions }: {
|
|
1083
|
-
structureType: string;
|
|
1084
|
-
drawSize: number;
|
|
1085
|
-
stage?: string;
|
|
1086
|
-
structureId?: string;
|
|
1087
|
-
qualifyingPositions?: number;
|
|
1088
|
-
structureOptions?: any;
|
|
1089
|
-
}): SchematicMatchUp[];
|
|
1090
|
-
|
|
1091
|
-
export declare interface GenerateTeamsConfig {
|
|
1092
|
-
callback?: (participants: any[]) => void;
|
|
1093
|
-
consideredDate?: string;
|
|
1094
|
-
title?: string;
|
|
1095
|
-
/** Builtin + user tieFormats for team size inference */
|
|
1096
|
-
tieFormats?: {
|
|
1097
|
-
label: string;
|
|
1098
|
-
value: string;
|
|
1099
|
-
tieFormat: any;
|
|
1100
|
-
}[];
|
|
1101
|
-
/** Custom labels for form fields and buttons */
|
|
1102
|
-
labels?: {
|
|
1103
|
-
gender?: string;
|
|
1104
|
-
teamsCount?: string;
|
|
1105
|
-
tieFormatTemplate?: string;
|
|
1106
|
-
manualTeamSize?: string;
|
|
1107
|
-
playersPerTeam?: string;
|
|
1108
|
-
countries?: string;
|
|
1109
|
-
cancel?: string;
|
|
1110
|
-
generate?: string;
|
|
1111
|
-
genderAny?: string;
|
|
1112
|
-
genderFemale?: string;
|
|
1113
|
-
genderMale?: string;
|
|
1114
|
-
};
|
|
1115
|
-
}
|
|
1116
|
-
|
|
1117
|
-
/**
|
|
1118
|
-
* Main function to open the age category modal
|
|
1119
|
-
*/
|
|
1120
|
-
export declare function getAgeCategoryModal({ existingAgeCategoryCode, existingCategory, editorConfig: userConfig, consideredDate: providedDate, callback, config, modalConfig }?: {
|
|
1121
|
-
existingAgeCategoryCode?: string;
|
|
1122
|
-
existingCategory?: {
|
|
1123
|
-
ageCategoryCode?: string;
|
|
1124
|
-
[key: string]: any;
|
|
1125
|
-
};
|
|
1126
|
-
editorConfig?: AgeCategoryConfig;
|
|
1127
|
-
consideredDate?: string;
|
|
1128
|
-
callback?: (category: {
|
|
1129
|
-
ageCategoryCode: string;
|
|
1130
|
-
[key: string]: any;
|
|
1131
|
-
}) => void;
|
|
1132
|
-
config?: AgeCategoryConfig;
|
|
1133
|
-
modalConfig?: any;
|
|
1134
|
-
}): {
|
|
1135
|
-
setContent: ({ content: newContent, config }: {
|
|
1136
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1137
|
-
config?: ModalConfig;
|
|
1138
|
-
}) => void;
|
|
1139
|
-
setButtons: ({ buttons, config }: {
|
|
1140
|
-
buttons: ModalButton[];
|
|
1141
|
-
config?: ModalConfig;
|
|
1142
|
-
}) => void;
|
|
1143
|
-
update: ({ content: newContent, buttons, title, config: newConfig, onClose }: {
|
|
1144
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1145
|
-
buttons?: ModalButton[];
|
|
1146
|
-
title?: string;
|
|
1147
|
-
config?: ModalConfig;
|
|
1148
|
-
onClose?: (params: {
|
|
1149
|
-
content?: any;
|
|
1150
|
-
}) => void;
|
|
1151
|
-
}) => void;
|
|
1152
|
-
};
|
|
1153
|
-
|
|
1154
|
-
/**
|
|
1155
|
-
* Opens the Category editor modal
|
|
1156
|
-
* @param existingCategory - Optional existing category to edit
|
|
1157
|
-
* @param editorConfig - Optional configuration for labels and options
|
|
1158
|
-
* @param callback - Called with the category when user clicks OK
|
|
1159
|
-
* @returns Modal result with open() and close() functions
|
|
1160
|
-
*/
|
|
1161
|
-
export declare function getCategoryModal(params: {
|
|
1162
|
-
existingCategory?: Category;
|
|
1163
|
-
editorConfig?: CategoryConfig;
|
|
1164
|
-
callback?: (category: Category) => void;
|
|
1165
|
-
}): any;
|
|
1166
|
-
|
|
1167
|
-
/**
|
|
1168
|
-
* Opens the Flight Profile editor modal
|
|
1169
|
-
* @param existingFlightProfile - Optional existing flight profile to edit
|
|
1170
|
-
* @param editorConfig - Optional configuration for labels and options
|
|
1171
|
-
* @param callback - Called with the flight profile configuration when user clicks OK
|
|
1172
|
-
* @returns Modal result with open() and close() functions
|
|
1173
|
-
*/
|
|
1174
|
-
export declare function getFlightProfileModal(params: {
|
|
1175
|
-
existingFlightProfile?: any;
|
|
1176
|
-
editorConfig?: FlightProfileConfig;
|
|
1177
|
-
callback?: (config: any) => void;
|
|
1178
|
-
}): any;
|
|
1179
|
-
|
|
1180
|
-
export declare function getGenerateTeamsModal(config?: GenerateTeamsConfig): void;
|
|
1181
|
-
|
|
1182
|
-
export declare function getMatchUpFormatModal({ existingMatchUpFormat, callback, config, modalConfig }?: {
|
|
1183
|
-
existingMatchUpFormat?: string;
|
|
1184
|
-
callback?: (format: string) => void;
|
|
1185
|
-
config?: MatchUpFormatConfig;
|
|
1186
|
-
modalConfig?: any;
|
|
1187
|
-
}): {
|
|
1188
|
-
setContent: ({ content: newContent, config }: {
|
|
1189
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1190
|
-
config?: ModalConfig;
|
|
1191
|
-
}) => void;
|
|
1192
|
-
setButtons: ({ buttons, config }: {
|
|
1193
|
-
buttons: ModalButton[];
|
|
1194
|
-
config?: ModalConfig;
|
|
1195
|
-
}) => void;
|
|
1196
|
-
update: ({ content: newContent, buttons, title, config: newConfig, onClose }: {
|
|
1197
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1198
|
-
buttons?: ModalButton[];
|
|
1199
|
-
title?: string;
|
|
1200
|
-
config?: ModalConfig;
|
|
1201
|
-
onClose?: (params: {
|
|
1202
|
-
content?: any;
|
|
1203
|
-
}) => void;
|
|
1204
|
-
}) => void;
|
|
1205
|
-
};
|
|
1206
|
-
|
|
1207
|
-
/**
|
|
1208
|
-
* Get the match winner based on sets won
|
|
1209
|
-
* Returns undefined if match is not complete
|
|
1210
|
-
*/
|
|
1211
|
-
export declare function getMatchWinner(sets: SetScore[], bestOf: number, exactly?: number): 1 | 2 | undefined;
|
|
1212
|
-
|
|
1213
|
-
/**
|
|
1214
|
-
* Calculate the maximum allowed score for a regular set game score
|
|
1215
|
-
* based on the opponent's score and set rules
|
|
1216
|
-
*
|
|
1217
|
-
* For timed sets, returns Infinity (no maximum) since scores don't need relationships
|
|
1218
|
-
*/
|
|
1219
|
-
export declare function getMaxAllowedScore(setIndex: number, side: 1 | 2, currentScores: {
|
|
1220
|
-
side1: number;
|
|
1221
|
-
side2: number;
|
|
1222
|
-
}, config: MatchUpConfig): number;
|
|
1223
|
-
|
|
1224
|
-
/**
|
|
1225
|
-
* Opens a modal for generating mock participants with configurable options.
|
|
1226
|
-
*
|
|
1227
|
-
* Features:
|
|
1228
|
-
* - Gender selection (Any/Male/Female)
|
|
1229
|
-
* - Participant count (8-256)
|
|
1230
|
-
* - Age range with automatic validation (ageMax >= ageMin)
|
|
1231
|
-
* - Number of countries to limit nationality diversity
|
|
1232
|
-
* - Optional WTN/UTR ratings
|
|
1233
|
-
* - Birthdate generation based on consideredDate and age range
|
|
1234
|
-
*
|
|
1235
|
-
* @param config - Configuration options
|
|
1236
|
-
* @returns void
|
|
1237
|
-
*
|
|
1238
|
-
* @example
|
|
1239
|
-
* // Basic usage
|
|
1240
|
-
* getMockParticipantsModal({
|
|
1241
|
-
* callback: (participants) => {
|
|
1242
|
-
* console.log('Generated participants:', participants);
|
|
1243
|
-
* // Add participants to tournament
|
|
1244
|
-
* }
|
|
1245
|
-
* });
|
|
1246
|
-
*
|
|
1247
|
-
* @example
|
|
1248
|
-
* // With consideredDate and defaults
|
|
1249
|
-
* getMockParticipantsModal({
|
|
1250
|
-
* consideredDate: '2024-12-31',
|
|
1251
|
-
* callback: (participants) => {
|
|
1252
|
-
* // Add participants to tournament
|
|
1253
|
-
* },
|
|
1254
|
-
* defaults: {
|
|
1255
|
-
* participantsCount: 64,
|
|
1256
|
-
* ageMin: 10,
|
|
1257
|
-
* ageMax: 18,
|
|
1258
|
-
* nationalityCodesCount: 10,
|
|
1259
|
-
* wtnRating: true
|
|
1260
|
-
* }
|
|
1261
|
-
* });
|
|
1262
|
-
*/
|
|
1263
|
-
export declare function getMockParticipantsModal(config?: MockParticipantsConfig): void;
|
|
1264
|
-
|
|
1265
|
-
export declare function getPlannedRoundKeys(profile: {
|
|
1266
|
-
venues: {
|
|
1267
|
-
rounds: {
|
|
1268
|
-
roundSegment?: unknown;
|
|
1269
|
-
}[];
|
|
1270
|
-
}[];
|
|
1271
|
-
}[]): Set<string>;
|
|
1272
|
-
|
|
1273
|
-
/** Lookup metadata by policyType string */
|
|
1274
|
-
export declare function getPolicyTypeMeta(policyType: string): PolicyTypeMeta | undefined;
|
|
1275
|
-
|
|
1276
|
-
/**
|
|
1277
|
-
* Get port position relative to canvas for SVG edge rendering.
|
|
1278
|
-
*/
|
|
1279
|
-
export declare function getPortPosition(node: TopologyNode, portType: 'input' | 'winner' | 'loser'): {
|
|
1280
|
-
x: number;
|
|
1281
|
-
y: number;
|
|
1282
|
-
};
|
|
1283
|
-
|
|
1284
|
-
export declare function getRoundAt(profile: SchedulingProfile, locator: RoundLocator): RoundProfile | null;
|
|
1285
|
-
|
|
1286
|
-
/**
|
|
1287
|
-
* Get current scoring configuration
|
|
1288
|
-
*/
|
|
1289
|
-
export declare function getScoringConfig(): ScoringConfig;
|
|
1290
|
-
|
|
1291
|
-
/**
|
|
1292
|
-
* Get the format for a specific set index
|
|
1293
|
-
* Uses finalSetFormat for deciding set if available
|
|
1294
|
-
*/
|
|
1295
|
-
export declare function getSetFormatForIndex(setIndex: number, config: MatchUpConfig): SetFormat | undefined;
|
|
1296
|
-
|
|
1297
|
-
/**
|
|
1298
|
-
* Calculate which side won a set
|
|
1299
|
-
* Returns undefined if set is not complete
|
|
1300
|
-
*/
|
|
1301
|
-
export declare function getSetWinner(setIndex: number, scores: {
|
|
1302
|
-
side1: number;
|
|
1303
|
-
side2: number;
|
|
1304
|
-
tiebreak?: number;
|
|
1305
|
-
}, config: MatchUpConfig): 1 | 2 | undefined;
|
|
1306
|
-
|
|
1307
|
-
export declare function getVenueRounds(profile: SchedulingProfile, date: string, venueId: string): RoundProfile[];
|
|
1308
|
-
|
|
1309
|
-
export declare interface GridMatchUpDragPayload {
|
|
1310
|
-
type: 'GRID_MATCHUP';
|
|
1311
|
-
matchUp: CatalogMatchUpItem;
|
|
1312
|
-
sourceTime?: string;
|
|
1313
|
-
sourceCourt?: string;
|
|
1314
|
-
}
|
|
1315
|
-
|
|
1316
|
-
export declare function groupCatalog(items: Array<CatalogRoundItem & {
|
|
1317
|
-
isPlanned: boolean;
|
|
1318
|
-
}>, mode: CatalogGroupBy): Map<string, Array<CatalogRoundItem & {
|
|
1319
|
-
isPlanned: boolean;
|
|
1320
|
-
}>>;
|
|
1321
|
-
|
|
1322
|
-
export declare function groupMatchUpCatalog(items: CatalogMatchUpItem[], mode: MatchUpCatalogGroupBy): Map<string, CatalogMatchUpItem[]>;
|
|
1323
|
-
|
|
1324
|
-
/**
|
|
1325
|
-
* Group catalog items by type or source.
|
|
1326
|
-
* Returns a Map with stable group ordering.
|
|
1327
|
-
*/
|
|
1328
|
-
export declare function groupPolicyCatalog(catalog: PolicyCatalogItem[], groupBy: PolicyCatalogGroupBy): Map<string, PolicyCatalogItem[]>;
|
|
1329
|
-
|
|
1330
|
-
declare interface HeaderBlock {
|
|
1331
|
-
layout?: PrintHeaderLayout;
|
|
1332
|
-
tournamentName?: string;
|
|
1333
|
-
subtitle?: string;
|
|
1334
|
-
}
|
|
1335
|
-
|
|
1336
|
-
/**
|
|
1337
|
-
* Composition Editor Modal — configure PDF header/footer layouts.
|
|
1338
|
-
*
|
|
1339
|
-
* Opens a modal with two tabs (via menu): Header Config and Footer Config.
|
|
1340
|
-
* Each tab provides form controls for selecting layouts and entering field values.
|
|
1341
|
-
* Returns the composed HeaderConfig + FooterConfig for pdf-factory.
|
|
1342
|
-
*/
|
|
1343
|
-
declare interface HeaderConfig {
|
|
1344
|
-
layout: string;
|
|
1345
|
-
tournamentName: string;
|
|
1346
|
-
subtitle?: string;
|
|
1347
|
-
startDate?: string;
|
|
1348
|
-
endDate?: string;
|
|
1349
|
-
location?: string;
|
|
1350
|
-
city?: string;
|
|
1351
|
-
country?: string;
|
|
1352
|
-
surface?: string;
|
|
1353
|
-
prizeMoney?: string;
|
|
1354
|
-
currency?: string;
|
|
1355
|
-
supervisor?: string;
|
|
1356
|
-
grade?: string;
|
|
1357
|
-
sectionLabel?: string;
|
|
1358
|
-
organizer?: string;
|
|
1359
|
-
chiefUmpire?: string;
|
|
1360
|
-
tournamentId?: string;
|
|
1361
|
-
}
|
|
1362
|
-
|
|
1363
|
-
export declare function hockeyRink(className: string): SVGSVGElement;
|
|
1364
|
-
|
|
1365
|
-
declare interface IndividualParticipant {
|
|
1366
|
-
participantOtherName?: string;
|
|
1367
|
-
participantId: string;
|
|
1368
|
-
participantName?: string;
|
|
1369
|
-
person?: Person;
|
|
1370
|
-
teams?: Participant[];
|
|
1371
|
-
rankings?: ScalesByType;
|
|
1372
|
-
ratings?: ScalesByType;
|
|
1373
|
-
useOtherName?: boolean;
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
/**
|
|
1377
|
-
* Initialize drawer HTML structure in the DOM
|
|
1378
|
-
*/
|
|
1379
|
-
export declare function initDrawer(drawerId?: string): void;
|
|
1380
|
-
|
|
1381
|
-
export declare interface InlineScoringCallbacks {
|
|
1382
|
-
onScoreChange?: (params: {
|
|
1383
|
-
matchUpId: string;
|
|
1384
|
-
matchUp: MatchUp;
|
|
1385
|
-
engine: any;
|
|
1386
|
-
}) => void;
|
|
1387
|
-
onMatchComplete?: (params: {
|
|
1388
|
-
matchUpId: string;
|
|
1389
|
-
winningSide: number;
|
|
1390
|
-
engine: any;
|
|
1391
|
-
}) => void;
|
|
1392
|
-
onEndMatch?: (params: {
|
|
1393
|
-
matchUpId: string;
|
|
1394
|
-
matchUpStatus: string;
|
|
1395
|
-
sideNumber?: number;
|
|
1396
|
-
engine: any;
|
|
1397
|
-
}) => void;
|
|
1398
|
-
onSubmit?: (params: {
|
|
1399
|
-
matchUpId: string;
|
|
1400
|
-
matchUp: MatchUp;
|
|
1401
|
-
engine: any;
|
|
1402
|
-
}) => void;
|
|
1403
|
-
}
|
|
1404
|
-
|
|
1405
|
-
export declare interface InlineScoringConfig {
|
|
1406
|
-
mode: InlineScoringMode;
|
|
1407
|
-
showFooter?: boolean;
|
|
1408
|
-
showSituation?: boolean;
|
|
1409
|
-
/** Runtime state for footer buttons — set by renderInlineMatchUp before calling renderMatchUp */
|
|
1410
|
-
canUndo?: boolean;
|
|
1411
|
-
canRedo?: boolean;
|
|
1412
|
-
isComplete?: boolean;
|
|
1413
|
-
situationText?: string;
|
|
1414
|
-
}
|
|
1415
|
-
|
|
1416
|
-
export declare interface InlineScoringEngineState {
|
|
1417
|
-
engine: any;
|
|
1418
|
-
matchUpFormat: string;
|
|
1419
|
-
pointCount: number;
|
|
1420
|
-
}
|
|
1421
|
-
|
|
1422
|
-
/**
|
|
1423
|
-
* Manages ScoringEngine instances for inline scoring in draw brackets.
|
|
1424
|
-
* One engine per matchUpId; lazily created on first interaction.
|
|
1425
|
-
*/
|
|
1426
|
-
export declare class InlineScoringManager {
|
|
1427
|
-
private engines;
|
|
1428
|
-
readonly callbacks: InlineScoringCallbacks;
|
|
1429
|
-
constructor(callbacks?: InlineScoringCallbacks);
|
|
1430
|
-
/**
|
|
1431
|
-
* Get or create a ScoringEngine for a matchUp.
|
|
1432
|
-
* If the matchUp has existing score data, initializes the engine with it.
|
|
1433
|
-
*/
|
|
1434
|
-
getOrCreate(matchUpId: string, matchUpFormat: string, existingMatchUp?: MatchUp): InlineScoringEngineState;
|
|
1435
|
-
get(matchUpId: string): InlineScoringEngineState | undefined;
|
|
1436
|
-
has(matchUpId: string): boolean;
|
|
1437
|
-
/**
|
|
1438
|
-
* Add a point for a side. Used in 'points' mode.
|
|
1439
|
-
* @param winner - 0 for side 1, 1 for side 2
|
|
1440
|
-
*/
|
|
1441
|
-
addPoint(matchUpId: string, winner: 0 | 1, baseMatchUp: MatchUp): MatchUp | undefined;
|
|
1442
|
-
/**
|
|
1443
|
-
* Add a game for a side. Used in 'games' mode.
|
|
1444
|
-
* @param winner - 0 for side 1, 1 for side 2
|
|
1445
|
-
*/
|
|
1446
|
-
addGame(matchUpId: string, winner: 0 | 1, baseMatchUp: MatchUp): MatchUp | undefined;
|
|
1447
|
-
/**
|
|
1448
|
-
* Add a set score. Used in 'entry' mode.
|
|
1449
|
-
*/
|
|
1450
|
-
addSet(matchUpId: string, side1Score: number, side2Score: number, baseMatchUp: MatchUp): MatchUp | undefined;
|
|
1451
|
-
undo(matchUpId: string, baseMatchUp: MatchUp): MatchUp | undefined;
|
|
1452
|
-
redo(matchUpId: string, baseMatchUp: MatchUp): MatchUp | undefined;
|
|
1453
|
-
reset(matchUpId: string, baseMatchUp: MatchUp): MatchUp | undefined;
|
|
1454
|
-
/**
|
|
1455
|
-
* Get the current engine-derived matchUp data.
|
|
1456
|
-
*/
|
|
1457
|
-
getMatchUp(matchUpId: string, baseMatchUp: MatchUp): MatchUp;
|
|
1458
|
-
/**
|
|
1459
|
-
* Get situation flags (break point, set point, etc.) for display.
|
|
1460
|
-
*/
|
|
1461
|
-
getSituation(matchUpId: string): Record<string, boolean> | undefined;
|
|
1462
|
-
canUndo(matchUpId: string): boolean;
|
|
1463
|
-
canRedo(matchUpId: string): boolean;
|
|
1464
|
-
isComplete(matchUpId: string): boolean;
|
|
1465
|
-
remove(matchUpId: string): void;
|
|
1466
|
-
clear(): void;
|
|
1467
|
-
private notifyAndReturn;
|
|
1468
|
-
}
|
|
1469
|
-
|
|
1470
|
-
export declare type InlineScoringMode = 'points' | 'games';
|
|
1471
|
-
|
|
1472
|
-
/**
|
|
1473
|
-
* Handle returned by `buildInteractiveScoringShell`. Consumers mount
|
|
1474
|
-
* `element` into the DOM, subscribe to state changes via
|
|
1475
|
-
* `addEventListener`, and call `destroy()` on unmount.
|
|
1476
|
-
*/
|
|
1477
|
-
export declare interface InteractiveScoringShell {
|
|
1478
|
-
/** The root DOM element for the scoring UI. Mount this into the page. */
|
|
1479
|
-
element: HTMLElement;
|
|
1480
|
-
/** Get the current MatchUp snapshot (for persistence). */
|
|
1481
|
-
getState(): MatchUp;
|
|
1482
|
-
/** Reset the scoring engine to 0-0. */
|
|
1483
|
-
reset(): void;
|
|
1484
|
-
/** Remove all listeners and release engine resources. */
|
|
1485
|
-
destroy(): void;
|
|
1486
|
-
/** Subscribe to state change events. */
|
|
1487
|
-
addEventListener(type: 'stateChanged', listener: (event: CustomEvent<StateChangedDetail>) => void): void;
|
|
1488
|
-
removeEventListener(type: 'stateChanged', listener: (event: CustomEvent<StateChangedDetail>) => void): void;
|
|
1489
|
-
}
|
|
1490
|
-
|
|
1491
|
-
/**
|
|
1492
|
-
* Configuration for `buildInteractiveScoringShell`.
|
|
1493
|
-
*
|
|
1494
|
-
* The shell is a mobile-first, full-page interactive scoring UI that
|
|
1495
|
-
* wraps a `ScoringEngine` (via the existing `InlineScoringManager`)
|
|
1496
|
-
* and presents two large point-entry buttons, a current score
|
|
1497
|
-
* display, and a control bar with undo/reset.
|
|
1498
|
-
*
|
|
1499
|
-
* The shell is stateful but emits a `stateChanged` CustomEvent on
|
|
1500
|
-
* every point so consumers (courthive-public for Phase 2) can
|
|
1501
|
-
* persist the current MatchUp to IndexedDB or any other store.
|
|
1502
|
-
*
|
|
1503
|
-
* Phase 2 targets standard tennis matchUpFormats. INTENNSE, pickleball,
|
|
1504
|
-
* and other formats are deferred to Phase 2.5+.
|
|
1505
|
-
*/
|
|
1506
|
-
export declare interface InteractiveScoringShellConfig {
|
|
1507
|
-
/** Unique matchUp id — used as the engine key and the persistence key. */
|
|
1508
|
-
matchUpId: string;
|
|
1509
|
-
/** matchUpFormat code, e.g. `'SET3-S:6/TB7'`. */
|
|
1510
|
-
matchUpFormat: string;
|
|
1511
|
-
/** Tournament id, for context display only (never sent anywhere). */
|
|
1512
|
-
tournamentId: string;
|
|
1513
|
-
/** Display name for side 1 (singles player or doubles pair). */
|
|
1514
|
-
side1Name: string;
|
|
1515
|
-
/** Display name for side 2. */
|
|
1516
|
-
side2Name: string;
|
|
1517
|
-
/**
|
|
1518
|
-
* Optional initial MatchUp to resume from — typically loaded from
|
|
1519
|
-
* IndexedDB. If omitted, the shell starts at 0-0.
|
|
1520
|
-
*/
|
|
1521
|
-
initialMatchUp?: MatchUp;
|
|
1522
|
-
}
|
|
1523
|
-
|
|
1524
|
-
export declare function isCompletedStatus(status?: string): boolean;
|
|
1525
|
-
|
|
1526
|
-
/**
|
|
1527
|
-
* Determine if match is complete based on sets won
|
|
1528
|
-
*/
|
|
1529
|
-
export declare function isMatchComplete(sets: SetScore[], bestOf: number, exactly?: number): boolean;
|
|
1530
|
-
|
|
1531
|
-
/**
|
|
1532
|
-
* Determine if a set is complete based on its scores
|
|
1533
|
-
*/
|
|
1534
|
-
export declare function isSetComplete(setIndex: number, scores: {
|
|
1535
|
-
side1: number;
|
|
1536
|
-
side2: number;
|
|
1537
|
-
tiebreak?: number;
|
|
1538
|
-
}, config: MatchUpConfig): boolean;
|
|
1539
|
-
|
|
1540
|
-
/**
|
|
1541
|
-
* Check if a set is tiebreak-only (e.g., TB10)
|
|
1542
|
-
*/
|
|
1543
|
-
export declare function isSetTiebreakOnly(format?: SetFormat): boolean;
|
|
1544
|
-
|
|
1545
|
-
/**
|
|
1546
|
-
* Check if a set format is timed (e.g., T10, T20)
|
|
1547
|
-
*/
|
|
1548
|
-
export declare function isSetTimed(format?: SetFormat): boolean;
|
|
1549
|
-
|
|
1550
|
-
export declare interface IssueIndex {
|
|
1551
|
-
all: ValidationResult[];
|
|
1552
|
-
bySeverity: Record<Severity, ValidationResult[]>;
|
|
1553
|
-
byDate: Record<string, ValidationResult[]>;
|
|
1554
|
-
byVenue: Record<string, ValidationResult[]>;
|
|
1555
|
-
byDraw: Record<string, ValidationResult[]>;
|
|
1556
|
-
counts: {
|
|
1557
|
-
total: number;
|
|
1558
|
-
ERROR: number;
|
|
1559
|
-
WARN: number;
|
|
1560
|
-
INFO: number;
|
|
1561
|
-
byDate: Record<string, SeverityCounts>;
|
|
1562
|
-
byVenue: Record<string, SeverityCounts>;
|
|
1563
|
-
byDraw: Record<string, SeverityCounts>;
|
|
1564
|
-
};
|
|
1565
|
-
}
|
|
1566
|
-
|
|
1567
|
-
declare interface IssuesPanelCallbacks {
|
|
1568
|
-
onFixAction: (action: FixAction) => void;
|
|
1569
|
-
}
|
|
1570
|
-
|
|
1571
|
-
declare interface LayoutPanels {
|
|
1572
|
-
dateStrip: UIPanel<ProfileStoreState>;
|
|
1573
|
-
issuesPanel: UIPanel<ProfileStoreState>;
|
|
1574
|
-
venueBoard: UIPanel<ProfileStoreState>;
|
|
1575
|
-
roundCatalog: UIPanel<ProfileStoreState>;
|
|
1576
|
-
inspectorPanel: UIPanel<ProfileStoreState>;
|
|
1577
|
-
}
|
|
1578
|
-
|
|
1579
|
-
declare interface LineUp {
|
|
1580
|
-
participantId?: string;
|
|
1581
|
-
}
|
|
1582
|
-
|
|
1583
|
-
/**
|
|
1584
|
-
* Maps a factory hydrated matchUp object to the flat ScheduleCellData shape.
|
|
1585
|
-
* Handles sides[].participant.participantName nesting, schedule.* extraction, etc.
|
|
1586
|
-
*/
|
|
1587
|
-
export declare function mapMatchUpToCellData(matchUp: any): ScheduleCellData;
|
|
1588
|
-
|
|
1589
|
-
/**
|
|
1590
|
-
* MatchUp format constants
|
|
1591
|
-
* Generated from matchUpFormats.json for use in tests
|
|
1592
|
-
*/
|
|
1593
|
-
export declare const MATCH_FORMATS: {
|
|
1594
|
-
readonly SET3_S6_TB7: "SET3-S:6/TB7";
|
|
1595
|
-
readonly SET3_S6_TB7_F_TB10: "SET3-S:6/TB7-F:TB10";
|
|
1596
|
-
readonly SET3_S6_TB10: "SET3-S:6/TB10";
|
|
1597
|
-
readonly SET3_S6_F_TB10: "SET3-S:6-F:TB10";
|
|
1598
|
-
readonly SET3_S6_TB7_NOAD: "SET3-S:6/TB7NOAD";
|
|
1599
|
-
readonly SET3_S8_TB7: "SET3-S:8/TB7";
|
|
1600
|
-
readonly SET3_S8_TB7_AT7: "SET3-S:8/TB7@7";
|
|
1601
|
-
readonly SET3_S4_TB7: "SET3-S:4/TB7";
|
|
1602
|
-
readonly SET3_S4_TB7_F_TB10: "SET3-S:4/TB7-F:TB10";
|
|
1603
|
-
readonly SET3_S4_TB5_AT3_F_TB10: "SET3-S:4/TB5@3-F:TB10";
|
|
1604
|
-
readonly SET5_S6_TB7: "SET5-S:6/TB7";
|
|
1605
|
-
readonly SET5_S6_TB7_F_TB10: "SET5-S:6/TB7-F:TB10";
|
|
1606
|
-
readonly SET1_S6_TB7: "SET1-S:6/TB7";
|
|
1607
|
-
readonly SET1_S6_TB10: "SET1-S:6/TB10";
|
|
1608
|
-
readonly SET1_S6_TB7_AT5: "SET1-S:6/TB7@5";
|
|
1609
|
-
readonly SET1_S8_TB7: "SET1-S:8/TB7";
|
|
1610
|
-
readonly SET1_S4_TB7: "SET1-S:4/TB7";
|
|
1611
|
-
readonly SET1_S5_TB9_AT4: "SET1-S:5/TB9@4";
|
|
1612
|
-
readonly SET1_S_TB7: "SET1-S:T7";
|
|
1613
|
-
readonly SET1_S_TB10: "SET1-S:TB10";
|
|
1614
|
-
readonly SET1_S_TB21: "SET1-S:T21";
|
|
1615
|
-
readonly SET1_S8: "SET1-S:8";
|
|
1616
|
-
readonly SET1_S10: "SET1-S:10";
|
|
1617
|
-
readonly FAST4: "SET5-S:4/NOAD";
|
|
1618
|
-
readonly SET3X_T10A_TB1: "SET3XA-S:T10-F:TB1";
|
|
1619
|
-
readonly SET3X_T10A_TB1_NOAD: "SET3XA-S:T10-F:TB1NOAD";
|
|
1620
|
-
readonly SET4X_T10A_TB1: "SET4XA-S:T10-F:TB1";
|
|
1621
|
-
};
|
|
1622
|
-
|
|
1623
|
-
declare interface MatchUp {
|
|
1624
|
-
matchUpId: string;
|
|
1625
|
-
matchUpType?: 'SINGLES' | 'DOUBLES';
|
|
1626
|
-
matchUpFormat?: string;
|
|
1627
|
-
matchUpStatus?: string;
|
|
1628
|
-
winningSide?: number;
|
|
1629
|
-
roundNumber?: number;
|
|
1630
|
-
roundPosition?: number;
|
|
1631
|
-
finishingRound?: number;
|
|
1632
|
-
roundFactor?: number;
|
|
1633
|
-
stage?: string;
|
|
1634
|
-
isRoundRobin?: boolean;
|
|
1635
|
-
preFeedRound?: boolean;
|
|
1636
|
-
collectionId?: string;
|
|
1637
|
-
drawPositions?: number[];
|
|
1638
|
-
structureName?: string;
|
|
1639
|
-
structureId: string;
|
|
1640
|
-
drawId?: string;
|
|
1641
|
-
containerStructureId?: string;
|
|
1642
|
-
tournamentId?: string;
|
|
1643
|
-
roundOrder?: number;
|
|
1644
|
-
venueId?: string;
|
|
1645
|
-
courtId?: string;
|
|
1646
|
-
sides?: Side[];
|
|
1647
|
-
score?: Score;
|
|
1648
|
-
schedule?: Schedule;
|
|
1649
|
-
readyToScore?: boolean;
|
|
1650
|
-
[key: string]: any;
|
|
1651
|
-
}
|
|
1652
|
-
|
|
1653
|
-
export declare interface MatchUpAverageTime {
|
|
1654
|
-
matchUpFormatCodes: string[];
|
|
1655
|
-
averageTimes: AverageTimeEntry[];
|
|
1656
|
-
}
|
|
1657
|
-
|
|
1658
|
-
declare interface MatchUpCardCallbacks {
|
|
1659
|
-
onClick?: (matchUp: CatalogMatchUpItem) => void;
|
|
1660
|
-
}
|
|
1661
|
-
|
|
1662
|
-
declare interface MatchUpCatalogCallbacks {
|
|
1663
|
-
onSearchChange: (query: string) => void;
|
|
1664
|
-
onGroupByChange: (mode: MatchUpCatalogGroupBy) => void;
|
|
1665
|
-
onFilterChange: (filters: CatalogFilters) => void;
|
|
1666
|
-
onShowCompletedChange: (show: boolean) => void;
|
|
1667
|
-
onShowScheduledChange?: (show: boolean) => void;
|
|
1668
|
-
onMatchUpSelected?: (matchUp: CatalogMatchUpItem) => void;
|
|
1669
|
-
onDropRemove?: (matchUpId: string) => void;
|
|
1670
|
-
}
|
|
1671
|
-
|
|
1672
|
-
export declare type MatchUpCatalogGroupBy = 'event' | 'draw' | 'round' | 'structure';
|
|
1673
|
-
|
|
1674
|
-
/**
|
|
1675
|
-
* Configuration for a matchUp
|
|
1676
|
-
* Should be derived from TODS matchUpFormat strings using matchUpFormatCode.parse()
|
|
1677
|
-
*/
|
|
1678
|
-
export declare type MatchUpConfig = {
|
|
1679
|
-
bestOf: number;
|
|
1680
|
-
exactly?: number;
|
|
1681
|
-
setFormat?: SetFormat;
|
|
1682
|
-
finalSetFormat?: SetFormat;
|
|
1683
|
-
};
|
|
1684
|
-
|
|
1685
|
-
export declare type MatchUpFormatCode = (typeof MATCH_FORMATS)[keyof typeof MATCH_FORMATS];
|
|
1686
|
-
|
|
1687
|
-
declare interface MatchUpFormatConfig {
|
|
1688
|
-
labels?: {
|
|
1689
|
-
title?: string;
|
|
1690
|
-
setFormatLabel?: string;
|
|
1691
|
-
finalSetLabel?: string;
|
|
1692
|
-
tiebreakLabel?: string;
|
|
1693
|
-
finalSetToggleLabel?: string;
|
|
1694
|
-
standardFormatsLabel?: string;
|
|
1695
|
-
cancel?: string;
|
|
1696
|
-
select?: string;
|
|
1697
|
-
custom?: string;
|
|
1698
|
-
aggregate?: string;
|
|
1699
|
-
game?: string;
|
|
1700
|
-
gameType?: string;
|
|
1701
|
-
deuceRule?: string;
|
|
1702
|
-
none?: string;
|
|
1703
|
-
traditional?: string;
|
|
1704
|
-
consecutive2?: string;
|
|
1705
|
-
consecutive3?: string;
|
|
1706
|
-
consecutive4?: string;
|
|
1707
|
-
goldenPoint?: string;
|
|
1708
|
-
starPoint?: string;
|
|
1709
|
-
games?: string;
|
|
1710
|
-
points?: string;
|
|
1711
|
-
descriptors?: {
|
|
1712
|
-
bestOf?: string;
|
|
1713
|
-
exactly?: string;
|
|
1714
|
-
};
|
|
1715
|
-
what?: {
|
|
1716
|
-
sets?: string;
|
|
1717
|
-
tiebreaks?: string;
|
|
1718
|
-
timedSets?: string;
|
|
1719
|
-
};
|
|
1720
|
-
advantage?: {
|
|
1721
|
-
ad?: string;
|
|
1722
|
-
noAd?: string;
|
|
1723
|
-
};
|
|
1724
|
-
};
|
|
1725
|
-
options?: {
|
|
1726
|
-
bestOf?: number[];
|
|
1727
|
-
exactly?: number[];
|
|
1728
|
-
setTo?: number[];
|
|
1729
|
-
tiebreakTo?: number[];
|
|
1730
|
-
tiebreakToExactly?: number[];
|
|
1731
|
-
tiebreakAt?: number[];
|
|
1732
|
-
minutes?: number[];
|
|
1733
|
-
winBy?: number[];
|
|
1734
|
-
matchRoots?: string[];
|
|
1735
|
-
gameFormats?: string[];
|
|
1736
|
-
modifiers?: string[];
|
|
1737
|
-
};
|
|
1738
|
-
preDefinedFormats?: Array<{
|
|
1739
|
-
code: string;
|
|
1740
|
-
text: string;
|
|
1741
|
-
}>;
|
|
1742
|
-
}
|
|
1743
|
-
|
|
1744
|
-
export declare function matchUpLabel(item: CatalogMatchUpItem): string;
|
|
1745
|
-
|
|
1746
|
-
export declare interface MatchUpRecoveryTime {
|
|
1747
|
-
matchUpFormatCodes: string[];
|
|
1748
|
-
recoveryTimes: RecoveryTimeEntry[];
|
|
1749
|
-
}
|
|
1750
|
-
|
|
1751
|
-
export declare function matchUpSearchKey(item: CatalogMatchUpItem): string;
|
|
1752
|
-
|
|
1753
|
-
/**
|
|
1754
|
-
* Schedule Page — Type Definitions
|
|
1755
|
-
*
|
|
1756
|
-
* All interfaces for the schedule page component.
|
|
1757
|
-
* The component provides layout + matchUp catalog; the consumer injects the court grid.
|
|
1758
|
-
*/
|
|
1759
|
-
export declare interface MatchUpSide {
|
|
1760
|
-
participantName?: string;
|
|
1761
|
-
participantId?: string;
|
|
1762
|
-
seedNumber?: number;
|
|
1763
|
-
ranking?: number;
|
|
1764
|
-
}
|
|
1765
|
-
|
|
1766
|
-
export declare function maxSeverity(issues: ValidationResult[]): Severity | null;
|
|
1767
|
-
|
|
1768
|
-
/**
|
|
1769
|
-
* Scheduling Policy Editor — Type Definitions
|
|
1770
|
-
*
|
|
1771
|
-
* Mirrors the factory's scheduling policy data shape exactly.
|
|
1772
|
-
*/
|
|
1773
|
-
export declare interface MinutesEntry {
|
|
1774
|
-
default: number;
|
|
1775
|
-
DOUBLES?: number;
|
|
1776
|
-
}
|
|
1777
|
-
|
|
1778
|
-
/**
|
|
1779
|
-
* Configuration for mock participants generation
|
|
1780
|
-
*/
|
|
1781
|
-
export declare interface MockParticipantsConfig {
|
|
1782
|
-
/** Callback invoked when participants are generated */
|
|
1783
|
-
callback?: (participants: any[]) => void;
|
|
1784
|
-
/** Tournament end date for birthdate calculation (ISO format: YYYY-MM-DD) */
|
|
1785
|
-
consideredDate?: string;
|
|
1786
|
-
/** Custom title for the modal */
|
|
1787
|
-
title?: string;
|
|
1788
|
-
/** Custom labels for form fields */
|
|
1789
|
-
labels?: {
|
|
1790
|
-
gender?: string;
|
|
1791
|
-
count?: string;
|
|
1792
|
-
ageRange?: string;
|
|
1793
|
-
minAge?: string;
|
|
1794
|
-
maxAge?: string;
|
|
1795
|
-
ratings?: string;
|
|
1796
|
-
countries?: string;
|
|
1797
|
-
role?: string;
|
|
1798
|
-
cancel?: string;
|
|
1799
|
-
generate?: string;
|
|
1800
|
-
genderAny?: string;
|
|
1801
|
-
genderFemale?: string;
|
|
1802
|
-
genderMale?: string;
|
|
1803
|
-
/** @deprecated Use ratings label instead */
|
|
1804
|
-
wtn?: string;
|
|
1805
|
-
/** @deprecated Use ratings label instead */
|
|
1806
|
-
utr?: string;
|
|
1807
|
-
};
|
|
1808
|
-
/** Default values for form fields */
|
|
1809
|
-
defaults?: {
|
|
1810
|
-
gender?: string;
|
|
1811
|
-
participantsCount?: number;
|
|
1812
|
-
participantRole?: string;
|
|
1813
|
-
ageMin?: number;
|
|
1814
|
-
ageMax?: number;
|
|
1815
|
-
nationalityCodesCount?: number;
|
|
1816
|
-
/** Array of rating type names to pre-select (e.g., ['WTN', 'UTR', 'DUPR']) */
|
|
1817
|
-
ratings?: string[];
|
|
1818
|
-
/** @deprecated Use ratings: ['WTN'] instead */
|
|
1819
|
-
wtnRating?: boolean;
|
|
1820
|
-
/** @deprecated Use ratings: ['UTR'] instead */
|
|
1821
|
-
utrRating?: boolean;
|
|
1822
|
-
};
|
|
1823
|
-
/** Available participant role options. If not provided, only COMPETITOR is used. */
|
|
1824
|
-
roleOptions?: {
|
|
1825
|
-
label: string;
|
|
1826
|
-
value: string;
|
|
1827
|
-
}[];
|
|
1828
|
-
}
|
|
1829
|
-
|
|
1830
|
-
declare interface ModalButton {
|
|
1831
|
-
label?: string;
|
|
1832
|
-
text?: string;
|
|
1833
|
-
id?: string;
|
|
1834
|
-
intent?: string;
|
|
1835
|
-
close?: boolean | (() => void);
|
|
1836
|
-
disabled?: boolean;
|
|
1837
|
-
hide?: boolean;
|
|
1838
|
-
onClick?: (params: {
|
|
1839
|
-
e: MouseEvent;
|
|
1840
|
-
content?: any;
|
|
1841
|
-
}) => void;
|
|
1842
|
-
footer?: {
|
|
1843
|
-
className?: string;
|
|
1844
|
-
};
|
|
1845
|
-
}
|
|
1846
|
-
|
|
1847
|
-
declare interface ModalConfig extends Configuration {
|
|
1848
|
-
onClose?: (params: {
|
|
1849
|
-
content?: any;
|
|
1850
|
-
}) => void;
|
|
1851
|
-
}
|
|
1852
|
-
|
|
1853
|
-
declare type ModalContent = string | HTMLElement | ((container: HTMLElement) => any);
|
|
1854
|
-
|
|
1855
|
-
declare interface ModalParams {
|
|
1856
|
-
title?: string;
|
|
1857
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1858
|
-
buttons?: ModalButton[];
|
|
1859
|
-
footer?: string | HTMLElement;
|
|
1860
|
-
config?: ModalConfig;
|
|
1861
|
-
onClose?: (params: {
|
|
1862
|
-
content?: any;
|
|
1863
|
-
}) => void;
|
|
1864
|
-
}
|
|
1865
|
-
|
|
1866
|
-
declare interface MultiRowSpan {
|
|
1867
|
-
/** IDs of all groups covered by the ghost */
|
|
1868
|
-
groupIds: string[];
|
|
1869
|
-
/** Top row index (0-based) */
|
|
1870
|
-
topRowIndex: number;
|
|
1871
|
-
/** Bottom row index (inclusive, 0-based) */
|
|
1872
|
-
bottomRowIndex: number;
|
|
1873
|
-
/** Time range */
|
|
1874
|
-
startTime: Date;
|
|
1875
|
-
endTime: Date;
|
|
1876
|
-
}
|
|
1877
|
-
|
|
1878
|
-
declare const nameValidator: (minLength: number, maxLength?: number) => (value: string) => boolean;
|
|
1879
|
-
|
|
1880
|
-
declare interface NodeEditorCallbacks {
|
|
1881
|
-
onUpdateNode: (nodeId: string, updates: Partial<TopologyNode>) => void;
|
|
1882
|
-
onUpdateEdge: (edgeId: string, updates: Partial<TopologyEdge>) => void;
|
|
1883
|
-
onDeleteNode: (nodeId: string) => void;
|
|
1884
|
-
readOnly?: boolean;
|
|
1885
|
-
hideDelete?: boolean;
|
|
1886
|
-
}
|
|
1887
|
-
|
|
1888
|
-
export declare function notesToolbar(options?: NotesToolbarOptions): HTMLElement;
|
|
1889
|
-
|
|
1890
|
-
export declare interface NotesToolbarOptions {
|
|
1891
|
-
onBold?: () => void;
|
|
1892
|
-
onItalic?: () => void;
|
|
1893
|
-
onUnderline?: () => void;
|
|
1894
|
-
onStrike?: () => void;
|
|
1895
|
-
onHeading?: (level: number | false) => void;
|
|
1896
|
-
onColor?: (color: string) => void;
|
|
1897
|
-
onBackground?: (color: string) => void;
|
|
1898
|
-
onBulletList?: () => void;
|
|
1899
|
-
onOrderedList?: () => void;
|
|
1900
|
-
onAlign?: (align: string) => void;
|
|
1901
|
-
onBlockquote?: () => void;
|
|
1902
|
-
onCodeBlock?: () => void;
|
|
1903
|
-
onLink?: (url: string) => void;
|
|
1904
|
-
onVideo?: (url: string) => void;
|
|
1905
|
-
onClearFormatting?: () => void;
|
|
1906
|
-
}
|
|
1907
|
-
|
|
1908
|
-
declare const numericRange: (min: number, max: number) => (value: string | number) => boolean;
|
|
1909
|
-
|
|
1910
|
-
declare function numericValidator(value: string | number): boolean;
|
|
1911
|
-
|
|
1912
|
-
export declare function openCompositionEditorModal(options?: CompositionEditorOptions): any;
|
|
1913
|
-
|
|
1914
|
-
export declare function openScheduleCellConfigModal(options?: ScheduleCellConfigOptions): {
|
|
1915
|
-
setContent: ({ content: newContent, config }: {
|
|
1916
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1917
|
-
config?: ModalConfig;
|
|
1918
|
-
}) => void;
|
|
1919
|
-
setButtons: ({ buttons, config }: {
|
|
1920
|
-
buttons: ModalButton[];
|
|
1921
|
-
config?: ModalConfig;
|
|
1922
|
-
}) => void;
|
|
1923
|
-
update: ({ content: newContent, buttons, title, config: newConfig, onClose }: {
|
|
1924
|
-
content?: string | HTMLElement | ((container: HTMLElement) => any);
|
|
1925
|
-
buttons?: ModalButton[];
|
|
1926
|
-
title?: string;
|
|
1927
|
-
config?: ModalConfig;
|
|
1928
|
-
onClose?: (params: {
|
|
1929
|
-
content?: any;
|
|
1930
|
-
}) => void;
|
|
1931
|
-
}) => void;
|
|
1932
|
-
};
|
|
1933
|
-
|
|
1934
|
-
export declare function padelCourt(className: string): SVGSVGElement;
|
|
1935
|
-
|
|
1936
|
-
declare interface PageBlock {
|
|
1937
|
-
pageSize?: PrintPageSize;
|
|
1938
|
-
orientation?: PrintPageOrientation;
|
|
1939
|
-
margins?: {
|
|
1940
|
-
top: number;
|
|
1941
|
-
right: number;
|
|
1942
|
-
bottom: number;
|
|
1943
|
-
left: number;
|
|
1944
|
-
};
|
|
1945
|
-
}
|
|
1946
|
-
|
|
1947
|
-
declare interface Participant {
|
|
1948
|
-
participantId: string;
|
|
1949
|
-
participantName?: string;
|
|
1950
|
-
participantOtherName?: string;
|
|
1951
|
-
participantType?: 'INDIVIDUAL' | 'PAIR' | 'TEAM';
|
|
1952
|
-
individualParticipants?: IndividualParticipant[];
|
|
1953
|
-
entryStatus?: string;
|
|
1954
|
-
luckyAdvancement?: boolean;
|
|
1955
|
-
person?: Person;
|
|
1956
|
-
useOtherName?: boolean;
|
|
1957
|
-
}
|
|
1958
|
-
|
|
1959
|
-
/** Controls how participant names are rendered inside a cell */
|
|
1960
|
-
export declare interface ParticipantDisplayConfig {
|
|
1961
|
-
nameFormat?: 'full' | 'last' | 'lastFirst' | 'firstLast';
|
|
1962
|
-
showSeed?: boolean;
|
|
1963
|
-
showRanking?: boolean;
|
|
1964
|
-
showNationality?: boolean;
|
|
1965
|
-
boldWinner?: boolean;
|
|
1966
|
-
showPotentials?: boolean;
|
|
1967
|
-
}
|
|
1968
|
-
|
|
1969
|
-
export declare function participantLabel(side?: MatchUpSide): string;
|
|
1970
|
-
|
|
1971
|
-
declare const passwordValidator: (value: any) => boolean;
|
|
1972
|
-
|
|
1973
|
-
export declare interface PendingScheduleAction {
|
|
1974
|
-
kind: 'schedule' | 'unschedule';
|
|
1975
|
-
matchUpId: string;
|
|
1976
|
-
/** Present for 'schedule' actions — the full item that was dropped */
|
|
1977
|
-
matchUp?: CatalogMatchUpItem;
|
|
1978
|
-
/** The DragEvent from the drop, if available */
|
|
1979
|
-
event?: DragEvent;
|
|
1980
|
-
}
|
|
1981
|
-
|
|
1982
|
-
declare interface Person {
|
|
1983
|
-
personId?: string;
|
|
1984
|
-
standardFamilyName?: string;
|
|
1985
|
-
standardGivenName?: string;
|
|
1986
|
-
nationalityCode?: string;
|
|
1987
|
-
addresses?: Address[];
|
|
1988
|
-
rankings?: Ranking[];
|
|
1989
|
-
ratings?: Rating[];
|
|
1990
|
-
sex?: 'MALE' | 'FEMALE' | 'MIXED';
|
|
1991
|
-
[key: string]: any;
|
|
1992
|
-
}
|
|
1993
|
-
|
|
1994
|
-
export declare function pickleballCourt(className: string): SVGSVGElement;
|
|
1995
|
-
|
|
1996
|
-
declare interface PlannedDragPayload {
|
|
1997
|
-
type: 'PLANNED_ROUND';
|
|
1998
|
-
locator: RoundLocator;
|
|
1999
|
-
}
|
|
2000
|
-
|
|
2001
|
-
declare type PlannedRoundBehavior = 'dim' | 'hide' | 'navigate';
|
|
2002
|
-
|
|
2003
|
-
/** Get all unique group names in display order */
|
|
2004
|
-
export declare const POLICY_TYPE_GROUPS: PolicyTypeGroup[];
|
|
2005
|
-
|
|
2006
|
-
export declare const POLICY_TYPE_METADATA: PolicyTypeMeta[];
|
|
2007
|
-
|
|
2008
|
-
export declare type PolicyCatalogChangeListener = (state: PolicyCatalogState) => void;
|
|
2009
|
-
|
|
2010
|
-
export declare interface PolicyCatalogConfig {
|
|
2011
|
-
builtinPolicies?: PolicyCatalogItem[];
|
|
2012
|
-
userPolicies?: PolicyCatalogItem[];
|
|
2013
|
-
editorPlugins?: PolicyEditorPlugin[];
|
|
2014
|
-
onPolicySaved?: (item: PolicyCatalogItem) => void;
|
|
2015
|
-
onPolicyApplied?: (item: PolicyCatalogItem) => void;
|
|
2016
|
-
onPolicyCreated?: (item: PolicyCatalogItem) => void;
|
|
2017
|
-
onPolicyDeleted?: (id: string) => void;
|
|
2018
|
-
onSelectionChanged?: (item: PolicyCatalogItem | null) => void;
|
|
2019
|
-
}
|
|
2020
|
-
|
|
2021
|
-
export declare class PolicyCatalogControl {
|
|
2022
|
-
private readonly store;
|
|
2023
|
-
private readonly layout;
|
|
2024
|
-
private readonly editorShell;
|
|
2025
|
-
private readonly unsubscribe;
|
|
2026
|
-
private currentEditor;
|
|
2027
|
-
private container;
|
|
2028
|
-
constructor(config: PolicyCatalogConfig);
|
|
2029
|
-
render(container: HTMLElement): void;
|
|
2030
|
-
destroy(): void;
|
|
2031
|
-
getStore(): PolicyCatalogStore;
|
|
2032
|
-
private handleSelectPolicy;
|
|
2033
|
-
private mountEditorForSelection;
|
|
2034
|
-
private syncEditorFromStore;
|
|
2035
|
-
private destroyCurrentEditor;
|
|
2036
|
-
}
|
|
2037
|
-
|
|
2038
|
-
export declare type PolicyCatalogGroupBy = 'type' | 'source';
|
|
2039
|
-
|
|
2040
|
-
export declare interface PolicyCatalogItem {
|
|
2041
|
-
id: string;
|
|
2042
|
-
name: string;
|
|
2043
|
-
policyType: string;
|
|
2044
|
-
source: PolicySource;
|
|
2045
|
-
description: string;
|
|
2046
|
-
policyData: Record<string, unknown>;
|
|
2047
|
-
}
|
|
2048
|
-
|
|
2049
|
-
declare interface PolicyCatalogPanelCallbacks {
|
|
2050
|
-
onSearchChange: (query: string) => void;
|
|
2051
|
-
onGroupByChange: (mode: PolicyCatalogGroupBy) => void;
|
|
2052
|
-
onSelectPolicy: (id: string) => void;
|
|
2053
|
-
onNewPolicy?: (policyType: string) => void;
|
|
2054
|
-
onDuplicatePolicy?: (id: string) => void;
|
|
2055
|
-
onDeletePolicy?: (id: string) => void;
|
|
2056
|
-
}
|
|
2057
|
-
|
|
2058
|
-
export declare interface PolicyCatalogState {
|
|
2059
|
-
catalog: PolicyCatalogItem[];
|
|
2060
|
-
searchQuery: string;
|
|
2061
|
-
groupBy: PolicyCatalogGroupBy;
|
|
2062
|
-
selectedId: string | null;
|
|
2063
|
-
editorDraft: Record<string, unknown> | null;
|
|
2064
|
-
dirty: boolean;
|
|
2065
|
-
}
|
|
2066
|
-
|
|
2067
|
-
export declare class PolicyCatalogStore {
|
|
2068
|
-
private state;
|
|
2069
|
-
private readonly listeners;
|
|
2070
|
-
private readonly config;
|
|
2071
|
-
constructor(config: PolicyCatalogConfig);
|
|
2072
|
-
getState(): PolicyCatalogState;
|
|
2073
|
-
getSelectedItem(): PolicyCatalogItem | null;
|
|
2074
|
-
setCatalogSearch(query: string): void;
|
|
2075
|
-
setCatalogGroupBy(mode: PolicyCatalogGroupBy): void;
|
|
2076
|
-
selectPolicy(id: string): void;
|
|
2077
|
-
clearSelection(): void;
|
|
2078
|
-
updateEditorDraft(data: Record<string, unknown>): void;
|
|
2079
|
-
markDirty(): void;
|
|
2080
|
-
markClean(): void;
|
|
2081
|
-
savePolicy(): void;
|
|
2082
|
-
resetDraft(): void;
|
|
2083
|
-
applyPolicy(): void;
|
|
2084
|
-
addNewPolicy(policyType: string): string;
|
|
2085
|
-
duplicatePolicy(sourceId: string): string | null;
|
|
2086
|
-
deletePolicy(id: string): void;
|
|
2087
|
-
subscribe(listener: PolicyCatalogChangeListener): () => void;
|
|
2088
|
-
private setState;
|
|
2089
|
-
private emit;
|
|
2090
|
-
}
|
|
2091
|
-
|
|
2092
|
-
export declare interface PolicyEditorInstance {
|
|
2093
|
-
element: HTMLElement;
|
|
2094
|
-
setData(data: Record<string, unknown>): void;
|
|
2095
|
-
getData(): Record<string, unknown>;
|
|
2096
|
-
destroy(): void;
|
|
2097
|
-
}
|
|
2098
|
-
|
|
2099
|
-
export declare interface PolicyEditorPlugin {
|
|
2100
|
-
policyType: string;
|
|
2101
|
-
create(config: {
|
|
2102
|
-
initialData: Record<string, unknown>;
|
|
2103
|
-
onChange: (data: Record<string, unknown>) => void;
|
|
2104
|
-
}): PolicyEditorInstance;
|
|
2105
|
-
}
|
|
2106
|
-
|
|
2107
|
-
export declare type PolicySource = 'builtin' | 'user';
|
|
2108
|
-
|
|
2109
|
-
/**
|
|
2110
|
-
* Policy Catalog — Type Definitions
|
|
2111
|
-
*/
|
|
2112
|
-
export declare type PolicyTypeGroup = 'Tournament Operations' | 'Scoring & Results' | 'Ranking Points' | 'Draw Configuration' | 'Participants' | 'Display & Audit';
|
|
2113
|
-
|
|
2114
|
-
export declare interface PolicyTypeMeta {
|
|
2115
|
-
policyType: string;
|
|
2116
|
-
label: string;
|
|
2117
|
-
description: string;
|
|
2118
|
-
group: PolicyTypeGroup;
|
|
2119
|
-
hasEditor: boolean;
|
|
2120
|
-
}
|
|
2121
|
-
|
|
2122
|
-
declare interface PositionChip {
|
|
2123
|
-
position: number;
|
|
2124
|
-
edgeId: string;
|
|
2125
|
-
targetName: string;
|
|
2126
|
-
}
|
|
2127
|
-
|
|
2128
|
-
export declare interface PrintCompositionConfig {
|
|
2129
|
-
name?: string;
|
|
2130
|
-
page?: PageBlock;
|
|
2131
|
-
header?: HeaderBlock;
|
|
2132
|
-
footer?: FooterBlock;
|
|
2133
|
-
content?: ContentBlock;
|
|
2134
|
-
}
|
|
2135
|
-
|
|
2136
|
-
export declare interface PrintCompositionEditorConfig {
|
|
2137
|
-
/** The print type whose composition is being edited. Determines which content fields render. */
|
|
2138
|
-
printType: PrintType;
|
|
2139
|
-
/** Initial config to seed the form. Defaults applied for missing fields. */
|
|
2140
|
-
config?: PrintCompositionConfig;
|
|
2141
|
-
/** When true, all fields are disabled. */
|
|
2142
|
-
readOnly?: boolean;
|
|
2143
|
-
/** Fired when the user clicks Save. */
|
|
2144
|
-
onSave?: (config: PrintCompositionConfig) => void;
|
|
2145
|
-
/** Fired on every field change with the current config. */
|
|
2146
|
-
onChange?: (config: PrintCompositionConfig) => void;
|
|
2147
|
-
}
|
|
2148
|
-
|
|
2149
|
-
export declare interface PrintCompositionEditorHandle {
|
|
2150
|
-
/** Remove the editor from the DOM and detach listeners. */
|
|
2151
|
-
destroy: () => void;
|
|
2152
|
-
/** Get the current config (deep clone). */
|
|
2153
|
-
getConfig: () => PrintCompositionConfig;
|
|
2154
|
-
/** Replace the config and re-render. */
|
|
2155
|
-
setConfig: (config: PrintCompositionConfig) => void;
|
|
2156
|
-
}
|
|
2157
|
-
|
|
2158
|
-
export declare type PrintFooterLayout = 'standard' | 'seedings' | 'officials' | 'none';
|
|
2159
|
-
|
|
2160
|
-
export declare type PrintHeaderLayout = 'grand-slam' | 'itf' | 'minimal' | 'none';
|
|
2161
|
-
|
|
2162
|
-
export declare type PrintPageOrientation = 'portrait' | 'landscape' | 'auto';
|
|
2163
|
-
|
|
2164
|
-
export declare type PrintPageSize = 'a4' | 'letter';
|
|
2165
|
-
|
|
2166
|
-
/**
|
|
2167
|
-
* Types for the print-composition editor.
|
|
2168
|
-
*
|
|
2169
|
-
* The editor produces a config that mirrors pdf-factory's `CompositionConfig`
|
|
2170
|
-
* shape but is defined locally to avoid a hard runtime dep on pdf-factory.
|
|
2171
|
-
* Callers (admin-client) bridge this object to pdf-factory at print time.
|
|
2172
|
-
*
|
|
2173
|
-
* See `Mentat/planning/PRINT_COMPOSITION_POLICY_PLAN.md` for the
|
|
2174
|
-
* end-to-end architecture.
|
|
2175
|
-
*/
|
|
2176
|
-
export declare type PrintType = 'draw' | 'schedule' | 'playerList' | 'courtCard' | 'signInSheet' | 'matchCard';
|
|
2177
|
-
|
|
2178
|
-
declare type ProfileChangeListener = (state: ProfileStoreState) => void;
|
|
2179
|
-
|
|
2180
|
-
export declare class ProfileStore {
|
|
2181
|
-
private state;
|
|
2182
|
-
private readonly listeners;
|
|
2183
|
-
private readonly config;
|
|
2184
|
-
constructor(config: SchedulingProfileConfig);
|
|
2185
|
-
getState(): ProfileStoreState;
|
|
2186
|
-
getSchedulingProfile(): SchedulingProfile;
|
|
2187
|
-
selectDate(date: string): void;
|
|
2188
|
-
selectCard(locator: RoundLocator | null): void;
|
|
2189
|
-
setCatalogSearch(query: string): void;
|
|
2190
|
-
setCatalogGroupBy(mode: CatalogGroupBy): void;
|
|
2191
|
-
navigateToRound(item: CatalogRoundItem): void;
|
|
2192
|
-
dropRound(drag: DragPayload, drop: DropTarget): {
|
|
2193
|
-
ok: boolean;
|
|
2194
|
-
errorMessage?: string;
|
|
2195
|
-
};
|
|
2196
|
-
removeRound(locator: RoundLocator): void;
|
|
2197
|
-
setNotBeforeTime(locator: RoundLocator, time: string | undefined): void;
|
|
2198
|
-
applyFixAction(action: FixAction): void;
|
|
2199
|
-
subscribe(listener: ProfileChangeListener): () => void;
|
|
2200
|
-
private setState;
|
|
2201
|
-
private commitProfile;
|
|
2202
|
-
private addRejectionNotice;
|
|
2203
|
-
private revalidate;
|
|
2204
|
-
private emit;
|
|
2205
|
-
}
|
|
2206
|
-
|
|
2207
|
-
export declare interface ProfileStoreState {
|
|
2208
|
-
profileDraft: SchedulingProfile;
|
|
2209
|
-
venues: VenueInfo[];
|
|
2210
|
-
roundCatalog: CatalogRoundItem[];
|
|
2211
|
-
schedulableDates: string[];
|
|
2212
|
-
activeDates?: string[];
|
|
2213
|
-
selectedDate: string | null;
|
|
2214
|
-
selectedLocator: RoundLocator | null;
|
|
2215
|
-
ruleResults: ValidationResult[];
|
|
2216
|
-
issueIndex: IssueIndex;
|
|
2217
|
-
catalogSearchQuery: string;
|
|
2218
|
-
catalogGroupBy: CatalogGroupBy;
|
|
2219
|
-
plannedRoundBehavior: PlannedRoundBehavior;
|
|
2220
|
-
}
|
|
2221
|
-
|
|
2222
|
-
declare interface Ranking {
|
|
2223
|
-
rankingType?: string;
|
|
2224
|
-
ranking?: number;
|
|
2225
|
-
rankingDate?: string;
|
|
2226
|
-
}
|
|
2227
|
-
|
|
2228
|
-
declare interface Rating {
|
|
2229
|
-
ratingType?: string;
|
|
2230
|
-
rating?: number;
|
|
2231
|
-
ratingDate?: string;
|
|
2232
|
-
[key: string]: any;
|
|
2233
|
-
}
|
|
2234
|
-
|
|
2235
|
-
export declare interface RecoveryTimeEntry {
|
|
2236
|
-
categoryNames?: string[];
|
|
2237
|
-
categoryTypes?: string[];
|
|
2238
|
-
minutes: MinutesEntry;
|
|
2239
|
-
}
|
|
2240
|
-
|
|
2241
|
-
export declare function renderButtons(target: HTMLElement, buttons: any[], close?: () => void): {
|
|
2242
|
-
elements: Record<string, HTMLElement>;
|
|
2243
|
-
};
|
|
2244
|
-
|
|
2245
|
-
export declare type RenderCallback = () => void;
|
|
2246
|
-
|
|
2247
|
-
export declare function renderContainer({ content, theme }: {
|
|
2248
|
-
content: string | HTMLElement;
|
|
2249
|
-
theme?: string;
|
|
2250
|
-
}): HTMLElement;
|
|
2251
|
-
|
|
2252
|
-
export declare function renderField(item: any): {
|
|
2253
|
-
field: HTMLDivElement;
|
|
2254
|
-
inputElement?: HTMLDivElement | HTMLSelectElement;
|
|
2255
|
-
datepicker?: any;
|
|
2256
|
-
subFields?: any[];
|
|
2257
|
-
};
|
|
2258
|
-
|
|
2259
|
-
export declare function renderForm(elem: HTMLElement, items: any[], relationships?: any[]): any;
|
|
2260
|
-
|
|
2261
|
-
/**
|
|
2262
|
-
* Renders a matchUp with inline scoring interactivity.
|
|
2263
|
-
* Sets up event handlers and configuration state, then delegates to `renderMatchUp`.
|
|
2264
|
-
* The footer buttons (Undo/Redo/Clear/Submit) are rendered by `renderMatchUp` itself,
|
|
2265
|
-
* driven by the inlineScoring config state and eventHandlers passed down.
|
|
2266
|
-
*
|
|
2267
|
-
* Returns a container element that re-renders itself after each scoring action.
|
|
2268
|
-
*/
|
|
2269
|
-
export declare function renderInlineMatchUp(params: RenderInlineMatchUpParams): HTMLElement;
|
|
2270
|
-
|
|
2271
|
-
declare interface RenderInlineMatchUpParams {
|
|
2272
|
-
matchUp: MatchUp;
|
|
2273
|
-
composition: Composition;
|
|
2274
|
-
manager: InlineScoringManager;
|
|
2275
|
-
matchUpFormat?: string;
|
|
2276
|
-
eventHandlers?: EventHandlers;
|
|
2277
|
-
isLucky?: boolean;
|
|
2278
|
-
isAdHoc?: boolean;
|
|
2279
|
-
className?: string;
|
|
2280
|
-
moiety?: boolean;
|
|
2281
|
-
initialRoundNumber?: number;
|
|
2282
|
-
isFinalRound?: boolean;
|
|
2283
|
-
searchActive?: boolean;
|
|
2284
|
-
selectedMatchUpId?: string;
|
|
2285
|
-
}
|
|
2286
|
-
|
|
2287
|
-
export declare function renderMatchUp(params: {
|
|
2288
|
-
composition?: Composition;
|
|
2289
|
-
initialRoundNumber?: number;
|
|
2290
|
-
matchUp: MatchUp;
|
|
2291
|
-
moiety?: boolean;
|
|
2292
|
-
selectedMatchUpId?: string;
|
|
2293
|
-
searchActive?: boolean;
|
|
2294
|
-
isFinalRound?: boolean;
|
|
2295
|
-
isLucky?: boolean;
|
|
2296
|
-
isAdHoc?: boolean;
|
|
2297
|
-
eventHandlers?: EventHandlers;
|
|
2298
|
-
className?: string;
|
|
2299
|
-
}): HTMLElement;
|
|
2300
|
-
|
|
2301
|
-
export declare function renderMenu(elem: HTMLElement, menu: any[], close?: () => void): {
|
|
2302
|
-
focusElement?: HTMLElement;
|
|
2303
|
-
};
|
|
2304
|
-
|
|
2305
|
-
export declare function renderOptions(select: HTMLSelectElement, item: any): void;
|
|
2306
|
-
|
|
2307
|
-
export declare function renderParticipant({ initialRoundNumber, eventHandlers, sideContainer, composition, participant, placeholder, sideNumber, matchUp }: {
|
|
2308
|
-
initialRoundNumber?: number;
|
|
2309
|
-
eventHandlers?: EventHandlers;
|
|
2310
|
-
sideContainer?: boolean;
|
|
2311
|
-
composition?: Composition;
|
|
2312
|
-
participant?: Participant;
|
|
2313
|
-
placeholder?: any;
|
|
2314
|
-
sideNumber?: number;
|
|
2315
|
-
matchUp?: MatchUp;
|
|
2316
|
-
}): HTMLElement;
|
|
2317
|
-
|
|
2318
|
-
export declare function renderParticipantInput({ matchUp, side, sideNumber, eventHandlers, composition, position, currentParticipant }: {
|
|
2319
|
-
matchUp: MatchUp;
|
|
2320
|
-
side?: Side;
|
|
2321
|
-
sideNumber?: number;
|
|
2322
|
-
eventHandlers?: EventHandlers;
|
|
2323
|
-
composition?: Composition;
|
|
2324
|
-
position?: number;
|
|
2325
|
-
currentParticipant?: any;
|
|
2326
|
-
}): HTMLElement;
|
|
2327
|
-
|
|
2328
|
-
export declare function renderRound({ initialRoundNumber, selectedMatchUpId, eventHandlers, isFinalRound, isRoundRobin, searchActive, composition, roundFactor, roundNumber, roundProfile, minWidth, matchUps, context, isLucky }: {
|
|
2329
|
-
initialRoundNumber?: number;
|
|
2330
|
-
selectedMatchUpId?: string;
|
|
2331
|
-
eventHandlers?: EventHandlers;
|
|
2332
|
-
isFinalRound?: boolean;
|
|
2333
|
-
isRoundRobin?: boolean;
|
|
2334
|
-
searchActive?: boolean;
|
|
2335
|
-
composition?: Composition;
|
|
2336
|
-
roundFactor?: number;
|
|
2337
|
-
roundNumber: number;
|
|
2338
|
-
roundProfile?: any;
|
|
2339
|
-
minWidth?: string;
|
|
2340
|
-
matchUps: MatchUp[];
|
|
2341
|
-
context?: any;
|
|
2342
|
-
isLucky?: boolean;
|
|
2343
|
-
}): HTMLElement;
|
|
2344
|
-
|
|
2345
|
-
export declare function renderRoundHeader({ eventHandlers, roundMatchUps, roundProfile, roundNumber, context }: {
|
|
2346
|
-
eventHandlers?: EventHandlers;
|
|
2347
|
-
roundMatchUps?: MatchUp[];
|
|
2348
|
-
roundProfile?: any;
|
|
2349
|
-
roundNumber: number;
|
|
2350
|
-
context?: any;
|
|
2351
|
-
}): HTMLElement;
|
|
2352
|
-
|
|
2353
|
-
/**
|
|
2354
|
-
* Renders a compact matchup: two 5px-tall slots separated by a 1px divider.
|
|
2355
|
-
* Total height 11px vs ~60px for the full renderMatchUp.
|
|
2356
|
-
*/
|
|
2357
|
-
export declare function renderSchematicMatchUp({ matchUp, moiety, isFirstRound, isFinalRound, isRoundRobin, isLucky }: {
|
|
2358
|
-
matchUp: SchematicMatchUp;
|
|
2359
|
-
moiety?: boolean;
|
|
2360
|
-
isFirstRound?: boolean;
|
|
2361
|
-
isFinalRound?: boolean;
|
|
2362
|
-
isRoundRobin?: boolean;
|
|
2363
|
-
isLucky?: boolean;
|
|
2364
|
-
initialRoundNumber?: number;
|
|
2365
|
-
}): HTMLElement;
|
|
2366
|
-
|
|
2367
|
-
/**
|
|
2368
|
-
* Renders a round column with optional simplified header (round number only)
|
|
2369
|
-
* and compact schematic matchups.
|
|
2370
|
-
*/
|
|
2371
|
-
export declare function renderSchematicRound({ initialRoundFactor, initialRoundNumber, isFinalRound, isRoundRobin, roundNumber, matchUps, showHeader, isLucky }: {
|
|
2372
|
-
initialRoundFactor?: number;
|
|
2373
|
-
initialRoundNumber?: number;
|
|
2374
|
-
isFinalRound?: boolean;
|
|
2375
|
-
isRoundRobin?: boolean;
|
|
2376
|
-
roundNumber: number;
|
|
2377
|
-
matchUps: SchematicMatchUp[];
|
|
2378
|
-
showHeader?: boolean;
|
|
2379
|
-
isLucky?: boolean;
|
|
2380
|
-
}): HTMLElement;
|
|
2381
|
-
|
|
2382
|
-
/**
|
|
2383
|
-
* Compact bracket renderer showing structure shape without participant details.
|
|
2384
|
-
* Uses the same getRoundMatchUps() engine call as renderStructure but produces
|
|
2385
|
-
* a much smaller visual (~14px per matchup vs ~60px).
|
|
2386
|
-
*/
|
|
2387
|
-
export declare function renderSchematicStructure({ initialRoundNumber, showHeaders, structureId, matchUps }: {
|
|
2388
|
-
initialRoundNumber?: number;
|
|
2389
|
-
showHeaders?: boolean;
|
|
2390
|
-
structureId?: string;
|
|
2391
|
-
matchUps: SchematicMatchUp[];
|
|
2392
|
-
}): HTMLElement;
|
|
2393
|
-
|
|
2394
|
-
/**
|
|
2395
|
-
* Render a full team scorecard: header + collection panels + matchUp grids.
|
|
2396
|
-
*/
|
|
2397
|
-
export declare function renderScorecard({ matchUp, composition, eventHandlers, swapSides }: ScorecardOptions): HTMLDivElement;
|
|
2398
|
-
|
|
2399
|
-
export declare function renderStructure({ initialRoundNumber, selectedMatchUpId, eventHandlers, searchActive, composition, structureId, finalColumn, matchUps, minWidth, context }: {
|
|
2400
|
-
initialRoundNumber?: number;
|
|
2401
|
-
selectedMatchUpId?: string;
|
|
2402
|
-
eventHandlers?: EventHandlers;
|
|
2403
|
-
searchActive?: boolean;
|
|
2404
|
-
composition?: Composition;
|
|
2405
|
-
structureId?: string;
|
|
2406
|
-
finalColumn?: boolean | HTMLElement;
|
|
2407
|
-
matchUps: MatchUp[];
|
|
2408
|
-
minWidth?: string;
|
|
2409
|
-
context?: any;
|
|
2410
|
-
}): HTMLElement;
|
|
2411
|
-
|
|
2412
|
-
/**
|
|
2413
|
-
* Render the team vs team header with names and aggregate score.
|
|
2414
|
-
*/
|
|
2415
|
-
export declare function renderTeamVsHeader({ side1Name, side2Name, sets, winningSide, side1Id, side2Id }: TeamVsOptions): HTMLDivElement;
|
|
2416
|
-
|
|
2417
|
-
/**
|
|
2418
|
-
* Reset configuration to defaults
|
|
2419
|
-
*/
|
|
2420
|
-
export declare function resetScoringConfig(): void;
|
|
2421
|
-
|
|
2422
|
-
/**
|
|
2423
|
-
* Resolves a published composition from a DISPLAY extension value.
|
|
2424
|
-
* Returns a new composition object (never mutates the built-in singletons).
|
|
2425
|
-
* Falls back to 'National' if the named composition is not found.
|
|
2426
|
-
*/
|
|
2427
|
-
export declare function resolvePublishedComposition(display?: DisplayExtensionValue, fallbackName?: string): Composition;
|
|
2428
|
-
|
|
2429
|
-
/**
|
|
2430
|
-
* Grouping modes for resources
|
|
2431
|
-
*/
|
|
2432
|
-
declare type ResourceGroupingMode = 'BY_VENUE' | 'BY_SURFACE' | 'BY_TAG' | 'FLAT';
|
|
2433
|
-
|
|
2434
|
-
declare interface RoundAnnotation {
|
|
2435
|
-
roundNumber: number;
|
|
2436
|
-
linkType: string;
|
|
2437
|
-
direction: 'source' | 'target';
|
|
2438
|
-
edgeId: string;
|
|
2439
|
-
isSelected: boolean;
|
|
2440
|
-
}
|
|
2441
|
-
|
|
2442
|
-
declare interface RoundCardCallbacks {
|
|
2443
|
-
onClick: (locator: RoundLocator) => void;
|
|
2444
|
-
onContextMenu?: (locator: RoundLocator, target: HTMLElement) => void;
|
|
2445
|
-
}
|
|
2446
|
-
|
|
2447
|
-
declare interface RoundCardData {
|
|
2448
|
-
round: RoundProfile;
|
|
2449
|
-
locator: RoundLocator;
|
|
2450
|
-
isSelected: boolean;
|
|
2451
|
-
severity: Severity | null;
|
|
2452
|
-
}
|
|
2453
|
-
|
|
2454
|
-
declare interface RoundCatalogCallbacks {
|
|
2455
|
-
onSearchChange: (query: string) => void;
|
|
2456
|
-
onGroupByChange: (mode: CatalogGroupBy) => void;
|
|
2457
|
-
onDropRemove?: (locator: RoundLocator) => void;
|
|
2458
|
-
onNavigateToPlanned?: (item: CatalogRoundItem) => void;
|
|
2459
|
-
}
|
|
2460
|
-
|
|
2461
|
-
export declare interface RoundKey {
|
|
2462
|
-
tournamentId: string;
|
|
2463
|
-
eventId: string;
|
|
2464
|
-
drawId: string;
|
|
2465
|
-
structureId: string;
|
|
2466
|
-
roundNumber: number;
|
|
2467
|
-
}
|
|
2468
|
-
|
|
2469
|
-
export declare interface RoundLocator {
|
|
2470
|
-
date: string;
|
|
2471
|
-
venueId: string;
|
|
2472
|
-
index: number;
|
|
2473
|
-
roundKey: RoundKey;
|
|
2474
|
-
roundSegment?: RoundSegment;
|
|
2475
|
-
}
|
|
2476
|
-
|
|
2477
|
-
export declare interface RoundProfile {
|
|
2478
|
-
tournamentId: string;
|
|
2479
|
-
eventId: string;
|
|
2480
|
-
eventName?: string;
|
|
2481
|
-
drawId: string;
|
|
2482
|
-
drawName?: string;
|
|
2483
|
-
structureId: string;
|
|
2484
|
-
structureType?: string;
|
|
2485
|
-
roundNumber: number;
|
|
2486
|
-
roundName?: string;
|
|
2487
|
-
roundSegment?: RoundSegment;
|
|
2488
|
-
notBeforeTime?: string;
|
|
2489
|
-
sortOrder?: number;
|
|
2490
|
-
matchCountEstimate?: number;
|
|
2491
|
-
}
|
|
2492
|
-
|
|
2493
|
-
/**
|
|
2494
|
-
* Scheduling Profile — Type Definitions
|
|
2495
|
-
*
|
|
2496
|
-
* All interfaces for the scheduling profile builder component.
|
|
2497
|
-
* The SchedulingProfile shape matches the factory's `scheduleProfileRounds()` input.
|
|
2498
|
-
*/
|
|
2499
|
-
export declare interface RoundSegment {
|
|
2500
|
-
segmentNumber: number;
|
|
2501
|
-
segmentsCount: number;
|
|
2502
|
-
}
|
|
2503
|
-
|
|
2504
|
-
/** JSON-serializable snapshot of a composition (no functions/DOM refs) */
|
|
2505
|
-
export declare interface SavedComposition {
|
|
2506
|
-
compositionName: string;
|
|
2507
|
-
theme: string;
|
|
2508
|
-
configuration: Configuration;
|
|
2509
|
-
version?: number;
|
|
2510
|
-
}
|
|
2511
|
-
|
|
2512
|
-
declare interface ScaleItem {
|
|
2513
|
-
scaleName?: string;
|
|
2514
|
-
scaleValue?: any;
|
|
2515
|
-
[key: string]: any;
|
|
2516
|
-
}
|
|
2517
|
-
|
|
2518
|
-
declare interface ScalesByType {
|
|
2519
|
-
SINGLES?: ScaleItem[];
|
|
2520
|
-
DOUBLES?: ScaleItem[];
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
declare interface Schedule {
|
|
2524
|
-
scheduledDate?: string;
|
|
2525
|
-
scheduledTime?: string;
|
|
2526
|
-
startTime?: string;
|
|
2527
|
-
endTime?: string;
|
|
2528
|
-
courtId?: string;
|
|
2529
|
-
courtName?: string;
|
|
2530
|
-
venueId?: string;
|
|
2531
|
-
venueAbbreviation?: string;
|
|
2532
|
-
}
|
|
2533
|
-
|
|
2534
|
-
/**
|
|
2535
|
-
* JSON-serializable cell configuration.
|
|
2536
|
-
* 3 fixed zones (header, body, footer), each containing an ordered array of field identifiers.
|
|
2537
|
-
* Safe for factory extensions and publishing data.
|
|
2538
|
-
*/
|
|
2539
|
-
export declare interface ScheduleCellConfig {
|
|
2540
|
-
header: ScheduleCellField[];
|
|
2541
|
-
body: ScheduleCellField[];
|
|
2542
|
-
footer: ScheduleCellField[];
|
|
2543
|
-
participantDisplay?: ParticipantDisplayConfig;
|
|
2544
|
-
}
|
|
2545
|
-
|
|
2546
|
-
export declare interface ScheduleCellConfigOptions {
|
|
2547
|
-
initial?: Partial<ScheduleCellDisplayConfig>;
|
|
2548
|
-
onApply?: (config: ScheduleCellDisplayConfig) => void;
|
|
2549
|
-
}
|
|
2550
|
-
|
|
2551
|
-
/**
|
|
2552
|
-
* Flat data shape the cell renderer consumes — mapped from factory matchUp objects.
|
|
2553
|
-
* Decouples the renderer from the factory's nested matchUp shape.
|
|
2554
|
-
*/
|
|
2555
|
-
export declare interface ScheduleCellData {
|
|
2556
|
-
matchUpId: string;
|
|
2557
|
-
drawId?: string;
|
|
2558
|
-
eventName?: string;
|
|
2559
|
-
roundName?: string;
|
|
2560
|
-
matchUpFormat?: string;
|
|
2561
|
-
matchUpType?: string;
|
|
2562
|
-
matchUpStatus?: string;
|
|
2563
|
-
winningSide?: number;
|
|
2564
|
-
gender?: string;
|
|
2565
|
-
sides?: ScheduleCellSide[];
|
|
2566
|
-
potentialParticipants?: any[][];
|
|
2567
|
-
schedule?: {
|
|
2568
|
-
scheduledTime?: string;
|
|
2569
|
-
startTime?: string;
|
|
2570
|
-
timeModifiers?: string[];
|
|
2571
|
-
courtAnnotation?: string;
|
|
2572
|
-
courtId?: string;
|
|
2573
|
-
courtOrder?: number;
|
|
2574
|
-
venueId?: string;
|
|
2575
|
-
};
|
|
2576
|
-
score?: {
|
|
2577
|
-
scoreStringSide1?: string;
|
|
2578
|
-
scoreStringSide2?: string;
|
|
2579
|
-
};
|
|
2580
|
-
umpire?: string;
|
|
2581
|
-
/** Conflict state injected by proConflicts */
|
|
2582
|
-
scheduleState?: string;
|
|
2583
|
-
issueType?: string;
|
|
2584
|
-
issueIds?: string[];
|
|
2585
|
-
/** Blocked cell (alternative to matchUp) */
|
|
2586
|
-
isBlocked?: boolean;
|
|
2587
|
-
booking?: {
|
|
2588
|
-
bookingType?: string;
|
|
2589
|
-
rowCount?: number;
|
|
2590
|
-
notes?: string;
|
|
2591
|
-
};
|
|
2592
|
-
}
|
|
2593
|
-
|
|
2594
|
-
/**
|
|
2595
|
-
* Schedule Cell Configurator Modal — select what info appears in OOP grid cells.
|
|
2596
|
-
*
|
|
2597
|
-
* Provides checkboxes for each field that can appear in a schedule cell:
|
|
2598
|
-
* participant names, match number, event/round, nationality, seeds,
|
|
2599
|
-
* scheduled time, format code, score.
|
|
2600
|
-
*
|
|
2601
|
-
* Returns a CellConfig object consumed by pdf-factory's scheduleV2 renderer.
|
|
2602
|
-
*/
|
|
2603
|
-
export declare interface ScheduleCellDisplayConfig {
|
|
2604
|
-
showParticipantNames: boolean;
|
|
2605
|
-
showNationality: boolean;
|
|
2606
|
-
showSeedings: boolean;
|
|
2607
|
-
showMatchNumber: boolean;
|
|
2608
|
-
showEventRound: boolean;
|
|
2609
|
-
showScheduledTime: boolean;
|
|
2610
|
-
showMatchFormat: boolean;
|
|
2611
|
-
showScore: boolean;
|
|
2612
|
-
nameFormat: 'full' | 'abbreviated' | 'lastOnly';
|
|
2613
|
-
cellStyle: 'detailed' | 'compact';
|
|
2614
|
-
}
|
|
2615
|
-
|
|
2616
|
-
/** Field identifiers for the 3-zone cell layout */
|
|
2617
|
-
export declare type ScheduleCellField = 'time' | 'eventRound' | 'participants' | 'score' | 'matchUpStatus' | 'matchUpFormat' | 'umpire';
|
|
2618
|
-
|
|
2619
|
-
/** Participant info for a single side of a matchUp cell */
|
|
2620
|
-
export declare interface ScheduleCellSide {
|
|
2621
|
-
sideNumber?: number;
|
|
2622
|
-
participantName?: string;
|
|
2623
|
-
participantId?: string;
|
|
2624
|
-
seedNumber?: number;
|
|
2625
|
-
ranking?: number;
|
|
2626
|
-
nationality?: string;
|
|
2627
|
-
/** Team name when participant is a member of a team (tie/team event) */
|
|
2628
|
-
teamName?: string;
|
|
2629
|
-
/** True if this side is a BYE (no participant) */
|
|
2630
|
-
bye?: boolean;
|
|
2631
|
-
}
|
|
2632
|
-
|
|
2633
|
-
/**
|
|
2634
|
-
* Schedule Cell TypeAhead — inline autocomplete for empty grid cells.
|
|
2635
|
-
*
|
|
2636
|
-
* Activates an Awesomplete typeahead input inside an empty schedule cell.
|
|
2637
|
-
* The consumer provides a list of unscheduled matchUps and a selection callback.
|
|
2638
|
-
* Reuses the existing createTypeAhead helper (Awesomplete wrapper).
|
|
2639
|
-
*/
|
|
2640
|
-
export declare interface ScheduleCellTypeAheadOptions {
|
|
2641
|
-
/** The grid cell element to activate the typeahead in */
|
|
2642
|
-
cell: HTMLElement;
|
|
2643
|
-
/** Returns the list of assignable matchUps as { label, value } */
|
|
2644
|
-
listProvider: () => Array<{
|
|
2645
|
-
label: string;
|
|
2646
|
-
value: string;
|
|
2647
|
-
}>;
|
|
2648
|
-
/** Called when a matchUp is selected — value is the matchUpId */
|
|
2649
|
-
onSelect: (matchUpId: string) => void;
|
|
2650
|
-
/** Called when the typeahead is dismissed without selection */
|
|
2651
|
-
onCancel?: () => void;
|
|
2652
|
-
}
|
|
2653
|
-
|
|
2654
|
-
declare interface ScheduleContent {
|
|
2655
|
-
cellStyle?: 'detailed' | 'compact';
|
|
2656
|
-
showMatchNumbers?: boolean;
|
|
2657
|
-
alertBanner?: string;
|
|
2658
|
-
}
|
|
2659
|
-
|
|
2660
|
-
export declare interface ScheduleDate {
|
|
2661
|
-
date: string;
|
|
2662
|
-
isActive: boolean;
|
|
2663
|
-
matchUpCount?: number;
|
|
2664
|
-
issueCount?: number;
|
|
2665
|
-
}
|
|
2666
|
-
|
|
2667
|
-
export declare interface ScheduleDay {
|
|
2668
|
-
scheduleDate: string;
|
|
2669
|
-
venues: VenueSchedule[];
|
|
2670
|
-
}
|
|
2671
|
-
|
|
2672
|
-
export declare type ScheduledBehavior = 'dim' | 'hide';
|
|
2673
|
-
|
|
2674
|
-
export declare interface ScheduleIssue {
|
|
2675
|
-
severity: ScheduleIssueSeverity;
|
|
2676
|
-
message: string;
|
|
2677
|
-
matchUpId?: string;
|
|
2678
|
-
date?: string;
|
|
2679
|
-
/** Structured conflict data for rich rendering */
|
|
2680
|
-
issueType?: string;
|
|
2681
|
-
prefix?: string;
|
|
2682
|
-
participants?: string;
|
|
2683
|
-
conflictParticipants?: string[];
|
|
2684
|
-
/** All matchUpIds involved in this conflict (for click-to-scroll fallback) */
|
|
2685
|
-
conflictMatchUpIds?: string[];
|
|
2686
|
-
}
|
|
2687
|
-
|
|
2688
|
-
export declare interface ScheduleIssueCounts {
|
|
2689
|
-
total: number;
|
|
2690
|
-
ERROR: number;
|
|
2691
|
-
WARN: number;
|
|
2692
|
-
INFO: number;
|
|
2693
|
-
}
|
|
2694
|
-
|
|
2695
|
-
export declare interface ScheduleIssueIndex {
|
|
2696
|
-
all: ScheduleIssue[];
|
|
2697
|
-
bySeverity: Record<ScheduleIssueSeverity, ScheduleIssue[]>;
|
|
2698
|
-
byDate: Record<string, ScheduleIssue[]>;
|
|
2699
|
-
counts: ScheduleIssueCounts;
|
|
2700
|
-
countsByDate: Record<string, ScheduleIssueCounts>;
|
|
2701
|
-
}
|
|
2702
|
-
|
|
2703
|
-
export declare type ScheduleIssueSeverity = 'ERROR' | 'WARN' | 'INFO';
|
|
2704
|
-
|
|
2705
|
-
export declare type SchedulePageChangeListener = (state: SchedulePageState) => void;
|
|
2706
|
-
|
|
2707
|
-
export declare interface SchedulePageConfig {
|
|
2708
|
-
matchUpCatalog: CatalogMatchUpItem[];
|
|
2709
|
-
scheduleDates: ScheduleDate[];
|
|
2710
|
-
issues?: ScheduleIssue[];
|
|
2711
|
-
courtGridElement?: HTMLElement;
|
|
2712
|
-
/** Max height for the court grid viewport (e.g. '500px', '60vh'). Defaults to none (fills available space). */
|
|
2713
|
-
gridMaxHeight?: string;
|
|
2714
|
-
/** When true, the left column (date strip + issues panel) is not rendered at all. */
|
|
2715
|
-
hideLeft?: boolean;
|
|
2716
|
-
/** Which side to place the matchUp catalog. Defaults to 'right'. */
|
|
2717
|
-
catalogSide?: 'left' | 'right';
|
|
2718
|
-
scheduledBehavior?: ScheduledBehavior;
|
|
2719
|
-
schedulingMode?: SchedulingMode;
|
|
2720
|
-
onDateSelected?: (date: string) => void;
|
|
2721
|
-
onMatchUpDrop?: (payload: SchedulePageDragPayload, event: DragEvent) => void;
|
|
2722
|
-
onMatchUpRemove?: (matchUpId: string) => void;
|
|
2723
|
-
onMatchUpSelected?: (matchUp: CatalogMatchUpItem | null) => void;
|
|
2724
|
-
/** Called in 'bulk' mode when the user triggers save — receives all pending actions */
|
|
2725
|
-
onBulkSave?: (actions: PendingScheduleAction[]) => void;
|
|
2726
|
-
}
|
|
2727
|
-
|
|
2728
|
-
export declare class SchedulePageControl {
|
|
2729
|
-
private readonly store;
|
|
2730
|
-
private readonly layout;
|
|
2731
|
-
private readonly unsubscribe;
|
|
2732
|
-
private container;
|
|
2733
|
-
constructor(config: SchedulePageConfig);
|
|
2734
|
-
render(container: HTMLElement): void;
|
|
2735
|
-
destroy(): void;
|
|
2736
|
-
setMatchUpCatalog(catalog: CatalogMatchUpItem[]): void;
|
|
2737
|
-
setScheduleDates(dates: ScheduleDate[]): void;
|
|
2738
|
-
setIssues(issues: ScheduleIssue[]): void;
|
|
2739
|
-
save(): PendingScheduleAction[];
|
|
2740
|
-
discardPending(): void;
|
|
2741
|
-
get hasUnsavedChanges(): boolean;
|
|
2742
|
-
getStore(): SchedulePageStore;
|
|
2743
|
-
}
|
|
2744
|
-
|
|
2745
|
-
export declare type SchedulePageDragPayload = CatalogMatchUpDragPayload | GridMatchUpDragPayload;
|
|
2746
|
-
|
|
2747
|
-
declare interface SchedulePageLayoutCallbacks {
|
|
2748
|
-
onToggleLeft: () => void;
|
|
2749
|
-
}
|
|
2750
|
-
|
|
2751
|
-
declare interface SchedulePageLayoutPanels {
|
|
2752
|
-
dateStrip: UIPanel_3<SchedulePageState>;
|
|
2753
|
-
issuesPanel: UIPanel_3<SchedulePageState>;
|
|
2754
|
-
courtGridSlot: UIPanel_3<SchedulePageState>;
|
|
2755
|
-
matchUpCatalog: UIPanel_3<SchedulePageState>;
|
|
2756
|
-
inspectorPanel: UIPanel_3<SchedulePageState>;
|
|
2757
|
-
}
|
|
2758
|
-
|
|
2759
|
-
export declare interface SchedulePageState {
|
|
2760
|
-
matchUpCatalog: CatalogMatchUpItem[];
|
|
2761
|
-
scheduleDates: ScheduleDate[];
|
|
2762
|
-
issues: ScheduleIssue[];
|
|
2763
|
-
selectedDate: string | null;
|
|
2764
|
-
selectedMatchUp: CatalogMatchUpItem | null;
|
|
2765
|
-
catalogSearchQuery: string;
|
|
2766
|
-
catalogGroupBy: MatchUpCatalogGroupBy;
|
|
2767
|
-
catalogFilters: CatalogFilters;
|
|
2768
|
-
showCompleted: boolean;
|
|
2769
|
-
showScheduled: boolean;
|
|
2770
|
-
scheduledBehavior: ScheduledBehavior;
|
|
2771
|
-
schedulingMode: SchedulingMode;
|
|
2772
|
-
pendingActions: PendingScheduleAction[];
|
|
2773
|
-
hasUnsavedChanges: boolean;
|
|
2774
|
-
leftCollapsed: boolean;
|
|
2775
|
-
hideLeft: boolean;
|
|
2776
|
-
}
|
|
2777
|
-
|
|
2778
|
-
export declare class SchedulePageStore {
|
|
2779
|
-
private state;
|
|
2780
|
-
private readonly listeners;
|
|
2781
|
-
private readonly config;
|
|
2782
|
-
constructor(config: SchedulePageConfig);
|
|
2783
|
-
getState(): SchedulePageState;
|
|
2784
|
-
setMatchUpCatalog(catalog: CatalogMatchUpItem[]): void;
|
|
2785
|
-
setScheduleDates(dates: ScheduleDate[]): void;
|
|
2786
|
-
setIssues(issues: ScheduleIssue[]): void;
|
|
2787
|
-
handleMatchUpDrop(payload: SchedulePageDragPayload, event: DragEvent): void;
|
|
2788
|
-
handleMatchUpRemove(matchUpId: string): void;
|
|
2789
|
-
/**
|
|
2790
|
-
* Flush all pending actions via the onBulkSave callback and clear the queue.
|
|
2791
|
-
* Returns the actions that were flushed.
|
|
2792
|
-
*/
|
|
2793
|
-
save(): PendingScheduleAction[];
|
|
2794
|
-
/**
|
|
2795
|
-
* Discard all pending actions without saving.
|
|
2796
|
-
*/
|
|
2797
|
-
discardPending(): void;
|
|
2798
|
-
getPendingActions(): PendingScheduleAction[];
|
|
2799
|
-
selectDate(date: string): void;
|
|
2800
|
-
selectMatchUp(matchUp: CatalogMatchUpItem | null): void;
|
|
2801
|
-
setCatalogSearch(query: string): void;
|
|
2802
|
-
setCatalogGroupBy(mode: MatchUpCatalogGroupBy): void;
|
|
2803
|
-
setCatalogFilters(filters: CatalogFilters): void;
|
|
2804
|
-
setShowCompleted(show: boolean): void;
|
|
2805
|
-
setShowScheduled(show: boolean): void;
|
|
2806
|
-
toggleLeftPanel(): void;
|
|
2807
|
-
subscribe(listener: SchedulePageChangeListener): () => void;
|
|
2808
|
-
private setState;
|
|
2809
|
-
private emit;
|
|
2810
|
-
}
|
|
2811
|
-
|
|
2812
|
-
export declare type SchedulingEditorChangeListener = (state: SchedulingEditorState) => void;
|
|
2813
|
-
|
|
2814
|
-
export declare interface SchedulingEditorConfig {
|
|
2815
|
-
initialPolicy?: SchedulingPolicyData;
|
|
2816
|
-
categoryNames?: string[];
|
|
2817
|
-
categoryTypes?: string[];
|
|
2818
|
-
matchUpFormatCodes?: string[];
|
|
2819
|
-
onChange?: (policy: SchedulingPolicyData) => void;
|
|
2820
|
-
}
|
|
2821
|
-
|
|
2822
|
-
export declare class SchedulingEditorControl {
|
|
2823
|
-
private readonly store;
|
|
2824
|
-
private readonly panel;
|
|
2825
|
-
private readonly unsubscribe;
|
|
2826
|
-
private container;
|
|
2827
|
-
constructor(config: SchedulingEditorConfig);
|
|
2828
|
-
render(container: HTMLElement): void;
|
|
2829
|
-
destroy(): void;
|
|
2830
|
-
getData(): SchedulingPolicyData;
|
|
2831
|
-
setData(data: SchedulingPolicyData): void;
|
|
2832
|
-
getStore(): SchedulingEditorStore;
|
|
2833
|
-
/**
|
|
2834
|
-
* Create as a PolicyEditorInstance for embedding in the catalog editor shell.
|
|
2835
|
-
*/
|
|
2836
|
-
static createEditorInstance(config: {
|
|
2837
|
-
initialData: Record<string, unknown>;
|
|
2838
|
-
onChange: (data: Record<string, unknown>) => void;
|
|
2839
|
-
}): PolicyEditorInstance;
|
|
2840
|
-
}
|
|
2841
|
-
|
|
2842
|
-
export declare type SchedulingEditorSection = 'modificationFlags' | 'dailyLimits' | 'defaultTimes' | 'averageTimes' | 'recoveryTimes';
|
|
2843
|
-
|
|
2844
|
-
export declare interface SchedulingEditorState {
|
|
2845
|
-
draft: SchedulingPolicyData;
|
|
2846
|
-
expandedSections: Set<SchedulingEditorSection>;
|
|
2847
|
-
dirty: boolean;
|
|
2848
|
-
}
|
|
2849
|
-
|
|
2850
|
-
export declare class SchedulingEditorStore {
|
|
2851
|
-
private state;
|
|
2852
|
-
private readonly listeners;
|
|
2853
|
-
private readonly config;
|
|
2854
|
-
constructor(config: SchedulingEditorConfig);
|
|
2855
|
-
getState(): SchedulingEditorState;
|
|
2856
|
-
getData(): SchedulingPolicyData;
|
|
2857
|
-
setData(data: SchedulingPolicyData): void;
|
|
2858
|
-
toggleSection(sectionId: SchedulingEditorSection): void;
|
|
2859
|
-
setModificationFlag(key: 'courts' | 'venues', value: boolean): void;
|
|
2860
|
-
setDailyLimit(key: 'SINGLES' | 'DOUBLES' | 'total', value: number): void;
|
|
2861
|
-
setDefaultAverageTime(index: number, field: 'default' | 'DOUBLES', value: number | undefined): void;
|
|
2862
|
-
setDefaultRecoveryTime(index: number, field: 'default' | 'DOUBLES', value: number | undefined): void;
|
|
2863
|
-
addAverageFormatGroup(): void;
|
|
2864
|
-
removeAverageFormatGroup(index: number): void;
|
|
2865
|
-
setAverageFormatCodes(groupIndex: number, codes: string[]): void;
|
|
2866
|
-
setAverageTime(groupIndex: number, overrideIndex: number, field: 'default' | 'DOUBLES', value: number | undefined): void;
|
|
2867
|
-
addAverageCategoryOverride(groupIndex: number): void;
|
|
2868
|
-
removeAverageCategoryOverride(groupIndex: number, overrideIndex: number): void;
|
|
2869
|
-
setAverageOverrideCategories(groupIndex: number, overrideIndex: number, key: 'categoryNames' | 'categoryTypes', values: string[]): void;
|
|
2870
|
-
addRecoveryFormatGroup(): void;
|
|
2871
|
-
removeRecoveryFormatGroup(index: number): void;
|
|
2872
|
-
setRecoveryFormatCodes(groupIndex: number, codes: string[]): void;
|
|
2873
|
-
setRecoveryTime(groupIndex: number, overrideIndex: number, field: 'default' | 'DOUBLES', value: number | undefined): void;
|
|
2874
|
-
addRecoveryCategoryOverride(groupIndex: number): void;
|
|
2875
|
-
removeRecoveryCategoryOverride(groupIndex: number, overrideIndex: number): void;
|
|
2876
|
-
setRecoveryOverrideCategories(groupIndex: number, overrideIndex: number, key: 'categoryNames' | 'categoryTypes', values: string[]): void;
|
|
2877
|
-
subscribe(listener: SchedulingEditorChangeListener): () => void;
|
|
2878
|
-
private commitDraft;
|
|
2879
|
-
private emit;
|
|
2880
|
-
}
|
|
2881
|
-
|
|
2882
|
-
/**
|
|
2883
|
-
* Controls how drop/remove actions are committed:
|
|
2884
|
-
* - 'immediate': each drop fires the consumer callback right away (e.g. executionQueue per action)
|
|
2885
|
-
* - 'bulk': actions accumulate in a pending queue; consumer calls save() to flush
|
|
2886
|
-
*/
|
|
2887
|
-
export declare type SchedulingMode = 'immediate' | 'bulk';
|
|
2888
|
-
|
|
2889
|
-
export declare interface SchedulingPolicyData {
|
|
2890
|
-
allowModificationWhenMatchUpsScheduled?: {
|
|
2891
|
-
courts: boolean;
|
|
2892
|
-
venues: boolean;
|
|
2893
|
-
};
|
|
2894
|
-
defaultTimes?: {
|
|
2895
|
-
averageTimes?: AverageTimeEntry[];
|
|
2896
|
-
recoveryTimes?: RecoveryTimeEntry[];
|
|
2897
|
-
};
|
|
2898
|
-
defaultDailyLimits?: {
|
|
2899
|
-
SINGLES?: number;
|
|
2900
|
-
DOUBLES?: number;
|
|
2901
|
-
total?: number;
|
|
2902
|
-
};
|
|
2903
|
-
matchUpAverageTimes?: MatchUpAverageTime[];
|
|
2904
|
-
matchUpRecoveryTimes?: MatchUpRecoveryTime[];
|
|
2905
|
-
matchUpDailyLimits?: unknown[];
|
|
2906
|
-
}
|
|
2907
|
-
|
|
2908
|
-
export declare type SchedulingProfile = ScheduleDay[];
|
|
2909
|
-
|
|
2910
|
-
export declare interface SchedulingProfileConfig {
|
|
2911
|
-
venues: VenueInfo[];
|
|
2912
|
-
roundCatalog: CatalogRoundItem[];
|
|
2913
|
-
schedulableDates: string[];
|
|
2914
|
-
activeDates?: string[];
|
|
2915
|
-
/** When true, the left column (date strip + issues panel) is not rendered. */
|
|
2916
|
-
hideLeft?: boolean;
|
|
2917
|
-
/** Which side to place the round catalog. Defaults to 'right'. */
|
|
2918
|
-
catalogSide?: 'left' | 'right';
|
|
2919
|
-
initialProfile?: SchedulingProfile;
|
|
2920
|
-
selectedDate?: string;
|
|
2921
|
-
temporalAdapter?: TemporalAdapter;
|
|
2922
|
-
demandAdapter?: DemandAdapter;
|
|
2923
|
-
dependencyAdapter?: DependencyAdapter;
|
|
2924
|
-
venueOrder?: string[];
|
|
2925
|
-
plannedRoundBehavior?: PlannedRoundBehavior;
|
|
2926
|
-
onProfileChanged?: (profile: SchedulingProfile) => void;
|
|
2927
|
-
onFixAction?: (action: FixAction) => void;
|
|
2928
|
-
}
|
|
2929
|
-
|
|
2930
|
-
export declare class SchedulingProfileControl {
|
|
2931
|
-
private readonly store;
|
|
2932
|
-
private readonly layout;
|
|
2933
|
-
private readonly unsubscribe;
|
|
2934
|
-
private readonly popover;
|
|
2935
|
-
private container;
|
|
2936
|
-
constructor(config: SchedulingProfileConfig);
|
|
2937
|
-
render(container: HTMLElement): void;
|
|
2938
|
-
destroy(): void;
|
|
2939
|
-
getProfile(): SchedulingProfile;
|
|
2940
|
-
getStore(): ProfileStore;
|
|
2941
|
-
}
|
|
2942
|
-
|
|
2943
|
-
export declare interface SchedulingValidationResult {
|
|
2944
|
-
severity: SchedulingValidationSeverity;
|
|
2945
|
-
path: string;
|
|
2946
|
-
message: string;
|
|
2947
|
-
}
|
|
2948
|
-
|
|
2949
|
-
export declare type SchedulingValidationSeverity = 'error' | 'warning';
|
|
2950
|
-
|
|
2951
|
-
export declare interface SchematicMatchUp {
|
|
2952
|
-
matchUpId: string;
|
|
2953
|
-
roundNumber: number;
|
|
2954
|
-
roundPosition?: number;
|
|
2955
|
-
drawPositions?: number[];
|
|
2956
|
-
finishingRound?: number;
|
|
2957
|
-
roundFactor?: number;
|
|
2958
|
-
stage?: string;
|
|
2959
|
-
isRoundRobin?: boolean;
|
|
2960
|
-
preFeedRound?: boolean;
|
|
2961
|
-
structureId?: string;
|
|
2962
|
-
collectionId?: string;
|
|
2963
|
-
}
|
|
2964
|
-
|
|
2965
|
-
declare interface Score {
|
|
2966
|
-
scoreStringSide1?: string;
|
|
2967
|
-
scoreStringSide2?: string;
|
|
2968
|
-
sets?: SetScore_2[];
|
|
2969
|
-
}
|
|
2970
|
-
|
|
2971
|
-
export declare interface ScorecardOptions {
|
|
2972
|
-
matchUp: any;
|
|
2973
|
-
composition?: any;
|
|
2974
|
-
eventHandlers?: any;
|
|
2975
|
-
swapSides?: boolean;
|
|
2976
|
-
}
|
|
2977
|
-
|
|
2978
|
-
export declare type ScoreOutcome = {
|
|
2979
|
-
isValid: boolean;
|
|
2980
|
-
sets: SetScore[];
|
|
2981
|
-
scoreObject?: any;
|
|
2982
|
-
winningSide?: number;
|
|
2983
|
-
matchUpStatus?: string;
|
|
2984
|
-
error?: string;
|
|
2985
|
-
matchUpFormat?: string;
|
|
2986
|
-
score?: string;
|
|
2987
|
-
};
|
|
2988
|
-
|
|
2989
|
-
/**
|
|
2990
|
-
* Scoring configuration for courthive-components
|
|
2991
|
-
* This provides a simple configuration object that can be modified by consumers
|
|
2992
|
-
*/
|
|
2993
|
-
declare interface ScoringConfig {
|
|
2994
|
-
scoringApproach?: 'freeScore' | 'dynamicSets' | 'dialPad' | 'inlineScoring';
|
|
2995
|
-
smartComplements?: boolean;
|
|
2996
|
-
composition?: string;
|
|
2997
|
-
idiom?: string;
|
|
2998
|
-
dateFormat?: string;
|
|
2999
|
-
timeFormat?: string;
|
|
3000
|
-
}
|
|
3001
|
-
|
|
3002
|
-
export declare function scoringModal(params: ScoringModalParams): void;
|
|
3003
|
-
|
|
3004
|
-
export declare type ScoringModalLabels = {
|
|
3005
|
-
title?: string;
|
|
3006
|
-
cancel?: string;
|
|
3007
|
-
clear?: string;
|
|
3008
|
-
submit?: string;
|
|
3009
|
-
format?: string;
|
|
3010
|
-
formatEditTitle?: string;
|
|
3011
|
-
irregularEnding?: string;
|
|
3012
|
-
winner?: string;
|
|
3013
|
-
retired?: string;
|
|
3014
|
-
walkover?: string;
|
|
3015
|
-
defaulted?: string;
|
|
3016
|
-
validScore?: string;
|
|
3017
|
-
scoreIncomplete?: string;
|
|
3018
|
-
invalidScore?: string;
|
|
3019
|
-
scoreTips?: string;
|
|
3020
|
-
setScores?: string;
|
|
3021
|
-
tiebreaks?: string;
|
|
3022
|
-
matchTiebreaks?: string;
|
|
3023
|
-
irregularEndings?: string;
|
|
3024
|
-
addSet?: boolean;
|
|
3025
|
-
dynamicSetsTips?: string;
|
|
3026
|
-
dialPadTips?: string;
|
|
3027
|
-
};
|
|
3028
|
-
|
|
3029
|
-
export declare type ScoringModalParams = {
|
|
3030
|
-
matchUp: any;
|
|
3031
|
-
callback: (outcome: any) => void;
|
|
3032
|
-
onClose?: () => void;
|
|
3033
|
-
labels?: ScoringModalLabels;
|
|
3034
|
-
};
|
|
3035
|
-
|
|
3036
|
-
export declare interface SegmentData {
|
|
3037
|
-
participantName?: string;
|
|
3038
|
-
drawPosition?: number;
|
|
3039
|
-
seedNumber?: number;
|
|
3040
|
-
entryStatus?: string;
|
|
3041
|
-
nationalityCode?: string;
|
|
3042
|
-
scoreString?: string;
|
|
3043
|
-
matchUpStatus?: string;
|
|
3044
|
-
roundName?: string;
|
|
3045
|
-
depth: number;
|
|
3046
|
-
matchUp?: SunburstMatchUp;
|
|
3047
|
-
}
|
|
3048
|
-
|
|
3049
|
-
export declare function selectItem(params: SelectItemParams): void;
|
|
3050
|
-
|
|
3051
|
-
export declare interface SelectItemOption {
|
|
3052
|
-
label: string;
|
|
3053
|
-
onClick?: () => void;
|
|
3054
|
-
[key: string]: any;
|
|
3055
|
-
}
|
|
3056
|
-
|
|
3057
|
-
export declare interface SelectItemParams {
|
|
3058
|
-
title: string;
|
|
3059
|
-
placeholder?: string;
|
|
3060
|
-
options: SelectItemOption[];
|
|
3061
|
-
selectionLimit?: number;
|
|
3062
|
-
/** Factory to create a selection table. If not provided, a simple list is used. */
|
|
3063
|
-
createTable?: (config: {
|
|
3064
|
-
anchorId: string;
|
|
3065
|
-
data: any[];
|
|
3066
|
-
selectionLimit?: number;
|
|
3067
|
-
onSelected: (value: any[]) => void;
|
|
3068
|
-
}) => {
|
|
3069
|
-
table: any;
|
|
3070
|
-
destroy?: () => void;
|
|
3071
|
-
};
|
|
3072
|
-
/** Factory to create a search filter function for the table. */
|
|
3073
|
-
createFilter?: (table: any) => (value: string) => void;
|
|
3074
|
-
}
|
|
3075
|
-
|
|
3076
|
-
/**
|
|
3077
|
-
* Set format information returned by matchUpFormatCode.parse()
|
|
3078
|
-
*/
|
|
3079
|
-
export declare type SetFormat = {
|
|
3080
|
-
setTo?: number;
|
|
3081
|
-
tiebreakAt?: number;
|
|
3082
|
-
tiebreakFormat?: {
|
|
3083
|
-
tiebreakTo?: number;
|
|
3084
|
-
noAd?: boolean;
|
|
3085
|
-
};
|
|
3086
|
-
tiebreakSet?: {
|
|
3087
|
-
tiebreakTo?: number;
|
|
3088
|
-
noAd?: boolean;
|
|
3089
|
-
};
|
|
3090
|
-
timed?: boolean;
|
|
3091
|
-
minutes?: number;
|
|
3092
|
-
};
|
|
3093
|
-
|
|
3094
|
-
/**
|
|
3095
|
-
* Type definitions for scoring modal V2
|
|
3096
|
-
*/
|
|
3097
|
-
export declare type SetScore = {
|
|
3098
|
-
setNumber?: number;
|
|
3099
|
-
side1Score?: number;
|
|
3100
|
-
side2Score?: number;
|
|
3101
|
-
side1TiebreakScore?: number;
|
|
3102
|
-
side2TiebreakScore?: number;
|
|
3103
|
-
side1PointScore?: string | number;
|
|
3104
|
-
side2PointScore?: string | number;
|
|
3105
|
-
winningSide?: number;
|
|
3106
|
-
};
|
|
3107
|
-
|
|
3108
|
-
declare interface SetScore_2 {
|
|
3109
|
-
setNumber: number;
|
|
3110
|
-
side1Score?: number;
|
|
3111
|
-
side2Score?: number;
|
|
3112
|
-
side1TiebreakScore?: number;
|
|
3113
|
-
side2TiebreakScore?: number;
|
|
3114
|
-
side1PointScore?: number | string;
|
|
3115
|
-
side2PointScore?: number | string;
|
|
3116
|
-
winningSide?: number;
|
|
3117
|
-
}
|
|
3118
|
-
|
|
3119
|
-
/**
|
|
3120
|
-
* Set scoring configuration (can be partial)
|
|
3121
|
-
*/
|
|
3122
|
-
export declare function setScoringConfig(config: Partial<ScoringConfig>): void;
|
|
3123
|
-
|
|
3124
|
-
export declare type Severity = 'ERROR' | 'WARN' | 'INFO';
|
|
3125
|
-
|
|
3126
|
-
declare interface SeverityCounts {
|
|
3127
|
-
total: number;
|
|
3128
|
-
ERROR: number;
|
|
3129
|
-
WARN: number;
|
|
3130
|
-
INFO: number;
|
|
3131
|
-
}
|
|
3132
|
-
|
|
3133
|
-
/**
|
|
3134
|
-
* Determine if smart complement should be applied for a given input
|
|
3135
|
-
*
|
|
3136
|
-
* @param digit - The digit being entered
|
|
3137
|
-
* @param isShiftPressed - Whether Shift key is pressed
|
|
3138
|
-
* @param setIndex - Index of the current set
|
|
3139
|
-
* @param sets - Current sets array
|
|
3140
|
-
* @param config - Match configuration
|
|
3141
|
-
* @param smartComplementsUsed - Set of indices where complement was already used
|
|
3142
|
-
* @param smartComplementsEnabled - Whether feature is enabled in settings
|
|
3143
|
-
* @returns Result indicating if/how complement should be applied
|
|
3144
|
-
*/
|
|
3145
|
-
export declare function shouldApplySmartComplement(digit: number, isShiftPressed: boolean, setIndex: number, sets: SetScore[], config: MatchUpConfig, smartComplementsUsed: Set<number>, smartComplementsEnabled: boolean): SmartComplementResult;
|
|
3146
|
-
|
|
3147
|
-
/**
|
|
3148
|
-
* Determine if a new set row should be created
|
|
3149
|
-
*/
|
|
3150
|
-
export declare function shouldCreateNextSet(currentSetIndex: number, sets: SetScore[], config: MatchUpConfig): boolean;
|
|
3151
|
-
|
|
3152
|
-
/**
|
|
3153
|
-
* Determine if tiebreak input should be visible for a set
|
|
3154
|
-
*/
|
|
3155
|
-
export declare function shouldShowTiebreak(setIndex: number, scores: {
|
|
3156
|
-
side1: number;
|
|
3157
|
-
side2: number;
|
|
3158
|
-
}, config: MatchUpConfig): boolean;
|
|
3159
|
-
|
|
3160
|
-
export declare function showCourtAvailabilityModal(config: CourtAvailabilityModalConfig): Promise<void>;
|
|
3161
|
-
|
|
3162
|
-
declare interface Side {
|
|
3163
|
-
sideNumber: number;
|
|
3164
|
-
drawPosition?: number;
|
|
3165
|
-
participant?: Participant;
|
|
3166
|
-
participantFed?: string;
|
|
3167
|
-
sourceMatchUp?: MatchUp;
|
|
3168
|
-
qualifier?: boolean;
|
|
3169
|
-
bye?: boolean;
|
|
3170
|
-
lineUp?: LineUp[];
|
|
3171
|
-
score?: SideScore;
|
|
3172
|
-
seedNumber?: number;
|
|
3173
|
-
seedValue?: string | number;
|
|
3174
|
-
}
|
|
3175
|
-
|
|
3176
|
-
declare interface SideScore {
|
|
3177
|
-
scoreStringSide?: string;
|
|
3178
|
-
games?: number;
|
|
3179
|
-
points?: number;
|
|
3180
|
-
}
|
|
3181
|
-
|
|
3182
|
-
/**
|
|
3183
|
-
* Result of smart complement calculation
|
|
3184
|
-
*/
|
|
3185
|
-
export declare type SmartComplementResult = {
|
|
3186
|
-
field1Value: number;
|
|
3187
|
-
field2Value: number;
|
|
3188
|
-
shouldApply: boolean;
|
|
3189
|
-
reason?: string;
|
|
3190
|
-
};
|
|
3191
|
-
|
|
3192
|
-
export declare const standardTemplates: TopologyTemplate[];
|
|
3193
|
-
|
|
3194
|
-
/**
|
|
3195
|
-
* Detail payload for the `stateChanged` CustomEvent.
|
|
3196
|
-
*/
|
|
3197
|
-
export declare interface StateChangedDetail {
|
|
3198
|
-
matchUpId: string;
|
|
3199
|
-
matchUp: MatchUp;
|
|
3200
|
-
isComplete: boolean;
|
|
3201
|
-
winningSide?: number;
|
|
3202
|
-
}
|
|
3203
|
-
|
|
3204
|
-
declare interface StructureCardCallbacks {
|
|
3205
|
-
onSelect: (nodeId: string) => void;
|
|
3206
|
-
onSelectEdge: (edgeId: string) => void;
|
|
3207
|
-
onDoubleClick?: (nodeId: string) => void;
|
|
3208
|
-
onPortMouseDown: (nodeId: string, portType: 'winner' | 'loser') => void;
|
|
3209
|
-
onPortMouseUp: (nodeId: string) => void;
|
|
3210
|
-
onDragStart: (nodeId: string, startX: number, startY: number) => void;
|
|
3211
|
-
}
|
|
3212
|
-
|
|
3213
|
-
/**
|
|
3214
|
-
* BurstChart D3v7 - Tournament Sunburst Visualization
|
|
3215
|
-
*
|
|
3216
|
-
* Modern D3v7 implementation with emoji flags and clean TypeScript architecture.
|
|
3217
|
-
* Consumes TODS-aligned SunburstDrawData natively.
|
|
3218
|
-
*
|
|
3219
|
-
* Features:
|
|
3220
|
-
* - D3v7 partition layout
|
|
3221
|
-
* - Emoji flags (no image dependencies)
|
|
3222
|
-
* - Interactive hover with winner/opponent display
|
|
3223
|
-
* - Tournament title with text wrapping
|
|
3224
|
-
* - Color coding by seed/entry type
|
|
3225
|
-
* - Three-line hover display (winner, score, opponent)
|
|
3226
|
-
*/
|
|
3227
|
-
/** TODS-aligned draw structure for the sunburst */
|
|
3228
|
-
export declare interface SunburstDrawData {
|
|
3229
|
-
drawSize: number;
|
|
3230
|
-
roundMatchUps: Record<number, SunburstMatchUp[]>;
|
|
3231
|
-
seedAssignments?: {
|
|
3232
|
-
participantId: string;
|
|
3233
|
-
seedNumber: number;
|
|
3234
|
-
}[];
|
|
3235
|
-
}
|
|
3236
|
-
|
|
3237
|
-
export declare interface SunburstMatchUp {
|
|
3238
|
-
roundNumber: number;
|
|
3239
|
-
roundName?: string;
|
|
3240
|
-
matchUpStatus: string;
|
|
3241
|
-
winningSide?: number;
|
|
3242
|
-
drawPositions: number[];
|
|
3243
|
-
scoreString?: string;
|
|
3244
|
-
sides: SunburstSide[];
|
|
3245
|
-
}
|
|
3246
|
-
|
|
3247
|
-
export declare interface SunburstSide {
|
|
3248
|
-
sideNumber: number;
|
|
3249
|
-
drawPosition: number;
|
|
3250
|
-
participantName?: string;
|
|
3251
|
-
nationalityCode?: string;
|
|
3252
|
-
seedNumber?: number;
|
|
3253
|
-
entryStatus?: string;
|
|
3254
|
-
}
|
|
3255
|
-
|
|
3256
|
-
export declare interface TeamVsOptions {
|
|
3257
|
-
side1Name: string;
|
|
3258
|
-
side2Name: string;
|
|
3259
|
-
sets?: any[];
|
|
3260
|
-
winningSide?: number;
|
|
3261
|
-
side1Id?: string;
|
|
3262
|
-
side2Id?: string;
|
|
3263
|
-
}
|
|
3264
|
-
|
|
3265
|
-
export declare interface TemporalAdapter {
|
|
3266
|
-
isDateAvailable: (date: string) => {
|
|
3267
|
-
ok: boolean;
|
|
3268
|
-
reason?: string;
|
|
3269
|
-
};
|
|
3270
|
-
getDayCapacityMinutes?: (date: string) => number;
|
|
3271
|
-
}
|
|
3272
|
-
|
|
3273
|
-
export declare class TemporalGrid {
|
|
3274
|
-
private engine;
|
|
3275
|
-
private control;
|
|
3276
|
-
private config;
|
|
3277
|
-
private rootElement;
|
|
3278
|
-
private venueTreeElement;
|
|
3279
|
-
private calendarElement;
|
|
3280
|
-
private capacityElement;
|
|
3281
|
-
private statsBarInstance;
|
|
3282
|
-
private viewToolbarResult;
|
|
3283
|
-
private datepicker;
|
|
3284
|
-
private visibleCourts;
|
|
3285
|
-
private initialSnapshot;
|
|
3286
|
-
private isDirty;
|
|
3287
|
-
constructor(config: TemporalGridConfig);
|
|
3288
|
-
/**
|
|
3289
|
-
* Render the component into a container
|
|
3290
|
-
*/
|
|
3291
|
-
render(container: HTMLElement): void;
|
|
3292
|
-
/**
|
|
3293
|
-
* Destroy the component and cleanup
|
|
3294
|
-
*/
|
|
3295
|
-
destroy(): void;
|
|
3296
|
-
private createRootElement;
|
|
3297
|
-
private renderToolbar;
|
|
3298
|
-
/**
|
|
3299
|
-
* Initialize the datepicker on the toolbar date input.
|
|
3300
|
-
* Must be called after the toolbar element is in the DOM.
|
|
3301
|
-
*/
|
|
3302
|
-
private initDatepicker;
|
|
3303
|
-
private handleDateChange;
|
|
3304
|
-
private renderCapacityIndicator;
|
|
3305
|
-
private renderVenueTree;
|
|
3306
|
-
private renderCalendar;
|
|
3307
|
-
/** Serialize current engine state (blocks + availability) for comparison */
|
|
3308
|
-
private takeSnapshot;
|
|
3309
|
-
/** Compare current state to initial snapshot and update dirty flag */
|
|
3310
|
-
private checkDirtyState;
|
|
3311
|
-
/** Reset the snapshot (call after a successful save) */
|
|
3312
|
-
resetDirtyState(): void;
|
|
3313
|
-
private updateStatsBar;
|
|
3314
|
-
private updateCapacityStats;
|
|
3315
|
-
private updateVenueTree;
|
|
3316
|
-
private handleEngineEvent;
|
|
3317
|
-
private handleBlockSelected;
|
|
3318
|
-
private handleCourtSelected;
|
|
3319
|
-
private handleTimeRangeSelected;
|
|
3320
|
-
private handleCourtCheckboxChange;
|
|
3321
|
-
private handleVenueCheckboxChange;
|
|
3322
|
-
private updateVenueCheckboxState;
|
|
3323
|
-
/**
|
|
3324
|
-
* Get the engine instance
|
|
3325
|
-
*/
|
|
3326
|
-
getEngine(): TemporalEngine;
|
|
3327
|
-
/**
|
|
3328
|
-
* Get the controller instance
|
|
3329
|
-
*/
|
|
3330
|
-
getControl(): TemporalGridControl | null;
|
|
3331
|
-
/**
|
|
3332
|
-
* Set the selected day
|
|
3333
|
-
*/
|
|
3334
|
-
setDay(day: DayId_2): void;
|
|
3335
|
-
/**
|
|
3336
|
-
* Refresh the display
|
|
3337
|
-
*/
|
|
3338
|
-
refresh(): void;
|
|
3339
|
-
}
|
|
3340
|
-
|
|
3341
|
-
declare interface TemporalGridCallbacks {
|
|
3342
|
-
/**
|
|
3343
|
-
* Called when dirty state changes (blocks/availability modified vs initial)
|
|
3344
|
-
*/
|
|
3345
|
-
onDirtyChange?: (isDirty: boolean) => void;
|
|
3346
|
-
}
|
|
3347
|
-
|
|
3348
|
-
export declare interface TemporalGridConfig extends Partial<TemporalGridControlConfig>, TemporalGridCallbacks {
|
|
3349
|
-
/**
|
|
3350
|
-
* Tournament record (TODS format)
|
|
3351
|
-
*/
|
|
3352
|
-
tournamentRecord: any;
|
|
3353
|
-
/**
|
|
3354
|
-
* Engine configuration overrides
|
|
3355
|
-
*/
|
|
3356
|
-
engineConfig?: {
|
|
3357
|
-
dayStartTime?: string;
|
|
3358
|
-
dayEndTime?: string;
|
|
3359
|
-
slotMinutes?: number;
|
|
3360
|
-
};
|
|
3361
|
-
/**
|
|
3362
|
-
* Initial selected day
|
|
3363
|
-
*/
|
|
3364
|
-
initialDay?: DayId_2;
|
|
3365
|
-
/**
|
|
3366
|
-
* Show facility tree
|
|
3367
|
-
*/
|
|
3368
|
-
showVenueTree?: boolean;
|
|
3369
|
-
/**
|
|
3370
|
-
* Show capacity indicator
|
|
3371
|
-
*/
|
|
3372
|
-
showCapacity?: boolean;
|
|
3373
|
-
/**
|
|
3374
|
-
* Show toolbar
|
|
3375
|
-
*/
|
|
3376
|
-
showToolbar?: boolean;
|
|
3377
|
-
/**
|
|
3378
|
-
* i18n labels
|
|
3379
|
-
*/
|
|
3380
|
-
labels?: TemporalGridLabels;
|
|
3381
|
-
/**
|
|
3382
|
-
* Language code for datepicker localization (e.g. 'en', 'fr', 'de')
|
|
3383
|
-
*/
|
|
3384
|
-
language?: string;
|
|
3385
|
-
/**
|
|
3386
|
-
* Callback when "Set Default Availability" is clicked
|
|
3387
|
-
*/
|
|
3388
|
-
onSetDefaultAvailability?: () => void;
|
|
3389
|
-
/**
|
|
3390
|
-
* Callback when "Save to Tournament" is clicked
|
|
3391
|
-
*/
|
|
3392
|
-
onSave?: () => void;
|
|
3393
|
-
/**
|
|
3394
|
-
* Callback when mutations are applied
|
|
3395
|
-
*/
|
|
3396
|
-
onMutationsApplied?: (mutations: any[]) => void;
|
|
3397
|
-
}
|
|
3398
|
-
|
|
3399
|
-
declare class TemporalGridControl {
|
|
3400
|
-
private readonly engine;
|
|
3401
|
-
private timeline;
|
|
3402
|
-
private readonly config;
|
|
3403
|
-
private unsubscribe;
|
|
3404
|
-
private currentItems;
|
|
3405
|
-
private isRendering;
|
|
3406
|
-
private popoverManager;
|
|
3407
|
-
private viewState;
|
|
3408
|
-
private currentDay;
|
|
3409
|
-
private currentView;
|
|
3410
|
-
private selectedCourts;
|
|
3411
|
-
private visibleCourts;
|
|
3412
|
-
constructor(engine: TemporalEngine, config: TemporalGridControlConfig);
|
|
3413
|
-
private initialize;
|
|
3414
|
-
/**
|
|
3415
|
-
* Ensure timeline exists. Defers creation to the next macro-task so the
|
|
3416
|
-
* container has layout dimensions (matches the working story pattern).
|
|
3417
|
-
*/
|
|
3418
|
-
private ensureTimeline;
|
|
3419
|
-
/**
|
|
3420
|
-
* Build the current view data from the engine.
|
|
3421
|
-
*/
|
|
3422
|
-
/**
|
|
3423
|
-
* Get the list of days visible in the current view.
|
|
3424
|
-
*/
|
|
3425
|
-
getViewDays(): string[];
|
|
3426
|
-
private buildViewData;
|
|
3427
|
-
/**
|
|
3428
|
-
* Create the timeline with initial data already populated.
|
|
3429
|
-
*/
|
|
3430
|
-
private createTimelineWithData;
|
|
3431
|
-
/** Set the selected day (public API) */
|
|
3432
|
-
setDay(day: DayId): void;
|
|
3433
|
-
/** Get current selected day */
|
|
3434
|
-
getDay(): DayId | null;
|
|
3435
|
-
/** Set view mode */
|
|
3436
|
-
setView(view: string): void;
|
|
3437
|
-
/** Set a named view preset (day/days3/week/all) */
|
|
3438
|
-
setViewPreset(viewKey: string): void;
|
|
3439
|
-
/** Select courts for multi-court operations */
|
|
3440
|
-
setSelectedCourts(courts: CourtRef[]): void;
|
|
3441
|
-
/** Get selected courts */
|
|
3442
|
-
getSelectedCourts(): CourtRef[];
|
|
3443
|
-
/** Set which courts are visible in the timeline */
|
|
3444
|
-
setVisibleCourts(courts: Set<string> | null): void;
|
|
3445
|
-
/** Set layer visibility */
|
|
3446
|
-
setLayerVisibility(layerId: BlockType, visible: boolean): void;
|
|
3447
|
-
/** Refresh the calendar display */
|
|
3448
|
-
refresh(): void;
|
|
3449
|
-
/** Destroy the controller and cleanup */
|
|
3450
|
-
destroy(): void;
|
|
3451
|
-
private updateTimelineWindow;
|
|
3452
|
-
private render;
|
|
3453
|
-
/**
|
|
3454
|
-
* onMove: Called when user finishes dragging or resizing an item.
|
|
3455
|
-
* Returns true to accept, false to reject.
|
|
3456
|
-
*/
|
|
3457
|
-
private handleOnMove;
|
|
3458
|
-
/**
|
|
3459
|
-
* onMoving: Live validation during drag (optional visual feedback).
|
|
3460
|
-
* Destroys active popover, clamps to court availability.
|
|
3461
|
-
* Returns clamped start/end, or null to reject.
|
|
3462
|
-
*/
|
|
3463
|
-
private handleOnMoving;
|
|
3464
|
-
/**
|
|
3465
|
-
* Timeline click handler: Routes to popover based on item type.
|
|
3466
|
-
* Handles ghost confirmation (multi-row create) and block click → popover.
|
|
3467
|
-
*/
|
|
3468
|
-
private handleTimelineClick;
|
|
3469
|
-
/**
|
|
3470
|
-
* Multi-row ghost creation handler.
|
|
3471
|
-
* Called when user confirms a ghost spanning one or more court rows.
|
|
3472
|
-
* Creates one block per court via engine.applyBlock.
|
|
3473
|
-
*/
|
|
3474
|
-
private handleMultiRowCreate;
|
|
3475
|
-
/** Get the popover manager (for external access) */
|
|
3476
|
-
getPopoverManager(): BlockPopoverManager;
|
|
3477
|
-
private handleEngineEvent;
|
|
3478
|
-
/** Snap a date to the nearest N-minute increment */
|
|
3479
|
-
private snapToMinutes;
|
|
3480
|
-
/**
|
|
3481
|
-
* Format a Date as a local-time ISO string (no timezone offset).
|
|
3482
|
-
* Engine stores times as wall-clock strings like "2026-06-15T09:00:00".
|
|
3483
|
-
* toISOString() converts to UTC which shifts the time by the local offset.
|
|
3484
|
-
*/
|
|
3485
|
-
private toLocalISO;
|
|
3486
|
-
/** Show conflict dialog */
|
|
3487
|
-
private showConflictDialog;
|
|
3488
|
-
/** Get timeline instance (for advanced usage) */
|
|
3489
|
-
getTimeline(): CourtTimeline | null;
|
|
3490
|
-
/** Get engine instance */
|
|
3491
|
-
getEngine(): TemporalEngine;
|
|
3492
|
-
/** Get view state (for external consumers to subscribe to view changes) */
|
|
3493
|
-
getViewState(): TemporalViewState;
|
|
3494
|
-
}
|
|
3495
|
-
|
|
3496
|
-
declare interface TemporalGridControlConfig {
|
|
3497
|
-
/** Container element for the timeline */
|
|
3498
|
-
container: HTMLElement;
|
|
3499
|
-
/** Initial selected day */
|
|
3500
|
-
initialDay?: DayId;
|
|
3501
|
-
/** Initial view mode */
|
|
3502
|
-
initialView?: 'day' | 'week';
|
|
3503
|
-
/** Resource grouping mode */
|
|
3504
|
-
groupingMode?: ResourceGroupingMode;
|
|
3505
|
-
/** Whether to show conflict indicators */
|
|
3506
|
-
showConflicts?: boolean;
|
|
3507
|
-
/** Whether segments should have labels */
|
|
3508
|
-
showSegmentLabels?: boolean;
|
|
3509
|
-
/** Custom color scheme */
|
|
3510
|
-
colorScheme?: typeof DEFAULT_COLOR_SCHEME;
|
|
3511
|
-
/** Callback when a block is selected */
|
|
3512
|
-
onBlockSelected?: (blockId: string) => void;
|
|
3513
|
-
/** Callback when a court is selected */
|
|
3514
|
-
onCourtSelected?: (court: CourtRef) => void;
|
|
3515
|
-
/** Callback when time range is selected */
|
|
3516
|
-
onTimeRangeSelected?: (params: {
|
|
3517
|
-
courts: CourtRef[];
|
|
3518
|
-
start: string;
|
|
3519
|
-
end: string;
|
|
3520
|
-
}) => void;
|
|
3521
|
-
/** Callback when engine blocks change (for stats bar, external consumers) */
|
|
3522
|
-
onBlocksChanged?: () => void;
|
|
3523
|
-
/** Callback when a day label is double-clicked (for navigating to 1-Day view) */
|
|
3524
|
-
onDayNavigate?: (day: string) => void;
|
|
3525
|
-
}
|
|
3526
|
-
|
|
3527
|
-
/**
|
|
3528
|
-
* i18n labels for the temporal grid component.
|
|
3529
|
-
* All fields are optional — English defaults are used when omitted.
|
|
3530
|
-
*/
|
|
3531
|
-
export declare interface TemporalGridLabels {
|
|
3532
|
-
view?: string;
|
|
3533
|
-
day1?: string;
|
|
3534
|
-
days3?: string;
|
|
3535
|
-
week?: string;
|
|
3536
|
-
tournament?: string;
|
|
3537
|
-
courtAvailability?: string;
|
|
3538
|
-
totalHours?: string;
|
|
3539
|
-
blocked?: string;
|
|
3540
|
-
available?: string;
|
|
3541
|
-
avgPerCourt?: string;
|
|
3542
|
-
setDefaultAvailability?: string;
|
|
3543
|
-
saveToTournament?: string;
|
|
3544
|
-
}
|
|
3545
|
-
|
|
3546
|
-
declare class TemporalViewState {
|
|
3547
|
-
private selectedDay;
|
|
3548
|
-
private selectedVenue;
|
|
3549
|
-
private selectedCourt;
|
|
3550
|
-
private readonly layerVisibility;
|
|
3551
|
-
private readonly listeners;
|
|
3552
|
-
setSelectedDay(day: DayId_3): void;
|
|
3553
|
-
getSelectedDay(): DayId_3 | null;
|
|
3554
|
-
setSelectedVenue(venueId: string | null): void;
|
|
3555
|
-
getSelectedVenue(): string | null;
|
|
3556
|
-
setSelectedCourt(courtId: string | null): void;
|
|
3557
|
-
getSelectedCourt(): string | null;
|
|
3558
|
-
setLayerVisibility(layerId: BlockType_2, visible: boolean): void;
|
|
3559
|
-
getLayerVisibility(): Map<BlockType_2, boolean>;
|
|
3560
|
-
isLayerVisible(layerId: BlockType_2): boolean;
|
|
3561
|
-
getSnapshot(): ViewStateSnapshot;
|
|
3562
|
-
subscribe(listener: ViewChangeListener): () => void;
|
|
3563
|
-
private emit;
|
|
3564
|
-
}
|
|
3565
|
-
|
|
3566
|
-
export declare function tennisCourt(className: string): SVGSVGElement;
|
|
3567
|
-
|
|
3568
|
-
declare interface TimelineGroupData {
|
|
3569
|
-
id: string;
|
|
3570
|
-
content: string;
|
|
3571
|
-
order?: number;
|
|
3572
|
-
courtRef?: CourtRef_2;
|
|
3573
|
-
surface?: string;
|
|
3574
|
-
indoor?: boolean;
|
|
3575
|
-
hasLights?: boolean;
|
|
3576
|
-
tags?: string[];
|
|
3577
|
-
}
|
|
3578
|
-
|
|
3579
|
-
declare interface TimelineItemData {
|
|
3580
|
-
id: string;
|
|
3581
|
-
group: string;
|
|
3582
|
-
content: string;
|
|
3583
|
-
start: Date | string;
|
|
3584
|
-
end?: Date | string;
|
|
3585
|
-
type?: 'range' | 'background';
|
|
3586
|
-
className?: string;
|
|
3587
|
-
style?: string;
|
|
3588
|
-
title?: string;
|
|
3589
|
-
editable?: boolean | {
|
|
3590
|
-
updateTime?: boolean;
|
|
3591
|
-
updateGroup?: boolean;
|
|
3592
|
-
remove?: boolean;
|
|
3593
|
-
};
|
|
3594
|
-
blockId?: string;
|
|
3595
|
-
status?: string;
|
|
3596
|
-
reason?: string;
|
|
3597
|
-
isBlock?: boolean;
|
|
3598
|
-
isSegment?: boolean;
|
|
3599
|
-
isConflict?: boolean;
|
|
3600
|
-
}
|
|
3601
|
-
|
|
3602
|
-
declare interface TimelineOptions {
|
|
3603
|
-
/** Visible window start */
|
|
3604
|
-
start?: Date;
|
|
3605
|
-
/** Visible window end */
|
|
3606
|
-
end?: Date;
|
|
3607
|
-
/** Minimum allowed date (pan limit) */
|
|
3608
|
-
min?: Date;
|
|
3609
|
-
/** Maximum allowed date (pan limit) */
|
|
3610
|
-
max?: Date;
|
|
3611
|
-
/** Minimum visible duration in ms (zoom limit) */
|
|
3612
|
-
zoomMin?: number;
|
|
3613
|
-
/** Maximum visible duration in ms (zoom limit) */
|
|
3614
|
-
zoomMax?: number;
|
|
3615
|
-
/** Snap function: given a Date, return snapped Date */
|
|
3616
|
-
snap?: (date: Date) => Date;
|
|
3617
|
-
/** Row height in pixels (default 40) */
|
|
3618
|
-
rowHeight?: number;
|
|
3619
|
-
/** Time axis formatting */
|
|
3620
|
-
timeAxis?: {
|
|
3621
|
-
scale: string;
|
|
3622
|
-
step: number;
|
|
3623
|
-
};
|
|
3624
|
-
/** Whether to show tooltips on hover */
|
|
3625
|
-
showTooltips?: boolean;
|
|
3626
|
-
/** Enable pinch-to-zoom (ctrl+wheel). Default false. */
|
|
3627
|
-
enablePinchZoom?: boolean;
|
|
3628
|
-
/** Height of the container (CSS value) */
|
|
3629
|
-
height?: string;
|
|
3630
|
-
}
|
|
3631
|
-
|
|
3632
|
-
export declare function tipster(params: TipsterParams): Instance | undefined;
|
|
3633
|
-
|
|
3634
|
-
declare type TipsterParams = {
|
|
3635
|
-
title?: string;
|
|
3636
|
-
options?: any[];
|
|
3637
|
-
menuItems?: any[];
|
|
3638
|
-
coords?: any;
|
|
3639
|
-
callback?: (result: any) => void;
|
|
3640
|
-
config?: any;
|
|
3641
|
-
target?: HTMLElement;
|
|
3642
|
-
items?: any[];
|
|
3643
|
-
};
|
|
3644
|
-
|
|
3645
|
-
export declare const toggleOverlay: ({ target }: {
|
|
3646
|
-
target: HTMLElement;
|
|
3647
|
-
}) => (rows?: any[]) => void;
|
|
3648
|
-
|
|
3649
|
-
declare interface ToolbarCallbacks {
|
|
3650
|
-
onAddStructure: (stage: string, structureType?: string) => void;
|
|
3651
|
-
onLoadTemplate: (template: TopologyTemplate) => void;
|
|
3652
|
-
onAutoLayout: () => void;
|
|
3653
|
-
onGenerate: () => void;
|
|
3654
|
-
onSaveTemplate?: () => void;
|
|
3655
|
-
onClear?: () => void;
|
|
3656
|
-
}
|
|
3657
|
-
|
|
3658
|
-
declare interface ToolbarOptions {
|
|
3659
|
-
hideTemplates?: boolean;
|
|
3660
|
-
hideGenerate?: boolean;
|
|
3661
|
-
readOnly?: boolean;
|
|
3662
|
-
}
|
|
3663
|
-
|
|
3664
|
-
export declare interface TopologyBuilderConfig {
|
|
3665
|
-
initialState?: Partial<TopologyState>;
|
|
3666
|
-
onGenerate?: (state: TopologyState) => void;
|
|
3667
|
-
onDoubleClickNode?: (node: TopologyNode, state: TopologyState) => void;
|
|
3668
|
-
onSaveTemplate?: (state: TopologyState) => void;
|
|
3669
|
-
onClear?: () => void;
|
|
3670
|
-
templates?: TopologyTemplate[];
|
|
3671
|
-
hideTemplates?: boolean;
|
|
3672
|
-
hideGenerate?: boolean;
|
|
3673
|
-
hideDelete?: boolean;
|
|
3674
|
-
readOnly?: boolean;
|
|
3675
|
-
}
|
|
3676
|
-
|
|
3677
|
-
export declare class TopologyBuilderControl {
|
|
3678
|
-
private readonly store;
|
|
3679
|
-
private readonly layout;
|
|
3680
|
-
private readonly unsubscribe;
|
|
3681
|
-
private readonly config;
|
|
3682
|
-
constructor(config?: TopologyBuilderConfig);
|
|
3683
|
-
private buildToolbarPanel;
|
|
3684
|
-
private buildCanvasPanel;
|
|
3685
|
-
private handleCreateEdge;
|
|
3686
|
-
render(container: HTMLElement): void;
|
|
3687
|
-
destroy(): void;
|
|
3688
|
-
autoLayout(): void;
|
|
3689
|
-
getState(): TopologyState;
|
|
3690
|
-
loadState(state: TopologyState): void;
|
|
3691
|
-
private addDefaultStructure;
|
|
3692
|
-
private scrollCanvasToNode;
|
|
3693
|
-
private handleGenerate;
|
|
3694
|
-
}
|
|
3695
|
-
|
|
3696
|
-
export declare type TopologyChangeListener = (state: TopologyState) => void;
|
|
3697
|
-
|
|
3698
|
-
export declare interface TopologyEdge {
|
|
3699
|
-
id: string;
|
|
3700
|
-
sourceNodeId: string;
|
|
3701
|
-
targetNodeId: string;
|
|
3702
|
-
linkType: 'WINNER' | 'LOSER' | 'POSITION';
|
|
3703
|
-
sourceRoundNumber?: number;
|
|
3704
|
-
targetRoundNumber?: number;
|
|
3705
|
-
feedProfile?: string;
|
|
3706
|
-
finishingPositions?: number[];
|
|
3707
|
-
qualifyingPositions?: number;
|
|
3708
|
-
label?: string;
|
|
3709
|
-
}
|
|
3710
|
-
|
|
3711
|
-
export declare interface TopologyNode {
|
|
3712
|
-
id: string;
|
|
3713
|
-
structureName: string;
|
|
3714
|
-
stage: 'MAIN' | 'QUALIFYING' | 'CONSOLATION' | 'PLAY_OFF';
|
|
3715
|
-
structureType: string;
|
|
3716
|
-
drawSize: number;
|
|
3717
|
-
qualifyingPositions?: number;
|
|
3718
|
-
matchUpFormat?: string;
|
|
3719
|
-
structureOptions?: any;
|
|
3720
|
-
position: {
|
|
3721
|
-
x: number;
|
|
3722
|
-
y: number;
|
|
3723
|
-
};
|
|
3724
|
-
matchUps?: SchematicMatchUp[];
|
|
3725
|
-
}
|
|
3726
|
-
|
|
3727
|
-
export declare interface TopologyState {
|
|
3728
|
-
nodes: TopologyNode[];
|
|
3729
|
-
edges: TopologyEdge[];
|
|
3730
|
-
selectedNodeId: string | null;
|
|
3731
|
-
selectedEdgeId: string | null;
|
|
3732
|
-
drawName: string;
|
|
3733
|
-
templateName?: string;
|
|
3734
|
-
}
|
|
3735
|
-
|
|
3736
|
-
export declare class TopologyStore {
|
|
3737
|
-
private state;
|
|
3738
|
-
private listeners;
|
|
3739
|
-
constructor(initialState?: Partial<TopologyState>);
|
|
3740
|
-
getState(): TopologyState;
|
|
3741
|
-
subscribe(listener: TopologyChangeListener): () => void;
|
|
3742
|
-
private notify;
|
|
3743
|
-
setDrawName(name: string): void;
|
|
3744
|
-
addNode(partial: Omit<TopologyNode, 'id' | 'position'>): TopologyNode;
|
|
3745
|
-
updateNode(nodeId: string, updates: Partial<Omit<TopologyNode, 'id'>>): void;
|
|
3746
|
-
removeNode(nodeId: string): void;
|
|
3747
|
-
addEdge(partial: Omit<TopologyEdge, 'id' | 'label'>): TopologyEdge | null;
|
|
3748
|
-
updateEdge(edgeId: string, updates: Partial<Omit<TopologyEdge, 'id'>>): void;
|
|
3749
|
-
removeEdge(edgeId: string): void;
|
|
3750
|
-
selectNode(nodeId: string | null): void;
|
|
3751
|
-
selectEdge(edgeId: string | null): void;
|
|
3752
|
-
/**
|
|
3753
|
-
* If the given node is a consolation structure, clamp its drawSize so it
|
|
3754
|
-
* does not exceed the total capacity of inbound links.
|
|
3755
|
-
*/
|
|
3756
|
-
private clampConsolationDrawSize;
|
|
3757
|
-
/** Sum of losers that all inbound edges can deliver to a node. */
|
|
3758
|
-
private inboundCapacity;
|
|
3759
|
-
/** Find a non-overlapping position for a newly added node. */
|
|
3760
|
-
private nextNodePosition;
|
|
3761
|
-
autoLayout(): void;
|
|
3762
|
-
loadState(newState: TopologyState): void;
|
|
3763
|
-
private computeEdgeLabel;
|
|
3764
|
-
}
|
|
3765
|
-
|
|
3766
|
-
export declare interface TopologyTemplate {
|
|
3767
|
-
name: string;
|
|
3768
|
-
description?: string;
|
|
3769
|
-
state: Omit<TopologyState, 'selectedNodeId' | 'selectedEdgeId'>;
|
|
3770
|
-
}
|
|
3771
|
-
|
|
3772
|
-
export declare function topologyToDrawOptions(state: TopologyState): DrawOptionsResult;
|
|
3773
|
-
|
|
3774
|
-
export declare interface UIPanel<T = unknown> {
|
|
3775
|
-
element: HTMLElement;
|
|
3776
|
-
update: (state: T) => void;
|
|
3777
|
-
destroy?: () => void;
|
|
3778
|
-
}
|
|
3779
|
-
|
|
3780
|
-
declare interface UIPanel_2<T = unknown> {
|
|
3781
|
-
element: HTMLElement;
|
|
3782
|
-
update: (state: T) => void;
|
|
3783
|
-
destroy?: () => void;
|
|
3784
|
-
}
|
|
3785
|
-
|
|
3786
|
-
declare interface UIPanel_3<T = unknown> {
|
|
3787
|
-
element: HTMLElement;
|
|
3788
|
-
update: (state: T) => void;
|
|
3789
|
-
destroy?: () => void;
|
|
3790
|
-
}
|
|
3791
|
-
|
|
3792
|
-
declare interface UIPanel_4<S> {
|
|
3793
|
-
element: HTMLElement;
|
|
3794
|
-
update(state: S): void;
|
|
3795
|
-
}
|
|
3796
|
-
|
|
3797
|
-
export declare function updateHeadingSelect(toolbar: HTMLElement, level: number | false): void;
|
|
3798
|
-
|
|
3799
|
-
/**
|
|
3800
|
-
* Update the aggregate tie score in-place (avoids full re-render).
|
|
3801
|
-
*/
|
|
3802
|
-
export declare function updateTieScore(result: any, side1Id?: string, side2Id?: string, swapSides?: boolean): void;
|
|
3803
|
-
|
|
3804
|
-
export declare function updateToolbarState(toolbar: HTMLElement, activeMap: Record<string, boolean>): void;
|
|
3805
|
-
|
|
3806
|
-
export declare function validateProfile({ profile, temporal, dependencies, venueOrder }: ValidateProfileParams): ValidationResult[];
|
|
3807
|
-
|
|
3808
|
-
declare interface ValidateProfileParams {
|
|
3809
|
-
profile: SchedulingProfile;
|
|
3810
|
-
temporal?: TemporalAdapter;
|
|
3811
|
-
dependencies?: DependencyAdapter;
|
|
3812
|
-
venueOrder?: string[];
|
|
3813
|
-
}
|
|
3814
|
-
|
|
3815
|
-
export declare function validateSchedulingPolicy(data: SchedulingPolicyData): SchedulingValidationResult[];
|
|
3816
|
-
|
|
3817
|
-
export declare function validateTopology(state: TopologyState): ValidationError[];
|
|
3818
|
-
|
|
3819
|
-
export declare type ValidationCode = 'DATE_UNAVAILABLE' | 'DUPLICATE_ROUND' | 'DUPLICATE_SEGMENT' | 'INVALID_SEGMENT_CONFIG' | 'ROUND_ORDER_VIOLATION' | 'DEPENDENCY_VIOLATION' | 'DAY_OVERLOAD' | 'DROP_REJECTED';
|
|
3820
|
-
|
|
3821
|
-
export declare interface ValidationError {
|
|
3822
|
-
severity: 'error' | 'warning';
|
|
3823
|
-
message: string;
|
|
3824
|
-
nodeId?: string;
|
|
3825
|
-
edgeId?: string;
|
|
3826
|
-
}
|
|
3827
|
-
|
|
3828
|
-
export declare interface ValidationResult {
|
|
3829
|
-
code: ValidationCode;
|
|
3830
|
-
severity: Severity;
|
|
3831
|
-
message: string;
|
|
3832
|
-
context: {
|
|
3833
|
-
date?: string;
|
|
3834
|
-
venueId?: string;
|
|
3835
|
-
scope?: string;
|
|
3836
|
-
drawId?: string;
|
|
3837
|
-
structureId?: string;
|
|
3838
|
-
locator?: RoundLocator;
|
|
3839
|
-
prerequisite?: RoundLocator;
|
|
3840
|
-
demandMinutes?: number;
|
|
3841
|
-
capacityMinutes?: number;
|
|
3842
|
-
ratio?: number;
|
|
3843
|
-
reason?: string;
|
|
3844
|
-
};
|
|
3845
|
-
fixActions?: FixAction[];
|
|
3846
|
-
}
|
|
3847
|
-
|
|
3848
|
-
/**
|
|
3849
|
-
* Validate input field and update UI with success/error styling.
|
|
3850
|
-
*
|
|
3851
|
-
* OVERVIEW:
|
|
3852
|
-
* Runs a validation function on input value and updates the input field and help text
|
|
3853
|
-
* with appropriate styling (success=green, error=red) and error messages. Used by
|
|
3854
|
-
* renderField to provide real-time validation feedback.
|
|
3855
|
-
*
|
|
3856
|
-
* PARAMETERS:
|
|
3857
|
-
* @param item - Field configuration object containing error message
|
|
3858
|
-
* @param e - Event object with target.value containing input value
|
|
3859
|
-
* @param input - Input element to add success/error classes to
|
|
3860
|
-
* @param help - Help text element to display error message
|
|
3861
|
-
* @param fx - Validation function that returns true if valid, false if invalid
|
|
3862
|
-
*
|
|
3863
|
-
* ============================================================================
|
|
3864
|
-
* BEHAVIOR
|
|
3865
|
-
* ============================================================================
|
|
3866
|
-
*
|
|
3867
|
-
* VALIDATION FLOW:
|
|
3868
|
-
* 1. Extract value from e.target.value
|
|
3869
|
-
* 2. Call validation function fx(value)
|
|
3870
|
-
* 3. If invalid (fx returns false):
|
|
3871
|
-
* - Set help text to item.error or 'Invalid'
|
|
3872
|
-
* - Remove 'is-success' class from input
|
|
3873
|
-
* - Add 'is-danger' class to input (red border)
|
|
3874
|
-
* - Add 'is-danger' class to help (red text)
|
|
3875
|
-
* 4. If valid (fx returns true):
|
|
3876
|
-
* - Clear help text
|
|
3877
|
-
* - Remove 'is-danger' classes
|
|
3878
|
-
* - Add 'is-success' class to input (green border)
|
|
3879
|
-
*
|
|
3880
|
-
* VISUAL FEEDBACK:
|
|
3881
|
-
* - Invalid: Red border on input + red error message below
|
|
3882
|
-
* - Valid: Green border on input + no message
|
|
3883
|
-
* - Neutral: No border color + no message (before first input)
|
|
3884
|
-
*
|
|
3885
|
-
* ============================================================================
|
|
3886
|
-
* VALIDATION FUNCTIONS
|
|
3887
|
-
* ============================================================================
|
|
3888
|
-
*
|
|
3889
|
-
* Validation functions should:
|
|
3890
|
-
* - Accept a string value parameter
|
|
3891
|
-
* - Return true if valid, false if invalid
|
|
3892
|
-
* - Be synchronous (no async validation)
|
|
3893
|
-
*
|
|
3894
|
-
* COMMON VALIDATORS:
|
|
3895
|
-
* - nameValidator(minLength) - checks minimum character length
|
|
3896
|
-
* - emailValidator() - validates email format
|
|
3897
|
-
* - passwordValidator() - checks password requirements
|
|
3898
|
-
* - numericRange(min, max) - validates number is in range
|
|
3899
|
-
* - Custom: (value) => value.length > 0 && value.includes('@')
|
|
3900
|
-
*
|
|
3901
|
-
* ============================================================================
|
|
3902
|
-
* USAGE NOTES
|
|
3903
|
-
* ============================================================================
|
|
3904
|
-
*
|
|
3905
|
-
* TYPICAL USAGE:
|
|
3906
|
-
* - Called automatically by renderField when validator property is set
|
|
3907
|
-
* - Attached to 'input' event for real-time validation
|
|
3908
|
-
* - Rarely called directly - use via renderField configuration
|
|
3909
|
-
*
|
|
3910
|
-
* ERROR MESSAGES:
|
|
3911
|
-
* - Set via item.error property in field configuration
|
|
3912
|
-
* - Default message is 'Invalid' if item.error not provided
|
|
3913
|
-
* - Should be clear and actionable (e.g., "Minimum 5 characters")
|
|
3914
|
-
*
|
|
3915
|
-
* STYLING:
|
|
3916
|
-
* - Uses CSS classes: is-success, is-danger
|
|
3917
|
-
* - Input field gets colored border
|
|
3918
|
-
* - Help text appears below input with matching color
|
|
3919
|
-
*
|
|
3920
|
-
* ============================================================================
|
|
3921
|
-
* EXAMPLE USAGE
|
|
3922
|
-
* ============================================================================
|
|
3923
|
-
*
|
|
3924
|
-
* @example
|
|
3925
|
-
* // Automatic usage via renderField
|
|
3926
|
-
* const field = renderField({
|
|
3927
|
-
* label: 'Username',
|
|
3928
|
-
* field: 'username',
|
|
3929
|
-
* validator: (value) => value.length >= 5,
|
|
3930
|
-
* error: 'Username must be at least 5 characters'
|
|
3931
|
-
* });
|
|
3932
|
-
* // validator() is called automatically on input event
|
|
3933
|
-
*
|
|
3934
|
-
* @example
|
|
3935
|
-
* // Direct usage (rare)
|
|
3936
|
-
* const input = document.getElementById('email');
|
|
3937
|
-
* const help = document.getElementById('email-help');
|
|
3938
|
-
* const item = { error: 'Invalid email format' };
|
|
3939
|
-
* const emailValidator = (value) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
|
|
3940
|
-
*
|
|
3941
|
-
* input.addEventListener('input', (e) => {
|
|
3942
|
-
* validator(item, e, input, help, emailValidator);
|
|
3943
|
-
* });
|
|
3944
|
-
*
|
|
3945
|
-
* @example
|
|
3946
|
-
* // Custom validator with multiple conditions
|
|
3947
|
-
* const passwordValidator = (value) => {
|
|
3948
|
-
* return value.length >= 8 &&
|
|
3949
|
-
* /[A-Z]/.test(value) &&
|
|
3950
|
-
* /[0-9]/.test(value);
|
|
3951
|
-
* };
|
|
3952
|
-
* const field = renderField({
|
|
3953
|
-
* label: 'Password',
|
|
3954
|
-
* field: 'password',
|
|
3955
|
-
* type: 'password',
|
|
3956
|
-
* validator: passwordValidator,
|
|
3957
|
-
* error: 'Password must be 8+ chars with uppercase and number'
|
|
3958
|
-
* });
|
|
3959
|
-
*/
|
|
3960
|
-
export declare function validator(item: any, e: any, input: HTMLElement, help: HTMLElement, fx?: (value: string) => boolean): void;
|
|
3961
|
-
|
|
3962
|
-
export declare namespace validators {
|
|
3963
|
-
export {
|
|
3964
|
-
nameValidator,
|
|
3965
|
-
numericValidator,
|
|
3966
|
-
numericRange,
|
|
3967
|
-
passwordValidator,
|
|
3968
|
-
dateValidator,
|
|
3969
|
-
wordValidator,
|
|
3970
|
-
emailValidator
|
|
3971
|
-
}
|
|
3972
|
-
}
|
|
3973
|
-
|
|
3974
|
-
declare interface VenueBoardCallbacks {
|
|
3975
|
-
onDrop: (drag: DragPayload, drop: DropTarget) => void;
|
|
3976
|
-
onCardClick: (locator: RoundLocator) => void;
|
|
3977
|
-
onCardContextMenu?: (locator: RoundLocator, target: HTMLElement) => void;
|
|
3978
|
-
}
|
|
3979
|
-
|
|
3980
|
-
export declare interface VenueInfo {
|
|
3981
|
-
venueId: string;
|
|
3982
|
-
name: string;
|
|
3983
|
-
}
|
|
3984
|
-
|
|
3985
|
-
export declare interface VenueSchedule {
|
|
3986
|
-
venueId: string;
|
|
3987
|
-
rounds: RoundProfile[];
|
|
3988
|
-
}
|
|
3989
|
-
|
|
3990
|
-
declare interface ViewChangeEvent {
|
|
3991
|
-
type: 'VIEW_CHANGED';
|
|
3992
|
-
payload: Partial<ViewStateSnapshot>;
|
|
3993
|
-
}
|
|
3994
|
-
|
|
3995
|
-
declare type ViewChangeListener = (event: ViewChangeEvent) => void;
|
|
3996
|
-
|
|
3997
|
-
declare interface ViewStateSnapshot {
|
|
3998
|
-
selectedDay: DayId_3 | null;
|
|
3999
|
-
selectedVenue: string | null;
|
|
4000
|
-
selectedCourt: string | null;
|
|
4001
|
-
layerVisibility: Map<BlockType_2, boolean>;
|
|
4002
|
-
}
|
|
4003
|
-
|
|
4004
|
-
declare const wordValidator: (minWords: number, maxWords?: number) => (value: string) => boolean;
|
|
4005
|
-
|
|
4006
|
-
export { }
|
|
1
|
+
export { renderParticipant } from './components/renderStructure/renderParticipant';
|
|
2
|
+
export { renderParticipantInput } from './components/renderStructure/renderParticipantInput';
|
|
3
|
+
export { renderRoundHeader } from './components/renderStructure/renderRoundHeader';
|
|
4
|
+
export { renderStructure } from './components/renderStructure/renderStructure';
|
|
5
|
+
export { renderContainer } from './components/renderStructure/renderContainer';
|
|
6
|
+
export { renderMatchUp } from './components/renderStructure/renderMatchUp';
|
|
7
|
+
export { compositions } from './compositions/compositions';
|
|
8
|
+
export { resolvePublishedComposition } from './compositions/resolvePublishedComposition';
|
|
9
|
+
export type { DisplayExtensionValue } from './compositions/resolvePublishedComposition';
|
|
10
|
+
export { renderRound } from './components/renderStructure/renderRound';
|
|
11
|
+
export { renderSchematicStructure, renderSchematicRound, renderSchematicMatchUp } from './components/renderSchematicStructure';
|
|
12
|
+
export type { SchematicMatchUp } from './components/renderSchematicStructure';
|
|
13
|
+
export { cModal } from './components/modal/cmodal';
|
|
14
|
+
export { getMockParticipantsModal } from './components/modal/mockParticipants';
|
|
15
|
+
export type { MockParticipantsConfig } from './components/modal/mockParticipants';
|
|
16
|
+
export { getGenerateTeamsModal } from './components/modal/generateTeamsModal';
|
|
17
|
+
export type { GenerateTeamsConfig } from './components/modal/generateTeamsModal';
|
|
18
|
+
export { openCompositionEditorModal } from './components/modal/compositionEditorModal';
|
|
19
|
+
export type { CompositionEditorResult, CompositionEditorOptions } from './components/modal/compositionEditorModal';
|
|
20
|
+
export { openScheduleCellConfigModal } from './components/modal/scheduleCellConfigModal';
|
|
21
|
+
export type { ScheduleCellDisplayConfig, ScheduleCellConfigOptions } from './components/modal/scheduleCellConfigModal';
|
|
22
|
+
export { getMatchUpFormatModal } from './components/matchUpFormat/matchUpFormat';
|
|
23
|
+
export { getAgeCategoryModal } from './components/categories/ageCategory/ageCategory';
|
|
24
|
+
export type { AgeCategoryConfig } from './components/categories/ageCategory/ageCategory';
|
|
25
|
+
export { getCategoryModal } from './components/categories/category/category';
|
|
26
|
+
export type { CategoryConfig, Category } from './components/categories/category/category';
|
|
27
|
+
export { getFlightProfileModal } from './components/flightProfile/flightProfileNew';
|
|
28
|
+
export type { FlightProfileConfig } from './components/flightProfile/flightProfileNew';
|
|
29
|
+
export { scoringModal } from './components/scoring/scoringModal';
|
|
30
|
+
export { setScoringConfig, getScoringConfig, resetScoringConfig } from './components/scoring/config';
|
|
31
|
+
export type { ScoringModalParams, ScoringModalLabels, ScoreOutcome, SetScore } from './components/scoring/types';
|
|
32
|
+
export { getSetFormatForIndex, isSetTiebreakOnly, isSetTimed, getMaxAllowedScore, isSetComplete, getSetWinner, isMatchComplete, getMatchWinner, calculateComplement, shouldApplySmartComplement, shouldShowTiebreak, shouldCreateNextSet, buildSetScore } from './components/scoring/logic/dynamicSetsLogic';
|
|
33
|
+
export type { SetFormat, MatchUpConfig, SmartComplementResult } from './components/scoring/logic/dynamicSetsLogic';
|
|
34
|
+
export { drawer, initDrawer } from './components/drawer/drawer';
|
|
35
|
+
export type { DrawerOptions } from './components/drawer/drawer';
|
|
36
|
+
export { notesToolbar, updateToolbarState, updateHeadingSelect } from './components/notes-toolbar/notesToolbar';
|
|
37
|
+
export type { NotesToolbarOptions } from './components/notes-toolbar/notesToolbar';
|
|
38
|
+
export { tipster, destroyTipster } from './components/popover/tipster';
|
|
39
|
+
export { tennisCourt, basketballCourt, baseballDiamond, hockeyRink, pickleballCourt, badmintonCourt, padelCourt } from './components/courts';
|
|
40
|
+
export { courthiveComponentsVersion } from './version';
|
|
41
|
+
export { MATCH_FORMATS } from './constants/matchUpFormats';
|
|
42
|
+
export type { MatchUpFormatCode } from './constants/matchUpFormats';
|
|
43
|
+
export { renderButtons } from './components/forms/renderButtons';
|
|
44
|
+
export { renderField, renderOptions } from './components/forms/renderField';
|
|
45
|
+
export { renderForm } from './components/forms/renderForm';
|
|
46
|
+
export { renderMenu } from './components/forms/renderMenu';
|
|
47
|
+
export { validator } from './components/forms/renderValidator';
|
|
48
|
+
export * as validators from './validators';
|
|
49
|
+
export { DrawStateManager } from './helpers/drawStateManager';
|
|
50
|
+
export type { RenderCallback } from './helpers/drawStateManager';
|
|
51
|
+
export { burstChart } from './components/burstChart/burstChart';
|
|
52
|
+
export type { SunburstDrawData, SunburstMatchUp, SunburstSide, SegmentData, BurstChartEventHandlers, BurstChartOptions, BurstChartInstance } from './components/burstChart/burstChart';
|
|
53
|
+
export { fromFactoryDrawData, fromLegacyDraw } from './components/burstChart/matchUpTransform';
|
|
54
|
+
export { controlBar } from './components/controlBar/controlBar';
|
|
55
|
+
export { toggleOverlay } from './components/controlBar/toggleOverlay';
|
|
56
|
+
export { dropDownButton } from './components/button/dropDownButton';
|
|
57
|
+
export { barButton } from './components/button/barButton';
|
|
58
|
+
export { selectItem } from './components/modal/selectItem';
|
|
59
|
+
export type { SelectItemParams, SelectItemOption } from './components/modal/selectItem';
|
|
60
|
+
export { SchedulingProfileControl, ProfileStore, createSchedulingProfile, validateProfile, buildIssueIndex, applyDropCommit, filterCatalog, groupCatalog, getPlannedRoundKeys, getVenueRounds, getRoundAt, findIssuesForLocator, maxSeverity, buildDateStrip, buildVenueBoard, buildRoundCatalog, buildInspectorPanel, buildIssuesPanel, buildRoundCard, createCardPopoverManager, buildSchedulingProfileLayout } from './components/scheduling-profile';
|
|
61
|
+
export { createTemporalGrid, TemporalGrid, showCourtAvailabilityModal } from './components/temporal-grid';
|
|
62
|
+
export type { TemporalGridConfig, TemporalGridLabels } from './components/temporal-grid';
|
|
63
|
+
export { TopologyBuilderControl, TopologyStore, topologyToDrawOptions, validateTopology, generatePreviewMatchUps, standardTemplates, buildTopologyCanvas, buildStructureCard, getPortPosition, buildNodeEditor, buildEdgeEditor, buildToolbar, buildTopologyBuilderLayout } from './components/topology-builder';
|
|
64
|
+
export type { TopologyNode, TopologyEdge, TopologyState, TopologyChangeListener, TopologyBuilderConfig, TopologyTemplate, DrawOptionsResult, ValidationError } from './components/topology-builder';
|
|
65
|
+
export type { SchedulingProfile, ScheduleDay, VenueSchedule, RoundProfile, RoundSegment, VenueInfo, CatalogRoundItem, CatalogGroupBy, RoundKey, RoundLocator, DragPayload, DropTarget, DropResult, Severity, ValidationCode, FixAction, ValidationResult, IssueIndex, ProfileStoreState, SchedulingProfileConfig, TemporalAdapter, DemandAdapter, DependencyAdapter, UIPanel } from './components/scheduling-profile';
|
|
66
|
+
export { SchedulePageControl, SchedulePageStore, createSchedulePage, filterMatchUpCatalog, groupMatchUpCatalog, isCompletedStatus, buildScheduleIssueIndex, matchUpLabel, participantLabel, matchUpSearchKey, buildScheduleDateStrip, buildScheduleIssuesPanel, buildMatchUpCatalog, buildMatchUpCard, buildScheduleInspectorPanel, buildCourtGridSlot, buildSchedulePageLayout, buildScheduleGridCell, mapMatchUpToCellData, DEFAULT_SCHEDULE_CELL_CONFIG, activateScheduleCellTypeAhead, buildActiveStripPanel } from './components/schedule-page';
|
|
67
|
+
export type { CatalogMatchUpItem, CatalogFilters, MatchUpSide, ScheduleDate, ScheduleIssue, ScheduleIssueSeverity, ScheduleIssueIndex, ScheduleIssueCounts, MatchUpCatalogGroupBy, ScheduledBehavior, SchedulingMode, PendingScheduleAction, CatalogMatchUpDragPayload, GridMatchUpDragPayload, SchedulePageDragPayload, SchedulePageConfig, SchedulePageState, SchedulePageChangeListener, ScheduleCellConfig, ScheduleCellField, ParticipantDisplayConfig, ScheduleCellData, ScheduleCellSide, ScheduleCellTypeAheadOptions, ActiveStripPanel, ActiveStripPanelCallbacks, ActiveStripPanelData, ActiveStripPanelOptions, ActiveStripCourtMeta } from './components/schedule-page';
|
|
68
|
+
export { createCompositionEditor } from './components/composition-editor/compositionEditor';
|
|
69
|
+
export { CompositionEditorStore } from './components/composition-editor/compositionEditorStore';
|
|
70
|
+
export type { CompositionEditorConfig, SavedComposition, CompositionEditorState, CompositionEditorListener, SectionId as CompositionEditorSectionId, EditorPanel as CompositionEditorPanel } from './components/composition-editor/compositionEditorTypes';
|
|
71
|
+
export { createPrintCompositionEditor } from './components/print-composition-editor/printCompositionEditor';
|
|
72
|
+
export type { PrintCompositionConfig, PrintCompositionEditorConfig, PrintCompositionEditorHandle, PrintType, HeaderLayout as PrintHeaderLayout, FooterLayout as PrintFooterLayout, PageSize as PrintPageSize, PageOrientation as PrintPageOrientation } from './components/print-composition-editor/printCompositionEditorTypes';
|
|
73
|
+
export { renderScorecard, renderTeamVsHeader, updateTieScore } from './components/scorecard';
|
|
74
|
+
export type { ScorecardOptions, TeamVsOptions } from './components/scorecard';
|
|
75
|
+
export { InlineScoringManager, renderInlineMatchUp, engineToMatchUp, createInlineScoringFooter } from './components/inline-scoring';
|
|
76
|
+
export type { InlineScoringMode, InlineScoringConfig, InlineScoringCallbacks, InlineScoringEngineState } from './components/inline-scoring';
|
|
77
|
+
export { buildInteractiveScoringShell } from './components/interactive-scoring';
|
|
78
|
+
export type { InteractiveScoringShell, InteractiveScoringShellConfig, StateChangedDetail } from './components/interactive-scoring';
|
|
79
|
+
export { PolicyCatalogControl, PolicyCatalogStore, createPolicyCatalog, filterPolicyCatalog, groupPolicyCatalog, POLICY_TYPE_METADATA, POLICY_TYPE_GROUPS, getPolicyTypeMeta, buildPolicyCatalogPanel, buildEditorShell, buildPolicyCatalogLayout, buildJsonEditor, SchedulingEditorControl, createSchedulingEditor, SchedulingEditorStore, validateSchedulingPolicy, formatCodeLabel, emptySchedulingPolicy, buildSchedulingEditorPanel } from './components/policy-catalog';
|
|
80
|
+
export type { PolicyCatalogItem, PolicyCatalogState, PolicyCatalogChangeListener, PolicyCatalogConfig, PolicyEditorInstance, PolicyEditorPlugin, PolicySource, PolicyTypeGroup, PolicyTypeMeta, CatalogGroupBy as PolicyCatalogGroupBy, SchedulingPolicyData, SchedulingEditorState, SchedulingEditorSection, SchedulingEditorChangeListener, SchedulingEditorConfig, SchedulingValidationResult, ValidationSeverity as SchedulingValidationSeverity, MinutesEntry, AverageTimeEntry, RecoveryTimeEntry, MatchUpAverageTime, MatchUpRecoveryTime } from './components/policy-catalog';
|