@ethlete/core 2.2.1 → 2.3.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/esm2022/lib/utils/public-api.mjs +3 -1
- package/esm2022/lib/utils/runtime-error.utils.mjs +28 -0
- package/esm2022/lib/utils/selection-model.utils.mjs +292 -0
- package/fesm2022/ethlete-core.mjs +320 -2
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/lib/utils/public-api.d.ts +2 -0
- package/lib/utils/runtime-error.utils.d.ts +6 -0
- package/lib/utils/selection-model.utils.d.ts +72 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, assertInInjectionContext, DestroyRef, ElementRef, isDevMode, Directive, Injectable, Inject, Optional, NgZone, EventEmitter, Output, Injector, ViewContainerRef, Pipe, QueryList } from '@angular/core';
|
|
3
3
|
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
4
|
-
import { Observable, combineLatest, Subject, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, skip, take, tap, debounceTime, merge, fromEvent, filter, switchMap, pairwise
|
|
4
|
+
import { Observable, combineLatest, Subject, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, shareReplay, skip, take, tap, debounceTime, merge, fromEvent, filter, switchMap, pairwise } from 'rxjs';
|
|
5
5
|
import { coerceCssPixelValue, coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
6
6
|
import { supportsScrollBehavior } from '@angular/cdk/platform';
|
|
7
7
|
import { Overlay } from '@angular/cdk/overlay';
|
|
@@ -585,6 +585,33 @@ const createReactiveBindings = (...values) => {
|
|
|
585
585
|
};
|
|
586
586
|
};
|
|
587
587
|
|
|
588
|
+
class RuntimeError extends Error {
|
|
589
|
+
constructor(code, message, data = '__ET_NO_DATA__') {
|
|
590
|
+
super(formatRuntimeError(code, message));
|
|
591
|
+
this.code = code;
|
|
592
|
+
this.data = data;
|
|
593
|
+
if (data !== '__ET_NO_DATA__') {
|
|
594
|
+
try {
|
|
595
|
+
const _data = clone(data);
|
|
596
|
+
setTimeout(() => {
|
|
597
|
+
console.error(_data);
|
|
598
|
+
}, 1);
|
|
599
|
+
}
|
|
600
|
+
catch {
|
|
601
|
+
setTimeout(() => {
|
|
602
|
+
console.error(data);
|
|
603
|
+
}, 1);
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
function formatRuntimeError(code, message) {
|
|
609
|
+
// prefix code with zeros if it's less than 100
|
|
610
|
+
const codeWithZeros = code < 10 ? `00${code}` : code < 100 ? `0${code}` : code;
|
|
611
|
+
const fullCode = `ET${codeWithZeros}`;
|
|
612
|
+
return `${fullCode}${message ? ': ' + message : ''}`;
|
|
613
|
+
}
|
|
614
|
+
|
|
588
615
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
589
616
|
class BehaviorSubjectWithSubscriberCount extends BehaviorSubject {
|
|
590
617
|
constructor() {
|
|
@@ -696,6 +723,297 @@ const scrollToElement = (options) => {
|
|
|
696
723
|
});
|
|
697
724
|
};
|
|
698
725
|
|
|
726
|
+
const isObject = (value) => {
|
|
727
|
+
return typeof value === 'object' && value !== null;
|
|
728
|
+
};
|
|
729
|
+
const getObjectProperty = (obj, prop) => {
|
|
730
|
+
const hasDotNotation = prop.includes('.');
|
|
731
|
+
if (!hasDotNotation)
|
|
732
|
+
return obj[prop];
|
|
733
|
+
const props = prop.split('.');
|
|
734
|
+
let value = obj;
|
|
735
|
+
for (const prop of props) {
|
|
736
|
+
if (!isObject(value))
|
|
737
|
+
return undefined;
|
|
738
|
+
value = value[prop];
|
|
739
|
+
}
|
|
740
|
+
return value;
|
|
741
|
+
};
|
|
742
|
+
class SelectionModel {
|
|
743
|
+
constructor() {
|
|
744
|
+
this._selection$ = new BehaviorSubject([]);
|
|
745
|
+
this._options$ = new BehaviorSubject([]);
|
|
746
|
+
this._valueBinding$ = new BehaviorSubject(null);
|
|
747
|
+
this._keyBinding$ = new BehaviorSubject(null);
|
|
748
|
+
this._labelBinding$ = new BehaviorSubject(null);
|
|
749
|
+
this._allowMultiple$ = new BehaviorSubject(false);
|
|
750
|
+
this._filter$ = new BehaviorSubject('');
|
|
751
|
+
this.value$ = combineLatest([this.selection$, this.valueBinding$, this.allowMultiple$]).pipe(map(([selection, valueBinding, allowMultiple]) => {
|
|
752
|
+
if (allowMultiple) {
|
|
753
|
+
return selection.map((option) => this.getOptionProperty(option, valueBinding));
|
|
754
|
+
}
|
|
755
|
+
const [option] = selection;
|
|
756
|
+
if (!option)
|
|
757
|
+
return null;
|
|
758
|
+
return this.getOptionProperty(option, valueBinding);
|
|
759
|
+
}));
|
|
760
|
+
this.filteredOptions$ = combineLatest([this.options$, this.filter$, this.labelBinding$]).pipe(map(([options, filter]) => this.getFilteredOptions(filter, options)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
761
|
+
this._optionsAndSelection$ = combineLatest([this._options$, this._selection$]);
|
|
762
|
+
}
|
|
763
|
+
get selection$() {
|
|
764
|
+
return this._selection$.asObservable();
|
|
765
|
+
}
|
|
766
|
+
get selection() {
|
|
767
|
+
return this._selection$.value;
|
|
768
|
+
}
|
|
769
|
+
get options$() {
|
|
770
|
+
return this._options$.asObservable();
|
|
771
|
+
}
|
|
772
|
+
get options() {
|
|
773
|
+
return this._options$.value;
|
|
774
|
+
}
|
|
775
|
+
get valueBinding$() {
|
|
776
|
+
return this._valueBinding$.asObservable();
|
|
777
|
+
}
|
|
778
|
+
get valueBinding() {
|
|
779
|
+
return this._valueBinding$.value;
|
|
780
|
+
}
|
|
781
|
+
get keyBinding$() {
|
|
782
|
+
return combineLatest([this._keyBinding$, this.valueBinding$]).pipe(map(([keyBinding, valueBinding]) => keyBinding || valueBinding));
|
|
783
|
+
}
|
|
784
|
+
get keyBinding() {
|
|
785
|
+
return this._keyBinding$.value || this.valueBinding;
|
|
786
|
+
}
|
|
787
|
+
get labelBinding$() {
|
|
788
|
+
return this._labelBinding$.asObservable();
|
|
789
|
+
}
|
|
790
|
+
get labelBinding() {
|
|
791
|
+
return this._labelBinding$.value;
|
|
792
|
+
}
|
|
793
|
+
get allowMultiple$() {
|
|
794
|
+
return this._allowMultiple$.asObservable();
|
|
795
|
+
}
|
|
796
|
+
get allowMultiple() {
|
|
797
|
+
return this._allowMultiple$.value;
|
|
798
|
+
}
|
|
799
|
+
get filter$() {
|
|
800
|
+
return this._filter$.asObservable();
|
|
801
|
+
}
|
|
802
|
+
get filter() {
|
|
803
|
+
return this._filter$.value;
|
|
804
|
+
}
|
|
805
|
+
setSelection(selection) {
|
|
806
|
+
if (!Array.isArray(selection)) {
|
|
807
|
+
selection = [selection];
|
|
808
|
+
}
|
|
809
|
+
this._selection$.next(selection);
|
|
810
|
+
return this;
|
|
811
|
+
}
|
|
812
|
+
setValueBinding(propertyPath) {
|
|
813
|
+
this._valueBinding$.next(propertyPath);
|
|
814
|
+
return this;
|
|
815
|
+
}
|
|
816
|
+
setKeyBinding(propertyPath) {
|
|
817
|
+
this._keyBinding$.next(propertyPath);
|
|
818
|
+
return this;
|
|
819
|
+
}
|
|
820
|
+
setLabelBinding(propertyPath) {
|
|
821
|
+
this._labelBinding$.next(propertyPath);
|
|
822
|
+
return this;
|
|
823
|
+
}
|
|
824
|
+
setOptions(options) {
|
|
825
|
+
this._options$.next(options);
|
|
826
|
+
return this;
|
|
827
|
+
}
|
|
828
|
+
setAllowMultiple(allowMultiple) {
|
|
829
|
+
this._allowMultiple$.next(allowMultiple);
|
|
830
|
+
return this;
|
|
831
|
+
}
|
|
832
|
+
setFilter(filter) {
|
|
833
|
+
const sanitizedFilter = filter?.trim() || '';
|
|
834
|
+
this._filter$.next(sanitizedFilter);
|
|
835
|
+
}
|
|
836
|
+
reset() {
|
|
837
|
+
this._selection$.next([]);
|
|
838
|
+
this._options$.next([]);
|
|
839
|
+
this._valueBinding$.next(null);
|
|
840
|
+
this._keyBinding$.next(null);
|
|
841
|
+
this._labelBinding$.next(null);
|
|
842
|
+
this._allowMultiple$.next(false);
|
|
843
|
+
}
|
|
844
|
+
getOptionByValue$(value) {
|
|
845
|
+
return this._optionsAndSelection$.pipe(map(() => this.getOptionByValue(value)));
|
|
846
|
+
}
|
|
847
|
+
getOptionByLabel$(label) {
|
|
848
|
+
return this._optionsAndSelection$.pipe(map(() => this.getOptionByLabel(label)));
|
|
849
|
+
}
|
|
850
|
+
getOptionByKey$(key) {
|
|
851
|
+
return this._optionsAndSelection$.pipe(map(() => this.getOptionByKey(key)));
|
|
852
|
+
}
|
|
853
|
+
isSelected$(option) {
|
|
854
|
+
return this._selection$.pipe(map(() => this.isSelected(option)));
|
|
855
|
+
}
|
|
856
|
+
getLabel$(option) {
|
|
857
|
+
return this.labelBinding$.pipe(map((labelBinding) => this.getOptionProperty(option, labelBinding)));
|
|
858
|
+
}
|
|
859
|
+
getValue$(option) {
|
|
860
|
+
return this.valueBinding$.pipe(map((valueBinding) => this.getOptionProperty(option, valueBinding)));
|
|
861
|
+
}
|
|
862
|
+
getKey$(option) {
|
|
863
|
+
return this.keyBinding$.pipe(map((keyBinding) => this.getOptionProperty(option, keyBinding)));
|
|
864
|
+
}
|
|
865
|
+
getOptionByValue(value) {
|
|
866
|
+
return this.getOption(value, this.valueBinding);
|
|
867
|
+
}
|
|
868
|
+
getOptionByLabel(label) {
|
|
869
|
+
return this.getOption(label, this.labelBinding);
|
|
870
|
+
}
|
|
871
|
+
getOptionByKey(key) {
|
|
872
|
+
return this.getOption(key, this.keyBinding);
|
|
873
|
+
}
|
|
874
|
+
getOption(value, propertyPath = null, options = [...this.options, ...this.selection]) {
|
|
875
|
+
if (!propertyPath) {
|
|
876
|
+
return options.find((option) => option === value);
|
|
877
|
+
}
|
|
878
|
+
return options.find((option) => {
|
|
879
|
+
if (!isObject(option))
|
|
880
|
+
return false;
|
|
881
|
+
return getObjectProperty(option, propertyPath) === value;
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
getOptionByIndex(index, options = this.getFilteredOptions()) {
|
|
885
|
+
return options[index] || null;
|
|
886
|
+
}
|
|
887
|
+
getOptionByOffset(offset, index, options = this.getFilteredOptions(), config = { clamp: true }) {
|
|
888
|
+
const { loop, clamp } = config;
|
|
889
|
+
const newIndex = index + offset;
|
|
890
|
+
const remainingOffset = newIndex * -1;
|
|
891
|
+
if (newIndex < 0) {
|
|
892
|
+
if (loop) {
|
|
893
|
+
return this.getOptionByOffset(remainingOffset, options.length - 1, options, config);
|
|
894
|
+
}
|
|
895
|
+
if (clamp) {
|
|
896
|
+
return this.getFirstOption();
|
|
897
|
+
}
|
|
898
|
+
return null;
|
|
899
|
+
}
|
|
900
|
+
if (newIndex >= options.length) {
|
|
901
|
+
if (loop) {
|
|
902
|
+
return this.getOptionByOffset(remainingOffset, 0, options, config);
|
|
903
|
+
}
|
|
904
|
+
if (clamp) {
|
|
905
|
+
return this.getLastOption();
|
|
906
|
+
}
|
|
907
|
+
return null;
|
|
908
|
+
}
|
|
909
|
+
return this.getOptionByIndex(newIndex);
|
|
910
|
+
}
|
|
911
|
+
getFirstOption(options = this.options) {
|
|
912
|
+
return this.getOptionByIndex(0, options);
|
|
913
|
+
}
|
|
914
|
+
getLastOption(options = this.options) {
|
|
915
|
+
return this.getOptionByIndex(options.length - 1, options);
|
|
916
|
+
}
|
|
917
|
+
getOptionIndex(option, options = this.options) {
|
|
918
|
+
const key = this.getKey(option);
|
|
919
|
+
const index = options.findIndex((o) => this.getKey(o) === key);
|
|
920
|
+
return index === -1 ? null : index;
|
|
921
|
+
}
|
|
922
|
+
getNonMultipleSelectedOption() {
|
|
923
|
+
if (this.allowMultiple)
|
|
924
|
+
return null;
|
|
925
|
+
return this.selection[0] || null;
|
|
926
|
+
}
|
|
927
|
+
getNonMultipleSelectedOptionIndex() {
|
|
928
|
+
if (this.allowMultiple)
|
|
929
|
+
return null;
|
|
930
|
+
const opt = this.getNonMultipleSelectedOption();
|
|
931
|
+
if (!opt)
|
|
932
|
+
return null;
|
|
933
|
+
return this.getOptionIndex(opt);
|
|
934
|
+
}
|
|
935
|
+
getNonMultipleOptionByOffsetFromSelected(offset, config = { clamp: true }) {
|
|
936
|
+
if (this.allowMultiple)
|
|
937
|
+
return null;
|
|
938
|
+
const index = this.getNonMultipleSelectedOptionIndex();
|
|
939
|
+
if (index === null)
|
|
940
|
+
return null;
|
|
941
|
+
return this.getOptionByOffset(index, offset, this.getFilteredOptions(), config);
|
|
942
|
+
}
|
|
943
|
+
getLabel(option) {
|
|
944
|
+
return this.getOptionProperty(option, this.labelBinding);
|
|
945
|
+
}
|
|
946
|
+
getValue(option) {
|
|
947
|
+
return this.getOptionProperty(option, this.valueBinding);
|
|
948
|
+
}
|
|
949
|
+
getKey(option) {
|
|
950
|
+
return this.getOptionProperty(option, this.keyBinding);
|
|
951
|
+
}
|
|
952
|
+
getOptionProperty(option, propertyPath) {
|
|
953
|
+
if (!propertyPath || !isObject(option))
|
|
954
|
+
return option;
|
|
955
|
+
return getObjectProperty(option, propertyPath);
|
|
956
|
+
}
|
|
957
|
+
isSelected(option) {
|
|
958
|
+
const optionKey = this.getOptionProperty(option, this.keyBinding);
|
|
959
|
+
return this.getOption(optionKey, this.keyBinding, this.selection) !== undefined;
|
|
960
|
+
}
|
|
961
|
+
getFilteredOptions(filter = this.filter, options = this.options) {
|
|
962
|
+
if (!filter)
|
|
963
|
+
return options;
|
|
964
|
+
const splitFilter = filter.split(' ').filter((f) => f);
|
|
965
|
+
return options.filter((option) => {
|
|
966
|
+
const label = this.getLabel(option);
|
|
967
|
+
if (!label || typeof label !== 'string')
|
|
968
|
+
return false;
|
|
969
|
+
const splitLabel = label.split(' ').filter((l) => l);
|
|
970
|
+
return splitFilter.every((f) => splitLabel.some((l) => l.toLowerCase().includes(f.toLowerCase())));
|
|
971
|
+
});
|
|
972
|
+
}
|
|
973
|
+
addSelectedOption(option) {
|
|
974
|
+
if (this.allowMultiple) {
|
|
975
|
+
if (this.isSelected(option))
|
|
976
|
+
return;
|
|
977
|
+
this._selection$.next([...this.selection, option]);
|
|
978
|
+
}
|
|
979
|
+
else {
|
|
980
|
+
this._selection$.next([option]);
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
removeSelectedOption(option) {
|
|
984
|
+
const optionKey = this.getOptionProperty(option, this.keyBinding);
|
|
985
|
+
if (!this.isSelected(option))
|
|
986
|
+
return;
|
|
987
|
+
this._selection$.next(this.selection.filter((selectedOption) => {
|
|
988
|
+
const key = this.getOptionProperty(selectedOption, this.keyBinding);
|
|
989
|
+
return key !== optionKey;
|
|
990
|
+
}));
|
|
991
|
+
}
|
|
992
|
+
clearSelectedOptions() {
|
|
993
|
+
this._selection$.next([]);
|
|
994
|
+
}
|
|
995
|
+
toggleSelectedOption(option) {
|
|
996
|
+
if (this.isSelected(option)) {
|
|
997
|
+
this.removeSelectedOption(option);
|
|
998
|
+
}
|
|
999
|
+
else {
|
|
1000
|
+
this.addSelectedOption(option);
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
toggleAllSelectedOptions() {
|
|
1004
|
+
const filteredOptions = this.getFilteredOptions();
|
|
1005
|
+
const unselectedOptions = filteredOptions.filter((option) => !this.isSelected(option));
|
|
1006
|
+
if (unselectedOptions.length) {
|
|
1007
|
+
const selection = unselectedOptions.filter((o) => !this.selection.some((s) => this.getKey(s) === this.getKey(o)));
|
|
1008
|
+
this._selection$.next([...this.selection, ...selection]);
|
|
1009
|
+
}
|
|
1010
|
+
else {
|
|
1011
|
+
const selection = this.selection.filter((s) => !filteredOptions.some((o) => this.getKey(o) === this.getKey(s)));
|
|
1012
|
+
this._selection$.next(selection);
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
|
|
699
1017
|
const scrollBehaviorSupported = supportsScrollBehavior();
|
|
700
1018
|
class SmartBlockScrollStrategy {
|
|
701
1019
|
constructor(_viewportRuler, _routerState, document) {
|
|
@@ -3040,5 +3358,5 @@ const Validators = {
|
|
|
3040
3358
|
* Generated bundle index. Do not edit.
|
|
3041
3359
|
*/
|
|
3042
3360
|
|
|
3043
|
-
export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AnimatableDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, BehaviorSubjectWithSubscriberCount, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_EMAIL, IsActiveElementDirective, IsArrayNotEmpty, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, Validators, ViewportService, clamp, clone, createDestroy, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isElementVisible, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, scrollToElement, setCookie, toArray, toArrayTrackByFn };
|
|
3361
|
+
export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AnimatableDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, BehaviorSubjectWithSubscriberCount, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_EMAIL, IsActiveElementDirective, IsArrayNotEmpty, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, Validators, ViewportService, clamp, clone, createDestroy, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isElementVisible, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, scrollToElement, setCookie, toArray, toArrayTrackByFn };
|
|
3044
3362
|
//# sourceMappingURL=ethlete-core.mjs.map
|