courthive-components 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +18 -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 +34 -0
- package/dist/components/schedule-page/index.d.ts +24 -0
- package/dist/components/schedule-page/types.d.ts +218 -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 +4 -4
- package/dist/courthive-components.umd.js +1 -1
- 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 +4 -4
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduling Profile — Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* All interfaces for the scheduling profile builder component.
|
|
5
|
+
* The SchedulingProfile shape matches the factory's `scheduleProfileRounds()` input.
|
|
6
|
+
*/
|
|
7
|
+
export interface RoundSegment {
|
|
8
|
+
segmentNumber: number;
|
|
9
|
+
segmentsCount: number;
|
|
10
|
+
}
|
|
11
|
+
export interface RoundProfile {
|
|
12
|
+
tournamentId: string;
|
|
13
|
+
eventId: string;
|
|
14
|
+
eventName?: string;
|
|
15
|
+
drawId: string;
|
|
16
|
+
drawName?: string;
|
|
17
|
+
structureId: string;
|
|
18
|
+
structureType?: string;
|
|
19
|
+
roundNumber: number;
|
|
20
|
+
roundName?: string;
|
|
21
|
+
roundSegment?: RoundSegment;
|
|
22
|
+
notBeforeTime?: string;
|
|
23
|
+
sortOrder?: number;
|
|
24
|
+
matchCountEstimate?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface VenueSchedule {
|
|
27
|
+
venueId: string;
|
|
28
|
+
rounds: RoundProfile[];
|
|
29
|
+
}
|
|
30
|
+
export interface ScheduleDay {
|
|
31
|
+
scheduleDate: string;
|
|
32
|
+
venues: VenueSchedule[];
|
|
33
|
+
}
|
|
34
|
+
export type SchedulingProfile = ScheduleDay[];
|
|
35
|
+
export interface VenueInfo {
|
|
36
|
+
venueId: string;
|
|
37
|
+
name: string;
|
|
38
|
+
}
|
|
39
|
+
export interface CatalogRoundItem {
|
|
40
|
+
tournamentId: string;
|
|
41
|
+
eventId: string;
|
|
42
|
+
eventName: string;
|
|
43
|
+
drawId: string;
|
|
44
|
+
drawName?: string;
|
|
45
|
+
structureId: string;
|
|
46
|
+
structureType?: string;
|
|
47
|
+
roundNumber: number;
|
|
48
|
+
roundName?: string;
|
|
49
|
+
matchCountEstimate?: number;
|
|
50
|
+
}
|
|
51
|
+
export type CatalogGroupBy = 'event' | 'draw' | 'round';
|
|
52
|
+
export type PlannedRoundBehavior = 'dim' | 'hide' | 'navigate';
|
|
53
|
+
export interface RoundKey {
|
|
54
|
+
tournamentId: string;
|
|
55
|
+
eventId: string;
|
|
56
|
+
drawId: string;
|
|
57
|
+
structureId: string;
|
|
58
|
+
roundNumber: number;
|
|
59
|
+
}
|
|
60
|
+
export interface RoundLocator {
|
|
61
|
+
date: string;
|
|
62
|
+
venueId: string;
|
|
63
|
+
index: number;
|
|
64
|
+
roundKey: RoundKey;
|
|
65
|
+
roundSegment?: RoundSegment;
|
|
66
|
+
}
|
|
67
|
+
export interface CatalogDragPayload {
|
|
68
|
+
type: 'CATALOG_ROUND';
|
|
69
|
+
roundRef: CatalogRoundItem;
|
|
70
|
+
}
|
|
71
|
+
export interface PlannedDragPayload {
|
|
72
|
+
type: 'PLANNED_ROUND';
|
|
73
|
+
locator: RoundLocator;
|
|
74
|
+
}
|
|
75
|
+
export type DragPayload = CatalogDragPayload | PlannedDragPayload;
|
|
76
|
+
export interface DropTarget {
|
|
77
|
+
date: string;
|
|
78
|
+
venueId: string;
|
|
79
|
+
index: number;
|
|
80
|
+
}
|
|
81
|
+
export interface DropResult {
|
|
82
|
+
ok: boolean;
|
|
83
|
+
profile: SchedulingProfile;
|
|
84
|
+
}
|
|
85
|
+
export type Severity = 'ERROR' | 'WARN' | 'INFO';
|
|
86
|
+
export type ValidationCode = 'DATE_UNAVAILABLE' | 'DUPLICATE_ROUND' | 'DUPLICATE_SEGMENT' | 'INVALID_SEGMENT_CONFIG' | 'ROUND_ORDER_VIOLATION' | 'DEPENDENCY_VIOLATION' | 'DAY_OVERLOAD' | 'DROP_REJECTED';
|
|
87
|
+
export type FixActionKind = 'JUMP_TO_ITEM' | 'OPEN_TEMPORAL_GRID' | 'MOVE_ITEM_AFTER' | 'MOVE_ITEM_BEFORE';
|
|
88
|
+
export interface FixAction {
|
|
89
|
+
kind: FixActionKind;
|
|
90
|
+
label: string;
|
|
91
|
+
locator?: RoundLocator;
|
|
92
|
+
after?: RoundLocator;
|
|
93
|
+
before?: RoundLocator;
|
|
94
|
+
date?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface ValidationResult {
|
|
97
|
+
code: ValidationCode;
|
|
98
|
+
severity: Severity;
|
|
99
|
+
message: string;
|
|
100
|
+
context: {
|
|
101
|
+
date?: string;
|
|
102
|
+
venueId?: string;
|
|
103
|
+
scope?: string;
|
|
104
|
+
drawId?: string;
|
|
105
|
+
structureId?: string;
|
|
106
|
+
locator?: RoundLocator;
|
|
107
|
+
prerequisite?: RoundLocator;
|
|
108
|
+
demandMinutes?: number;
|
|
109
|
+
capacityMinutes?: number;
|
|
110
|
+
ratio?: number;
|
|
111
|
+
reason?: string;
|
|
112
|
+
};
|
|
113
|
+
fixActions?: FixAction[];
|
|
114
|
+
}
|
|
115
|
+
export interface SeverityCounts {
|
|
116
|
+
total: number;
|
|
117
|
+
ERROR: number;
|
|
118
|
+
WARN: number;
|
|
119
|
+
INFO: number;
|
|
120
|
+
}
|
|
121
|
+
export interface IssueIndex {
|
|
122
|
+
all: ValidationResult[];
|
|
123
|
+
bySeverity: Record<Severity, ValidationResult[]>;
|
|
124
|
+
byDate: Record<string, ValidationResult[]>;
|
|
125
|
+
byVenue: Record<string, ValidationResult[]>;
|
|
126
|
+
byDraw: Record<string, ValidationResult[]>;
|
|
127
|
+
counts: {
|
|
128
|
+
total: number;
|
|
129
|
+
ERROR: number;
|
|
130
|
+
WARN: number;
|
|
131
|
+
INFO: number;
|
|
132
|
+
byDate: Record<string, SeverityCounts>;
|
|
133
|
+
byVenue: Record<string, SeverityCounts>;
|
|
134
|
+
byDraw: Record<string, SeverityCounts>;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export interface ProfileStoreState {
|
|
138
|
+
profileDraft: SchedulingProfile;
|
|
139
|
+
venues: VenueInfo[];
|
|
140
|
+
roundCatalog: CatalogRoundItem[];
|
|
141
|
+
schedulableDates: string[];
|
|
142
|
+
activeDates?: string[];
|
|
143
|
+
selectedDate: string | null;
|
|
144
|
+
selectedLocator: RoundLocator | null;
|
|
145
|
+
ruleResults: ValidationResult[];
|
|
146
|
+
issueIndex: IssueIndex;
|
|
147
|
+
catalogSearchQuery: string;
|
|
148
|
+
catalogGroupBy: CatalogGroupBy;
|
|
149
|
+
plannedRoundBehavior: PlannedRoundBehavior;
|
|
150
|
+
}
|
|
151
|
+
export type ProfileChangeListener = (state: ProfileStoreState) => void;
|
|
152
|
+
export interface TemporalAdapter {
|
|
153
|
+
isDateAvailable: (date: string) => {
|
|
154
|
+
ok: boolean;
|
|
155
|
+
reason?: string;
|
|
156
|
+
};
|
|
157
|
+
getDayCapacityMinutes?: (date: string) => number;
|
|
158
|
+
}
|
|
159
|
+
export interface DemandAdapter {
|
|
160
|
+
estimateDayDemandMinutes: (date: string, profile: SchedulingProfile) => number;
|
|
161
|
+
}
|
|
162
|
+
export interface DependencyAdapter {
|
|
163
|
+
/**
|
|
164
|
+
* Returns roundKeyStrings for all rounds that must complete
|
|
165
|
+
* before the given round can proceed.
|
|
166
|
+
* Key format: "tournamentId|eventId|drawId|structureId|roundNumber"
|
|
167
|
+
*/
|
|
168
|
+
getRoundDependencies: (roundKeyString: string) => string[];
|
|
169
|
+
}
|
|
170
|
+
export interface SchedulingProfileConfig {
|
|
171
|
+
venues: VenueInfo[];
|
|
172
|
+
roundCatalog: CatalogRoundItem[];
|
|
173
|
+
schedulableDates: string[];
|
|
174
|
+
activeDates?: string[];
|
|
175
|
+
/** When true, the left column (date strip + issues panel) is not rendered. */
|
|
176
|
+
hideLeft?: boolean;
|
|
177
|
+
/** Which side to place the round catalog. Defaults to 'right'. */
|
|
178
|
+
catalogSide?: 'left' | 'right';
|
|
179
|
+
initialProfile?: SchedulingProfile;
|
|
180
|
+
selectedDate?: string;
|
|
181
|
+
temporalAdapter?: TemporalAdapter;
|
|
182
|
+
demandAdapter?: DemandAdapter;
|
|
183
|
+
dependencyAdapter?: DependencyAdapter;
|
|
184
|
+
venueOrder?: string[];
|
|
185
|
+
plannedRoundBehavior?: PlannedRoundBehavior;
|
|
186
|
+
onProfileChanged?: (profile: SchedulingProfile) => void;
|
|
187
|
+
onFixAction?: (action: FixAction) => void;
|
|
188
|
+
}
|
|
189
|
+
export interface UIPanel<T = unknown> {
|
|
190
|
+
element: HTMLElement;
|
|
191
|
+
update: (state: T) => void;
|
|
192
|
+
destroy?: () => void;
|
|
193
|
+
}
|
|
194
|
+
export interface FlattenedRound {
|
|
195
|
+
round: RoundProfile;
|
|
196
|
+
locator: RoundLocator;
|
|
197
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RoundLocator } from '../types';
|
|
2
|
+
export interface CardPopoverCallbacks {
|
|
3
|
+
onDelete: (locator: RoundLocator) => void;
|
|
4
|
+
onSetNotBeforeTime: (locator: RoundLocator) => void;
|
|
5
|
+
}
|
|
6
|
+
export interface CardPopoverManager {
|
|
7
|
+
show(target: HTMLElement, locator: RoundLocator): void;
|
|
8
|
+
destroy(): void;
|
|
9
|
+
isActiveFor(locator: RoundLocator): boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function createCardPopoverManager(callbacks: CardPopoverCallbacks): CardPopoverManager;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RoundProfile, RoundLocator, Severity } from '../types';
|
|
2
|
+
export interface RoundCardData {
|
|
3
|
+
round: RoundProfile;
|
|
4
|
+
locator: RoundLocator;
|
|
5
|
+
isSelected: boolean;
|
|
6
|
+
severity: Severity | null;
|
|
7
|
+
}
|
|
8
|
+
export interface RoundCardCallbacks {
|
|
9
|
+
onClick: (locator: RoundLocator) => void;
|
|
10
|
+
onContextMenu?: (locator: RoundLocator, target: HTMLElement) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildRoundCard(data: RoundCardData, callbacks: RoundCardCallbacks): HTMLElement;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ProfileStoreState, UIPanel, CatalogGroupBy, CatalogRoundItem, RoundLocator } from '../types';
|
|
2
|
+
export interface RoundCatalogCallbacks {
|
|
3
|
+
onSearchChange: (query: string) => void;
|
|
4
|
+
onGroupByChange: (mode: CatalogGroupBy) => void;
|
|
5
|
+
onDropRemove?: (locator: RoundLocator) => void;
|
|
6
|
+
onNavigateToPlanned?: (item: CatalogRoundItem) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildRoundCatalog(callbacks: RoundCatalogCallbacks): UIPanel<ProfileStoreState>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ProfileStoreState, UIPanel } from '../types';
|
|
2
|
+
export interface LayoutPanels {
|
|
3
|
+
dateStrip: UIPanel<ProfileStoreState>;
|
|
4
|
+
issuesPanel: UIPanel<ProfileStoreState>;
|
|
5
|
+
venueBoard: UIPanel<ProfileStoreState>;
|
|
6
|
+
roundCatalog: UIPanel<ProfileStoreState>;
|
|
7
|
+
inspectorPanel: UIPanel<ProfileStoreState>;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildSchedulingProfileLayout(panels: LayoutPanels, options?: {
|
|
10
|
+
hideLeft?: boolean;
|
|
11
|
+
catalogSide?: 'left' | 'right';
|
|
12
|
+
}): {
|
|
13
|
+
element: HTMLElement;
|
|
14
|
+
update: (state: ProfileStoreState) => void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const spLayoutStyle: () => string;
|
|
2
|
+
export declare const spColumnStyle: () => string;
|
|
3
|
+
export declare const spPanelStyle: () => string;
|
|
4
|
+
export declare const spPanelHeaderStyle: () => string;
|
|
5
|
+
export declare const spPanelTitleStyle: () => string;
|
|
6
|
+
export declare const spPanelMetaStyle: () => string;
|
|
7
|
+
export declare const spPanelBodyStyle: () => string;
|
|
8
|
+
export declare const spDateStripStyle: () => string;
|
|
9
|
+
export declare const spDateChipStyle: () => string;
|
|
10
|
+
export declare const spBadgesStyle: () => string;
|
|
11
|
+
export declare const spBadgeStyle: () => string;
|
|
12
|
+
export declare const spChipsStyle: () => string;
|
|
13
|
+
export declare const spChipStyle: () => string;
|
|
14
|
+
export declare const spBoardStyle: () => string;
|
|
15
|
+
export declare const spVenueStyle: () => string;
|
|
16
|
+
export declare const spVenueHeaderStyle: () => string;
|
|
17
|
+
export declare const spVenueTitleStyle: () => string;
|
|
18
|
+
export declare const spVenueSubStyle: () => string;
|
|
19
|
+
export declare const spDropzoneStyle: () => string;
|
|
20
|
+
export declare const spCardStyle: () => string;
|
|
21
|
+
export declare const spCardTitleStyle: () => string;
|
|
22
|
+
export declare const spCardMetaStyle: () => string;
|
|
23
|
+
export declare const spIssuesStyle: () => string;
|
|
24
|
+
export declare const spIssueStyle: () => string;
|
|
25
|
+
export declare const spIssueCodeStyle: () => string;
|
|
26
|
+
export declare const spIssueMsgStyle: () => string;
|
|
27
|
+
export declare const spIssueActionsStyle: () => string;
|
|
28
|
+
export declare const spIssueActionBtnStyle: () => string;
|
|
29
|
+
export declare const spCatalogStyle: () => string;
|
|
30
|
+
export declare const spCatalogToolbarStyle: () => string;
|
|
31
|
+
export declare const spInputStyle: () => string;
|
|
32
|
+
export declare const spSelectStyle: () => string;
|
|
33
|
+
export declare const spGroupStyle: () => string;
|
|
34
|
+
export declare const spGroupHeaderStyle: () => string;
|
|
35
|
+
export declare const spGroupBodyStyle: () => string;
|
|
36
|
+
export declare const spCatalogItemStyle: () => string;
|
|
37
|
+
export declare const spInspectorStyle: () => string;
|
|
38
|
+
export declare const spKvStyle: () => string;
|
|
39
|
+
export declare const spKvKeyStyle: () => string;
|
|
40
|
+
export declare const spKvValueStyle: () => string;
|
|
41
|
+
export declare const spSmallStyle: () => string;
|
|
42
|
+
export declare const spPopoverItemStyle: () => string;
|
|
43
|
+
export declare const spPopoverDeleteStyle: () => string;
|
|
44
|
+
export declare const spPopoverDividerStyle: () => string;
|
|
45
|
+
export declare const spInsertionLineStyle: () => string;
|
|
46
|
+
export declare const spGroupChevronStyle: () => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ProfileStoreState, UIPanel, DragPayload, DropTarget, RoundLocator } from '../types';
|
|
2
|
+
export interface VenueBoardCallbacks {
|
|
3
|
+
onDrop: (drag: DragPayload, drop: DropTarget) => void;
|
|
4
|
+
onCardClick: (locator: RoundLocator) => void;
|
|
5
|
+
onCardContextMenu?: (locator: RoundLocator, target: HTMLElement) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildVenueBoard(callbacks: VenueBoardCallbacks): UIPanel<ProfileStoreState>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface ScorecardOptions {
|
|
2
|
+
matchUp: any;
|
|
3
|
+
composition?: any;
|
|
4
|
+
eventHandlers?: any;
|
|
5
|
+
swapSides?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface TeamVsOptions {
|
|
8
|
+
side1Name: string;
|
|
9
|
+
side2Name: string;
|
|
10
|
+
sets?: any[];
|
|
11
|
+
winningSide?: number;
|
|
12
|
+
side1Id?: string;
|
|
13
|
+
side2Id?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Render a full team scorecard: header + collection panels + matchUp grids.
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderScorecard({ matchUp, composition, eventHandlers, swapSides }: ScorecardOptions): HTMLDivElement;
|
|
19
|
+
/**
|
|
20
|
+
* Render the team vs team header with names and aggregate score.
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderTeamVsHeader({ side1Name, side2Name, sets, winningSide, side1Id, side2Id }: TeamVsOptions): HTMLDivElement;
|
|
23
|
+
/**
|
|
24
|
+
* Update the aggregate tie score in-place (avoids full re-render).
|
|
25
|
+
*/
|
|
26
|
+
export declare function updateTieScore(result: any, side1Id?: string, side2Id?: string, swapSides?: boolean): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared dial pad logic - formats raw digits into score string
|
|
3
|
+
* Parses matchUpFormat to determine boundaries
|
|
4
|
+
*/
|
|
5
|
+
export type FormatOptions = {
|
|
6
|
+
matchUpFormat: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Convert raw digits to formatted score string
|
|
10
|
+
* Example: "6464" with matchUpFormat 'SET3-S:6/TB7' becomes "6-4 6-4"
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatScoreString(digits: string, options: FormatOptions): string;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoring configuration for courthive-components
|
|
3
|
+
* This provides a simple configuration object that can be modified by consumers
|
|
4
|
+
*/
|
|
5
|
+
export interface ScoringConfig {
|
|
6
|
+
scoringApproach?: 'freeScore' | 'dynamicSets' | 'dialPad' | 'inlineScoring';
|
|
7
|
+
smartComplements?: boolean;
|
|
8
|
+
composition?: string;
|
|
9
|
+
idiom?: string;
|
|
10
|
+
dateFormat?: string;
|
|
11
|
+
timeFormat?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get current scoring configuration
|
|
15
|
+
*/
|
|
16
|
+
export declare function getScoringConfig(): ScoringConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Set scoring configuration (can be partial)
|
|
19
|
+
*/
|
|
20
|
+
export declare function setScoringConfig(config: Partial<ScoringConfig>): void;
|
|
21
|
+
/**
|
|
22
|
+
* Reset configuration to defaults
|
|
23
|
+
*/
|
|
24
|
+
export declare function resetScoringConfig(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Stub for loadSettings (for compatibility with TMX code)
|
|
27
|
+
*/
|
|
28
|
+
export declare function loadSettings(): any;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { SetScore } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Set format information returned by matchUpFormatCode.parse()
|
|
4
|
+
*/
|
|
5
|
+
export type SetFormat = {
|
|
6
|
+
setTo?: number;
|
|
7
|
+
tiebreakAt?: number;
|
|
8
|
+
tiebreakFormat?: {
|
|
9
|
+
tiebreakTo?: number;
|
|
10
|
+
noAd?: boolean;
|
|
11
|
+
};
|
|
12
|
+
tiebreakSet?: {
|
|
13
|
+
tiebreakTo?: number;
|
|
14
|
+
noAd?: boolean;
|
|
15
|
+
};
|
|
16
|
+
timed?: boolean;
|
|
17
|
+
minutes?: number;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Configuration for a matchUp
|
|
21
|
+
* Should be derived from TODS matchUpFormat strings using matchUpFormatCode.parse()
|
|
22
|
+
*/
|
|
23
|
+
export type MatchUpConfig = {
|
|
24
|
+
bestOf: number;
|
|
25
|
+
exactly?: number;
|
|
26
|
+
setFormat?: SetFormat;
|
|
27
|
+
finalSetFormat?: SetFormat;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Result of smart complement calculation
|
|
31
|
+
*/
|
|
32
|
+
export type SmartComplementResult = {
|
|
33
|
+
field1Value: number;
|
|
34
|
+
field2Value: number;
|
|
35
|
+
shouldApply: boolean;
|
|
36
|
+
reason?: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Get the format for a specific set index
|
|
40
|
+
* Uses finalSetFormat for deciding set if available
|
|
41
|
+
*/
|
|
42
|
+
export declare function getSetFormatForIndex(setIndex: number, config: MatchUpConfig): SetFormat | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a set is tiebreak-only (e.g., TB10)
|
|
45
|
+
*/
|
|
46
|
+
export declare function isSetTiebreakOnly(format?: SetFormat): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Check if a set format is timed (e.g., T10, T20)
|
|
49
|
+
*/
|
|
50
|
+
export declare function isSetTimed(format?: SetFormat): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Calculate the maximum allowed score for a regular set game score
|
|
53
|
+
* based on the opponent's score and set rules
|
|
54
|
+
*
|
|
55
|
+
* For timed sets, returns Infinity (no maximum) since scores don't need relationships
|
|
56
|
+
*/
|
|
57
|
+
export declare function getMaxAllowedScore(setIndex: number, side: 1 | 2, currentScores: {
|
|
58
|
+
side1: number;
|
|
59
|
+
side2: number;
|
|
60
|
+
}, config: MatchUpConfig): number;
|
|
61
|
+
/**
|
|
62
|
+
* Determine if a set is complete based on its scores
|
|
63
|
+
*/
|
|
64
|
+
export declare function isSetComplete(setIndex: number, scores: {
|
|
65
|
+
side1: number;
|
|
66
|
+
side2: number;
|
|
67
|
+
tiebreak?: number;
|
|
68
|
+
}, config: MatchUpConfig): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Calculate which side won a set
|
|
71
|
+
* Returns undefined if set is not complete
|
|
72
|
+
*/
|
|
73
|
+
export declare function getSetWinner(setIndex: number, scores: {
|
|
74
|
+
side1: number;
|
|
75
|
+
side2: number;
|
|
76
|
+
tiebreak?: number;
|
|
77
|
+
}, config: MatchUpConfig): 1 | 2 | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Determine if match is complete based on sets won
|
|
80
|
+
*/
|
|
81
|
+
export declare function isMatchComplete(sets: SetScore[], bestOf: number, exactly?: number): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Get the match winner based on sets won
|
|
84
|
+
* Returns undefined if match is not complete
|
|
85
|
+
*/
|
|
86
|
+
export declare function getMatchWinner(sets: SetScore[], bestOf: number, exactly?: number): 1 | 2 | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Calculate the complement score for smart complement entry
|
|
89
|
+
* Returns null if no predictable complement exists
|
|
90
|
+
*
|
|
91
|
+
* @param digit - The digit entered (0-9)
|
|
92
|
+
* @param setFormat - The format for this set
|
|
93
|
+
* @returns Complement value or null if digit >= setTo (no predictable complement)
|
|
94
|
+
*/
|
|
95
|
+
export declare function calculateComplement(digit: number, setFormat?: SetFormat): number | null;
|
|
96
|
+
/**
|
|
97
|
+
* Determine if smart complement should be applied for a given input
|
|
98
|
+
*
|
|
99
|
+
* @param digit - The digit being entered
|
|
100
|
+
* @param isShiftPressed - Whether Shift key is pressed
|
|
101
|
+
* @param setIndex - Index of the current set
|
|
102
|
+
* @param sets - Current sets array
|
|
103
|
+
* @param config - Match configuration
|
|
104
|
+
* @param smartComplementsUsed - Set of indices where complement was already used
|
|
105
|
+
* @param smartComplementsEnabled - Whether feature is enabled in settings
|
|
106
|
+
* @returns Result indicating if/how complement should be applied
|
|
107
|
+
*/
|
|
108
|
+
export declare function shouldApplySmartComplement(digit: number, isShiftPressed: boolean, setIndex: number, sets: SetScore[], config: MatchUpConfig, smartComplementsUsed: Set<number>, smartComplementsEnabled: boolean): SmartComplementResult;
|
|
109
|
+
/**
|
|
110
|
+
* Determine if tiebreak input should be visible for a set
|
|
111
|
+
*/
|
|
112
|
+
export declare function shouldShowTiebreak(setIndex: number, scores: {
|
|
113
|
+
side1: number;
|
|
114
|
+
side2: number;
|
|
115
|
+
}, config: MatchUpConfig): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Determine if a new set row should be created
|
|
118
|
+
*/
|
|
119
|
+
export declare function shouldCreateNextSet(currentSetIndex: number, sets: SetScore[], config: MatchUpConfig): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Build a SetScore object from input values
|
|
122
|
+
* Assigns winningSide if set is complete
|
|
123
|
+
*/
|
|
124
|
+
export declare function buildSetScore(setIndex: number, side1Value: string, side2Value: string, tiebreakValue: string | undefined, config: MatchUpConfig): SetScore;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for scoring modal V2
|
|
3
|
+
*/
|
|
4
|
+
export type SetScore = {
|
|
5
|
+
setNumber?: number;
|
|
6
|
+
side1Score?: number;
|
|
7
|
+
side2Score?: number;
|
|
8
|
+
side1TiebreakScore?: number;
|
|
9
|
+
side2TiebreakScore?: number;
|
|
10
|
+
side1PointScore?: string | number;
|
|
11
|
+
side2PointScore?: string | number;
|
|
12
|
+
winningSide?: number;
|
|
13
|
+
};
|
|
14
|
+
export type ScoreOutcome = {
|
|
15
|
+
isValid: boolean;
|
|
16
|
+
sets: SetScore[];
|
|
17
|
+
scoreObject?: any;
|
|
18
|
+
winningSide?: number;
|
|
19
|
+
matchUpStatus?: string;
|
|
20
|
+
error?: string;
|
|
21
|
+
matchUpFormat?: string;
|
|
22
|
+
score?: string;
|
|
23
|
+
};
|
|
24
|
+
export type ScoringModalLabels = {
|
|
25
|
+
title?: string;
|
|
26
|
+
cancel?: string;
|
|
27
|
+
clear?: string;
|
|
28
|
+
submit?: string;
|
|
29
|
+
format?: string;
|
|
30
|
+
formatEditTitle?: string;
|
|
31
|
+
irregularEnding?: string;
|
|
32
|
+
winner?: string;
|
|
33
|
+
retired?: string;
|
|
34
|
+
walkover?: string;
|
|
35
|
+
defaulted?: string;
|
|
36
|
+
validScore?: string;
|
|
37
|
+
scoreIncomplete?: string;
|
|
38
|
+
invalidScore?: string;
|
|
39
|
+
scoreTips?: string;
|
|
40
|
+
setScores?: string;
|
|
41
|
+
tiebreaks?: string;
|
|
42
|
+
matchTiebreaks?: string;
|
|
43
|
+
irregularEndings?: string;
|
|
44
|
+
addSet?: boolean;
|
|
45
|
+
dynamicSetsTips?: string;
|
|
46
|
+
dialPadTips?: string;
|
|
47
|
+
};
|
|
48
|
+
export type ScoringModalParams = {
|
|
49
|
+
matchUp: any;
|
|
50
|
+
callback: (outcome: any) => void;
|
|
51
|
+
onClose?: () => void;
|
|
52
|
+
labels?: ScoringModalLabels;
|
|
53
|
+
};
|
|
54
|
+
export type ScoreChangeHandler = (outcome: ScoreOutcome) => void;
|
|
55
|
+
export type RenderScoreEntryParams = {
|
|
56
|
+
matchUp: any;
|
|
57
|
+
container: HTMLElement;
|
|
58
|
+
onScoreChange: ScoreChangeHandler;
|
|
59
|
+
labels?: ScoringModalLabels;
|
|
60
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for formatting scores for display in scoring modals
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Format existing score object into string for input field
|
|
6
|
+
*/
|
|
7
|
+
export declare function formatExistingScore(scoreObject: any, matchUpStatus?: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Get short abbreviation for matchUpStatus
|
|
10
|
+
* Returns empty string for unknown or unhandled statuses
|
|
11
|
+
*/
|
|
12
|
+
export declare function getStatusAbbreviation(status: string): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ScoreOutcome } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Validate a score string using generateOutcomeFromScoreString with preserveSideOrder
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateScore(scoreString: string, matchUpFormat?: string, matchUpStatus?: string): ScoreOutcome;
|
|
6
|
+
/**
|
|
7
|
+
* Validate individual set scores (for Dynamic Sets approach)
|
|
8
|
+
* Builds a scoreString from the sets and uses validateScore for consistent validation
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateSetScores(sets: Array<{
|
|
11
|
+
side1?: number;
|
|
12
|
+
side2?: number;
|
|
13
|
+
side1TiebreakScore?: number;
|
|
14
|
+
side2TiebreakScore?: number;
|
|
15
|
+
winningSide?: number;
|
|
16
|
+
}>, matchUpFormat?: string, allowIncomplete?: boolean): ScoreOutcome;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SetScore } from '../types';
|
|
2
|
+
type MatchUpFormatInfo = {
|
|
3
|
+
bestOf: number;
|
|
4
|
+
exactly?: number;
|
|
5
|
+
setsToWin: number;
|
|
6
|
+
isTimed: boolean;
|
|
7
|
+
isExactlyFormat: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Parse match format string to extract best-of information
|
|
11
|
+
* Examples: "SET3-S:6/TB7" → bestOf=3, "SET5-S:6/TB7" → bestOf=5
|
|
12
|
+
* Examples: "SET3X-S:T10" → exactly=3, isTimed=true
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseMatchUpFormat(matchUpFormat?: string): MatchUpFormatInfo;
|
|
15
|
+
/**
|
|
16
|
+
* Determine if another set should be added based on current scores
|
|
17
|
+
*/
|
|
18
|
+
export declare function shouldExpandSets(sets: SetScore[], matchUpFormat?: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Determine the winning side based on set scores
|
|
21
|
+
* Handles both regular scoring (sets won) and aggregate scoring (total points)
|
|
22
|
+
*/
|
|
23
|
+
export declare function determineWinningSide(sets: SetScore[], matchUpFormat?: string): number | undefined;
|
|
24
|
+
export {};
|