@cuby-ui/cdk 0.0.205 → 0.0.207
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/directives/index.d.ts +1 -0
- package/directives/ladder-list.directive.d.ts +13 -0
- package/esm2022/directives/index.mjs +2 -1
- package/esm2022/directives/ladder-list.directive.mjs +42 -0
- package/fesm2022/cuby-ui-cdk.mjs +42 -2
- package/fesm2022/cuby-ui-cdk.mjs.map +1 -1
- package/package.json +1 -1
package/directives/index.d.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class CuiLadderListDirective {
|
|
3
|
+
private readonly zone;
|
|
4
|
+
private readonly element;
|
|
5
|
+
private readonly LIST_ITEM_MARGIN_LEFT;
|
|
6
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
7
|
+
constructor();
|
|
8
|
+
private initElementsEffect;
|
|
9
|
+
private initObserver;
|
|
10
|
+
private calculateListItemsMargin;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CuiLadderListDirective, never>;
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CuiLadderListDirective, "[cuiLadderList]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
|
|
13
|
+
}
|
|
@@ -10,4 +10,5 @@ export * from './item.directive';
|
|
|
10
10
|
export * from './let.context';
|
|
11
11
|
export * from './let.directive';
|
|
12
12
|
export * from './target.directive';
|
|
13
|
-
|
|
13
|
+
export * from './ladder-list.directive';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3RpdmUtem9uZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaG92ZXJlZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0by1yZXNpemluZy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaW1lbnNpb25zLW9ic2VydmVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC1lZGl0YWJsZS12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9mb2N1cy10cmFwLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXRlbS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xldC5jb250ZXh0JztcclxuZXhwb3J0ICogZnJvbSAnLi9sZXQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi90YXJnZXQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sYWRkZXItbGlzdC5kaXJlY3RpdmUnO1xyXG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, effect, ElementRef, inject, input, NgZone } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CuiLadderListDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.zone = inject(NgZone);
|
|
6
|
+
this.element = inject(ElementRef).nativeElement;
|
|
7
|
+
this.LIST_ITEM_MARGIN_LEFT = 16;
|
|
8
|
+
this.disabled = input(false);
|
|
9
|
+
effect(() => {
|
|
10
|
+
this.initElementsEffect();
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
initElementsEffect() {
|
|
14
|
+
this.zone.runOutsideAngular(this.initObserver.bind(this));
|
|
15
|
+
}
|
|
16
|
+
initObserver() {
|
|
17
|
+
const observer = new MutationObserver(this.calculateListItemsMargin.bind(this));
|
|
18
|
+
observer.observe(this.element, { childList: true });
|
|
19
|
+
}
|
|
20
|
+
calculateListItemsMargin() {
|
|
21
|
+
if (this.disabled()) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
let index = 0;
|
|
25
|
+
this.element.childNodes.forEach((node) => {
|
|
26
|
+
if (!(node instanceof HTMLElement)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
node.style.marginLeft = index * this.LIST_ITEM_MARGIN_LEFT + 'px';
|
|
30
|
+
index += 1;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiLadderListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: CuiLadderListDirective, selector: "[cuiLadderList]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiLadderListDirective, decorators: [{
|
|
37
|
+
type: Directive,
|
|
38
|
+
args: [{
|
|
39
|
+
selector: '[cuiLadderList]'
|
|
40
|
+
}]
|
|
41
|
+
}], ctorParameters: () => [] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFkZGVyLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RpcmVjdGl2ZXMvbGFkZGVyLWxpc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLckYsTUFBTSxPQUFPLHNCQUFzQjtJQVEvQjtRQVBpQixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVwRSwwQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFNUIsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUdwQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sWUFBWTtRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVoRixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsRSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXZDUSxzQkFBc0I7bUdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY3VpTGFkZGVyTGlzdF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlMYWRkZXJMaXN0RGlyZWN0aXZlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgTElTVF9JVEVNX01BUkdJTl9MRUZUID0gMTY7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdEVsZW1lbnRzRWZmZWN0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0RWxlbWVudHNFZmZlY3QoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKHRoaXMuaW5pdE9ic2VydmVyLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdE9ic2VydmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5jYWxjdWxhdGVMaXN0SXRlbXNNYXJnaW4uYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbGN1bGF0ZUxpc3RJdGVtc01hcmdpbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBpbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudC5jaGlsZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBub2RlLnN0eWxlLm1hcmdpbkxlZnQgPSBpbmRleCAqIHRoaXMuTElTVF9JVEVNX01BUkdJTl9MRUZUICsgJ3B4JztcclxuICAgICAgICAgICAgaW5kZXggKz0gMTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
package/fesm2022/cuby-ui-cdk.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { QueryList, inject, ChangeDetectorRef, NgZone, InjectionToken, ElementRef, Directive, Output, Input, Injectable, HostListener, EventEmitter, HostBinding, ViewContainerRef, TemplateRef, Pipe } from '@angular/core';
|
|
2
|
+
import { QueryList, inject, ChangeDetectorRef, NgZone, InjectionToken, ElementRef, Directive, Output, Input, Injectable, HostListener, EventEmitter, HostBinding, ViewContainerRef, TemplateRef, input, effect, Pipe } from '@angular/core';
|
|
3
3
|
import { __decorate } from 'tslib';
|
|
4
4
|
import { NgControl, NgModel, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import { pipe, switchMap, EMPTY, fromEvent, tap, Observable, asyncScheduler, BehaviorSubject, timer, map, startWith, share, merge, filter, takeUntil, repeat, withLatestFrom, of, take, distinctUntilChanged, skip, Subject } from 'rxjs';
|
|
@@ -1093,6 +1093,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1093
1093
|
type: Output
|
|
1094
1094
|
}] } });
|
|
1095
1095
|
|
|
1096
|
+
class CuiLadderListDirective {
|
|
1097
|
+
constructor() {
|
|
1098
|
+
this.zone = inject(NgZone);
|
|
1099
|
+
this.element = inject(ElementRef).nativeElement;
|
|
1100
|
+
this.LIST_ITEM_MARGIN_LEFT = 16;
|
|
1101
|
+
this.disabled = input(false);
|
|
1102
|
+
effect(() => {
|
|
1103
|
+
this.initElementsEffect();
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1106
|
+
initElementsEffect() {
|
|
1107
|
+
this.zone.runOutsideAngular(this.initObserver.bind(this));
|
|
1108
|
+
}
|
|
1109
|
+
initObserver() {
|
|
1110
|
+
const observer = new MutationObserver(this.calculateListItemsMargin.bind(this));
|
|
1111
|
+
observer.observe(this.element, { childList: true });
|
|
1112
|
+
}
|
|
1113
|
+
calculateListItemsMargin() {
|
|
1114
|
+
if (this.disabled()) {
|
|
1115
|
+
return;
|
|
1116
|
+
}
|
|
1117
|
+
let index = 0;
|
|
1118
|
+
this.element.childNodes.forEach((node) => {
|
|
1119
|
+
if (!(node instanceof HTMLElement)) {
|
|
1120
|
+
return;
|
|
1121
|
+
}
|
|
1122
|
+
node.style.marginLeft = index * this.LIST_ITEM_MARGIN_LEFT + 'px';
|
|
1123
|
+
index += 1;
|
|
1124
|
+
});
|
|
1125
|
+
}
|
|
1126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiLadderListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1127
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: CuiLadderListDirective, selector: "[cuiLadderList]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
1128
|
+
}
|
|
1129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiLadderListDirective, decorators: [{
|
|
1130
|
+
type: Directive,
|
|
1131
|
+
args: [{
|
|
1132
|
+
selector: '[cuiLadderList]'
|
|
1133
|
+
}]
|
|
1134
|
+
}], ctorParameters: () => [] });
|
|
1135
|
+
|
|
1096
1136
|
class CuiFilterPipe {
|
|
1097
1137
|
transform(items, matcher, ...args) {
|
|
1098
1138
|
return items.filter(item => matcher(item, ...args));
|
|
@@ -1112,5 +1152,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1112
1152
|
* Generated bundle index. Do not edit.
|
|
1113
1153
|
*/
|
|
1114
1154
|
|
|
1115
|
-
export { CUI_ACTIVE_ELEMENT, CUI_ANIMATION_FRAME, CUI_FALSE_HANDLER, CUI_HISTORY, CUI_IOS_REG_EXP, CUI_IS_ANDROID, CUI_IS_CYPRESS, CUI_IS_E2E, CUI_IS_IOS, CUI_IS_MOBILE, CUI_IS_PLAYWRIGHT, CUI_IS_TOUCH, CUI_IS_WEBKIT, CUI_LOCAL_STORAGE, CUI_NAVIGATOR, CUI_PLATFORM, CUI_REMOVED_ELEMENT, CUI_SAFARI_REG_EXP, CUI_SESSION_STORAGE, CUI_TRUE_HANDLER, CUI_USER_AGENT, CUI_WINDOW, CuiActiveZone, CuiAutoResizingDirective, CuiClickOutsideDirective, CuiContentEditableValueAccessorDirective, CuiDestroyService, CuiDimensionsObserverDirective, CuiElementDirective, CuiFilterPipe, CuiFocusTrapDirective, CuiHovered, CuiHoveredService, CuiIdService, CuiItemDirective, CuiLetContext, CuiLetDirective, CuiPopoverService, CuiPureException, CuiTargetDirective, CuiTime, EMPTY_ARRAY, EMPTY_CLIENT_RECT, EMPTY_FUNCTION, EMPTY_QUERY, cuiArrayRemove, cuiBlurNativeFocused, cuiClamp, cuiContainsOrAfter, cuiCreateToken, cuiCreateTokenFromFactory, cuiGetActualTarget, cuiGetClosestFocusable, cuiGetDocumentOrShadowRoot, cuiGetElementObscures, cuiGetNativeFocused, cuiHovered, cuiIfMap, cuiInjectElement, cuiIsElement, cuiIsHTMLElement, cuiIsInput, cuiIsIos, cuiIsNativeFocused, cuiIsNativeKeyboardFocusable, cuiIsNativeMouseFocusable, cuiIsPresent, cuiIsTextNode, cuiIsTextarea, cuiIsTextfield, cuiPointToClientRect, cuiProvide, cuiPure, cuiPx, cuiTypedFromEvent, cuiWatch, cuiZoneOptimized, cuiZonefree, cuiZonefreeScheduler, cuiZonefull, cuiZonefullScheduler, svgNodeFilter };
|
|
1155
|
+
export { CUI_ACTIVE_ELEMENT, CUI_ANIMATION_FRAME, CUI_FALSE_HANDLER, CUI_HISTORY, CUI_IOS_REG_EXP, CUI_IS_ANDROID, CUI_IS_CYPRESS, CUI_IS_E2E, CUI_IS_IOS, CUI_IS_MOBILE, CUI_IS_PLAYWRIGHT, CUI_IS_TOUCH, CUI_IS_WEBKIT, CUI_LOCAL_STORAGE, CUI_NAVIGATOR, CUI_PLATFORM, CUI_REMOVED_ELEMENT, CUI_SAFARI_REG_EXP, CUI_SESSION_STORAGE, CUI_TRUE_HANDLER, CUI_USER_AGENT, CUI_WINDOW, CuiActiveZone, CuiAutoResizingDirective, CuiClickOutsideDirective, CuiContentEditableValueAccessorDirective, CuiDestroyService, CuiDimensionsObserverDirective, CuiElementDirective, CuiFilterPipe, CuiFocusTrapDirective, CuiHovered, CuiHoveredService, CuiIdService, CuiItemDirective, CuiLadderListDirective, CuiLetContext, CuiLetDirective, CuiPopoverService, CuiPureException, CuiTargetDirective, CuiTime, EMPTY_ARRAY, EMPTY_CLIENT_RECT, EMPTY_FUNCTION, EMPTY_QUERY, cuiArrayRemove, cuiBlurNativeFocused, cuiClamp, cuiContainsOrAfter, cuiCreateToken, cuiCreateTokenFromFactory, cuiGetActualTarget, cuiGetClosestFocusable, cuiGetDocumentOrShadowRoot, cuiGetElementObscures, cuiGetNativeFocused, cuiHovered, cuiIfMap, cuiInjectElement, cuiIsElement, cuiIsHTMLElement, cuiIsInput, cuiIsIos, cuiIsNativeFocused, cuiIsNativeKeyboardFocusable, cuiIsNativeMouseFocusable, cuiIsPresent, cuiIsTextNode, cuiIsTextarea, cuiIsTextfield, cuiPointToClientRect, cuiProvide, cuiPure, cuiPx, cuiTypedFromEvent, cuiWatch, cuiZoneOptimized, cuiZonefree, cuiZonefreeScheduler, cuiZonefull, cuiZonefullScheduler, svgNodeFilter };
|
|
1116
1156
|
//# sourceMappingURL=cuby-ui-cdk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/date-time/time.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/utils/token/create-token.ts","../../../projects/cdk/utils/token/provide.ts","../../../projects/cdk/tokens/window.ts","../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/math/clamp.ts","../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/platform/is-ios.ts","../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/animation-frame.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/history.ts","../../../projects/cdk/tokens/local-storage.ts","../../../projects/cdk/tokens/navigator.ts","../../../projects/cdk/tokens/session-storage.ts","../../../projects/cdk/tokens/user-agent.ts","../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/hovered/hovered.service.ts","../../../projects/cdk/directives/hovered/hovered.directive.ts","../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/directives/click-outside.directive.ts","../../../projects/cdk/directives/dimensions-observer.directive.ts","../../../projects/cdk/directives/content-editable-value-accessor.directive.ts","../../../projects/cdk/directives/element.directive.ts","../../../projects/cdk/directives/focus-trap.directive.ts","../../../projects/cdk/directives/item.directive.ts","../../../projects/cdk/directives/let.context.ts","../../../projects/cdk/directives/let.directive.ts","../../../projects/cdk/directives/target.directive.ts","../../../projects/cdk/pipes/filter.pipe.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import {QueryList} from '@angular/core';\r\n\r\nconst rect = {\r\n bottom: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n width: 0,\r\n x: 0,\r\n y: 0,\r\n} as const;\r\n\r\n/**\r\n * For type safety when using @ContentChildren and @ViewChildren\r\n *\r\n * NOTE: Be careful subscribing to 'changes'\r\n */\r\nexport const EMPTY_QUERY = new QueryList<any>();\r\nexport const EMPTY_ARRAY: [] = [];\r\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\r\nexport const EMPTY_CLIENT_RECT: DOMRect = {\r\n ...rect,\r\n toJSON: () => rect,\r\n};\r\n","/**\r\n * Handler that always returns `false`.\r\n */\r\n// eslint-disable-next-line no-restricted-syntax\r\nexport const CUI_FALSE_HANDLER = (): false => false;\r\n\r\n/**\r\n * Handler that always returns `true`.\r\n */\r\n// eslint-disable-next-line no-restricted-syntax\r\nexport const CUI_TRUE_HANDLER = (): true => true;\r\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\r\n acceptNode(node: Node): number {\r\n return 'ownerSVGElement' in node\r\n ? NodeFilter.FILTER_REJECT\r\n : NodeFilter.FILTER_ACCEPT;\r\n },\r\n};","import type { CuiTimeMode } from '../types';\r\n\r\nexport class CuiTime {\r\n constructor(\r\n public readonly hours: number,\r\n public readonly minutes: number,\r\n public readonly seconds = 0,\r\n public readonly ms = 0,\r\n ) {\r\n }\r\n\r\n public static fromString(time: string): CuiTime {\r\n const hours = this.parseHours(time);\r\n const minutes = Number(time.slice(3, 5)) || 0;\r\n const seconds = Number(time.slice(6, 8)) || 0;\r\n const ms = Number(time.slice(9, 12)) || 0;\r\n\r\n return new CuiTime(hours, minutes, seconds, ms);\r\n }\r\n\r\n public static fromPT(time: string): CuiTime {\r\n let duration = time.trim().toUpperCase();\r\n\r\n if (!duration.startsWith('P')) {\r\n throw new Error('Invalid PT format: does not start with P');\r\n }\r\n\r\n duration = duration.substring(1);\r\n\r\n if (duration.startsWith('T')) {\r\n duration = duration.substring(1);\r\n }\r\n\r\n const regex = /(\\d+(\\.\\d+)?)([HMS])/g;\r\n let match;\r\n let hours = 0,\r\n minutes = 0,\r\n seconds = 0,\r\n ms = 0;\r\n\r\n while ((match = regex.exec(duration)) !== null) {\r\n const value = parseFloat(match[1]);\r\n const unit = match[3];\r\n\r\n if (unit === 'H') {\r\n hours = value;\r\n } else if (unit === 'M') {\r\n minutes = value;\r\n } else if (unit === 'S') {\r\n seconds = Math.floor(value);\r\n ms = Math.round((value - seconds) * 1000);\r\n }\r\n }\r\n\r\n return new CuiTime(hours, minutes, seconds, ms);\r\n }\r\n\r\n private static parseHours(time: string): number {\r\n return Number(time.slice(0, 2));\r\n }\r\n\r\n public toString(mode?: CuiTimeMode): string {\r\n const needAddMs = mode?.startsWith('HH:MM:SS.MSS') || (!mode && this.ms > 0);\r\n const needAddSeconds =\r\n needAddMs || mode?.startsWith('HH:MM:SS') || (!mode && this.seconds > 0);\r\n const hhMm = `${this.formatTime(this.hours)}:${this.formatTime(this.minutes)}`;\r\n const ss = needAddSeconds ? `:${this.formatTime(this.seconds)}` : '';\r\n const mss = needAddMs ? `.${this.formatTime(this.ms, 3)}` : '';\r\n\r\n return `${hhMm}${ss}${mss}`;\r\n }\r\n\r\n public toPT(mode?: CuiTimeMode): string {\r\n let duration = 'PT';\r\n if (this.hours !== 0) {\r\n duration += `${this.hours}H`;\r\n }\r\n\r\n if (this.minutes !== 0) {\r\n duration += `${this.minutes}M`;\r\n }\r\n\r\n const totalSeconds = this.seconds + this.ms / 1000;\r\n\r\n if (totalSeconds !== 0 || duration === 'PT') {\r\n duration += `${parseFloat(totalSeconds.toFixed(3))}S`;\r\n }\r\n\r\n return duration;\r\n }\r\n\r\n private formatTime(time: number, digits = 2): string {\r\n return String(time).padStart(digits, '0');\r\n }\r\n}","import type {CuiBooleanHandler} from '../types';\r\nimport type {Observable, OperatorFunction} from 'rxjs';\r\nimport {EMPTY, pipe, switchMap} from 'rxjs';\r\n\r\nexport function cuiIfMap<T, G>(\r\n project: (value: T) => Observable<G>,\r\n predicate: CuiBooleanHandler<T> = Boolean,\r\n): OperatorFunction<T, G> {\r\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\r\n}\r\n","import type {Observable} from 'rxjs';\r\nimport {fromEvent} from 'rxjs';\r\n\r\nexport interface CuiTypedEventTarget<E> {\r\n addEventListener(\r\n type: string,\r\n listener: ((evt: E) => void) | null,\r\n options?: AddEventListenerOptions | boolean,\r\n ): void;\r\n removeEventListener(\r\n type: string,\r\n listener?: ((evt: E) => void) | null,\r\n options?: EventListenerOptions | boolean,\r\n ): void;\r\n}\r\n\r\n/**\r\n * Wrapper around {@link Event} to add typings to target and currentTarget.\r\n */\r\nexport type CuiEventWith<G extends Event, T extends CuiTypedEventTarget<G>> = G & {\r\n readonly currentTarget: T;\r\n};\r\n\r\nexport function cuiTypedFromEvent<E extends keyof WindowEventMap>(\r\n target: Window,\r\n event: E,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<WindowEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<E extends keyof DocumentEventMap>(\r\n target: Document,\r\n event: E,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<DocumentEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\r\n target: T,\r\n event: E,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<HTMLElementEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<\r\n E extends Event,\r\n T extends CuiTypedEventTarget<CuiEventWith<E, T>>,\r\n>(\r\n target: T,\r\n event: string,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<E, T>>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event>(\r\n target: CuiTypedEventTarget<E>,\r\n event: string,\r\n options?: AddEventListenerOptions,\r\n): Observable<E>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event>(\r\n target: CuiTypedEventTarget<E>,\r\n event: string,\r\n options: AddEventListenerOptions = {},\r\n): Observable<E> {\r\n /**\r\n * @note:\r\n * in RxJS 7 type signature `CuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\r\n */\r\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\r\n}\r\n","import {ChangeDetectorRef, inject} from '@angular/core';\r\nimport type {MonoTypeOperatorFunction} from 'rxjs';\r\nimport {tap} from 'rxjs';\r\n\r\nexport function cuiWatch<T>(\r\n cdr = inject(ChangeDetectorRef),\r\n): MonoTypeOperatorFunction<T> {\r\n return tap(() => cdr.markForCheck());\r\n}\r\n","import {inject, NgZone} from '@angular/core';\r\nimport type {MonoTypeOperatorFunction, SchedulerLike, Subscription} from 'rxjs';\r\nimport {asyncScheduler, Observable, pipe} from 'rxjs';\r\n\r\nexport function cuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return (source) =>\r\n new Observable((subscriber) =>\r\n source.subscribe({\r\n next: (value) => zone.run(() => subscriber.next(value)),\r\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\r\n complete: () => zone.run(() => subscriber.complete()),\r\n }),\r\n );\r\n}\r\n\r\nexport function cuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return (source) =>\r\n new Observable((subscriber) =>\r\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\r\n );\r\n}\r\n\r\nexport function cuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return pipe(cuiZonefree(zone), cuiZonefull(zone));\r\n}\r\n\r\nclass CuiZoneScheduler implements SchedulerLike {\r\n constructor(\r\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\r\n private readonly scheduler: SchedulerLike = asyncScheduler,\r\n ) {}\r\n\r\n public now(): number {\r\n return this.scheduler.now();\r\n }\r\n\r\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\r\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\r\n }\r\n}\r\n\r\nexport function cuiZonefreeScheduler(\r\n zone = inject(NgZone),\r\n scheduler: SchedulerLike = asyncScheduler,\r\n): SchedulerLike {\r\n return new CuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\r\n}\r\n\r\nexport function cuiZonefullScheduler(\r\n zone = inject(NgZone),\r\n scheduler: SchedulerLike = asyncScheduler,\r\n): SchedulerLike {\r\n return new CuiZoneScheduler(zone.run.bind(zone), scheduler);\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport function cuiCreateToken<T>(defaults: T): InjectionToken<T> {\r\n return cuiCreateTokenFromFactory(() => defaults);\r\n}\r\n\r\nexport function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\r\n return new InjectionToken<T>('', { factory });\r\n}\r\n","import type { ExistingProvider, ProviderToken } from '@angular/core';\r\n\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T>,\r\n useExisting: ProviderToken<T>,\r\n): ExistingProvider;\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T | T[]>,\r\n useExisting: ProviderToken<T>,\r\n multi: boolean,\r\n): ExistingProvider;\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T>,\r\n useExisting: ProviderToken<T>,\r\n multi = false,\r\n): ExistingProvider {\r\n return { provide, useExisting, multi };\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_WINDOW = cuiCreateTokenFromFactory<Window>(() => {\r\n const { defaultView } = inject(DOCUMENT);\r\n\r\n if (!defaultView) {\r\n throw new Error('Window is not available');\r\n }\r\n\r\n return defaultView;\r\n});","export function cuiContainsOrAfter(current: Node, node: Node): boolean {\r\n try {\r\n return (\r\n current.contains(node) ||\r\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\r\n );\r\n } catch {\r\n return false;\r\n }\r\n}","export function cuiIsInput(element: Element): element is HTMLInputElement {\r\n return element.matches('input');\r\n}\r\n\r\nexport function cuiIsTextarea(element: Element): element is HTMLTextAreaElement {\r\n return element.matches('textarea');\r\n}\r\n\r\nexport function cuiIsTextfield(\r\n element: Element,\r\n): element is HTMLInputElement | HTMLTextAreaElement {\r\n return cuiIsInput(element) || cuiIsTextarea(element);\r\n}\r\n\r\nexport function cuiIsElement(\r\n node?: Element | EventTarget | Node | null,\r\n): node is Element {\r\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\r\n}\r\n\r\nexport function cuiIsHTMLElement(node: unknown): node is HTMLElement {\r\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\r\n\r\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\r\n}\r\n\r\nexport function cuiIsTextNode(node: Node): node is Text {\r\n return node.nodeType === Node.TEXT_NODE;\r\n}\r\n","/**\r\n * Gets actual target from open Shadow DOM if event happened within it\r\n */\r\nexport function cuiGetActualTarget(event: Event): Node {\r\n return event.composedPath()[0] as Node;\r\n}\r\n","export function cuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\r\n return 'getRootNode' in node && node.isConnected\r\n ? (node.getRootNode() as Document)\r\n : (node.ownerDocument as DocumentOrShadowRoot);\r\n}\r\n","/**\r\n * Clamps a value between two inclusive limits\r\n *\r\n * @param value\r\n * @param min lower limit\r\n * @param max upper limit\r\n */\r\nexport function cuiClamp(value: number, min: number, max: number): number {\r\n return Math.min(max, Math.max(min, value));\r\n}\r\n","export function cuiArrayRemove<T>(array: readonly T[], index: number): T[] {\r\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\r\n}\r\n","export function cuiIsPresent<T>(value?: T | null): value is T {\r\n return value !== null && value !== undefined;\r\n}\r\n","function decorateMethod(\r\n originalMethod: (...args: unknown[]) => unknown,\r\n): (this: object, ...args: unknown[]) => unknown {\r\n let previousArgs: readonly unknown[] = [];\r\n let originalFnWasCalledLeastAtOnce = false;\r\n let pureValue: unknown;\r\n\r\n return function cuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\r\n const isPure =\r\n originalFnWasCalledLeastAtOnce &&\r\n previousArgs.length === args.length &&\r\n args.every((arg, index) => arg === previousArgs[index]);\r\n\r\n if (isPure) {\r\n return pureValue;\r\n }\r\n\r\n previousArgs = args;\r\n pureValue = originalMethod.apply(this, args);\r\n originalFnWasCalledLeastAtOnce = true;\r\n\r\n return pureValue;\r\n };\r\n}\r\n\r\nfunction decorateGetter(\r\n originalGetter: () => unknown,\r\n propertyKey: string | symbol,\r\n enumerable = true,\r\n): (this: object) => unknown {\r\n return function cuiPureGetterPatched(this: object): unknown {\r\n const value = originalGetter.call(this);\r\n\r\n Object.defineProperty(this, propertyKey, {enumerable, value});\r\n\r\n return value;\r\n };\r\n}\r\n\r\n/**\r\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\r\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\r\n * value for function, skipping calculation when arguments are strictly the same.\r\n *\r\n * @throws error if used not on getter or function\r\n *\r\n * CAUTION: they must be pure.\r\n */\r\nexport function cuiPure<T>(\r\n target: object,\r\n propertyKey: string,\r\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\r\n): TypedPropertyDescriptor<T>;\r\n\r\n/**\r\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\r\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\r\n * value for function, skipping calculation when arguments are strictly the same.\r\n *\r\n * CAUTION: they must be pure.\r\n */\r\nexport function cuiPure<A extends unknown[], R>(\r\n target: (...args: A) => R,\r\n context: any\r\n): (...args: A) => R;\r\n\r\nexport function cuiPure(\r\n target: object | ((...args: unknown[]) => unknown),\r\n propertyKeyOrContext:\r\n any\r\n | string,\r\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\r\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\r\n if (typeof target === 'function') {\r\n const context = propertyKeyOrContext as\r\n any;\r\n\r\n if (context.kind === 'getter') {\r\n return decorateGetter(target as () => unknown, context.name);\r\n }\r\n\r\n if (context.kind === 'method') {\r\n return decorateMethod(target as (...args: unknown[]) => unknown);\r\n }\r\n\r\n throw new CuiPureException();\r\n }\r\n\r\n const {get, enumerable, value} = descriptor!;\r\n const propertyKey = propertyKeyOrContext as string;\r\n\r\n if (get) {\r\n return {\r\n configurable: true,\r\n enumerable,\r\n get: decorateGetter(get, propertyKey, enumerable),\r\n };\r\n }\r\n\r\n if (typeof value !== 'function') {\r\n throw new CuiPureException();\r\n }\r\n\r\n const original = value;\r\n\r\n return {\r\n configurable: true,\r\n enumerable,\r\n get(): unknown {\r\n let previousArgs: readonly unknown[] = [];\r\n let originalFnWasCalledLeastAtOnce = false;\r\n let pureValue: unknown;\r\n\r\n const patched = (...args: unknown[]): unknown => {\r\n const isPure =\r\n originalFnWasCalledLeastAtOnce &&\r\n previousArgs.length === args.length &&\r\n args.every((arg, index) => arg === previousArgs[index]);\r\n\r\n if (isPure) {\r\n return pureValue;\r\n }\r\n\r\n previousArgs = args;\r\n pureValue = original.apply(this, args);\r\n originalFnWasCalledLeastAtOnce = true;\r\n\r\n return pureValue;\r\n };\r\n\r\n Object.defineProperty(this, propertyKey, {\r\n configurable: true,\r\n value: patched,\r\n });\r\n\r\n return patched as unknown;\r\n },\r\n };\r\n}\r\n\r\nexport class CuiPureException extends Error {\r\n constructor() {\r\n super('cuiPure can only be used with functions or getters');\r\n }\r\n}\r\n","/**\r\n * Adds 'px' to the number and turns it into a string\r\n */\r\nexport function cuiPx(value: number): string {\r\n return `${value}px`;\r\n}\r\n","import {cuiClamp} from '../math';\r\nimport {cuiIsPresent} from '../miscellaneous';\r\n\r\nimport {cuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\r\n\r\n/**\r\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\r\n *\r\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\r\n * ```ts\r\n * function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\r\n * ```\r\n */\r\nexport function cuiGetElementObscures(\r\n element: Element,\r\n): readonly [Element, Element, Element, Element] | [] | null {\r\n const {ownerDocument} = element;\r\n\r\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\r\n return null;\r\n }\r\n\r\n const {innerWidth, innerHeight} = ownerDocument.defaultView;\r\n const doc = cuiGetDocumentOrShadowRoot(element);\r\n const rect = element.getBoundingClientRect();\r\n\r\n if (rect.width === 0 && rect.height === 0) {\r\n return null;\r\n }\r\n\r\n const left = cuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\r\n const top = cuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\r\n const right = cuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\r\n const bottom = cuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\r\n const horizontalMiddle = cuiClamp(\r\n Math.round(rect.left + rect.width / 2),\r\n 0,\r\n innerWidth,\r\n );\r\n const verticalMiddle = cuiClamp(\r\n Math.round(rect.top + rect.height / 2),\r\n 0,\r\n innerHeight,\r\n );\r\n const elements = [\r\n doc.elementFromPoint(horizontalMiddle, top),\r\n doc.elementFromPoint(horizontalMiddle, bottom),\r\n doc.elementFromPoint(left, verticalMiddle),\r\n doc.elementFromPoint(right, verticalMiddle),\r\n ];\r\n const nonNull = elements.filter(cuiIsPresent);\r\n\r\n if (!nonNull.length) {\r\n return [];\r\n }\r\n\r\n const filtered = nonNull.filter(\r\n (el) => !element.contains(el) && !el.contains(element),\r\n );\r\n\r\n return filtered.length === 4\r\n ? (filtered as [Element, Element, Element, Element])\r\n : null;\r\n}\r\n","import {ElementRef, inject} from '@angular/core';\r\n\r\nexport function cuiInjectElement<T = HTMLElement>(): T {\r\n return inject(ElementRef).nativeElement;\r\n}\r\n","export function cuiPointToClientRect(x = 0, y = 0): DOMRect {\r\n const rect = {\r\n x,\r\n y,\r\n left: x,\r\n right: x,\r\n top: y,\r\n bottom: y,\r\n width: 0,\r\n height: 0,\r\n } as const;\r\n\r\n return {\r\n ...rect,\r\n toJSON: () => rect,\r\n };\r\n}\r\n","export function cuiGetNativeFocused({activeElement}: Document): Element | null {\r\n if (!activeElement?.shadowRoot) {\r\n return activeElement;\r\n }\r\n\r\n let element = activeElement.shadowRoot.activeElement;\r\n\r\n while (element?.shadowRoot) {\r\n element = element.shadowRoot.activeElement;\r\n }\r\n\r\n return element;\r\n}\r\n","import { cuiGetNativeFocused } from './get-native-focused';\r\nimport { cuiIsHTMLElement } from '../dom';\r\n\r\nexport function cuiBlurNativeFocused(document: Document): void {\r\n const activeElement = cuiGetNativeFocused(document);\r\n\r\n if (cuiIsHTMLElement(activeElement)) {\r\n activeElement.blur();\r\n }\r\n}","import { cuiIsHTMLElement } from '../dom';\r\n\r\nexport function cuiIsNativeKeyboardFocusable(element: Element): boolean {\r\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\r\n return false;\r\n }\r\n\r\n if (\r\n (cuiIsHTMLElement(element) && element.isContentEditable) ||\r\n element.getAttribute('tabIndex') === '0'\r\n ) {\r\n return true;\r\n }\r\n\r\n switch (element.tagName) {\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n case 'VIDEO':\r\n case 'AUDIO':\r\n return element.hasAttribute('controls');\r\n case 'INPUT':\r\n return element.getAttribute('type') !== 'hidden';\r\n case 'A':\r\n case 'LINK':\r\n return element.hasAttribute('href');\r\n default:\r\n return false;\r\n }\r\n}","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\r\n\r\nexport function cuiIsNativeMouseFocusable(element: Element): boolean {\r\n return (\r\n !element.hasAttribute('disabled') &&\r\n (element.getAttribute('tabIndex') === '-1' ||\r\n cuiIsNativeKeyboardFocusable(element))\r\n );\r\n}","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\r\nimport { cuiIsNativeMouseFocusable } from './is-native-mouse-focusable';\r\nimport { cuiIsHTMLElement } from '../dom';\r\nimport { svgNodeFilter } from '../../constants';\r\n\r\nexport interface CuiGetClosestFocusableOptions {\r\n initial: Element;\r\n keyboard?: boolean;\r\n previous?: boolean;\r\n root: Node;\r\n}\r\n\r\nexport function cuiGetClosestFocusable({\r\n initial,\r\n root,\r\n previous = false,\r\n keyboard = true,\r\n }: CuiGetClosestFocusableOptions): HTMLElement | null {\r\n if (!root.ownerDocument) {\r\n return null;\r\n }\r\n\r\n const check = keyboard ? cuiIsNativeKeyboardFocusable : cuiIsNativeMouseFocusable;\r\n const treeWalker = root.ownerDocument.createTreeWalker(\r\n root,\r\n NodeFilter.SHOW_ELEMENT,\r\n svgNodeFilter,\r\n );\r\n\r\n treeWalker.currentNode = initial;\r\n\r\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\r\n if (cuiIsHTMLElement(treeWalker.currentNode)) {\r\n initial = treeWalker.currentNode;\r\n }\r\n\r\n if (cuiIsHTMLElement(initial) && check(initial)) {\r\n return initial;\r\n }\r\n }\r\n\r\n return null;\r\n}","import {cuiGetNativeFocused} from './get-native-focused';\r\n\r\n/**\r\n * Checks if element is focused.\r\n *\r\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\r\n *\r\n * @param node or null (as a common return value of DOM nodes walking)\r\n * @return true if focused\r\n */\r\nexport function cuiIsNativeFocused(node?: Node | null): boolean {\r\n return (\r\n !!node?.ownerDocument &&\r\n cuiGetNativeFocused(node.ownerDocument) === node &&\r\n node.ownerDocument.hasFocus()\r\n );\r\n}\r\n","export const CUI_SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;\r\nexport const CUI_IOS_REG_EXP = /ipad|iphone|ipod/i;\r\n\r\nexport function cuiIsIos({userAgent, maxTouchPoints}: Navigator): boolean {\r\n return CUI_SAFARI_REG_EXP.test(userAgent) || (CUI_IOS_REG_EXP.test(userAgent) && maxTouchPoints > 1);\r\n}\r\n","import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\r\nimport {inject} from '@angular/core';\r\nimport { cuiCreateTokenFromFactory } from '../utils';\r\nimport {BehaviorSubject, map, share, startWith, switchMap, timer} from 'rxjs';\r\n\r\n/**\r\n * Element currently being removed by AnimationEngine\r\n */\r\nexport const CUI_REMOVED_ELEMENT = cuiCreateTokenFromFactory(() => {\r\n const stub = {onRemovalComplete: () => {}};\r\n const element$ = new BehaviorSubject<Element | null>(null);\r\n const engine = inject(AnimationEngine, {optional: true}) || stub;\r\n const {onRemovalComplete = stub.onRemovalComplete} = engine;\r\n\r\n engine.onRemovalComplete = (element, context) => {\r\n element$.next(element);\r\n onRemovalComplete.call(engine, element, context);\r\n };\r\n\r\n return element$.pipe(\r\n switchMap((element) =>\r\n timer(0).pipe(\r\n map(() => null),\r\n startWith(element),\r\n ),\r\n ),\r\n share(),\r\n );\r\n});\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {inject, NgZone} from '@angular/core';\r\nimport { CUI_WINDOW } from './window';\r\nimport {cuiTypedFromEvent, cuiZonefreeScheduler} from '../observables';\r\nimport {\r\n cuiCreateTokenFromFactory,\r\n cuiGetActualTarget,\r\n cuiGetDocumentOrShadowRoot,\r\n cuiIsNativeMouseFocusable,\r\n} from '../utils';\r\nimport type {Observable} from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n merge,\r\n of,\r\n repeat,\r\n share,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n timer,\r\n withLatestFrom,\r\n} from 'rxjs';\r\n\r\nimport {CUI_REMOVED_ELEMENT} from './removed-element';\r\n\r\n// Checks if focusout event should be considered leaving active zone\r\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\r\n return (\r\n // Not due to switching tabs/going to DevTools\r\n cuiGetDocumentOrShadowRoot(target).activeElement !== target &&\r\n // Not due to button/input becoming disabled or under disabled fieldset\r\n !target.matches(':disabled') &&\r\n // Not due to element being removed from DOM\r\n !removedElement?.contains(target) &&\r\n // Not due to scrollable element became non-scrollable\r\n cuiIsNativeMouseFocusable(target)\r\n );\r\n}\r\n\r\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\r\n return merge(\r\n cuiTypedFromEvent(root, 'focusin').pipe(map(({target}) => target)),\r\n cuiTypedFromEvent(root, 'focusout').pipe(\r\n filter(\r\n ({target, relatedTarget}) => !!relatedTarget && isValidFocusout(target),\r\n ),\r\n map(({relatedTarget}) => relatedTarget),\r\n ),\r\n );\r\n}\r\n\r\n/**\r\n * Active element on the document for ActiveZone\r\n */\r\nexport const CUI_ACTIVE_ELEMENT = cuiCreateTokenFromFactory<\r\n Observable<EventTarget | null>\r\n>(() => {\r\n const removedElement$ = inject(CUI_REMOVED_ELEMENT);\r\n const win = inject(CUI_WINDOW);\r\n const doc = inject(DOCUMENT);\r\n const zone = inject(NgZone);\r\n const focusout$ = cuiTypedFromEvent(win, 'focusout', {capture: true});\r\n const focusin$ = cuiTypedFromEvent(win, 'focusin', {capture: true});\r\n const blur$ = cuiTypedFromEvent(win, 'blur');\r\n const mousedown$ = cuiTypedFromEvent(win, 'mousedown');\r\n const mouseup$ = cuiTypedFromEvent(win, 'mouseup');\r\n\r\n return merge(\r\n focusout$.pipe(\r\n takeUntil(mousedown$),\r\n repeat({delay: () => mouseup$}),\r\n withLatestFrom(removedElement$),\r\n filter(([event, removedElement]) =>\r\n isValidFocusout(cuiGetActualTarget(event), removedElement),\r\n ),\r\n map(([{relatedTarget}]) => relatedTarget),\r\n ),\r\n blur$.pipe(\r\n map(() => doc.activeElement),\r\n filter((element) => !!element?.matches('iframe')),\r\n ),\r\n focusin$.pipe(\r\n switchMap((event) => {\r\n const target = cuiGetActualTarget(event);\r\n const root = cuiGetDocumentOrShadowRoot(target) as Document;\r\n\r\n return root === doc\r\n ? of(target)\r\n : shadowRootActiveElement(root).pipe(startWith(target));\r\n }),\r\n ),\r\n mousedown$.pipe(\r\n switchMap((event) => {\r\n const actualTargetInCurrentTime = cuiGetActualTarget(event);\r\n\r\n return !doc.activeElement || doc.activeElement === doc.body\r\n ? of(actualTargetInCurrentTime)\r\n : focusout$.pipe(\r\n take(1),\r\n map(\r\n /**\r\n * Do not use `map(() => cuiGetActualTarget(event))`\r\n * because we have different result in runtime\r\n */\r\n () => actualTargetInCurrentTime,\r\n ),\r\n takeUntil(timer(0, cuiZonefreeScheduler(zone))),\r\n );\r\n }),\r\n ),\r\n ).pipe(distinctUntilChanged(), share());\r\n});\r\n","import {inject, InjectionToken} from '@angular/core';\r\nimport {Observable, share} from 'rxjs';\r\n\r\nimport { CUI_WINDOW } from './window';\r\n\r\nexport const CUI_ANIMATION_FRAME = new InjectionToken<Observable<DOMHighResTimeStamp>>(\r\n '[CUI_ANIMATION_FRAME]',\r\n {\r\n factory: () => {\r\n const {requestAnimationFrame, cancelAnimationFrame} = inject(CUI_WINDOW);\r\n const animationFrame$ = new Observable<DOMHighResTimeStamp>((subscriber) => {\r\n let id = NaN;\r\n const callback = (timestamp: DOMHighResTimeStamp): void => {\r\n subscriber.next(timestamp);\r\n id = requestAnimationFrame(callback);\r\n };\r\n\r\n id = requestAnimationFrame(callback);\r\n\r\n return () => {\r\n cancelAnimationFrame(id);\r\n };\r\n });\r\n\r\n return animationFrame$.pipe(share());\r\n },\r\n },\r\n);","import {inject} from '@angular/core';\r\nimport {toSignal} from '@angular/core/rxjs-interop';\r\nimport { CUI_NAVIGATOR, CUI_USER_AGENT, CUI_WINDOW } from '../tokens';\r\nimport {cuiIsIos} from '../utils';\r\nimport {CUI_FALSE_HANDLER} from '../constants';\r\nimport {cuiCreateTokenFromFactory} from '../utils';\r\nimport {fromEvent, map} from 'rxjs';\r\n\r\n// https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\r\nconst firstRegex =\r\n // eslint-disable-next-line sonarjs/regex-complexity\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;\r\nconst secondRegex =\r\n // eslint-disable-next-line sonarjs/regex-complexity\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;\r\n\r\nexport const CUI_IS_MOBILE = cuiCreateTokenFromFactory(\r\n () =>\r\n firstRegex.test(inject(CUI_USER_AGENT).toLowerCase()) ||\r\n secondRegex.test(inject(CUI_USER_AGENT).slice(0, 4).toLowerCase()),\r\n);\r\n\r\nexport const CUI_IS_IOS = cuiCreateTokenFromFactory(() => cuiIsIos(inject(CUI_NAVIGATOR)));\r\n\r\nexport const CUI_IS_ANDROID = cuiCreateTokenFromFactory(\r\n () => inject(CUI_IS_MOBILE) && !inject(CUI_IS_IOS),\r\n);\r\n\r\nexport const CUI_IS_WEBKIT = cuiCreateTokenFromFactory(\r\n () => !!inject<any>(CUI_WINDOW)?.webkitConvertPointFromNodeToPage,\r\n);\r\n\r\nexport const CUI_PLATFORM = cuiCreateTokenFromFactory<'android' | 'ios' | 'web'>(() => {\r\n if (inject(CUI_IS_IOS)) {\r\n return 'ios';\r\n }\r\n\r\n return inject(CUI_IS_ANDROID) ? 'android' : 'web';\r\n});\r\n\r\nexport const CUI_IS_TOUCH = cuiCreateTokenFromFactory(() => {\r\n const media = inject(CUI_WINDOW ).matchMedia('(pointer: coarse)');\r\n\r\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\r\n initialValue: media.matches,\r\n });\r\n});\r\n\r\n/**\r\n * Detect if app is running under Cypress\r\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\r\n */\r\nexport const CUI_IS_CYPRESS = cuiCreateTokenFromFactory(\r\n () => !!inject<any>(CUI_WINDOW).Cypress,\r\n);\r\n\r\n/**\r\n * Manually provide `true` when running tests in Playwright\r\n */\r\nexport const CUI_IS_PLAYWRIGHT = cuiCreateTokenFromFactory<boolean>(CUI_FALSE_HANDLER);\r\n\r\n/**\r\n * Detect if app is running under any of test frameworks\r\n */\r\nexport const CUI_IS_E2E = cuiCreateTokenFromFactory(\r\n () => inject(CUI_IS_CYPRESS) || inject(CUI_IS_PLAYWRIGHT),\r\n);\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\n\r\nexport const CUI_HISTORY = cuiCreateTokenFromFactory<History>(() => inject(CUI_WINDOW).history);","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_LOCAL_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).localStorage);","import {inject, InjectionToken} from '@angular/core';\r\n\r\nimport {CUI_WINDOW} from './window';\r\n\r\nexport const CUI_NAVIGATOR = new InjectionToken<Navigator>('[CUI_NAVIGATOR]', {\r\n factory: () => inject(CUI_WINDOW).navigator,\r\n});\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_SESSION_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).sessionStorage);","import {inject, InjectionToken} from '@angular/core';\r\n\r\nimport {CUI_NAVIGATOR} from './navigator';\r\n\r\nexport const CUI_USER_AGENT = new InjectionToken<string>('[CUI_USER_AGENT]', {\r\n factory: () => inject(CUI_NAVIGATOR).userAgent,\r\n});\r\n","import type {OnDestroy} from '@angular/core';\r\nimport {Directive, inject, Input, NgZone, Output} from '@angular/core';\r\nimport {NgControl} from '@angular/forms';\r\nimport {cuiZoneOptimized} from '../../observables';\r\nimport {CUI_ACTIVE_ELEMENT} from '../../tokens';\r\nimport {cuiArrayRemove, cuiInjectElement, cuiPure } from '../../utils';\r\nimport type {Observable} from 'rxjs';\r\nimport {distinctUntilChanged, map, skip, startWith, tap} from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector:\r\n '[cuiActiveZone]:not(ng-container), [cuiActiveZoneChange]:not(ng-container), [cuiActiveZoneParent]:not(ng-container)',\r\n exportAs: 'cuiActiveZone',\r\n host: {\r\n '(document:mousedown.silent)': '(0)',\r\n },\r\n})\r\nexport class CuiActiveZone implements OnDestroy {\r\n private readonly control: any = inject(NgControl, {self: true, optional: true});\r\n private readonly active$ = inject<Observable<Element | null>>(CUI_ACTIVE_ELEMENT);\r\n private readonly zone = inject(NgZone);\r\n private readonly el = cuiInjectElement();\r\n private cuiActiveZoneParent: CuiActiveZone | null = null;\r\n private subActiveZones: readonly CuiActiveZone[] = [];\r\n private readonly directParentActiveZone = inject(CuiActiveZone, {\r\n skipSelf: true,\r\n optional: true,\r\n });\r\n\r\n @Output()\r\n public readonly cuiActiveZoneChange = this.active$.pipe(\r\n map((element) => !!element && this.contains(element)),\r\n startWith(false),\r\n distinctUntilChanged(),\r\n skip(1),\r\n tap((active) => {\r\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\r\n this.control.valueAccessor.onTouched();\r\n }\r\n }),\r\n cuiZoneOptimized(this.zone),\r\n );\r\n\r\n constructor() {\r\n this.directParentActiveZone?.addSubActiveZone(this);\r\n }\r\n\r\n @Input('cuiActiveZoneParent')\r\n public set cuiActiveZoneParentSetter(zone: CuiActiveZone | null) {\r\n this.setZone(zone);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.directParentActiveZone?.removeSubActiveZone(this);\r\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\r\n }\r\n\r\n public contains(node: Node): boolean {\r\n return (\r\n this.el.contains(node) ||\r\n this.subActiveZones.some(\r\n (item, index, array) =>\r\n array.indexOf(item) === index && item.contains(node),\r\n )\r\n );\r\n }\r\n\r\n @cuiPure\r\n private setZone(zone: CuiActiveZone | null): void {\r\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\r\n zone?.addSubActiveZone(this);\r\n this.cuiActiveZoneParent = zone;\r\n }\r\n\r\n private addSubActiveZone(activeZone: CuiActiveZone): void {\r\n this.subActiveZones = [...this.subActiveZones, activeZone];\r\n }\r\n\r\n private removeSubActiveZone(activeZone: CuiActiveZone): void {\r\n this.subActiveZones = cuiArrayRemove(\r\n this.subActiveZones,\r\n this.subActiveZones.indexOf(activeZone),\r\n );\r\n }\r\n}\r\n","import type {Signal} from '@angular/core';\r\nimport {inject, Injectable, NgZone} from '@angular/core';\r\nimport {toSignal} from '@angular/core/rxjs-interop';\r\nimport {CUI_FALSE_HANDLER, CUI_TRUE_HANDLER} from '../../constants';\r\nimport {cuiTypedFromEvent, cuiWatch, cuiZoneOptimized} from '../../observables';\r\nimport {CUI_IS_MOBILE} from '../../tokens';\r\nimport { cuiInjectElement, cuiIsElement, } from '../../utils';\r\nimport {distinctUntilChanged, filter, map, merge, Observable, of} from 'rxjs';\r\n\r\nfunction movedOut({currentTarget, relatedTarget}: MouseEvent): boolean {\r\n return (\r\n !cuiIsElement(relatedTarget) ||\r\n !cuiIsElement(currentTarget) ||\r\n !currentTarget.contains(relatedTarget)\r\n );\r\n}\r\n\r\n@Injectable()\r\nexport class CuiHoveredService extends Observable<boolean> {\r\n private readonly el = cuiInjectElement();\r\n private readonly zone = inject(NgZone);\r\n\r\n private readonly stream$ = merge(\r\n cuiTypedFromEvent(this.el, 'mouseenter').pipe(map(CUI_TRUE_HANDLER)),\r\n cuiTypedFromEvent(this.el, 'mouseleave').pipe(map(CUI_FALSE_HANDLER)),\r\n // Hello, Safari\r\n cuiTypedFromEvent(this.el, 'mouseout').pipe(\r\n filter(movedOut),\r\n map(CUI_FALSE_HANDLER),\r\n ),\r\n ).pipe(distinctUntilChanged(), cuiZoneOptimized(this.zone));\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n}\r\n\r\nexport function cuiHovered(): Signal<boolean> {\r\n return toSignal(\r\n inject(CUI_IS_MOBILE) ? of(false) : inject(CuiHoveredService).pipe(cuiWatch()),\r\n {\r\n initialValue: false,\r\n },\r\n );\r\n}\r\n","import {Directive, inject, Output} from '@angular/core';\r\n\r\nimport {CuiHoveredService} from './hovered.service';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiHoveredChange]',\r\n providers: [CuiHoveredService],\r\n})\r\nexport class CuiHovered {\r\n @Output()\r\n public readonly cuiHoveredChange = inject(CuiHoveredService);\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiDestroyService extends Subject<void> implements OnDestroy {\r\n public ngOnDestroy(): void {\r\n this.next();\r\n this.complete();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst CUI = 'cui_';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiIdService {\r\n private static autoId = 0;\r\n\r\n public generate(): string {\r\n return `${CUI}${CuiIdService.autoId++}${Date.now()}`;\r\n }\r\n}\r\n","import type { ProviderToken, TemplateRef, Type } from '@angular/core';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport type { BehaviorSubject, Observer } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CuiIdService } from './id.service';\r\n\r\n// TODO: Content должен быть типом из директивы *content\r\nexport interface CuiPopoverContext {\r\n readonly $implicit: Observer<any>;\r\n readonly id: string;\r\n readonly component: Type<unknown>;\r\n readonly content: Type<unknown> | TemplateRef<unknown> | string;\r\n readonly completeWith: (value?: any) => void;\r\n}\r\n\r\nexport type CuiPopover<T> = T & CuiPopoverContext;\r\n\r\n@Injectable()\r\nexport abstract class CuiPopoverService<T> {\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly items$: BehaviorSubject<ReadonlyArray<CuiPopover<T>>>;\r\n private readonly component: Type<any>;\r\n\r\n constructor(\r\n items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>,\r\n component: Type<any>,\r\n private readonly options: T = {} as T\r\n ) {\r\n this.items$ = inject(items);\r\n this.component = component;\r\n }\r\n\r\n public open(\r\n content: CuiPopoverContext['content'],\r\n options: Partial<T> = {}\r\n ): Observable<any> {\r\n return new Observable(observer => {\r\n const item: CuiPopover<T> = {\r\n ...this.options,\r\n ...options,\r\n $implicit: observer,\r\n id: this.cuiIdService.generate(),\r\n component: this.component,\r\n content: content,\r\n completeWith: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n };\r\n\r\n this.items$.next([...this.items$.value, item]);\r\n\r\n return () => {\r\n this.items$.next(this.items$.value.filter(value => value !== item));\r\n };\r\n });\r\n }\r\n\r\n public closeAll(): void {\r\n this.items$.next([]);\r\n }\r\n}\r\n","import type { AfterViewChecked, OnInit } from '@angular/core';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject\r\n} from '@angular/core';\r\nimport { NgControl, NgModel } from '@angular/forms';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_WINDOW } from '../tokens';\r\nimport { CuiDestroyService } from '../services';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'textarea[cuiAutoResizing]',\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiAutoResizingDirective implements OnInit, AfterViewChecked {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\r\n private readonly ngModel = inject(NgModel, { self: true, optional: true });\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n private readonly elementStyles = this.element.style;\r\n\r\n public ngOnInit(): void {\r\n this.initNgControlValueChangeSubscription();\r\n this.initNgModelValueChangeSubscription();\r\n }\r\n\r\n public ngAfterViewChecked(): void {\r\n this.resize();\r\n }\r\n\r\n @HostListener('input')\r\n protected onInput(): void {\r\n this.resize();\r\n }\r\n\r\n private initNgControlValueChangeSubscription(): void {\r\n if (!this.ngControl) {\r\n return;\r\n }\r\n\r\n this.ngControl.valueChanges!\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.resize.bind(this));\r\n }\r\n\r\n private initNgModelValueChangeSubscription(): void {\r\n if (!this.ngModel) {\r\n return;\r\n }\r\n\r\n this.ngModel.valueChanges!\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.resize.bind(this));\r\n }\r\n\r\n private resize(): void {\r\n const {\r\n maxHeight:computedMaxHeight,\r\n borderTopWidth,\r\n borderBottomWidth\r\n } = this.window.getComputedStyle(this.element);\r\n\r\n this.elementStyles.height = 'auto';\r\n this.elementStyles.height =\r\n this.element.scrollHeight + parseFloat(borderTopWidth) + parseFloat(borderBottomWidth) + 'px';\r\n\r\n if (parseFloat(this.element.style.height) < parseFloat(computedMaxHeight)) {\r\n this.elementStyles.overflow = 'hidden';\r\n\r\n return;\r\n }\r\n\r\n this.elementStyles.overflowY = 'scroll';\r\n this.elementStyles.height = computedMaxHeight;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, inject, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '(cuiClickOutside)'\r\n})\r\nexport class CuiClickOutsideDirective {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n\r\n @Output()\r\n public cuiClickOutside = new EventEmitter<HTMLElement>();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n protected onClickOutside(target: HTMLElement): void {\r\n if (this.element.contains(target)) {\r\n return;\r\n }\r\n\r\n this.cuiClickOutside.emit(target);\r\n }\r\n}","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, inject, Output } from '@angular/core';\r\n\r\nimport type { CuiDimensions } from '../interfaces';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiResizeObserver]'\r\n})\r\nexport class CuiDimensionsObserverDirective implements OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n private readonly observer = new ResizeObserver((entries) => {\r\n entries.forEach(() => this.cuiResizeObserver.emit({\r\n width: this.element.offsetWidth,\r\n height: this.element.offsetHeight\r\n }));\r\n });\r\n\r\n @Output()\r\n public cuiResizeObserver = new EventEmitter<CuiDimensions>();\r\n\r\n public ngOnInit(): void {\r\n this.observer.observe(this.element);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.observer.disconnect();\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport type { CuiNullable } from '../types';\r\nimport type { CuiOnChange, CuiOnTouched } from '../interfaces';\r\nimport { cuiProvide } from '../utils/token';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[contenteditable][formControlName], [contenteditable][formControl], [contenteditable][ngModel]',\r\n providers: [cuiProvide(NG_VALUE_ACCESSOR, CuiContentEditableValueAccessorDirective, true)]\r\n})\r\nexport class CuiContentEditableValueAccessorDirective implements ControlValueAccessor {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.element.innerText = value ?? '';\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.element.contentEditable = String(!isDisabled);\r\n }\r\n\r\n @HostListener('input')\r\n protected onInput(): void {\r\n this.onChange(this.element.innerHTML === '<br>' ? '' : this.element.innerText);\r\n }\r\n\r\n @HostListener('blur')\r\n protected onBlur(): void {\r\n this.onTouched();\r\n }\r\n}","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiElement]',\r\n exportAs: 'elementRef',\r\n})\r\nexport class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {\r\n public nativeElement = inject(ElementRef<T>).nativeElement;\r\n\r\n constructor() {\r\n return new ElementRef<T>(this.nativeElement);\r\n }\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport {\r\n cuiBlurNativeFocused,\r\n cuiContainsOrAfter,\r\n cuiGetClosestFocusable,\r\n cuiGetNativeFocused,\r\n cuiIsHTMLElement\r\n} from '../utils';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiFocusTrap]',\r\n})\r\nexport class CuiFocusTrapDirective implements OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly activeElement = cuiGetNativeFocused(this.document);\r\n\r\n constructor() {\r\n this.initElementFocus();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n cuiBlurNativeFocused(this.document);\r\n\r\n Promise.resolve().then(() => {\r\n if (!cuiIsHTMLElement(this.activeElement)) {\r\n return;\r\n }\r\n\r\n this.activeElement.focus();\r\n });\r\n }\r\n\r\n @HostBinding('tabIndex')\r\n protected readonly tabIndex = 0;\r\n\r\n @HostListener('window:focusin', ['$event.target'])\r\n protected onFocusIn(node: Node): void {\r\n if (cuiContainsOrAfter(this.element, node)) {\r\n return;\r\n }\r\n\r\n cuiGetClosestFocusable({\r\n initial: this.element,\r\n root: this.element,\r\n })?.focus();\r\n }\r\n\r\n private initElementFocus(): void {\r\n Promise.resolve().then(() => this.element.focus());\r\n }\r\n}","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiItem]'\r\n})\r\nexport class CuiItemDirective {\r\n}","import type { CuiLetDirective } from './let.directive';\r\n\r\nexport class CuiLetContext<T> {\r\n constructor(private readonly internalDirectiveInstance: CuiLetDirective<T>) {}\r\n\r\n public get $implicit(): T {\r\n return this.internalDirectiveInstance.cuiLet;\r\n }\r\n\r\n public get cuiLet(): T {\r\n return this.internalDirectiveInstance.cuiLet;\r\n }\r\n}","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nimport { CuiLetContext } from './let.context';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiLet]'\r\n})\r\nexport class CuiLetDirective<T> {\r\n @Input()\r\n public cuiLet!: T;\r\n\r\n constructor() {\r\n inject(ViewContainerRef).createEmbeddedView(\r\n inject(TemplateRef<CuiLetContext<T>>),\r\n new CuiLetContext<T>(this),\r\n );\r\n }\r\n\r\n public static ngTemplateContextGuard<T>(\r\n _dir: CuiLetDirective<T>,\r\n _ctx: unknown,\r\n ): _ctx is CuiLetContext<T> {\r\n return true;\r\n }\r\n}","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[ccTarget]',\r\n})\r\nexport class CuiTargetDirective implements OnInit, OnDestroy {\r\n private readonly clickListener = (event: MouseEvent): void => {\r\n this.clicked.emit(event);\r\n };\r\n\r\n @Input()\r\n public ccTarget!: HTMLElement;\r\n\r\n @Output()\r\n public clicked = new EventEmitter<MouseEvent>();\r\n\r\n public ngOnInit(): void {\r\n this.initClickListener();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyClickListener();\r\n }\r\n\r\n private initClickListener(): void {\r\n this.ccTarget.addEventListener('click', this.clickListener);\r\n }\r\n\r\n private destroyClickListener(): void {\r\n this.ccTarget.removeEventListener('click', this.clickListener);\r\n }\r\n}\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\nimport { CuiMatcher } from '../types';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'cuiFilter'\r\n})\r\nexport class CuiFilterPipe implements PipeTransform {\r\n transform<T, U extends unknown[]>(items: ReadonlyArray<T>, matcher: CuiMatcher<[T, ...U]>, ...args: U): T[] {\r\n return items.filter(item => matcher(item, ...args));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/date-time/time.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/utils/token/create-token.ts","../../../projects/cdk/utils/token/provide.ts","../../../projects/cdk/tokens/window.ts","../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/math/clamp.ts","../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/platform/is-ios.ts","../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/animation-frame.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/history.ts","../../../projects/cdk/tokens/local-storage.ts","../../../projects/cdk/tokens/navigator.ts","../../../projects/cdk/tokens/session-storage.ts","../../../projects/cdk/tokens/user-agent.ts","../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/hovered/hovered.service.ts","../../../projects/cdk/directives/hovered/hovered.directive.ts","../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/directives/click-outside.directive.ts","../../../projects/cdk/directives/dimensions-observer.directive.ts","../../../projects/cdk/directives/content-editable-value-accessor.directive.ts","../../../projects/cdk/directives/element.directive.ts","../../../projects/cdk/directives/focus-trap.directive.ts","../../../projects/cdk/directives/item.directive.ts","../../../projects/cdk/directives/let.context.ts","../../../projects/cdk/directives/let.directive.ts","../../../projects/cdk/directives/target.directive.ts","../../../projects/cdk/directives/ladder-list.directive.ts","../../../projects/cdk/pipes/filter.pipe.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import {QueryList} from '@angular/core';\r\n\r\nconst rect = {\r\n bottom: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n width: 0,\r\n x: 0,\r\n y: 0,\r\n} as const;\r\n\r\n/**\r\n * For type safety when using @ContentChildren and @ViewChildren\r\n *\r\n * NOTE: Be careful subscribing to 'changes'\r\n */\r\nexport const EMPTY_QUERY = new QueryList<any>();\r\nexport const EMPTY_ARRAY: [] = [];\r\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\r\nexport const EMPTY_CLIENT_RECT: DOMRect = {\r\n ...rect,\r\n toJSON: () => rect,\r\n};\r\n","/**\r\n * Handler that always returns `false`.\r\n */\r\n// eslint-disable-next-line no-restricted-syntax\r\nexport const CUI_FALSE_HANDLER = (): false => false;\r\n\r\n/**\r\n * Handler that always returns `true`.\r\n */\r\n// eslint-disable-next-line no-restricted-syntax\r\nexport const CUI_TRUE_HANDLER = (): true => true;\r\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\r\n acceptNode(node: Node): number {\r\n return 'ownerSVGElement' in node\r\n ? NodeFilter.FILTER_REJECT\r\n : NodeFilter.FILTER_ACCEPT;\r\n },\r\n};","import type { CuiTimeMode } from '../types';\r\n\r\nexport class CuiTime {\r\n constructor(\r\n public readonly hours: number,\r\n public readonly minutes: number,\r\n public readonly seconds = 0,\r\n public readonly ms = 0,\r\n ) {\r\n }\r\n\r\n public static fromString(time: string): CuiTime {\r\n const hours = this.parseHours(time);\r\n const minutes = Number(time.slice(3, 5)) || 0;\r\n const seconds = Number(time.slice(6, 8)) || 0;\r\n const ms = Number(time.slice(9, 12)) || 0;\r\n\r\n return new CuiTime(hours, minutes, seconds, ms);\r\n }\r\n\r\n public static fromPT(time: string): CuiTime {\r\n let duration = time.trim().toUpperCase();\r\n\r\n if (!duration.startsWith('P')) {\r\n throw new Error('Invalid PT format: does not start with P');\r\n }\r\n\r\n duration = duration.substring(1);\r\n\r\n if (duration.startsWith('T')) {\r\n duration = duration.substring(1);\r\n }\r\n\r\n const regex = /(\\d+(\\.\\d+)?)([HMS])/g;\r\n let match;\r\n let hours = 0,\r\n minutes = 0,\r\n seconds = 0,\r\n ms = 0;\r\n\r\n while ((match = regex.exec(duration)) !== null) {\r\n const value = parseFloat(match[1]);\r\n const unit = match[3];\r\n\r\n if (unit === 'H') {\r\n hours = value;\r\n } else if (unit === 'M') {\r\n minutes = value;\r\n } else if (unit === 'S') {\r\n seconds = Math.floor(value);\r\n ms = Math.round((value - seconds) * 1000);\r\n }\r\n }\r\n\r\n return new CuiTime(hours, minutes, seconds, ms);\r\n }\r\n\r\n private static parseHours(time: string): number {\r\n return Number(time.slice(0, 2));\r\n }\r\n\r\n public toString(mode?: CuiTimeMode): string {\r\n const needAddMs = mode?.startsWith('HH:MM:SS.MSS') || (!mode && this.ms > 0);\r\n const needAddSeconds =\r\n needAddMs || mode?.startsWith('HH:MM:SS') || (!mode && this.seconds > 0);\r\n const hhMm = `${this.formatTime(this.hours)}:${this.formatTime(this.minutes)}`;\r\n const ss = needAddSeconds ? `:${this.formatTime(this.seconds)}` : '';\r\n const mss = needAddMs ? `.${this.formatTime(this.ms, 3)}` : '';\r\n\r\n return `${hhMm}${ss}${mss}`;\r\n }\r\n\r\n public toPT(mode?: CuiTimeMode): string {\r\n let duration = 'PT';\r\n if (this.hours !== 0) {\r\n duration += `${this.hours}H`;\r\n }\r\n\r\n if (this.minutes !== 0) {\r\n duration += `${this.minutes}M`;\r\n }\r\n\r\n const totalSeconds = this.seconds + this.ms / 1000;\r\n\r\n if (totalSeconds !== 0 || duration === 'PT') {\r\n duration += `${parseFloat(totalSeconds.toFixed(3))}S`;\r\n }\r\n\r\n return duration;\r\n }\r\n\r\n private formatTime(time: number, digits = 2): string {\r\n return String(time).padStart(digits, '0');\r\n }\r\n}","import type {CuiBooleanHandler} from '../types';\r\nimport type {Observable, OperatorFunction} from 'rxjs';\r\nimport {EMPTY, pipe, switchMap} from 'rxjs';\r\n\r\nexport function cuiIfMap<T, G>(\r\n project: (value: T) => Observable<G>,\r\n predicate: CuiBooleanHandler<T> = Boolean,\r\n): OperatorFunction<T, G> {\r\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\r\n}\r\n","import type {Observable} from 'rxjs';\r\nimport {fromEvent} from 'rxjs';\r\n\r\nexport interface CuiTypedEventTarget<E> {\r\n addEventListener(\r\n type: string,\r\n listener: ((evt: E) => void) | null,\r\n options?: AddEventListenerOptions | boolean,\r\n ): void;\r\n removeEventListener(\r\n type: string,\r\n listener?: ((evt: E) => void) | null,\r\n options?: EventListenerOptions | boolean,\r\n ): void;\r\n}\r\n\r\n/**\r\n * Wrapper around {@link Event} to add typings to target and currentTarget.\r\n */\r\nexport type CuiEventWith<G extends Event, T extends CuiTypedEventTarget<G>> = G & {\r\n readonly currentTarget: T;\r\n};\r\n\r\nexport function cuiTypedFromEvent<E extends keyof WindowEventMap>(\r\n target: Window,\r\n event: E,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<WindowEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<E extends keyof DocumentEventMap>(\r\n target: Document,\r\n event: E,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<DocumentEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\r\n target: T,\r\n event: E,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<HTMLElementEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<\r\n E extends Event,\r\n T extends CuiTypedEventTarget<CuiEventWith<E, T>>,\r\n>(\r\n target: T,\r\n event: string,\r\n options?: AddEventListenerOptions,\r\n): Observable<CuiEventWith<E, T>>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event>(\r\n target: CuiTypedEventTarget<E>,\r\n event: string,\r\n options?: AddEventListenerOptions,\r\n): Observable<E>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event>(\r\n target: CuiTypedEventTarget<E>,\r\n event: string,\r\n options: AddEventListenerOptions = {},\r\n): Observable<E> {\r\n /**\r\n * @note:\r\n * in RxJS 7 type signature `CuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\r\n */\r\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\r\n}\r\n","import {ChangeDetectorRef, inject} from '@angular/core';\r\nimport type {MonoTypeOperatorFunction} from 'rxjs';\r\nimport {tap} from 'rxjs';\r\n\r\nexport function cuiWatch<T>(\r\n cdr = inject(ChangeDetectorRef),\r\n): MonoTypeOperatorFunction<T> {\r\n return tap(() => cdr.markForCheck());\r\n}\r\n","import {inject, NgZone} from '@angular/core';\r\nimport type {MonoTypeOperatorFunction, SchedulerLike, Subscription} from 'rxjs';\r\nimport {asyncScheduler, Observable, pipe} from 'rxjs';\r\n\r\nexport function cuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return (source) =>\r\n new Observable((subscriber) =>\r\n source.subscribe({\r\n next: (value) => zone.run(() => subscriber.next(value)),\r\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\r\n complete: () => zone.run(() => subscriber.complete()),\r\n }),\r\n );\r\n}\r\n\r\nexport function cuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return (source) =>\r\n new Observable((subscriber) =>\r\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\r\n );\r\n}\r\n\r\nexport function cuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return pipe(cuiZonefree(zone), cuiZonefull(zone));\r\n}\r\n\r\nclass CuiZoneScheduler implements SchedulerLike {\r\n constructor(\r\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\r\n private readonly scheduler: SchedulerLike = asyncScheduler,\r\n ) {}\r\n\r\n public now(): number {\r\n return this.scheduler.now();\r\n }\r\n\r\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\r\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\r\n }\r\n}\r\n\r\nexport function cuiZonefreeScheduler(\r\n zone = inject(NgZone),\r\n scheduler: SchedulerLike = asyncScheduler,\r\n): SchedulerLike {\r\n return new CuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\r\n}\r\n\r\nexport function cuiZonefullScheduler(\r\n zone = inject(NgZone),\r\n scheduler: SchedulerLike = asyncScheduler,\r\n): SchedulerLike {\r\n return new CuiZoneScheduler(zone.run.bind(zone), scheduler);\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport function cuiCreateToken<T>(defaults: T): InjectionToken<T> {\r\n return cuiCreateTokenFromFactory(() => defaults);\r\n}\r\n\r\nexport function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\r\n return new InjectionToken<T>('', { factory });\r\n}\r\n","import type { ExistingProvider, ProviderToken } from '@angular/core';\r\n\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T>,\r\n useExisting: ProviderToken<T>,\r\n): ExistingProvider;\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T | T[]>,\r\n useExisting: ProviderToken<T>,\r\n multi: boolean,\r\n): ExistingProvider;\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T>,\r\n useExisting: ProviderToken<T>,\r\n multi = false,\r\n): ExistingProvider {\r\n return { provide, useExisting, multi };\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_WINDOW = cuiCreateTokenFromFactory<Window>(() => {\r\n const { defaultView } = inject(DOCUMENT);\r\n\r\n if (!defaultView) {\r\n throw new Error('Window is not available');\r\n }\r\n\r\n return defaultView;\r\n});","export function cuiContainsOrAfter(current: Node, node: Node): boolean {\r\n try {\r\n return (\r\n current.contains(node) ||\r\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\r\n );\r\n } catch {\r\n return false;\r\n }\r\n}","export function cuiIsInput(element: Element): element is HTMLInputElement {\r\n return element.matches('input');\r\n}\r\n\r\nexport function cuiIsTextarea(element: Element): element is HTMLTextAreaElement {\r\n return element.matches('textarea');\r\n}\r\n\r\nexport function cuiIsTextfield(\r\n element: Element,\r\n): element is HTMLInputElement | HTMLTextAreaElement {\r\n return cuiIsInput(element) || cuiIsTextarea(element);\r\n}\r\n\r\nexport function cuiIsElement(\r\n node?: Element | EventTarget | Node | null,\r\n): node is Element {\r\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\r\n}\r\n\r\nexport function cuiIsHTMLElement(node: unknown): node is HTMLElement {\r\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\r\n\r\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\r\n}\r\n\r\nexport function cuiIsTextNode(node: Node): node is Text {\r\n return node.nodeType === Node.TEXT_NODE;\r\n}\r\n","/**\r\n * Gets actual target from open Shadow DOM if event happened within it\r\n */\r\nexport function cuiGetActualTarget(event: Event): Node {\r\n return event.composedPath()[0] as Node;\r\n}\r\n","export function cuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\r\n return 'getRootNode' in node && node.isConnected\r\n ? (node.getRootNode() as Document)\r\n : (node.ownerDocument as DocumentOrShadowRoot);\r\n}\r\n","/**\r\n * Clamps a value between two inclusive limits\r\n *\r\n * @param value\r\n * @param min lower limit\r\n * @param max upper limit\r\n */\r\nexport function cuiClamp(value: number, min: number, max: number): number {\r\n return Math.min(max, Math.max(min, value));\r\n}\r\n","export function cuiArrayRemove<T>(array: readonly T[], index: number): T[] {\r\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\r\n}\r\n","export function cuiIsPresent<T>(value?: T | null): value is T {\r\n return value !== null && value !== undefined;\r\n}\r\n","function decorateMethod(\r\n originalMethod: (...args: unknown[]) => unknown,\r\n): (this: object, ...args: unknown[]) => unknown {\r\n let previousArgs: readonly unknown[] = [];\r\n let originalFnWasCalledLeastAtOnce = false;\r\n let pureValue: unknown;\r\n\r\n return function cuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\r\n const isPure =\r\n originalFnWasCalledLeastAtOnce &&\r\n previousArgs.length === args.length &&\r\n args.every((arg, index) => arg === previousArgs[index]);\r\n\r\n if (isPure) {\r\n return pureValue;\r\n }\r\n\r\n previousArgs = args;\r\n pureValue = originalMethod.apply(this, args);\r\n originalFnWasCalledLeastAtOnce = true;\r\n\r\n return pureValue;\r\n };\r\n}\r\n\r\nfunction decorateGetter(\r\n originalGetter: () => unknown,\r\n propertyKey: string | symbol,\r\n enumerable = true,\r\n): (this: object) => unknown {\r\n return function cuiPureGetterPatched(this: object): unknown {\r\n const value = originalGetter.call(this);\r\n\r\n Object.defineProperty(this, propertyKey, {enumerable, value});\r\n\r\n return value;\r\n };\r\n}\r\n\r\n/**\r\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\r\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\r\n * value for function, skipping calculation when arguments are strictly the same.\r\n *\r\n * @throws error if used not on getter or function\r\n *\r\n * CAUTION: they must be pure.\r\n */\r\nexport function cuiPure<T>(\r\n target: object,\r\n propertyKey: string,\r\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\r\n): TypedPropertyDescriptor<T>;\r\n\r\n/**\r\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\r\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\r\n * value for function, skipping calculation when arguments are strictly the same.\r\n *\r\n * CAUTION: they must be pure.\r\n */\r\nexport function cuiPure<A extends unknown[], R>(\r\n target: (...args: A) => R,\r\n context: any\r\n): (...args: A) => R;\r\n\r\nexport function cuiPure(\r\n target: object | ((...args: unknown[]) => unknown),\r\n propertyKeyOrContext:\r\n any\r\n | string,\r\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\r\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\r\n if (typeof target === 'function') {\r\n const context = propertyKeyOrContext as\r\n any;\r\n\r\n if (context.kind === 'getter') {\r\n return decorateGetter(target as () => unknown, context.name);\r\n }\r\n\r\n if (context.kind === 'method') {\r\n return decorateMethod(target as (...args: unknown[]) => unknown);\r\n }\r\n\r\n throw new CuiPureException();\r\n }\r\n\r\n const {get, enumerable, value} = descriptor!;\r\n const propertyKey = propertyKeyOrContext as string;\r\n\r\n if (get) {\r\n return {\r\n configurable: true,\r\n enumerable,\r\n get: decorateGetter(get, propertyKey, enumerable),\r\n };\r\n }\r\n\r\n if (typeof value !== 'function') {\r\n throw new CuiPureException();\r\n }\r\n\r\n const original = value;\r\n\r\n return {\r\n configurable: true,\r\n enumerable,\r\n get(): unknown {\r\n let previousArgs: readonly unknown[] = [];\r\n let originalFnWasCalledLeastAtOnce = false;\r\n let pureValue: unknown;\r\n\r\n const patched = (...args: unknown[]): unknown => {\r\n const isPure =\r\n originalFnWasCalledLeastAtOnce &&\r\n previousArgs.length === args.length &&\r\n args.every((arg, index) => arg === previousArgs[index]);\r\n\r\n if (isPure) {\r\n return pureValue;\r\n }\r\n\r\n previousArgs = args;\r\n pureValue = original.apply(this, args);\r\n originalFnWasCalledLeastAtOnce = true;\r\n\r\n return pureValue;\r\n };\r\n\r\n Object.defineProperty(this, propertyKey, {\r\n configurable: true,\r\n value: patched,\r\n });\r\n\r\n return patched as unknown;\r\n },\r\n };\r\n}\r\n\r\nexport class CuiPureException extends Error {\r\n constructor() {\r\n super('cuiPure can only be used with functions or getters');\r\n }\r\n}\r\n","/**\r\n * Adds 'px' to the number and turns it into a string\r\n */\r\nexport function cuiPx(value: number): string {\r\n return `${value}px`;\r\n}\r\n","import {cuiClamp} from '../math';\r\nimport {cuiIsPresent} from '../miscellaneous';\r\n\r\nimport {cuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\r\n\r\n/**\r\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\r\n *\r\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\r\n * ```ts\r\n * function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\r\n * ```\r\n */\r\nexport function cuiGetElementObscures(\r\n element: Element,\r\n): readonly [Element, Element, Element, Element] | [] | null {\r\n const {ownerDocument} = element;\r\n\r\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\r\n return null;\r\n }\r\n\r\n const {innerWidth, innerHeight} = ownerDocument.defaultView;\r\n const doc = cuiGetDocumentOrShadowRoot(element);\r\n const rect = element.getBoundingClientRect();\r\n\r\n if (rect.width === 0 && rect.height === 0) {\r\n return null;\r\n }\r\n\r\n const left = cuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\r\n const top = cuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\r\n const right = cuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\r\n const bottom = cuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\r\n const horizontalMiddle = cuiClamp(\r\n Math.round(rect.left + rect.width / 2),\r\n 0,\r\n innerWidth,\r\n );\r\n const verticalMiddle = cuiClamp(\r\n Math.round(rect.top + rect.height / 2),\r\n 0,\r\n innerHeight,\r\n );\r\n const elements = [\r\n doc.elementFromPoint(horizontalMiddle, top),\r\n doc.elementFromPoint(horizontalMiddle, bottom),\r\n doc.elementFromPoint(left, verticalMiddle),\r\n doc.elementFromPoint(right, verticalMiddle),\r\n ];\r\n const nonNull = elements.filter(cuiIsPresent);\r\n\r\n if (!nonNull.length) {\r\n return [];\r\n }\r\n\r\n const filtered = nonNull.filter(\r\n (el) => !element.contains(el) && !el.contains(element),\r\n );\r\n\r\n return filtered.length === 4\r\n ? (filtered as [Element, Element, Element, Element])\r\n : null;\r\n}\r\n","import {ElementRef, inject} from '@angular/core';\r\n\r\nexport function cuiInjectElement<T = HTMLElement>(): T {\r\n return inject(ElementRef).nativeElement;\r\n}\r\n","export function cuiPointToClientRect(x = 0, y = 0): DOMRect {\r\n const rect = {\r\n x,\r\n y,\r\n left: x,\r\n right: x,\r\n top: y,\r\n bottom: y,\r\n width: 0,\r\n height: 0,\r\n } as const;\r\n\r\n return {\r\n ...rect,\r\n toJSON: () => rect,\r\n };\r\n}\r\n","export function cuiGetNativeFocused({activeElement}: Document): Element | null {\r\n if (!activeElement?.shadowRoot) {\r\n return activeElement;\r\n }\r\n\r\n let element = activeElement.shadowRoot.activeElement;\r\n\r\n while (element?.shadowRoot) {\r\n element = element.shadowRoot.activeElement;\r\n }\r\n\r\n return element;\r\n}\r\n","import { cuiGetNativeFocused } from './get-native-focused';\r\nimport { cuiIsHTMLElement } from '../dom';\r\n\r\nexport function cuiBlurNativeFocused(document: Document): void {\r\n const activeElement = cuiGetNativeFocused(document);\r\n\r\n if (cuiIsHTMLElement(activeElement)) {\r\n activeElement.blur();\r\n }\r\n}","import { cuiIsHTMLElement } from '../dom';\r\n\r\nexport function cuiIsNativeKeyboardFocusable(element: Element): boolean {\r\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\r\n return false;\r\n }\r\n\r\n if (\r\n (cuiIsHTMLElement(element) && element.isContentEditable) ||\r\n element.getAttribute('tabIndex') === '0'\r\n ) {\r\n return true;\r\n }\r\n\r\n switch (element.tagName) {\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n case 'VIDEO':\r\n case 'AUDIO':\r\n return element.hasAttribute('controls');\r\n case 'INPUT':\r\n return element.getAttribute('type') !== 'hidden';\r\n case 'A':\r\n case 'LINK':\r\n return element.hasAttribute('href');\r\n default:\r\n return false;\r\n }\r\n}","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\r\n\r\nexport function cuiIsNativeMouseFocusable(element: Element): boolean {\r\n return (\r\n !element.hasAttribute('disabled') &&\r\n (element.getAttribute('tabIndex') === '-1' ||\r\n cuiIsNativeKeyboardFocusable(element))\r\n );\r\n}","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\r\nimport { cuiIsNativeMouseFocusable } from './is-native-mouse-focusable';\r\nimport { cuiIsHTMLElement } from '../dom';\r\nimport { svgNodeFilter } from '../../constants';\r\n\r\nexport interface CuiGetClosestFocusableOptions {\r\n initial: Element;\r\n keyboard?: boolean;\r\n previous?: boolean;\r\n root: Node;\r\n}\r\n\r\nexport function cuiGetClosestFocusable({\r\n initial,\r\n root,\r\n previous = false,\r\n keyboard = true,\r\n }: CuiGetClosestFocusableOptions): HTMLElement | null {\r\n if (!root.ownerDocument) {\r\n return null;\r\n }\r\n\r\n const check = keyboard ? cuiIsNativeKeyboardFocusable : cuiIsNativeMouseFocusable;\r\n const treeWalker = root.ownerDocument.createTreeWalker(\r\n root,\r\n NodeFilter.SHOW_ELEMENT,\r\n svgNodeFilter,\r\n );\r\n\r\n treeWalker.currentNode = initial;\r\n\r\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\r\n if (cuiIsHTMLElement(treeWalker.currentNode)) {\r\n initial = treeWalker.currentNode;\r\n }\r\n\r\n if (cuiIsHTMLElement(initial) && check(initial)) {\r\n return initial;\r\n }\r\n }\r\n\r\n return null;\r\n}","import {cuiGetNativeFocused} from './get-native-focused';\r\n\r\n/**\r\n * Checks if element is focused.\r\n *\r\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\r\n *\r\n * @param node or null (as a common return value of DOM nodes walking)\r\n * @return true if focused\r\n */\r\nexport function cuiIsNativeFocused(node?: Node | null): boolean {\r\n return (\r\n !!node?.ownerDocument &&\r\n cuiGetNativeFocused(node.ownerDocument) === node &&\r\n node.ownerDocument.hasFocus()\r\n );\r\n}\r\n","export const CUI_SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;\r\nexport const CUI_IOS_REG_EXP = /ipad|iphone|ipod/i;\r\n\r\nexport function cuiIsIos({userAgent, maxTouchPoints}: Navigator): boolean {\r\n return CUI_SAFARI_REG_EXP.test(userAgent) || (CUI_IOS_REG_EXP.test(userAgent) && maxTouchPoints > 1);\r\n}\r\n","import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\r\nimport {inject} from '@angular/core';\r\nimport { cuiCreateTokenFromFactory } from '../utils';\r\nimport {BehaviorSubject, map, share, startWith, switchMap, timer} from 'rxjs';\r\n\r\n/**\r\n * Element currently being removed by AnimationEngine\r\n */\r\nexport const CUI_REMOVED_ELEMENT = cuiCreateTokenFromFactory(() => {\r\n const stub = {onRemovalComplete: () => {}};\r\n const element$ = new BehaviorSubject<Element | null>(null);\r\n const engine = inject(AnimationEngine, {optional: true}) || stub;\r\n const {onRemovalComplete = stub.onRemovalComplete} = engine;\r\n\r\n engine.onRemovalComplete = (element, context) => {\r\n element$.next(element);\r\n onRemovalComplete.call(engine, element, context);\r\n };\r\n\r\n return element$.pipe(\r\n switchMap((element) =>\r\n timer(0).pipe(\r\n map(() => null),\r\n startWith(element),\r\n ),\r\n ),\r\n share(),\r\n );\r\n});\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {inject, NgZone} from '@angular/core';\r\nimport { CUI_WINDOW } from './window';\r\nimport {cuiTypedFromEvent, cuiZonefreeScheduler} from '../observables';\r\nimport {\r\n cuiCreateTokenFromFactory,\r\n cuiGetActualTarget,\r\n cuiGetDocumentOrShadowRoot,\r\n cuiIsNativeMouseFocusable,\r\n} from '../utils';\r\nimport type {Observable} from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n merge,\r\n of,\r\n repeat,\r\n share,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n timer,\r\n withLatestFrom,\r\n} from 'rxjs';\r\n\r\nimport {CUI_REMOVED_ELEMENT} from './removed-element';\r\n\r\n// Checks if focusout event should be considered leaving active zone\r\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\r\n return (\r\n // Not due to switching tabs/going to DevTools\r\n cuiGetDocumentOrShadowRoot(target).activeElement !== target &&\r\n // Not due to button/input becoming disabled or under disabled fieldset\r\n !target.matches(':disabled') &&\r\n // Not due to element being removed from DOM\r\n !removedElement?.contains(target) &&\r\n // Not due to scrollable element became non-scrollable\r\n cuiIsNativeMouseFocusable(target)\r\n );\r\n}\r\n\r\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\r\n return merge(\r\n cuiTypedFromEvent(root, 'focusin').pipe(map(({target}) => target)),\r\n cuiTypedFromEvent(root, 'focusout').pipe(\r\n filter(\r\n ({target, relatedTarget}) => !!relatedTarget && isValidFocusout(target),\r\n ),\r\n map(({relatedTarget}) => relatedTarget),\r\n ),\r\n );\r\n}\r\n\r\n/**\r\n * Active element on the document for ActiveZone\r\n */\r\nexport const CUI_ACTIVE_ELEMENT = cuiCreateTokenFromFactory<\r\n Observable<EventTarget | null>\r\n>(() => {\r\n const removedElement$ = inject(CUI_REMOVED_ELEMENT);\r\n const win = inject(CUI_WINDOW);\r\n const doc = inject(DOCUMENT);\r\n const zone = inject(NgZone);\r\n const focusout$ = cuiTypedFromEvent(win, 'focusout', {capture: true});\r\n const focusin$ = cuiTypedFromEvent(win, 'focusin', {capture: true});\r\n const blur$ = cuiTypedFromEvent(win, 'blur');\r\n const mousedown$ = cuiTypedFromEvent(win, 'mousedown');\r\n const mouseup$ = cuiTypedFromEvent(win, 'mouseup');\r\n\r\n return merge(\r\n focusout$.pipe(\r\n takeUntil(mousedown$),\r\n repeat({delay: () => mouseup$}),\r\n withLatestFrom(removedElement$),\r\n filter(([event, removedElement]) =>\r\n isValidFocusout(cuiGetActualTarget(event), removedElement),\r\n ),\r\n map(([{relatedTarget}]) => relatedTarget),\r\n ),\r\n blur$.pipe(\r\n map(() => doc.activeElement),\r\n filter((element) => !!element?.matches('iframe')),\r\n ),\r\n focusin$.pipe(\r\n switchMap((event) => {\r\n const target = cuiGetActualTarget(event);\r\n const root = cuiGetDocumentOrShadowRoot(target) as Document;\r\n\r\n return root === doc\r\n ? of(target)\r\n : shadowRootActiveElement(root).pipe(startWith(target));\r\n }),\r\n ),\r\n mousedown$.pipe(\r\n switchMap((event) => {\r\n const actualTargetInCurrentTime = cuiGetActualTarget(event);\r\n\r\n return !doc.activeElement || doc.activeElement === doc.body\r\n ? of(actualTargetInCurrentTime)\r\n : focusout$.pipe(\r\n take(1),\r\n map(\r\n /**\r\n * Do not use `map(() => cuiGetActualTarget(event))`\r\n * because we have different result in runtime\r\n */\r\n () => actualTargetInCurrentTime,\r\n ),\r\n takeUntil(timer(0, cuiZonefreeScheduler(zone))),\r\n );\r\n }),\r\n ),\r\n ).pipe(distinctUntilChanged(), share());\r\n});\r\n","import {inject, InjectionToken} from '@angular/core';\r\nimport {Observable, share} from 'rxjs';\r\n\r\nimport { CUI_WINDOW } from './window';\r\n\r\nexport const CUI_ANIMATION_FRAME = new InjectionToken<Observable<DOMHighResTimeStamp>>(\r\n '[CUI_ANIMATION_FRAME]',\r\n {\r\n factory: () => {\r\n const {requestAnimationFrame, cancelAnimationFrame} = inject(CUI_WINDOW);\r\n const animationFrame$ = new Observable<DOMHighResTimeStamp>((subscriber) => {\r\n let id = NaN;\r\n const callback = (timestamp: DOMHighResTimeStamp): void => {\r\n subscriber.next(timestamp);\r\n id = requestAnimationFrame(callback);\r\n };\r\n\r\n id = requestAnimationFrame(callback);\r\n\r\n return () => {\r\n cancelAnimationFrame(id);\r\n };\r\n });\r\n\r\n return animationFrame$.pipe(share());\r\n },\r\n },\r\n);","import {inject} from '@angular/core';\r\nimport {toSignal} from '@angular/core/rxjs-interop';\r\nimport { CUI_NAVIGATOR, CUI_USER_AGENT, CUI_WINDOW } from '../tokens';\r\nimport {cuiIsIos} from '../utils';\r\nimport {CUI_FALSE_HANDLER} from '../constants';\r\nimport {cuiCreateTokenFromFactory} from '../utils';\r\nimport {fromEvent, map} from 'rxjs';\r\n\r\n// https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\r\nconst firstRegex =\r\n // eslint-disable-next-line sonarjs/regex-complexity\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;\r\nconst secondRegex =\r\n // eslint-disable-next-line sonarjs/regex-complexity\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;\r\n\r\nexport const CUI_IS_MOBILE = cuiCreateTokenFromFactory(\r\n () =>\r\n firstRegex.test(inject(CUI_USER_AGENT).toLowerCase()) ||\r\n secondRegex.test(inject(CUI_USER_AGENT).slice(0, 4).toLowerCase()),\r\n);\r\n\r\nexport const CUI_IS_IOS = cuiCreateTokenFromFactory(() => cuiIsIos(inject(CUI_NAVIGATOR)));\r\n\r\nexport const CUI_IS_ANDROID = cuiCreateTokenFromFactory(\r\n () => inject(CUI_IS_MOBILE) && !inject(CUI_IS_IOS),\r\n);\r\n\r\nexport const CUI_IS_WEBKIT = cuiCreateTokenFromFactory(\r\n () => !!inject<any>(CUI_WINDOW)?.webkitConvertPointFromNodeToPage,\r\n);\r\n\r\nexport const CUI_PLATFORM = cuiCreateTokenFromFactory<'android' | 'ios' | 'web'>(() => {\r\n if (inject(CUI_IS_IOS)) {\r\n return 'ios';\r\n }\r\n\r\n return inject(CUI_IS_ANDROID) ? 'android' : 'web';\r\n});\r\n\r\nexport const CUI_IS_TOUCH = cuiCreateTokenFromFactory(() => {\r\n const media = inject(CUI_WINDOW ).matchMedia('(pointer: coarse)');\r\n\r\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\r\n initialValue: media.matches,\r\n });\r\n});\r\n\r\n/**\r\n * Detect if app is running under Cypress\r\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\r\n */\r\nexport const CUI_IS_CYPRESS = cuiCreateTokenFromFactory(\r\n () => !!inject<any>(CUI_WINDOW).Cypress,\r\n);\r\n\r\n/**\r\n * Manually provide `true` when running tests in Playwright\r\n */\r\nexport const CUI_IS_PLAYWRIGHT = cuiCreateTokenFromFactory<boolean>(CUI_FALSE_HANDLER);\r\n\r\n/**\r\n * Detect if app is running under any of test frameworks\r\n */\r\nexport const CUI_IS_E2E = cuiCreateTokenFromFactory(\r\n () => inject(CUI_IS_CYPRESS) || inject(CUI_IS_PLAYWRIGHT),\r\n);\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\n\r\nexport const CUI_HISTORY = cuiCreateTokenFromFactory<History>(() => inject(CUI_WINDOW).history);","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_LOCAL_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).localStorage);","import {inject, InjectionToken} from '@angular/core';\r\n\r\nimport {CUI_WINDOW} from './window';\r\n\r\nexport const CUI_NAVIGATOR = new InjectionToken<Navigator>('[CUI_NAVIGATOR]', {\r\n factory: () => inject(CUI_WINDOW).navigator,\r\n});\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_SESSION_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).sessionStorage);","import {inject, InjectionToken} from '@angular/core';\r\n\r\nimport {CUI_NAVIGATOR} from './navigator';\r\n\r\nexport const CUI_USER_AGENT = new InjectionToken<string>('[CUI_USER_AGENT]', {\r\n factory: () => inject(CUI_NAVIGATOR).userAgent,\r\n});\r\n","import type {OnDestroy} from '@angular/core';\r\nimport {Directive, inject, Input, NgZone, Output} from '@angular/core';\r\nimport {NgControl} from '@angular/forms';\r\nimport {cuiZoneOptimized} from '../../observables';\r\nimport {CUI_ACTIVE_ELEMENT} from '../../tokens';\r\nimport {cuiArrayRemove, cuiInjectElement, cuiPure } from '../../utils';\r\nimport type {Observable} from 'rxjs';\r\nimport {distinctUntilChanged, map, skip, startWith, tap} from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector:\r\n '[cuiActiveZone]:not(ng-container), [cuiActiveZoneChange]:not(ng-container), [cuiActiveZoneParent]:not(ng-container)',\r\n exportAs: 'cuiActiveZone',\r\n host: {\r\n '(document:mousedown.silent)': '(0)',\r\n },\r\n})\r\nexport class CuiActiveZone implements OnDestroy {\r\n private readonly control: any = inject(NgControl, {self: true, optional: true});\r\n private readonly active$ = inject<Observable<Element | null>>(CUI_ACTIVE_ELEMENT);\r\n private readonly zone = inject(NgZone);\r\n private readonly el = cuiInjectElement();\r\n private cuiActiveZoneParent: CuiActiveZone | null = null;\r\n private subActiveZones: readonly CuiActiveZone[] = [];\r\n private readonly directParentActiveZone = inject(CuiActiveZone, {\r\n skipSelf: true,\r\n optional: true,\r\n });\r\n\r\n @Output()\r\n public readonly cuiActiveZoneChange = this.active$.pipe(\r\n map((element) => !!element && this.contains(element)),\r\n startWith(false),\r\n distinctUntilChanged(),\r\n skip(1),\r\n tap((active) => {\r\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\r\n this.control.valueAccessor.onTouched();\r\n }\r\n }),\r\n cuiZoneOptimized(this.zone),\r\n );\r\n\r\n constructor() {\r\n this.directParentActiveZone?.addSubActiveZone(this);\r\n }\r\n\r\n @Input('cuiActiveZoneParent')\r\n public set cuiActiveZoneParentSetter(zone: CuiActiveZone | null) {\r\n this.setZone(zone);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.directParentActiveZone?.removeSubActiveZone(this);\r\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\r\n }\r\n\r\n public contains(node: Node): boolean {\r\n return (\r\n this.el.contains(node) ||\r\n this.subActiveZones.some(\r\n (item, index, array) =>\r\n array.indexOf(item) === index && item.contains(node),\r\n )\r\n );\r\n }\r\n\r\n @cuiPure\r\n private setZone(zone: CuiActiveZone | null): void {\r\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\r\n zone?.addSubActiveZone(this);\r\n this.cuiActiveZoneParent = zone;\r\n }\r\n\r\n private addSubActiveZone(activeZone: CuiActiveZone): void {\r\n this.subActiveZones = [...this.subActiveZones, activeZone];\r\n }\r\n\r\n private removeSubActiveZone(activeZone: CuiActiveZone): void {\r\n this.subActiveZones = cuiArrayRemove(\r\n this.subActiveZones,\r\n this.subActiveZones.indexOf(activeZone),\r\n );\r\n }\r\n}\r\n","import type {Signal} from '@angular/core';\r\nimport {inject, Injectable, NgZone} from '@angular/core';\r\nimport {toSignal} from '@angular/core/rxjs-interop';\r\nimport {CUI_FALSE_HANDLER, CUI_TRUE_HANDLER} from '../../constants';\r\nimport {cuiTypedFromEvent, cuiWatch, cuiZoneOptimized} from '../../observables';\r\nimport {CUI_IS_MOBILE} from '../../tokens';\r\nimport { cuiInjectElement, cuiIsElement, } from '../../utils';\r\nimport {distinctUntilChanged, filter, map, merge, Observable, of} from 'rxjs';\r\n\r\nfunction movedOut({currentTarget, relatedTarget}: MouseEvent): boolean {\r\n return (\r\n !cuiIsElement(relatedTarget) ||\r\n !cuiIsElement(currentTarget) ||\r\n !currentTarget.contains(relatedTarget)\r\n );\r\n}\r\n\r\n@Injectable()\r\nexport class CuiHoveredService extends Observable<boolean> {\r\n private readonly el = cuiInjectElement();\r\n private readonly zone = inject(NgZone);\r\n\r\n private readonly stream$ = merge(\r\n cuiTypedFromEvent(this.el, 'mouseenter').pipe(map(CUI_TRUE_HANDLER)),\r\n cuiTypedFromEvent(this.el, 'mouseleave').pipe(map(CUI_FALSE_HANDLER)),\r\n // Hello, Safari\r\n cuiTypedFromEvent(this.el, 'mouseout').pipe(\r\n filter(movedOut),\r\n map(CUI_FALSE_HANDLER),\r\n ),\r\n ).pipe(distinctUntilChanged(), cuiZoneOptimized(this.zone));\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n}\r\n\r\nexport function cuiHovered(): Signal<boolean> {\r\n return toSignal(\r\n inject(CUI_IS_MOBILE) ? of(false) : inject(CuiHoveredService).pipe(cuiWatch()),\r\n {\r\n initialValue: false,\r\n },\r\n );\r\n}\r\n","import {Directive, inject, Output} from '@angular/core';\r\n\r\nimport {CuiHoveredService} from './hovered.service';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiHoveredChange]',\r\n providers: [CuiHoveredService],\r\n})\r\nexport class CuiHovered {\r\n @Output()\r\n public readonly cuiHoveredChange = inject(CuiHoveredService);\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiDestroyService extends Subject<void> implements OnDestroy {\r\n public ngOnDestroy(): void {\r\n this.next();\r\n this.complete();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst CUI = 'cui_';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiIdService {\r\n private static autoId = 0;\r\n\r\n public generate(): string {\r\n return `${CUI}${CuiIdService.autoId++}${Date.now()}`;\r\n }\r\n}\r\n","import type { ProviderToken, TemplateRef, Type } from '@angular/core';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport type { BehaviorSubject, Observer } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CuiIdService } from './id.service';\r\n\r\n// TODO: Content должен быть типом из директивы *content\r\nexport interface CuiPopoverContext {\r\n readonly $implicit: Observer<any>;\r\n readonly id: string;\r\n readonly component: Type<unknown>;\r\n readonly content: Type<unknown> | TemplateRef<unknown> | string;\r\n readonly completeWith: (value?: any) => void;\r\n}\r\n\r\nexport type CuiPopover<T> = T & CuiPopoverContext;\r\n\r\n@Injectable()\r\nexport abstract class CuiPopoverService<T> {\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly items$: BehaviorSubject<ReadonlyArray<CuiPopover<T>>>;\r\n private readonly component: Type<any>;\r\n\r\n constructor(\r\n items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>,\r\n component: Type<any>,\r\n private readonly options: T = {} as T\r\n ) {\r\n this.items$ = inject(items);\r\n this.component = component;\r\n }\r\n\r\n public open(\r\n content: CuiPopoverContext['content'],\r\n options: Partial<T> = {}\r\n ): Observable<any> {\r\n return new Observable(observer => {\r\n const item: CuiPopover<T> = {\r\n ...this.options,\r\n ...options,\r\n $implicit: observer,\r\n id: this.cuiIdService.generate(),\r\n component: this.component,\r\n content: content,\r\n completeWith: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n };\r\n\r\n this.items$.next([...this.items$.value, item]);\r\n\r\n return () => {\r\n this.items$.next(this.items$.value.filter(value => value !== item));\r\n };\r\n });\r\n }\r\n\r\n public closeAll(): void {\r\n this.items$.next([]);\r\n }\r\n}\r\n","import type { AfterViewChecked, OnInit } from '@angular/core';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject\r\n} from '@angular/core';\r\nimport { NgControl, NgModel } from '@angular/forms';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_WINDOW } from '../tokens';\r\nimport { CuiDestroyService } from '../services';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'textarea[cuiAutoResizing]',\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiAutoResizingDirective implements OnInit, AfterViewChecked {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\r\n private readonly ngModel = inject(NgModel, { self: true, optional: true });\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n private readonly elementStyles = this.element.style;\r\n\r\n public ngOnInit(): void {\r\n this.initNgControlValueChangeSubscription();\r\n this.initNgModelValueChangeSubscription();\r\n }\r\n\r\n public ngAfterViewChecked(): void {\r\n this.resize();\r\n }\r\n\r\n @HostListener('input')\r\n protected onInput(): void {\r\n this.resize();\r\n }\r\n\r\n private initNgControlValueChangeSubscription(): void {\r\n if (!this.ngControl) {\r\n return;\r\n }\r\n\r\n this.ngControl.valueChanges!\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.resize.bind(this));\r\n }\r\n\r\n private initNgModelValueChangeSubscription(): void {\r\n if (!this.ngModel) {\r\n return;\r\n }\r\n\r\n this.ngModel.valueChanges!\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.resize.bind(this));\r\n }\r\n\r\n private resize(): void {\r\n const {\r\n maxHeight:computedMaxHeight,\r\n borderTopWidth,\r\n borderBottomWidth\r\n } = this.window.getComputedStyle(this.element);\r\n\r\n this.elementStyles.height = 'auto';\r\n this.elementStyles.height =\r\n this.element.scrollHeight + parseFloat(borderTopWidth) + parseFloat(borderBottomWidth) + 'px';\r\n\r\n if (parseFloat(this.element.style.height) < parseFloat(computedMaxHeight)) {\r\n this.elementStyles.overflow = 'hidden';\r\n\r\n return;\r\n }\r\n\r\n this.elementStyles.overflowY = 'scroll';\r\n this.elementStyles.height = computedMaxHeight;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, inject, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '(cuiClickOutside)'\r\n})\r\nexport class CuiClickOutsideDirective {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n\r\n @Output()\r\n public cuiClickOutside = new EventEmitter<HTMLElement>();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n protected onClickOutside(target: HTMLElement): void {\r\n if (this.element.contains(target)) {\r\n return;\r\n }\r\n\r\n this.cuiClickOutside.emit(target);\r\n }\r\n}","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, inject, Output } from '@angular/core';\r\n\r\nimport type { CuiDimensions } from '../interfaces';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiResizeObserver]'\r\n})\r\nexport class CuiDimensionsObserverDirective implements OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n private readonly observer = new ResizeObserver((entries) => {\r\n entries.forEach(() => this.cuiResizeObserver.emit({\r\n width: this.element.offsetWidth,\r\n height: this.element.offsetHeight\r\n }));\r\n });\r\n\r\n @Output()\r\n public cuiResizeObserver = new EventEmitter<CuiDimensions>();\r\n\r\n public ngOnInit(): void {\r\n this.observer.observe(this.element);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.observer.disconnect();\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport type { CuiNullable } from '../types';\r\nimport type { CuiOnChange, CuiOnTouched } from '../interfaces';\r\nimport { cuiProvide } from '../utils/token';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[contenteditable][formControlName], [contenteditable][formControl], [contenteditable][ngModel]',\r\n providers: [cuiProvide(NG_VALUE_ACCESSOR, CuiContentEditableValueAccessorDirective, true)]\r\n})\r\nexport class CuiContentEditableValueAccessorDirective implements ControlValueAccessor {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.element.innerText = value ?? '';\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.element.contentEditable = String(!isDisabled);\r\n }\r\n\r\n @HostListener('input')\r\n protected onInput(): void {\r\n this.onChange(this.element.innerHTML === '<br>' ? '' : this.element.innerText);\r\n }\r\n\r\n @HostListener('blur')\r\n protected onBlur(): void {\r\n this.onTouched();\r\n }\r\n}","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiElement]',\r\n exportAs: 'elementRef',\r\n})\r\nexport class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {\r\n public nativeElement = inject(ElementRef<T>).nativeElement;\r\n\r\n constructor() {\r\n return new ElementRef<T>(this.nativeElement);\r\n }\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport {\r\n cuiBlurNativeFocused,\r\n cuiContainsOrAfter,\r\n cuiGetClosestFocusable,\r\n cuiGetNativeFocused,\r\n cuiIsHTMLElement\r\n} from '../utils';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiFocusTrap]',\r\n})\r\nexport class CuiFocusTrapDirective implements OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly activeElement = cuiGetNativeFocused(this.document);\r\n\r\n constructor() {\r\n this.initElementFocus();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n cuiBlurNativeFocused(this.document);\r\n\r\n Promise.resolve().then(() => {\r\n if (!cuiIsHTMLElement(this.activeElement)) {\r\n return;\r\n }\r\n\r\n this.activeElement.focus();\r\n });\r\n }\r\n\r\n @HostBinding('tabIndex')\r\n protected readonly tabIndex = 0;\r\n\r\n @HostListener('window:focusin', ['$event.target'])\r\n protected onFocusIn(node: Node): void {\r\n if (cuiContainsOrAfter(this.element, node)) {\r\n return;\r\n }\r\n\r\n cuiGetClosestFocusable({\r\n initial: this.element,\r\n root: this.element,\r\n })?.focus();\r\n }\r\n\r\n private initElementFocus(): void {\r\n Promise.resolve().then(() => this.element.focus());\r\n }\r\n}","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiItem]'\r\n})\r\nexport class CuiItemDirective {\r\n}","import type { CuiLetDirective } from './let.directive';\r\n\r\nexport class CuiLetContext<T> {\r\n constructor(private readonly internalDirectiveInstance: CuiLetDirective<T>) {}\r\n\r\n public get $implicit(): T {\r\n return this.internalDirectiveInstance.cuiLet;\r\n }\r\n\r\n public get cuiLet(): T {\r\n return this.internalDirectiveInstance.cuiLet;\r\n }\r\n}","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nimport { CuiLetContext } from './let.context';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiLet]'\r\n})\r\nexport class CuiLetDirective<T> {\r\n @Input()\r\n public cuiLet!: T;\r\n\r\n constructor() {\r\n inject(ViewContainerRef).createEmbeddedView(\r\n inject(TemplateRef<CuiLetContext<T>>),\r\n new CuiLetContext<T>(this),\r\n );\r\n }\r\n\r\n public static ngTemplateContextGuard<T>(\r\n _dir: CuiLetDirective<T>,\r\n _ctx: unknown,\r\n ): _ctx is CuiLetContext<T> {\r\n return true;\r\n }\r\n}","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[ccTarget]',\r\n})\r\nexport class CuiTargetDirective implements OnInit, OnDestroy {\r\n private readonly clickListener = (event: MouseEvent): void => {\r\n this.clicked.emit(event);\r\n };\r\n\r\n @Input()\r\n public ccTarget!: HTMLElement;\r\n\r\n @Output()\r\n public clicked = new EventEmitter<MouseEvent>();\r\n\r\n public ngOnInit(): void {\r\n this.initClickListener();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyClickListener();\r\n }\r\n\r\n private initClickListener(): void {\r\n this.ccTarget.addEventListener('click', this.clickListener);\r\n }\r\n\r\n private destroyClickListener(): void {\r\n this.ccTarget.removeEventListener('click', this.clickListener);\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input, NgZone } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cuiLadderList]'\r\n})\r\nexport class CuiLadderListDirective {\r\n private readonly zone = inject(NgZone);\r\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n\r\n private readonly LIST_ITEM_MARGIN_LEFT = 16;\r\n\r\n public readonly disabled = input(false);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.initElementsEffect();\r\n });\r\n }\r\n\r\n private initElementsEffect(): void {\r\n this.zone.runOutsideAngular(this.initObserver.bind(this));\r\n }\r\n\r\n private initObserver(): void {\r\n const observer = new MutationObserver(this.calculateListItemsMargin.bind(this));\r\n\r\n observer.observe(this.element, { childList: true });\r\n }\r\n\r\n private calculateListItemsMargin(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n let index = 0;\r\n\r\n this.element.childNodes.forEach((node) => {\r\n if (!(node instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n node.style.marginLeft = index * this.LIST_ITEM_MARGIN_LEFT + 'px';\r\n index += 1;\r\n });\r\n }\r\n}\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\nimport { CuiMatcher } from '../types';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'cuiFilter'\r\n})\r\nexport class CuiFilterPipe implements PipeTransform {\r\n transform<T, U extends unknown[]>(items: ReadonlyArray<T>, matcher: CuiMatcher<[T, ...U]>, ...args: U): T[] {\r\n return items.filter(item => matcher(item, ...args));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
|