@ethlete/core 3.2.0 → 3.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/key-press-manager.utils.mjs +30 -0
- package/esm2022/lib/utils/public-api.mjs +2 -1
- package/fesm2022/ethlete-core.mjs +31 -2
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/lib/utils/key-press-manager.utils.d.ts +9 -0
- package/lib/utils/public-api.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BehaviorSubject, Subject, takeUntil, timer } from 'rxjs';
|
|
2
|
+
export class KeyPressManager {
|
|
3
|
+
constructor(key) {
|
|
4
|
+
this.key = key;
|
|
5
|
+
this._isKeyPressed$ = new BehaviorSubject(false);
|
|
6
|
+
this._keyPressCount$ = new BehaviorSubject(0);
|
|
7
|
+
this._stopTimeout$ = new Subject();
|
|
8
|
+
}
|
|
9
|
+
isPressed(event) {
|
|
10
|
+
const key = event.keyCode;
|
|
11
|
+
if (key === this.key) {
|
|
12
|
+
this._isKeyPressed$.next(this._keyPressCount$.value > 1);
|
|
13
|
+
this._keyPressCount$.next(this._keyPressCount$.value + 1);
|
|
14
|
+
this._stopTimeout$.next();
|
|
15
|
+
timer(100)
|
|
16
|
+
.pipe(takeUntil(this._stopTimeout$))
|
|
17
|
+
.subscribe(() => this.clear());
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.clear();
|
|
21
|
+
}
|
|
22
|
+
return this._isKeyPressed$.value;
|
|
23
|
+
}
|
|
24
|
+
clear() {
|
|
25
|
+
this._isKeyPressed$.next(false);
|
|
26
|
+
this._keyPressCount$.next(0);
|
|
27
|
+
this._stopTimeout$.next();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXByZXNzLW1hbmFnZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9rZXktcHJlc3MtbWFuYWdlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE1BQU0sT0FBTyxlQUFlO0lBTTFCLFlBQTRCLEdBQVc7UUFBWCxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBTHRCLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6QyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFWCxDQUFDO0lBRTNDLFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTFCLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUxQixLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUNuQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbEM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBLZXlQcmVzc01hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0tleVByZXNzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleVByZXNzQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9wVGltZW91dCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBrZXk6IG51bWJlcikge31cblxuICBpc1ByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgaWYgKGtleSA9PT0gdGhpcy5rZXkpIHtcbiAgICAgIHRoaXMuX2lzS2V5UHJlc3NlZCQubmV4dCh0aGlzLl9rZXlQcmVzc0NvdW50JC52YWx1ZSA+IDEpO1xuICAgICAgdGhpcy5fa2V5UHJlc3NDb3VudCQubmV4dCh0aGlzLl9rZXlQcmVzc0NvdW50JC52YWx1ZSArIDEpO1xuXG4gICAgICB0aGlzLl9zdG9wVGltZW91dCQubmV4dCgpO1xuXG4gICAgICB0aW1lcigxMDApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9zdG9wVGltZW91dCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faXNLZXlQcmVzc2VkJC52YWx1ZTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuX2lzS2V5UHJlc3NlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5fa2V5UHJlc3NDb3VudCQubmV4dCgwKTtcbiAgICB0aGlzLl9zdG9wVGltZW91dCQubmV4dCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -5,6 +5,7 @@ export * from './clone.util';
|
|
|
5
5
|
export * from './cookie.util';
|
|
6
6
|
export * from './destroy.utils';
|
|
7
7
|
export * from './equal.util';
|
|
8
|
+
export * from './key-press-manager.utils';
|
|
8
9
|
export * from './media-query-observable.util';
|
|
9
10
|
export * from './mutation-observable.util';
|
|
10
11
|
export * from './reactive-binding.util';
|
|
@@ -15,4 +16,4 @@ export * from './selection-model.utils';
|
|
|
15
16
|
export * from './smart-block-scroll-strategy.utils';
|
|
16
17
|
export * from './value.utils';
|
|
17
18
|
export * from './viewport.util';
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGl2ZS1zZWxlY3Rpb24tbW9kZWwudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFtcC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvbmUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nvb2tpZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2VxdWFsLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXktcHJlc3MtbWFuYWdlci51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL211dGF0aW9uLW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdW5kLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS1lcnJvci51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24tbW9kZWwudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydC1ibG9jay1zY3JvbGwtc3RyYXRlZ3kudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi92YWx1ZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0LnV0aWwnO1xuIl19
|
|
@@ -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, NgZone, EventEmitter, booleanAttribute, numberAttribute, Output, Injector, ViewContainerRef, TemplateRef, Pipe, QueryList } from '@angular/core';
|
|
3
3
|
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
4
|
-
import { Subject, BehaviorSubject, takeUntil, switchMap, of, tap, Observable, combineLatest, startWith, map, distinctUntilChanged, shareReplay, skip, take, debounceTime, merge, fromEvent, filter, pairwise, finalize } from 'rxjs';
|
|
4
|
+
import { Subject, BehaviorSubject, takeUntil, switchMap, of, tap, Observable, combineLatest, timer, startWith, map, distinctUntilChanged, shareReplay, skip, take, debounceTime, merge, fromEvent, filter, pairwise, finalize } from 'rxjs';
|
|
5
5
|
import { END, HOME, PAGE_DOWN, PAGE_UP, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
|
|
6
6
|
import { coerceCssPixelValue, coerceElement } from '@angular/cdk/coercion';
|
|
7
7
|
import { supportsScrollBehavior } from '@angular/cdk/platform';
|
|
@@ -545,6 +545,35 @@ const equal = (foo, bar) => {
|
|
|
545
545
|
return foo !== foo && bar !== bar;
|
|
546
546
|
};
|
|
547
547
|
|
|
548
|
+
class KeyPressManager {
|
|
549
|
+
constructor(key) {
|
|
550
|
+
this.key = key;
|
|
551
|
+
this._isKeyPressed$ = new BehaviorSubject(false);
|
|
552
|
+
this._keyPressCount$ = new BehaviorSubject(0);
|
|
553
|
+
this._stopTimeout$ = new Subject();
|
|
554
|
+
}
|
|
555
|
+
isPressed(event) {
|
|
556
|
+
const key = event.keyCode;
|
|
557
|
+
if (key === this.key) {
|
|
558
|
+
this._isKeyPressed$.next(this._keyPressCount$.value > 1);
|
|
559
|
+
this._keyPressCount$.next(this._keyPressCount$.value + 1);
|
|
560
|
+
this._stopTimeout$.next();
|
|
561
|
+
timer(100)
|
|
562
|
+
.pipe(takeUntil(this._stopTimeout$))
|
|
563
|
+
.subscribe(() => this.clear());
|
|
564
|
+
}
|
|
565
|
+
else {
|
|
566
|
+
this.clear();
|
|
567
|
+
}
|
|
568
|
+
return this._isKeyPressed$.value;
|
|
569
|
+
}
|
|
570
|
+
clear() {
|
|
571
|
+
this._isKeyPressed$.next(false);
|
|
572
|
+
this._keyPressCount$.next(0);
|
|
573
|
+
this._stopTimeout$.next();
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
548
577
|
const createMediaQueryObservable = (query) => {
|
|
549
578
|
const mq = window.matchMedia(query);
|
|
550
579
|
const observable = new Observable((observer) => {
|
|
@@ -3717,5 +3746,5 @@ const Validators = {
|
|
|
3717
3746
|
* Generated bundle index. Do not edit.
|
|
3718
3747
|
*/
|
|
3719
3748
|
|
|
3720
|
-
export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, ActiveSelectionModel, AnimatableDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_ELEMENT, IS_EMAIL, IsActiveElementDirective, IsArrayNotEmpty, IsElementDirective, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ValidateAtLeastOneRequired, Validators, ViewportService, clamp, clone, createDestroy, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createMutationObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementVisibleStates, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isElementVisible, isEmptyArray, isGroupMatch, isKnockoutMatch, isObjectArray, isPrimitiveArray, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, round, routerDisableScrollTop, scrollToElement, setCookie, toArray, toArrayTrackByFn };
|
|
3749
|
+
export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, ActiveSelectionModel, AnimatableDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_ELEMENT, IS_EMAIL, IsActiveElementDirective, IsArrayNotEmpty, IsElementDirective, IsEmail, KeyPressManager, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ValidateAtLeastOneRequired, Validators, ViewportService, clamp, clone, createDestroy, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createMutationObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementVisibleStates, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isElementVisible, isEmptyArray, isGroupMatch, isKnockoutMatch, isObjectArray, isPrimitiveArray, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, round, routerDisableScrollTop, scrollToElement, setCookie, toArray, toArrayTrackByFn };
|
|
3721
3750
|
//# sourceMappingURL=ethlete-core.mjs.map
|