@taiga-ui/cdk 4.30.0 → 4.31.0-canary.523b0e3
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/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/esm2022/constants/version.mjs +2 -2
- package/esm2022/directives/active-zone/active-zone.directive.mjs +3 -3
- package/esm2022/directives/obscured/obscured.directive.mjs +3 -3
- package/esm2022/observables/close-watcher.mjs +21 -0
- package/esm2022/observables/index.mjs +2 -1
- package/esm2022/utils/miscellaneous/create-token.mjs +4 -2
- package/fesm2022/taiga-ui-cdk-constants.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-obscured.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-observables.mjs +21 -1
- package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +3 -1
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
- package/observables/close-watcher.d.ts +2 -0
- package/observables/index.d.ts +1 -0
- package/package.json +7 -7
- package/schematics/ng-update/interfaces/html-comment.d.ts +2 -0
- package/schematics/ng-update/utils/templates/template-comments.js +3 -3
- package/schematics/ng-update/v4/steps/constants/html-comments.js +14 -0
package/constants/version.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export declare const TUI_VERSION = "4.
|
1
|
+
export declare const TUI_VERSION = "4.31.0-canary.523b0e3";
|
package/constants/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const TUI_VERSION = '4.
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
export const TUI_VERSION = '4.31.0-canary.523b0e3';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVFVJX1ZFUlNJT04gPSAnNC4zMS4wLWNhbmFyeS41MjNiMGUzJztcbiJdfQ==
|
@@ -4,7 +4,7 @@ import { NgControl } from '@angular/forms';
|
|
4
4
|
import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
|
5
5
|
import { TUI_ACTIVE_ELEMENT } from '@taiga-ui/cdk/tokens';
|
6
6
|
import { tuiArrayRemove, tuiInjectElement, tuiPure } from '@taiga-ui/cdk/utils';
|
7
|
-
import { distinctUntilChanged, map, skip, startWith, tap } from 'rxjs';
|
7
|
+
import { distinctUntilChanged, map, share, skip, startWith, tap } from 'rxjs';
|
8
8
|
import * as i0 from "@angular/core";
|
9
9
|
class TuiActiveZone {
|
10
10
|
constructor() {
|
@@ -22,7 +22,7 @@ class TuiActiveZone {
|
|
22
22
|
if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {
|
23
23
|
this.control.valueAccessor.onTouched();
|
24
24
|
}
|
25
|
-
}), tuiZoneOptimized(this.zone));
|
25
|
+
}), tuiZoneOptimized(this.zone), share());
|
26
26
|
this.directParentActiveZone?.addSubActiveZone(this);
|
27
27
|
}
|
28
28
|
set tuiActiveZoneParentSetter(zone) {
|
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
70
70
|
type: Input,
|
71
71
|
args: ['tuiActiveZoneParent']
|
72
72
|
}], setZone: [] } });
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RpcmVjdGl2ZXMvYWN0aXZlLXpvbmUvYWN0aXZlLXpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFNUUsTUFTYSxhQUFhO0lBMkJ0QjtRQTFCaUIsWUFBTyxHQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQy9ELFlBQU8sR0FBRyxNQUFNLENBQTZCLGtCQUFrQixDQUFDLENBQUM7UUFDakUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqQyx3QkFBbUIsR0FBeUIsSUFBSSxDQUFDO1FBQ2pELG1CQUFjLEdBQTZCLEVBQUUsQ0FBQztRQUNyQywyQkFBc0IsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzVELFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBR2Esd0JBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3JELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFDaEIsb0JBQW9CLEVBQUUsRUFDdEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQzFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMzQixLQUFLLEVBQUUsQ0FDVixDQUFDO1FBR0UsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUNXLHlCQUF5QixDQUFDLElBQTBCO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxRQUFRLENBQUMsSUFBVTtRQUN0QixPQUFPLENBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDM0QsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUdPLE9BQU8sQ0FBQyxJQUEwQjtRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFVBQXlCO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFVBQXlCO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUNoQyxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDMUMsQ0FBQztJQUNOLENBQUM7K0dBbkVRLGFBQWE7bUdBQWIsYUFBYTs7QUFvRGQ7SUFEUCxPQUFPOzRDQUtQO1NBeERRLGFBQWE7NEZBQWIsYUFBYTtrQkFUekIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUNKLHFIQUFxSDtvQkFDekgsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLElBQUksRUFBRTt3QkFDRiwrQkFBK0IsRUFBRSxLQUFLO3FCQUN6QztpQkFDSjswRUFjbUIsbUJBQW1CO3NCQURsQyxNQUFNO2dCQW9CSSx5QkFBeUI7c0JBRG5DLEtBQUs7dUJBQUMscUJBQXFCO2dCQXFCcEIsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge3R1aVpvbmVPcHRpbWl6ZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUVUlfQUNUSVZFX0VMRU1FTlR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7dHVpQXJyYXlSZW1vdmUsIHR1aUluamVjdEVsZW1lbnQsIHR1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMnO1xuaW1wb3J0IHR5cGUge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZSwgc2tpcCwgc3RhcnRXaXRoLCB0YXB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOlxuICAgICAgICAnW3R1aUFjdGl2ZVpvbmVdOm5vdChuZy1jb250YWluZXIpLCBbdHVpQWN0aXZlWm9uZUNoYW5nZV06bm90KG5nLWNvbnRhaW5lciksIFt0dWlBY3RpdmVab25lUGFyZW50XTpub3QobmctY29udGFpbmVyKScsXG4gICAgZXhwb3J0QXM6ICd0dWlBY3RpdmVab25lJyxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZG9jdW1lbnQ6bW91c2Vkb3duLnpvbmVsZXNzKSc6ICcoMCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUFjdGl2ZVpvbmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbDogYW55ID0gaW5qZWN0KE5nQ29udHJvbCwge3NlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmUkID0gaW5qZWN0PE9ic2VydmFibGU8RWxlbWVudCB8IG51bGw+PihUVUlfQUNUSVZFX0VMRU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSB0dWlBY3RpdmVab25lUGFyZW50OiBUdWlBY3RpdmVab25lIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBzdWJBY3RpdmVab25lczogcmVhZG9ubHkgVHVpQWN0aXZlWm9uZVtdID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3RQYXJlbnRBY3RpdmVab25lID0gaW5qZWN0KFR1aUFjdGl2ZVpvbmUsIHtcbiAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHR1aUFjdGl2ZVpvbmVDaGFuZ2UgPSB0aGlzLmFjdGl2ZSQucGlwZShcbiAgICAgICAgbWFwKChlbGVtZW50KSA9PiAhIWVsZW1lbnQgJiYgdGhpcy5jb250YWlucyhlbGVtZW50KSksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcCgoYWN0aXZlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZSAmJiB0eXBlb2YgdGhpcy5jb250cm9sPy52YWx1ZUFjY2Vzc29yLm9uVG91Y2hlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdHVpWm9uZU9wdGltaXplZCh0aGlzLnpvbmUpLFxuICAgICAgICBzaGFyZSgpLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kaXJlY3RQYXJlbnRBY3RpdmVab25lPy5hZGRTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgndHVpQWN0aXZlWm9uZVBhcmVudCcpXG4gICAgcHVibGljIHNldCB0dWlBY3RpdmVab25lUGFyZW50U2V0dGVyKHpvbmU6IFR1aUFjdGl2ZVpvbmUgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuc2V0Wm9uZSh6b25lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlyZWN0UGFyZW50QWN0aXZlWm9uZT8ucmVtb3ZlU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgdGhpcy50dWlBY3RpdmVab25lUGFyZW50Py5yZW1vdmVTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb250YWlucyhub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmVsLmNvbnRhaW5zKG5vZGUpIHx8XG4gICAgICAgICAgICB0aGlzLnN1YkFjdGl2ZVpvbmVzLnNvbWUoXG4gICAgICAgICAgICAgICAgKGl0ZW0sIGluZGV4LCBhcnJheSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYXJyYXkuaW5kZXhPZihpdGVtKSA9PT0gaW5kZXggJiYgaXRlbS5jb250YWlucyhub2RlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgc2V0Wm9uZSh6b25lOiBUdWlBY3RpdmVab25lIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnR1aUFjdGl2ZVpvbmVQYXJlbnQ/LnJlbW92ZVN1YkFjdGl2ZVpvbmUodGhpcyk7XG4gICAgICAgIHpvbmU/LmFkZFN1YkFjdGl2ZVpvbmUodGhpcyk7XG4gICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudCA9IHpvbmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRTdWJBY3RpdmVab25lKGFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcyA9IFsuLi50aGlzLnN1YkFjdGl2ZVpvbmVzLCBhY3RpdmVab25lXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVN1YkFjdGl2ZVpvbmUoYWN0aXZlWm9uZTogVHVpQWN0aXZlWm9uZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YkFjdGl2ZVpvbmVzID0gdHVpQXJyYXlSZW1vdmUoXG4gICAgICAgICAgICB0aGlzLnN1YkFjdGl2ZVpvbmVzLFxuICAgICAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcy5pbmRleE9mKGFjdGl2ZVpvbmUpLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Directive, inject, Input, Output } from '@angular/core';
|
2
2
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
3
3
|
import { tuiIfMap } from '@taiga-ui/cdk/observables';
|
4
|
-
import {
|
4
|
+
import { BehaviorSubject, map } from 'rxjs';
|
5
5
|
import { TuiObscuredService } from './obscured.service';
|
6
6
|
import * as i0 from "@angular/core";
|
7
7
|
/**
|
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
|
|
10
10
|
class TuiObscured {
|
11
11
|
constructor() {
|
12
12
|
this.activeZone = inject(TuiActiveZone, { optional: true });
|
13
|
-
this.enabled$ = new
|
13
|
+
this.enabled$ = new BehaviorSubject(false);
|
14
14
|
this.obscured$ = inject(TuiObscuredService, { self: true }).pipe(map((by) => !!by?.every((el) => !this.activeZone?.contains(el))));
|
15
15
|
this.tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));
|
16
16
|
}
|
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
33
33
|
}], tuiObscuredEnabled: [{
|
34
34
|
type: Input
|
35
35
|
}] } });
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzY3VyZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RpcmVjdGl2ZXMvb2JzY3VyZWQvb2JzY3VyZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFdEQ7O0dBRUc7QUFDSCxNQUthLFdBQVc7SUFMeEI7UUFNcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNyRCxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUM7UUFHYyxnQkFBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQU1wRjtJQUpHLElBQ1csa0JBQWtCLENBQUMsT0FBZ0I7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQzsrR0FiUSxXQUFXO21HQUFYLFdBQVcsMkpBRlQsQ0FBQyxrQkFBa0IsQ0FBQzs7U0FFdEIsV0FBVzs0RkFBWCxXQUFXO2tCQUx2QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsZUFBZTtvQkFDekIsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ2xDOzhCQVNtQixXQUFXO3NCQUQxQixNQUFNO2dCQUlJLGtCQUFrQjtzQkFENUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlBY3RpdmVab25lfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYWN0aXZlLXpvbmUnO1xuaW1wb3J0IHt0dWlJZk1hcH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlPYnNjdXJlZFNlcnZpY2V9IGZyb20gJy4vb2JzY3VyZWQuc2VydmljZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRoYXQgbW9uaXRvcnMgZWxlbWVudCB2aXNpYmlsaXR5XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpT2JzY3VyZWRdJyxcbiAgICBwcm92aWRlcnM6IFtUdWlPYnNjdXJlZFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlPYnNjdXJlZCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVab25lID0gaW5qZWN0KFR1aUFjdGl2ZVpvbmUsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9ic2N1cmVkJCA9IGluamVjdChUdWlPYnNjdXJlZFNlcnZpY2UsIHtzZWxmOiB0cnVlfSkucGlwZShcbiAgICAgICAgbWFwKChieSkgPT4gISFieT8uZXZlcnkoKGVsKSA9PiAhdGhpcy5hY3RpdmVab25lPy5jb250YWlucyhlbCkpKSxcbiAgICApO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHR1aU9ic2N1cmVkID0gdGhpcy5lbmFibGVkJC5waXBlKHR1aUlmTWFwKCgpID0+IHRoaXMub2JzY3VyZWQkKSk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdHVpT2JzY3VyZWRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5lbmFibGVkJC5uZXh0KGVuYWJsZWQpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { Observable } from 'rxjs';
|
2
|
+
export function tuiCloseWatcher() {
|
3
|
+
return new Observable((subscriber) => {
|
4
|
+
let watcher = getWatcher();
|
5
|
+
const setup = () => {
|
6
|
+
watcher = getWatcher();
|
7
|
+
watcher.onclose = () => setup();
|
8
|
+
watcher.oncancel = (event) => {
|
9
|
+
event.preventDefault();
|
10
|
+
subscriber.next();
|
11
|
+
};
|
12
|
+
};
|
13
|
+
setup();
|
14
|
+
return () => watcher.destroy();
|
15
|
+
});
|
16
|
+
}
|
17
|
+
function getWatcher() {
|
18
|
+
// @ts-ignore
|
19
|
+
return typeof CloseWatcher === 'undefined' ? { destroy: () => { } } : new CloseWatcher();
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utd2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9vYnNlcnZhYmxlcy9jbG9zZS13YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFRaEMsTUFBTSxVQUFVLGVBQWU7SUFDM0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ2pDLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBRTNCLE1BQU0sS0FBSyxHQUFHLEdBQVMsRUFBRTtZQUNyQixPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVoQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQztRQUVGLEtBQUssRUFBRSxDQUFDO1FBRVIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxVQUFVO0lBQ2YsYUFBYTtJQUNiLE9BQU8sT0FBTyxZQUFZLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIENsb3NlV2F0Y2hlciB7XG4gICAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgICBvbmNsb3NlPzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICBvbmNhbmNlbD86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlDbG9zZVdhdGNoZXIoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgIGxldCB3YXRjaGVyID0gZ2V0V2F0Y2hlcigpO1xuXG4gICAgICAgIGNvbnN0IHNldHVwID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgd2F0Y2hlciA9IGdldFdhdGNoZXIoKTtcbiAgICAgICAgICAgIHdhdGNoZXIub25jbG9zZSA9ICgpID0+IHNldHVwKCk7XG5cbiAgICAgICAgICAgIHdhdGNoZXIub25jYW5jZWwgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBzZXR1cCgpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB3YXRjaGVyLmRlc3Ryb3koKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0V2F0Y2hlcigpOiBDbG9zZVdhdGNoZXIge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdHlwZW9mIENsb3NlV2F0Y2hlciA9PT0gJ3VuZGVmaW5lZCcgPyB7ZGVzdHJveTogKCkgPT4ge319IDogbmV3IENsb3NlV2F0Y2hlcigpO1xufVxuIl19
|
@@ -1,3 +1,4 @@
|
|
1
|
+
export * from './close-watcher';
|
1
2
|
export * from './control-value';
|
2
3
|
export * from './drag-and-drop-from';
|
3
4
|
export * from './events';
|
@@ -10,4 +11,4 @@ export * from './typed-from-event';
|
|
10
11
|
export * from './untracked-scheduler';
|
11
12
|
export * from './watch';
|
12
13
|
export * from './zone';
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvb2JzZXJ2YWJsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jbG9zZS13YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbC12YWx1ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctYW5kLWRyb3AtZnJvbSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2lmLW1hcCc7XG5leHBvcnQgKiBmcm9tICcuL211c3QtYmUtcHJlc2VudCc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5LWxpc3Qtb2JzZXJ2YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbC1mcm9tJztcbmV4cG9ydCAqIGZyb20gJy4vdGFrZS11bnRpbC1kZXN0cm95ZWQnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlZC1mcm9tLWV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdW50cmFja2VkLXNjaGVkdWxlcic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoJztcbmV4cG9ydCAqIGZyb20gJy4vem9uZSc7XG4iXX0=
|
@@ -1,8 +1,10 @@
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
2
2
|
export function tuiCreateToken(defaults) {
|
3
|
-
return
|
3
|
+
return defaults === undefined
|
4
|
+
? new InjectionToken('')
|
5
|
+
: tuiCreateTokenFromFactory(() => defaults);
|
4
6
|
}
|
5
7
|
export function tuiCreateTokenFromFactory(factory) {
|
6
8
|
return factory ? new InjectionToken('', { factory }) : new InjectionToken('');
|
7
9
|
}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMvY3JlYXRlLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0MsTUFBTSxVQUFVLGNBQWMsQ0FBSSxRQUFZO0lBQzFDLE9BQU8sUUFBUSxLQUFLLFNBQVM7UUFDekIsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBSSxPQUFpQjtJQUMxRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUksRUFBRSxFQUFFLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUksRUFBRSxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpQ3JlYXRlVG9rZW48VD4oZGVmYXVsdHM/OiBUKTogSW5qZWN0aW9uVG9rZW48VD4ge1xuICAgIHJldHVybiBkZWZhdWx0cyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbmV3IEluamVjdGlvblRva2VuKCcnKVxuICAgICAgICA6IHR1aUNyZWF0ZVRva2VuRnJvbUZhY3RvcnkoKCkgPT4gZGVmYXVsdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpQ3JlYXRlVG9rZW5Gcm9tRmFjdG9yeTxUPihmYWN0b3J5PzogKCkgPT4gVCk6IEluamVjdGlvblRva2VuPFQ+IHtcbiAgICByZXR1cm4gZmFjdG9yeSA/IG5ldyBJbmplY3Rpb25Ub2tlbjxUPignJywge2ZhY3Rvcnl9KSA6IG5ldyBJbmplY3Rpb25Ub2tlbjxUPignJyk7XG59XG4iXX0=
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `−`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `−`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.31.0-canary.523b0e3';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -5,7 +5,7 @@ import { NgControl } from '@angular/forms';
|
|
5
5
|
import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
|
6
6
|
import { TUI_ACTIVE_ELEMENT } from '@taiga-ui/cdk/tokens';
|
7
7
|
import { tuiInjectElement, tuiArrayRemove, tuiPure } from '@taiga-ui/cdk/utils';
|
8
|
-
import { map, startWith, distinctUntilChanged, skip, tap } from 'rxjs';
|
8
|
+
import { map, startWith, distinctUntilChanged, skip, tap, share } from 'rxjs';
|
9
9
|
|
10
10
|
class TuiActiveZone {
|
11
11
|
constructor() {
|
@@ -23,7 +23,7 @@ class TuiActiveZone {
|
|
23
23
|
if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {
|
24
24
|
this.control.valueAccessor.onTouched();
|
25
25
|
}
|
26
|
-
}), tuiZoneOptimized(this.zone));
|
26
|
+
}), tuiZoneOptimized(this.zone), share());
|
27
27
|
this.directParentActiveZone?.addSubActiveZone(this);
|
28
28
|
}
|
29
29
|
set tuiActiveZoneParentSetter(zone) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-active-zone.mjs","sources":["../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Input, NgZone, Output} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayRemove, tuiInjectElement, tuiPure} from '@taiga-ui/cdk/utils';\nimport type {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, skip, startWith, tap} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector:\n '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n exportAs: 'tuiActiveZone',\n host: {\n '(document:mousedown.zoneless)': '(0)',\n },\n})\nexport class TuiActiveZone implements OnDestroy {\n private readonly control: any = inject(NgControl, {self: true, optional: true});\n private readonly active$ = inject<Observable<Element | null>>(TUI_ACTIVE_ELEMENT);\n private readonly zone = inject(NgZone);\n private readonly el = tuiInjectElement();\n private tuiActiveZoneParent: TuiActiveZone | null = null;\n private subActiveZones: readonly TuiActiveZone[] = [];\n private readonly directParentActiveZone = inject(TuiActiveZone, {\n skipSelf: true,\n optional: true,\n });\n\n @Output()\n public readonly tuiActiveZoneChange = this.active$.pipe(\n map((element) => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tap((active) => {\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\n this.control.valueAccessor.onTouched();\n }\n }),\n tuiZoneOptimized(this.zone),\n );\n\n constructor() {\n this.directParentActiveZone?.addSubActiveZone(this);\n }\n\n @Input('tuiActiveZoneParent')\n public set tuiActiveZoneParentSetter(zone: TuiActiveZone | null) {\n this.setZone(zone);\n }\n\n public ngOnDestroy(): void {\n this.directParentActiveZone?.removeSubActiveZone(this);\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n }\n\n public contains(node: Node): boolean {\n return (\n this.el.contains(node) ||\n this.subActiveZones.some(\n (item, index, array) =>\n array.indexOf(item) === index && item.contains(node),\n )\n );\n }\n\n @tuiPure\n private setZone(zone: TuiActiveZone | null): void {\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n zone?.addSubActiveZone(this);\n this.tuiActiveZoneParent = zone;\n }\n\n private addSubActiveZone(activeZone: TuiActiveZone): void {\n this.subActiveZones = [...this.subActiveZones, activeZone];\n }\n\n private removeSubActiveZone(activeZone: TuiActiveZone): void {\n this.subActiveZones = tuiArrayRemove(\n this.subActiveZones,\n this.subActiveZones.indexOf(activeZone),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AASA,MASa,aAAa,CAAA;
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-active-zone.mjs","sources":["../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Input, NgZone, Output} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayRemove, tuiInjectElement, tuiPure} from '@taiga-ui/cdk/utils';\nimport type {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, share, skip, startWith, tap} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector:\n '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n exportAs: 'tuiActiveZone',\n host: {\n '(document:mousedown.zoneless)': '(0)',\n },\n})\nexport class TuiActiveZone implements OnDestroy {\n private readonly control: any = inject(NgControl, {self: true, optional: true});\n private readonly active$ = inject<Observable<Element | null>>(TUI_ACTIVE_ELEMENT);\n private readonly zone = inject(NgZone);\n private readonly el = tuiInjectElement();\n private tuiActiveZoneParent: TuiActiveZone | null = null;\n private subActiveZones: readonly TuiActiveZone[] = [];\n private readonly directParentActiveZone = inject(TuiActiveZone, {\n skipSelf: true,\n optional: true,\n });\n\n @Output()\n public readonly tuiActiveZoneChange = this.active$.pipe(\n map((element) => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tap((active) => {\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\n this.control.valueAccessor.onTouched();\n }\n }),\n tuiZoneOptimized(this.zone),\n share(),\n );\n\n constructor() {\n this.directParentActiveZone?.addSubActiveZone(this);\n }\n\n @Input('tuiActiveZoneParent')\n public set tuiActiveZoneParentSetter(zone: TuiActiveZone | null) {\n this.setZone(zone);\n }\n\n public ngOnDestroy(): void {\n this.directParentActiveZone?.removeSubActiveZone(this);\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n }\n\n public contains(node: Node): boolean {\n return (\n this.el.contains(node) ||\n this.subActiveZones.some(\n (item, index, array) =>\n array.indexOf(item) === index && item.contains(node),\n )\n );\n }\n\n @tuiPure\n private setZone(zone: TuiActiveZone | null): void {\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n zone?.addSubActiveZone(this);\n this.tuiActiveZoneParent = zone;\n }\n\n private addSubActiveZone(activeZone: TuiActiveZone): void {\n this.subActiveZones = [...this.subActiveZones, activeZone];\n }\n\n private removeSubActiveZone(activeZone: TuiActiveZone): void {\n this.subActiveZones = tuiArrayRemove(\n this.subActiveZones,\n this.subActiveZones.indexOf(activeZone),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable, Directive, Output, Input } from '@angular/core';
|
3
3
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
4
4
|
import { tuiZonefreeScheduler, tuiZoneOptimized, tuiIfMap } from '@taiga-ui/cdk/observables';
|
5
|
-
import { Observable, throttleTime, map, startWith, distinctUntilChanged,
|
5
|
+
import { Observable, throttleTime, map, startWith, distinctUntilChanged, BehaviorSubject } from 'rxjs';
|
6
6
|
import { WA_ANIMATION_FRAME } from '@ng-web-apis/common';
|
7
7
|
import { tuiInjectElement, tuiGetElementObscures } from '@taiga-ui/cdk/utils/dom';
|
8
8
|
|
@@ -29,7 +29,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
29
29
|
class TuiObscured {
|
30
30
|
constructor() {
|
31
31
|
this.activeZone = inject(TuiActiveZone, { optional: true });
|
32
|
-
this.enabled$ = new
|
32
|
+
this.enabled$ = new BehaviorSubject(false);
|
33
33
|
this.obscured$ = inject(TuiObscuredService, { self: true }).pipe(map((by) => !!by?.every((el) => !this.activeZone?.contains(el))));
|
34
34
|
this.tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));
|
35
35
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-obscured.mjs","sources":["../../../projects/cdk/directives/obscured/obscured.service.ts","../../../projects/cdk/directives/obscured/obscured.directive.ts","../../../projects/cdk/directives/obscured/taiga-ui-cdk-directives-obscured.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\n/**\n * Service that monitors element visibility by polling and returning\n * either null or an array of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly el = tuiInjectElement();\n private readonly obscured$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(100, tuiZonefreeScheduler()),\n map(() => tuiGetElementObscures(this.el)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.obscured$.subscribe(subscriber));\n }\n}\n","import {Directive, inject, Input, Output} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-obscured.mjs","sources":["../../../projects/cdk/directives/obscured/obscured.service.ts","../../../projects/cdk/directives/obscured/obscured.directive.ts","../../../projects/cdk/directives/obscured/taiga-ui-cdk-directives-obscured.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\n/**\n * Service that monitors element visibility by polling and returning\n * either null or an array of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly el = tuiInjectElement();\n private readonly obscured$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(100, tuiZonefreeScheduler()),\n map(() => tuiGetElementObscures(this.el)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.obscured$.subscribe(subscriber));\n }\n}\n","import {Directive, inject, Input, Output} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {BehaviorSubject, map} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n standalone: true,\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n private readonly enabled$ = new BehaviorSubject(false);\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n map((by) => !!by?.every((el) => !this.activeZone?.contains(el))),\n );\n\n @Output()\n public readonly tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));\n\n @Input()\n public set tuiObscuredEnabled(enabled: boolean) {\n this.enabled$.next(enabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA;;;AAGG;AACH,MACa,kBAAmB,SAAQ,UAAqC,CAAA;AAUzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAV/C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxD,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,EACzC,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,EACtB,gBAAgB,EAAE,CACrB,CAAC;KAID;+GAZQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACHX;;AAEG;AACH,MAKa,WAAW,CAAA;AALxB,IAAA,WAAA,GAAA;QAMqB,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CACnE,CAAC;AAGc,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAMpF,KAAA;IAJG,IACW,kBAAkB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/B;+GAbQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFT,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,iBAAA,CAAA;8BASmB,WAAW,EAAA,CAAA;sBAD1B,MAAM;gBAII,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;;;ACzBV;;AAEG;;;;"}
|
@@ -3,6 +3,26 @@ import { tuiIsPresent, tuiGetOriginalArrayFromQueryList } from '@taiga-ui/cdk/ut
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
4
4
|
import { untracked, inject, ChangeDetectorRef, NgZone } from '@angular/core';
|
5
5
|
|
6
|
+
function tuiCloseWatcher() {
|
7
|
+
return new Observable((subscriber) => {
|
8
|
+
let watcher = getWatcher();
|
9
|
+
const setup = () => {
|
10
|
+
watcher = getWatcher();
|
11
|
+
watcher.onclose = () => setup();
|
12
|
+
watcher.oncancel = (event) => {
|
13
|
+
event.preventDefault();
|
14
|
+
subscriber.next();
|
15
|
+
};
|
16
|
+
};
|
17
|
+
setup();
|
18
|
+
return () => watcher.destroy();
|
19
|
+
});
|
20
|
+
}
|
21
|
+
function getWatcher() {
|
22
|
+
// @ts-ignore
|
23
|
+
return typeof CloseWatcher === 'undefined' ? { destroy: () => { } } : new CloseWatcher();
|
24
|
+
}
|
25
|
+
|
6
26
|
/**
|
7
27
|
* Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)
|
8
28
|
*/
|
@@ -127,5 +147,5 @@ function tuiZonefullScheduler(zone = inject(NgZone), scheduler = asyncScheduler)
|
|
127
147
|
* Generated bundle index. Do not edit.
|
128
148
|
*/
|
129
149
|
|
130
|
-
export { TuiDragState, TuiValuePresentException, tuiControlValue, tuiDragAndDropFrom, tuiIfMap, tuiMustBePresent, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTakeUntilDestroyed, tuiTypedFromEvent, tuiUntrackedScheduler, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefreeScheduler, tuiZonefull, tuiZonefullScheduler };
|
150
|
+
export { TuiDragState, TuiValuePresentException, tuiCloseWatcher, tuiControlValue, tuiDragAndDropFrom, tuiIfMap, tuiMustBePresent, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTakeUntilDestroyed, tuiTypedFromEvent, tuiUntrackedScheduler, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefreeScheduler, tuiZonefull, tuiZonefullScheduler };
|
131
151
|
//# sourceMappingURL=taiga-ui-cdk-observables.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/must-be-present.ts","../../../projects/cdk/observables/query-list-observable.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/untracked-scheduler.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import type {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n return new Observable((subscriber) =>\n control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n );\n}\n","import type {Observable} from 'rxjs';\nimport {fromEvent} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean,\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\n E extends Event,\n T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n target: T,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {concat, endWith, map, merge, repeat, take, takeWhile} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n constructor(\n public readonly stage: TuiDragStage,\n public readonly event: MouseEvent,\n ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n return concat(\n tuiTypedFromEvent(element, 'mousedown').pipe(\n take(1),\n map((event) => new TuiDragState('start', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => new TuiDragState('continues', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mouseup'),\n tuiTypedFromEvent(ownerDocument, 'dragend'),\n ).pipe(\n take(1),\n map((event) => new TuiDragState('end', event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.stopPropagation());\n}\n","import type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport type {Observable, OperatorFunction} from 'rxjs';\nimport {EMPTY, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiMustBePresent<T>(): OperatorFunction<T | null | undefined, T> {\n return map((value) => {\n if (!tuiIsPresent(value)) {\n throw new TuiValuePresentException();\n }\n\n return value;\n });\n}\n\nexport class TuiValuePresentException extends Error {\n constructor() {\n super(ngDevMode ? 'Value must present' : '');\n }\n}\n","import type {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function tuiQueryListChanges<T>(\n queryList: QueryList<T>,\n): Observable<readonly T[]> {\n return queryList.changes.pipe(\n startWith(null),\n map(() => tuiGetOriginalArrayFromQueryList(queryList)),\n );\n}\n","import type {Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n return tuiTypedFromEvent(\n element === element.ownerDocument.documentElement\n ? element.ownerDocument\n : element,\n 'scroll',\n );\n}\n","import type {DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {catchError, defaultIfEmpty, EMPTY, NEVER, pipe, takeUntil} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n return pipe(\n takeUntil(\n NEVER.pipe(\n takeUntilDestroyed(destroyRef),\n catchError(() => EMPTY),\n defaultIfEmpty(null),\n ),\n ),\n );\n}\n","import {untracked} from '@angular/core';\nimport type {SchedulerAction, SchedulerLike, Subscription} from 'rxjs';\nimport {queueScheduler} from 'rxjs';\n\nexport const tuiUntrackedScheduler: SchedulerLike = {\n now: queueScheduler.now.bind(queueScheduler),\n\n schedule<T>(\n work: (this: SchedulerAction<T>, state?: T) => void,\n delay?: number,\n state?: T,\n ): Subscription {\n return queueScheduler.schedule(\n function (this: SchedulerAction<T>, s?: T) {\n return untracked(() => work.call(this, s));\n },\n delay,\n state,\n );\n },\n};\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport type {MonoTypeOperatorFunction, SchedulerLike, Subscription} from 'rxjs';\nimport {asyncScheduler, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler,\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function tuiZonefreeScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;AAEG;AACG,SAAU,eAAe,CAC3B,OAA0D,EAAA;IAE1D,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAC7B,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC9E,CAAC;AACN;;AC4CM,SAAU,iBAAiB,CAC7B,MAA8B,EAC9B,KAAa,EACb,UAAmC,EAAE,EAAA;AAErC;;;AAGG;IACH,OAAO,SAAS,CAAI,MAAa,EAAE,KAAK,EAAE,OAAO,CAA6B,CAAC;AACnF;;MC1Da,YAAY,CAAA;IACrB,WACoB,CAAA,KAAmB,EACnB,KAAiB,EAAA;QADjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACjC;AACP,CAAA;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAA;AAC/C,IAAA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC;IAEhC,OAAO,MAAM,CACT,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CACxC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACnD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CACvD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,EAC3C,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAC9C,CAAC,IAAI,CACF,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAC9C,OAAO,CAAC,IAAI,CAAC,CAChB,CACJ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAClC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACrB;;SClCgB,iBAAiB,GAAA;AAC7B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AAClD,CAAC;SAEe,kBAAkB,GAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACnD;;SCLgB,QAAQ,CACpB,OAAoC,EACpC,YAAkC,OAAO,EAAA;AAEzC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF;;ACTA;SAMgB,gBAAgB,GAAA;AAC5B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAI;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,wBAAwB,EAAE,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC,CAAC;AACP,CAAC;AAEK,MAAO,wBAAyB,SAAQ,KAAK,CAAA;AAC/C,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,SAAS,GAAG,oBAAoB,GAAG,EAAE,CAAC,CAAC;KAChD;AACJ;;ACfD;;AAEG;AACG,SAAU,mBAAmB,CAC/B,SAAuB,EAAA;IAEvB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,gCAAgC,CAAC,SAAS,CAAC,CAAC,CACzD,CAAC;AACN;;ACXA;;AAEG;AACG,SAAU,aAAa,CAAC,OAAgB,EAAA;IAC1C,OAAO,iBAAiB,CACpB,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,eAAe;UAC3C,OAAO,CAAC,aAAa;AACvB,UAAE,OAAO,EACb,QAAQ,CACX,CAAC;AACN;;ACTA;AACA;AACA;AACM,SAAU,qBAAqB,CACjC,UAAuB,EAAA;AAEvB,IAAA,OAAO,IAAI,CACP,SAAS,CACL,KAAK,CAAC,IAAI,CACN,kBAAkB,CAAC,UAAU,CAAC,EAC9B,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,cAAc,CAAC,IAAI,CAAC,CACvB,CACJ,CACJ,CAAC;AACN;;AChBa,MAAA,qBAAqB,GAAkB;IAChD,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAE5C,IAAA,QAAQ,CACJ,IAAmD,EACnD,KAAc,EACd,KAAS,EAAA;AAET,QAAA,OAAO,cAAc,CAAC,QAAQ,CAC1B,UAAoC,CAAK,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAC,EACD,KAAK,EACL,KAAK,CACR,CAAC;KACL;;;ACfC,SAAU,QAAQ,CACpB,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,EAAA;IAE/B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACzC;;ACJM,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,MAAM,CAAC,SAAS,CAAC;AACb,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACL,CAAC;AACV,CAAC;AAEK,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;AACV,CAAC;AAEK,SAAU,gBAAgB,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AACrD,IAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,gBAAgB,CAAA;IAClB,WACqB,CAAA,eAAwD,EACxD,SAAA,GAA2B,cAAc,EAAA;QADzC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAyC;QACxD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgC;KAC1D;IAEG,GAAG,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;KAC/B;IAEM,QAAQ,CAAC,GAAG,IAA2C,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KACvE;AACJ,CAAA;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAChE;;ACrDA;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../projects/cdk/observables/close-watcher.ts","../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/must-be-present.ts","../../../projects/cdk/observables/query-list-observable.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/untracked-scheduler.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\ninterface CloseWatcher {\n destroy: () => void;\n onclose?: (event: Event) => void;\n oncancel?: (event: Event) => void;\n}\n\nexport function tuiCloseWatcher(): Observable<void> {\n return new Observable((subscriber) => {\n let watcher = getWatcher();\n\n const setup = (): void => {\n watcher = getWatcher();\n watcher.onclose = () => setup();\n\n watcher.oncancel = (event) => {\n event.preventDefault();\n subscriber.next();\n };\n };\n\n setup();\n\n return () => watcher.destroy();\n });\n}\n\nfunction getWatcher(): CloseWatcher {\n // @ts-ignore\n return typeof CloseWatcher === 'undefined' ? {destroy: () => {}} : new CloseWatcher();\n}\n","import type {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n return new Observable((subscriber) =>\n control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n );\n}\n","import type {Observable} from 'rxjs';\nimport {fromEvent} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean,\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\n E extends Event,\n T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n target: T,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {concat, endWith, map, merge, repeat, take, takeWhile} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n constructor(\n public readonly stage: TuiDragStage,\n public readonly event: MouseEvent,\n ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n return concat(\n tuiTypedFromEvent(element, 'mousedown').pipe(\n take(1),\n map((event) => new TuiDragState('start', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => new TuiDragState('continues', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mouseup'),\n tuiTypedFromEvent(ownerDocument, 'dragend'),\n ).pipe(\n take(1),\n map((event) => new TuiDragState('end', event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.stopPropagation());\n}\n","import type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport type {Observable, OperatorFunction} from 'rxjs';\nimport {EMPTY, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiMustBePresent<T>(): OperatorFunction<T | null | undefined, T> {\n return map((value) => {\n if (!tuiIsPresent(value)) {\n throw new TuiValuePresentException();\n }\n\n return value;\n });\n}\n\nexport class TuiValuePresentException extends Error {\n constructor() {\n super(ngDevMode ? 'Value must present' : '');\n }\n}\n","import type {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function tuiQueryListChanges<T>(\n queryList: QueryList<T>,\n): Observable<readonly T[]> {\n return queryList.changes.pipe(\n startWith(null),\n map(() => tuiGetOriginalArrayFromQueryList(queryList)),\n );\n}\n","import type {Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n return tuiTypedFromEvent(\n element === element.ownerDocument.documentElement\n ? element.ownerDocument\n : element,\n 'scroll',\n );\n}\n","import type {DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {catchError, defaultIfEmpty, EMPTY, NEVER, pipe, takeUntil} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n return pipe(\n takeUntil(\n NEVER.pipe(\n takeUntilDestroyed(destroyRef),\n catchError(() => EMPTY),\n defaultIfEmpty(null),\n ),\n ),\n );\n}\n","import {untracked} from '@angular/core';\nimport type {SchedulerAction, SchedulerLike, Subscription} from 'rxjs';\nimport {queueScheduler} from 'rxjs';\n\nexport const tuiUntrackedScheduler: SchedulerLike = {\n now: queueScheduler.now.bind(queueScheduler),\n\n schedule<T>(\n work: (this: SchedulerAction<T>, state?: T) => void,\n delay?: number,\n state?: T,\n ): Subscription {\n return queueScheduler.schedule(\n function (this: SchedulerAction<T>, s?: T) {\n return untracked(() => work.call(this, s));\n },\n delay,\n state,\n );\n },\n};\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport type {MonoTypeOperatorFunction, SchedulerLike, Subscription} from 'rxjs';\nimport {asyncScheduler, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler,\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function tuiZonefreeScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -35,7 +35,9 @@ function tuiCountFilledControls(control) {
|
|
35
35
|
}
|
36
36
|
|
37
37
|
function tuiCreateToken(defaults) {
|
38
|
-
return
|
38
|
+
return defaults === undefined
|
39
|
+
? new InjectionToken('')
|
40
|
+
: tuiCreateTokenFromFactory(() => defaults);
|
39
41
|
}
|
40
42
|
function tuiCreateTokenFromFactory(factory) {
|
41
43
|
return factory ? new InjectionToken('', { factory }) : new InjectionToken('');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-utils-miscellaneous.mjs","sources":["../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/array-shallow-equals.ts","../../../projects/cdk/utils/miscellaneous/array-toggle.ts","../../../projects/cdk/utils/miscellaneous/change-date-separator.ts","../../../projects/cdk/utils/miscellaneous/is-control-empty.ts","../../../projects/cdk/utils/miscellaneous/count-filled-controls.ts","../../../projects/cdk/utils/miscellaneous/create-token.ts","../../../projects/cdk/utils/miscellaneous/is-string.ts","../../../projects/cdk/utils/miscellaneous/default-sort.ts","../../../projects/cdk/utils/miscellaneous/directive-binding.ts","../../../projects/cdk/utils/miscellaneous/directive-listener.ts","../../../projects/cdk/utils/miscellaneous/distance-between-touches.ts","../../../projects/cdk/utils/miscellaneous/ease-in-out-quad.ts","../../../projects/cdk/utils/miscellaneous/flat-length.ts","../../../projects/cdk/utils/miscellaneous/font-size-watcher.ts","../../../projects/cdk/utils/miscellaneous/get-original-array-from-query-list.ts","../../../projects/cdk/utils/miscellaneous/is-falsy.ts","../../../projects/cdk/utils/miscellaneous/is-number.ts","../../../projects/cdk/utils/miscellaneous/is-object.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/is-valid-url.ts","../../../projects/cdk/utils/miscellaneous/mark-control-as-touched-and-validate.ts","../../../projects/cdk/utils/miscellaneous/nullable-same.ts","../../../projects/cdk/utils/miscellaneous/provide.ts","../../../projects/cdk/utils/miscellaneous/provide-options.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/miscellaneous/uniq-by.ts","../../../projects/cdk/utils/miscellaneous/with-styles.ts","../../../projects/cdk/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.ts"],"sourcesContent":["export function tuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function tuiArrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {tuiArrayRemove} from './array-remove';\n\nexport function tuiArrayToggle<T>(array: readonly T[], item: T): T[] {\n const index = array.indexOf(item);\n\n return index === -1 ? [...array, item] : tuiArrayRemove(array, index);\n}\n","/* internal */\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replaceAll(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import type {AbstractControl} from '@angular/forms';\n\nexport function tuiIsControlEmpty({value = null}: AbstractControl): boolean {\n return value === null || value === '' || (Array.isArray(value) && !value.length);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\nimport {tuiToInt} from '@taiga-ui/cdk/utils/math';\n\nimport {tuiIsControlEmpty} from './is-control-empty';\n\nexport function tuiCountFilledControls(control: AbstractControl): number {\n if (control instanceof FormArray) {\n return control.controls.reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n if (control instanceof FormGroup) {\n return Object.values(control.controls).reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n return tuiToInt(!tuiIsControlEmpty(control));\n}\n","import {InjectionToken} from '@angular/core';\n\nexport function tuiCreateToken<T>(defaults?: T): InjectionToken<T> {\n return tuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function tuiCreateTokenFromFactory<T>(factory?: () => T): InjectionToken<T> {\n return factory ? new InjectionToken<T>('', {factory}) : new InjectionToken<T>('');\n}\n","export function tuiIsString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {tuiIsString} from './is-string';\n\nexport function tuiDefaultSort<T>(x: T, y: T): number {\n if (x === y) {\n return 0;\n }\n\n if (tuiIsString(x) && tuiIsString(y)) {\n return x.localeCompare(y);\n }\n\n return x > y ? 1 : -1;\n}\n","import type {InjectOptions, ProviderToken, Signal, WritableSignal} from '@angular/core';\nimport {effect, inject, isSignal, signal} from '@angular/core';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\n\ntype SignalLikeTypeOf<T> = T extends Signal<infer R> ? R : T;\n\ntype SignalLike<T> = Signal<T> | T;\n\nexport function tuiDirectiveBinding<\n T,\n G extends keyof T,\n I extends SignalLike<SignalLikeTypeOf<T[G]>>,\n>(\n token: ProviderToken<T>,\n key: G,\n initial: I,\n options: InjectOptions = {self: true},\n): I extends Signal<any> ? I : WritableSignal<I> {\n const result: any = isSignal(initial) ? initial : signal(initial);\n const directive: any = inject(token, options);\n const output = directive[`${key.toString()}Change`];\n\n // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)\n let previous: any;\n\n effect(() => {\n const value: any = result();\n\n if (previous === value) {\n return;\n }\n\n if (isSignal(directive[key])) {\n directive[key].set(value);\n } else {\n directive[key] = value;\n }\n\n directive.ngOnChanges?.({});\n output?.emit?.(value);\n previous = value;\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n return result;\n}\n","import type {InjectOptions, ProviderToken, Signal} from '@angular/core';\nimport {inject, isSignal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport type {Observable} from 'rxjs';\n\ntype OutputKeysOf<T> = {\n [K in keyof T]: T[K] extends Observable<any> | Signal<any> ? K : never;\n}[keyof T];\n\ntype OutputTypeOf<T> =\n T extends Signal<infer R> ? R : T extends Observable<infer O> ? O : never;\n\nexport function tuiDirectiveListener<T, K extends OutputKeysOf<T>>(\n token: ProviderToken<T>,\n key: K,\n options: InjectOptions = {self: true},\n): Signal<OutputTypeOf<T[K]>> {\n const prop: any = inject(token, options)?.[key];\n\n return isSignal(prop) ? prop : toSignal<any>(prop);\n}\n","export function tuiDistanceBetweenTouches({touches}: TouchEvent): number {\n return Math.hypot(\n (touches[0]?.clientX ?? 0) - (touches[1]?.clientX ?? 0),\n (touches[0]?.clientY ?? 0) - (touches[1]?.clientY ?? 0),\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nexport function tuiEaseInOutQuad(t: number): number {\n ngDevMode &&\n console.assert(\n t >= 0 && t <= 1,\n 'Input must be between 0 and 1 inclusive but received ',\n t,\n );\n\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n}\n","/**\n * Flattens two-dimensional array and calculates resulting length\n *\n * @param array twi dimensional array\n */\nexport function tuiFlatLength(array: ReadonlyArray<readonly unknown[]>): number {\n return array.reduce((count, section) => count + section.length, 0);\n}\n","const IFRAME = 'position: fixed; visibility: hidden; pointer-events: none';\nconst BODY = 'height: fit-content; line-height: 1em;';\n\nexport function tuiFontSizeWatcher(\n callback: (fontSize: number) => void,\n win: Window = window,\n): () => void {\n const iframe = win.document.createElement('iframe');\n const resize = (): void => {\n const {innerWidth, outerWidth, devicePixelRatio} = win;\n\n iframe.width = `${innerWidth === outerWidth ? innerWidth : innerWidth / devicePixelRatio}`;\n };\n\n win.document.body.append(iframe);\n win.addEventListener('resize', resize);\n\n const doc = iframe.contentWindow?.document;\n const observer = new ResizeObserver(() => callback(doc?.body.offsetHeight || 0));\n\n iframe.setAttribute('style', IFRAME);\n doc?.documentElement.style.setProperty('font', '-apple-system-body');\n doc?.body.setAttribute('style', BODY);\n doc?.body.insertAdjacentText('beforeend', '.'.repeat(1000));\n observer.observe(doc?.body || iframe);\n resize();\n\n return () => {\n observer.disconnect();\n iframe.remove();\n win.removeEventListener('resize', resize);\n };\n}\n","import type {QueryList} from '@angular/core';\n\n/**\n * Extracts original array from {@link QueryList} rather than\n * creating a copy like {@link QueryList.toArray} does.\n * @param queryList\n * @returns original array from {@link QueryList}.\n */\nexport function tuiGetOriginalArrayFromQueryList<T>(\n queryList: QueryList<T>,\n): readonly T[] {\n let array: readonly T[] = [];\n\n queryList.find((_item, _index, originalArray) => {\n array = originalArray;\n\n return true;\n });\n\n return array;\n}\n","export function tuiIsFalsy(value: unknown): boolean {\n return !value;\n}\n","export function tuiIsNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","export function tuiIsObject<T extends Record<string, any>>(\n value: unknown,\n): value is NonNullable<T> {\n return typeof value === 'object' && !!value;\n}\n","export function tuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","/**\n * @deprecated: drop in v5.0\n */\nexport function tuiIsValidUrl(url: string): boolean {\n return new RegExp(\n String.raw`^([a-zA-Z]+:\\/\\/)?` + // protocol\n String.raw`((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|localhost|` + // domain name\n String.raw`((\\d{1,3}\\.){3}\\d{1,3}))` + // OR IP (v4) address\n String.raw`(\\:\\d+)?(\\/[-a-z\\d%_.~+\\:]*)*` + // port and path\n String.raw`(\\?[)(;&a-z\\d%_.~+=-]*)?` + // query string\n String.raw`(\\#[-a-z\\d_]*)?$`, // fragment locator\n 'i',\n ).test(url);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\n\nexport function tuiMarkControlAsTouchedAndValidate(control: AbstractControl): void {\n if (control instanceof FormArray) {\n control.controls.forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import type {TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\n/**\n * Checks identity for nullable elements.\n *\n * @param a element a\n * @param b element b\n * @param handler called if both elements are not null\n * @return true if either both are null or they pass identity handler\n */\nexport function tuiNullableSame<T>(\n a: T | null,\n b: T | null,\n handler: TuiIdentityMatcher<T>,\n): boolean {\n if (a === null) {\n return b === null;\n }\n\n if (b === null) {\n return false;\n }\n\n return handler(a, b);\n}\n","import type {ExistingProvider, ProviderToken} from '@angular/core';\n\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return {provide, useExisting, multi};\n}\n","import type {FactoryProvider, InjectionToken, ProviderToken} from '@angular/core';\nimport {inject} from '@angular/core';\n\nexport function tuiProvideOptions<T>(\n provide: InjectionToken<T>,\n options: Partial<T> | ProviderToken<Partial<T>>,\n fallback: T,\n): FactoryProvider {\n return {\n provide,\n useFactory: (): T => ({\n ...(inject(provide, {optional: true, skipSelf: true}) || fallback),\n ...(inject(options as any, {optional: true}) || options),\n }),\n };\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nfunction decorateMethod(\n originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true,\n): (this: object) => unknown {\n return function tuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<T>(\n target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<A extends unknown[], R>(\n target: (...args: A) => R,\n context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext:\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext\n | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new TuiPureException();\n }\n\n const {get, enumerable, value} = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable),\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched,\n });\n\n return patched as unknown;\n },\n };\n}\n\nexport class TuiPureException extends Error {\n constructor() {\n super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\n/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function tuiPx(value: number): string {\n ngDevMode && console.assert(Number.isFinite(value), 'Value must be finite number');\n\n return `${value}px`;\n}\n","import type {TuiValuesOf} from '@taiga-ui/cdk/types';\n\nexport function tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<TuiValuesOf<T>, T>(),\n )\n .values(),\n );\n}\n","import type {Type} from '@angular/core';\nimport {createComponent, DestroyRef, EnvironmentInjector, inject} from '@angular/core';\n\nimport {tuiCreateTokenFromFactory} from './create-token';\n\nconst MAP = tuiCreateTokenFromFactory(() => {\n const map = new Map();\n\n inject(DestroyRef).onDestroy(() => map.forEach((component) => component.destroy()));\n\n return map;\n});\n\nexport function tuiWithStyles(component: Type<unknown>): undefined {\n const map = inject(MAP);\n const environmentInjector = inject(EnvironmentInjector);\n\n if (!map.has(component)) {\n map.set(component, createComponent(component, {environmentInjector}));\n }\n\n return undefined;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAgB,SAAA,cAAc,CAAI,KAAmB,EAAE,KAAa,EAAA;AAChE,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F;;ACFgB,SAAA,qBAAqB,CAAI,CAAe,EAAE,CAAe,EAAA;IACrE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF;;ACAgB,SAAA,cAAc,CAAI,KAAmB,EAAE,IAAO,EAAA;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1E;;ACNA;AACa,MAAA,mBAAmB,GAAG,CAC/B,UAAkB,EAClB,gBAAwB,KACf,UAAU,CAAC,UAAU,CAAC,sBAAsB,EAAE,gBAAgB;;SCF3D,iBAAiB,CAAC,EAAC,KAAK,GAAG,IAAI,EAAkB,EAAA;IAC7D,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACrF;;ACEM,SAAU,sBAAsB,CAAC,OAAwB,EAAA;IAC3D,IAAI,OAAO,YAAY,SAAS,EAAE;QAC9B,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,aAAa,KAAK,GAAG,GAAG,sBAAsB,CAAC,aAAa,CAAC,EACnE,CAAC,CACJ,CAAC;AACL,KAAA;IAED,IAAI,OAAO,YAAY,SAAS,EAAE;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,aAAa,KAAK,GAAG,GAAG,sBAAsB,CAAC,aAAa,CAAC,EACnE,CAAC,CACJ,CAAC;AACL,KAAA;IAED,OAAO,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD;;ACpBM,SAAU,cAAc,CAAI,QAAY,EAAA;AAC1C,IAAA,OAAO,yBAAyB,CAAC,MAAM,QAAQ,CAAC,CAAC;AACrD,CAAC;AAEK,SAAU,yBAAyB,CAAI,OAAiB,EAAA;IAC1D,OAAO,OAAO,GAAG,IAAI,cAAc,CAAI,EAAE,EAAE,EAAC,OAAO,EAAC,CAAC,GAAG,IAAI,cAAc,CAAI,EAAE,CAAC,CAAC;AACtF;;ACRM,SAAU,WAAW,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrC;;ACAgB,SAAA,cAAc,CAAI,CAAI,EAAE,CAAI,EAAA;IACxC,IAAI,CAAC,KAAK,CAAC,EAAE;AACT,QAAA,OAAO,CAAC,CAAC;AACZ,KAAA;IAED,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AAClC,QAAA,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAA;AAED,IAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B;;ACJgB,SAAA,mBAAmB,CAK/B,KAAuB,EACvB,GAAM,EACN,OAAU,EACV,OAAyB,GAAA,EAAC,IAAI,EAAE,IAAI,EAAC,EAAA;AAErC,IAAA,MAAM,MAAM,GAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,SAAS,GAAQ,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAA,EAAG,GAAG,CAAC,QAAQ,EAAE,CAAQ,MAAA,CAAA,CAAC,CAAC;;AAGpD,IAAA,IAAI,QAAa,CAAC;IAElB,MAAM,CAAC,MAAK;AACR,QAAA,MAAM,KAAK,GAAQ,MAAM,EAAE,CAAC;QAE5B,IAAI,QAAQ,KAAK,KAAK,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;YAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;AACH,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,SAAA;AAED,QAAA,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;AAC5B,QAAA,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QACtB,QAAQ,GAAG,KAAK,CAAC;KACpB,EAAE,uBAAuB,CAAC,CAAC;AAE5B,IAAA,OAAO,MAAM,CAAC;AAClB;;AChCgB,SAAA,oBAAoB,CAChC,KAAuB,EACvB,GAAM,EACN,OAAA,GAAyB,EAAC,IAAI,EAAE,IAAI,EAAC,EAAA;AAErC,IAAA,MAAM,IAAI,GAAQ,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAEhD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAM,IAAI,CAAC,CAAC;AACvD;;ACpBgB,SAAA,yBAAyB,CAAC,EAAC,OAAO,EAAa,EAAA;IAC3D,OAAO,IAAI,CAAC,KAAK,CACb,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,EACvD,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAC1D,CAAC;AACN;;ACLA;AAEM,SAAU,gBAAgB,CAAC,CAAS,EAAA;IACtC,SAAS;AACL,QAAA,OAAO,CAAC,MAAM,CACV,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB,uDAAuD,EACvD,CAAC,CACJ,CAAC;IAEN,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtD;;ACXA;;;;AAIG;AACG,SAAU,aAAa,CAAC,KAAwC,EAAA;AAClE,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvE;;ACPA,MAAM,MAAM,GAAG,2DAA2D,CAAC;AAC3E,MAAM,IAAI,GAAG,wCAAwC,CAAC;SAEtC,kBAAkB,CAC9B,QAAoC,EACpC,MAAc,MAAM,EAAA;IAEpB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAW;QACtB,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAC,GAAG,GAAG,CAAC;AAEvD,QAAA,MAAM,CAAC,KAAK,GAAG,GAAG,UAAU,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,EAAE,CAAC;AAC/F,KAAC,CAAC;IAEF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,IAAA,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEvC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjF,IAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACrE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtC,IAAA,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;AACtC,IAAA,MAAM,EAAE,CAAC;AAET,IAAA,OAAO,MAAK;QACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,QAAA,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAC,CAAC;AACN;;AC9BA;;;;;AAKG;AACG,SAAU,gCAAgC,CAC5C,SAAuB,EAAA;IAEvB,IAAI,KAAK,GAAiB,EAAE,CAAC;IAE7B,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,KAAI;QAC5C,KAAK,GAAG,aAAa,CAAC;AAEtB,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC;AACjB;;ACpBM,SAAU,UAAU,CAAC,KAAc,EAAA;IACrC,OAAO,CAAC,KAAK,CAAC;AAClB;;ACFM,SAAU,WAAW,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrC;;ACFM,SAAU,WAAW,CACvB,KAAc,EAAA;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;AAChD;;ACJM,SAAU,YAAY,CAAI,KAAgB,EAAA;AAC5C,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AACjD;;ACFA;;AAEG;AACG,SAAU,aAAa,CAAC,GAAW,EAAA;IACrC,OAAO,IAAI,MAAM,CACb,MAAM,CAAC,GAAG,CAAA,CAAoB,kBAAA,CAAA;AAC1B,QAAA,MAAM,CAAC,GAAG,CAAA,CAAA,sDAAA,CAAwD;AAClE,QAAA,MAAM,CAAC,GAAG,CAAA,CAAA,wBAAA,CAA0B;AACpC,QAAA,MAAM,CAAC,GAAG,CAAA,CAAA,6BAAA,CAA+B;AACzC,QAAA,MAAM,CAAC,GAAG,CAAA,CAAA,wBAAA,CAA0B;AACpC,QAAA,MAAM,CAAC,GAAG,CAAA,CAAA,gBAAA,CAAkB;AAChC,IAAA,GAAG,CACN,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB;;ACVM,SAAU,kCAAkC,CAAC,OAAwB,EAAA;IACvE,IAAI,OAAO,YAAY,SAAS,EAAE;QAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;YACvC,kCAAkC,CAAC,aAAa,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;AACN,KAAA;IAED,IAAI,OAAO,YAAY,SAAS,EAAE;AAC9B,QAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;YACtD,kCAAkC,CAAC,aAAa,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;AACN,KAAA;IAED,OAAO,CAAC,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACrC;;AChBA;;;;;;;AAOG;SACa,eAAe,CAC3B,CAAW,EACX,CAAW,EACX,OAA8B,EAAA;IAE9B,IAAI,CAAC,KAAK,IAAI,EAAE;QACZ,OAAO,CAAC,KAAK,IAAI,CAAC;AACrB,KAAA;IAED,IAAI,CAAC,KAAK,IAAI,EAAE;AACZ,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AAED,IAAA,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB;;ACbM,SAAU,UAAU,CACtB,OAAyB,EACzB,WAA6B,EAC7B,KAAK,GAAG,KAAK,EAAA;AAEb,IAAA,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC;AACzC;;SCdgB,iBAAiB,CAC7B,OAA0B,EAC1B,OAA+C,EAC/C,QAAW,EAAA;IAEX,OAAO;QACH,OAAO;AACP,QAAA,UAAU,EAAE,OAAU;AAClB,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,QAAQ,CAAC;AAClE,YAAA,IAAI,MAAM,CAAC,OAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,OAAO,CAAC;SAC3D,CAAC;KACL,CAAC;AACN;;ACfA;AAEA,SAAS,cAAc,CACnB,cAA+C,EAAA;IAE/C,IAAI,YAAY,GAAuB,EAAE,CAAC;IAC1C,IAAI,8BAA8B,GAAG,KAAK,CAAC;AAC3C,IAAA,IAAI,SAAkB,CAAC;AAEvB,IAAA,OAAO,SAAS,oBAAoB,CAAe,GAAG,IAAe,EAAA;QACjE,MAAM,MAAM,GACR,8BAA8B;AAC9B,YAAA,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;QAED,YAAY,GAAG,IAAI,CAAC;QACpB,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,8BAA8B,GAAG,IAAI,CAAC;AAEtC,QAAA,OAAO,SAAS,CAAC;AACrB,KAAC,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CACnB,cAA6B,EAC7B,WAA4B,EAC5B,UAAU,GAAG,IAAI,EAAA;AAEjB,IAAA,OAAO,SAAS,oBAAoB,GAAA;QAChC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExC,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;AAE9D,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC;AACN,CAAC;SA6Be,OAAO,CACnB,MAAkD,EAClD,oBAGY,EACZ,UAAqE,EAAA;AAErE,IAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QAC9B,MAAM,OAAO,GAAG,oBAEiB,CAAC;AAElC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC3B,OAAO,cAAc,CAAC,MAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,cAAc,CAAC,MAAyC,CAAC,CAAC;AACpE,SAAA;QAED,MAAM,IAAI,gBAAgB,EAAE,CAAC;AAChC,KAAA;IAED,MAAM,EAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAC,GAAG,UAAW,CAAC;IAC7C,MAAM,WAAW,GAAG,oBAA8B,CAAC;AAEnD,IAAA,IAAI,GAAG,EAAE;QACL,OAAO;AACH,YAAA,YAAY,EAAE,IAAI;YAClB,UAAU;YACV,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC;SACpD,CAAC;AACL,KAAA;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC7B,MAAM,IAAI,gBAAgB,EAAE,CAAC;AAChC,KAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC;IAEvB,OAAO;AACH,QAAA,YAAY,EAAE,IAAI;QAClB,UAAU;QACV,GAAG,GAAA;YACC,IAAI,YAAY,GAAuB,EAAE,CAAC;YAC1C,IAAI,8BAA8B,GAAG,KAAK,CAAC;AAC3C,YAAA,IAAI,SAAkB,CAAC;AAEvB,YAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,KAAa;gBAC5C,MAAM,MAAM,GACR,8BAA8B;AAC9B,oBAAA,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AACnC,oBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,SAAS,CAAC;AACpB,iBAAA;gBAED,YAAY,GAAG,IAAI,CAAC;gBACpB,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvC,8BAA8B,GAAG,IAAI,CAAC;AAEtC,gBAAA,OAAO,SAAS,CAAC;AACrB,aAAC,CAAC;AAEF,YAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;AACrC,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,KAAK,EAAE,OAAO;AACjB,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,OAAkB,CAAC;SAC7B;KACJ,CAAC;AACN,CAAC;AAEK,MAAO,gBAAiB,SAAQ,KAAK,CAAA;AACvC,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,SAAS,GAAG,oDAAoD,GAAG,EAAE,CAAC,CAAC;KAChF;AACJ;;ACpJD;AAEA;;AAEG;AACG,SAAU,KAAK,CAAC,KAAa,EAAA;AAC/B,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAEnF,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;AACxB;;ACPgB,SAAA,SAAS,CACrB,KAAmB,EACnB,GAAY,EAAA;AAEZ,IAAA,OAAO,KAAK,CAAC,IAAI,CACb,KAAK;AACA,SAAA,MAAM,CACH,CAAC,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EACpE,IAAI,GAAG,EAAqB,CAC/B;SACA,MAAM,EAAE,CAChB,CAAC;AACN;;ACTA,MAAM,GAAG,GAAG,yBAAyB,CAAC,MAAK;AACvC,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEtB,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAEpF,IAAA,OAAO,GAAG,CAAC;AACf,CAAC,CAAC,CAAC;AAEG,SAAU,aAAa,CAAC,SAAwB,EAAA;AAClD,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAExD,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACrB,QAAA,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,EAAC,mBAAmB,EAAC,CAAC,CAAC,CAAC;AACzE,KAAA;AAED,IAAA,OAAO,SAAS,CAAC;AACrB;;ACtBA;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-utils-miscellaneous.mjs","sources":["../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/array-shallow-equals.ts","../../../projects/cdk/utils/miscellaneous/array-toggle.ts","../../../projects/cdk/utils/miscellaneous/change-date-separator.ts","../../../projects/cdk/utils/miscellaneous/is-control-empty.ts","../../../projects/cdk/utils/miscellaneous/count-filled-controls.ts","../../../projects/cdk/utils/miscellaneous/create-token.ts","../../../projects/cdk/utils/miscellaneous/is-string.ts","../../../projects/cdk/utils/miscellaneous/default-sort.ts","../../../projects/cdk/utils/miscellaneous/directive-binding.ts","../../../projects/cdk/utils/miscellaneous/directive-listener.ts","../../../projects/cdk/utils/miscellaneous/distance-between-touches.ts","../../../projects/cdk/utils/miscellaneous/ease-in-out-quad.ts","../../../projects/cdk/utils/miscellaneous/flat-length.ts","../../../projects/cdk/utils/miscellaneous/font-size-watcher.ts","../../../projects/cdk/utils/miscellaneous/get-original-array-from-query-list.ts","../../../projects/cdk/utils/miscellaneous/is-falsy.ts","../../../projects/cdk/utils/miscellaneous/is-number.ts","../../../projects/cdk/utils/miscellaneous/is-object.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/is-valid-url.ts","../../../projects/cdk/utils/miscellaneous/mark-control-as-touched-and-validate.ts","../../../projects/cdk/utils/miscellaneous/nullable-same.ts","../../../projects/cdk/utils/miscellaneous/provide.ts","../../../projects/cdk/utils/miscellaneous/provide-options.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/miscellaneous/uniq-by.ts","../../../projects/cdk/utils/miscellaneous/with-styles.ts","../../../projects/cdk/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.ts"],"sourcesContent":["export function tuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function tuiArrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {tuiArrayRemove} from './array-remove';\n\nexport function tuiArrayToggle<T>(array: readonly T[], item: T): T[] {\n const index = array.indexOf(item);\n\n return index === -1 ? [...array, item] : tuiArrayRemove(array, index);\n}\n","/* internal */\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replaceAll(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import type {AbstractControl} from '@angular/forms';\n\nexport function tuiIsControlEmpty({value = null}: AbstractControl): boolean {\n return value === null || value === '' || (Array.isArray(value) && !value.length);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\nimport {tuiToInt} from '@taiga-ui/cdk/utils/math';\n\nimport {tuiIsControlEmpty} from './is-control-empty';\n\nexport function tuiCountFilledControls(control: AbstractControl): number {\n if (control instanceof FormArray) {\n return control.controls.reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n if (control instanceof FormGroup) {\n return Object.values(control.controls).reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n return tuiToInt(!tuiIsControlEmpty(control));\n}\n","import {InjectionToken} from '@angular/core';\n\nexport function tuiCreateToken<T>(defaults?: T): InjectionToken<T> {\n return defaults === undefined\n ? new InjectionToken('')\n : tuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function tuiCreateTokenFromFactory<T>(factory?: () => T): InjectionToken<T> {\n return factory ? new InjectionToken<T>('', {factory}) : new InjectionToken<T>('');\n}\n","export function tuiIsString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {tuiIsString} from './is-string';\n\nexport function tuiDefaultSort<T>(x: T, y: T): number {\n if (x === y) {\n return 0;\n }\n\n if (tuiIsString(x) && tuiIsString(y)) {\n return x.localeCompare(y);\n }\n\n return x > y ? 1 : -1;\n}\n","import type {InjectOptions, ProviderToken, Signal, WritableSignal} from '@angular/core';\nimport {effect, inject, isSignal, signal} from '@angular/core';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\n\ntype SignalLikeTypeOf<T> = T extends Signal<infer R> ? R : T;\n\ntype SignalLike<T> = Signal<T> | T;\n\nexport function tuiDirectiveBinding<\n T,\n G extends keyof T,\n I extends SignalLike<SignalLikeTypeOf<T[G]>>,\n>(\n token: ProviderToken<T>,\n key: G,\n initial: I,\n options: InjectOptions = {self: true},\n): I extends Signal<any> ? I : WritableSignal<I> {\n const result: any = isSignal(initial) ? initial : signal(initial);\n const directive: any = inject(token, options);\n const output = directive[`${key.toString()}Change`];\n\n // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)\n let previous: any;\n\n effect(() => {\n const value: any = result();\n\n if (previous === value) {\n return;\n }\n\n if (isSignal(directive[key])) {\n directive[key].set(value);\n } else {\n directive[key] = value;\n }\n\n directive.ngOnChanges?.({});\n output?.emit?.(value);\n previous = value;\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n return result;\n}\n","import type {InjectOptions, ProviderToken, Signal} from '@angular/core';\nimport {inject, isSignal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport type {Observable} from 'rxjs';\n\ntype OutputKeysOf<T> = {\n [K in keyof T]: T[K] extends Observable<any> | Signal<any> ? K : never;\n}[keyof T];\n\ntype OutputTypeOf<T> =\n T extends Signal<infer R> ? R : T extends Observable<infer O> ? O : never;\n\nexport function tuiDirectiveListener<T, K extends OutputKeysOf<T>>(\n token: ProviderToken<T>,\n key: K,\n options: InjectOptions = {self: true},\n): Signal<OutputTypeOf<T[K]>> {\n const prop: any = inject(token, options)?.[key];\n\n return isSignal(prop) ? prop : toSignal<any>(prop);\n}\n","export function tuiDistanceBetweenTouches({touches}: TouchEvent): number {\n return Math.hypot(\n (touches[0]?.clientX ?? 0) - (touches[1]?.clientX ?? 0),\n (touches[0]?.clientY ?? 0) - (touches[1]?.clientY ?? 0),\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nexport function tuiEaseInOutQuad(t: number): number {\n ngDevMode &&\n console.assert(\n t >= 0 && t <= 1,\n 'Input must be between 0 and 1 inclusive but received ',\n t,\n );\n\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n}\n","/**\n * Flattens two-dimensional array and calculates resulting length\n *\n * @param array twi dimensional array\n */\nexport function tuiFlatLength(array: ReadonlyArray<readonly unknown[]>): number {\n return array.reduce((count, section) => count + section.length, 0);\n}\n","const IFRAME = 'position: fixed; visibility: hidden; pointer-events: none';\nconst BODY = 'height: fit-content; line-height: 1em;';\n\nexport function tuiFontSizeWatcher(\n callback: (fontSize: number) => void,\n win: Window = window,\n): () => void {\n const iframe = win.document.createElement('iframe');\n const resize = (): void => {\n const {innerWidth, outerWidth, devicePixelRatio} = win;\n\n iframe.width = `${innerWidth === outerWidth ? innerWidth : innerWidth / devicePixelRatio}`;\n };\n\n win.document.body.append(iframe);\n win.addEventListener('resize', resize);\n\n const doc = iframe.contentWindow?.document;\n const observer = new ResizeObserver(() => callback(doc?.body.offsetHeight || 0));\n\n iframe.setAttribute('style', IFRAME);\n doc?.documentElement.style.setProperty('font', '-apple-system-body');\n doc?.body.setAttribute('style', BODY);\n doc?.body.insertAdjacentText('beforeend', '.'.repeat(1000));\n observer.observe(doc?.body || iframe);\n resize();\n\n return () => {\n observer.disconnect();\n iframe.remove();\n win.removeEventListener('resize', resize);\n };\n}\n","import type {QueryList} from '@angular/core';\n\n/**\n * Extracts original array from {@link QueryList} rather than\n * creating a copy like {@link QueryList.toArray} does.\n * @param queryList\n * @returns original array from {@link QueryList}.\n */\nexport function tuiGetOriginalArrayFromQueryList<T>(\n queryList: QueryList<T>,\n): readonly T[] {\n let array: readonly T[] = [];\n\n queryList.find((_item, _index, originalArray) => {\n array = originalArray;\n\n return true;\n });\n\n return array;\n}\n","export function tuiIsFalsy(value: unknown): boolean {\n return !value;\n}\n","export function tuiIsNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","export function tuiIsObject<T extends Record<string, any>>(\n value: unknown,\n): value is NonNullable<T> {\n return typeof value === 'object' && !!value;\n}\n","export function tuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","/**\n * @deprecated: drop in v5.0\n */\nexport function tuiIsValidUrl(url: string): boolean {\n return new RegExp(\n String.raw`^([a-zA-Z]+:\\/\\/)?` + // protocol\n String.raw`((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|localhost|` + // domain name\n String.raw`((\\d{1,3}\\.){3}\\d{1,3}))` + // OR IP (v4) address\n String.raw`(\\:\\d+)?(\\/[-a-z\\d%_.~+\\:]*)*` + // port and path\n String.raw`(\\?[)(;&a-z\\d%_.~+=-]*)?` + // query string\n String.raw`(\\#[-a-z\\d_]*)?$`, // fragment locator\n 'i',\n ).test(url);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\n\nexport function tuiMarkControlAsTouchedAndValidate(control: AbstractControl): void {\n if (control instanceof FormArray) {\n control.controls.forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import type {TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\n/**\n * Checks identity for nullable elements.\n *\n * @param a element a\n * @param b element b\n * @param handler called if both elements are not null\n * @return true if either both are null or they pass identity handler\n */\nexport function tuiNullableSame<T>(\n a: T | null,\n b: T | null,\n handler: TuiIdentityMatcher<T>,\n): boolean {\n if (a === null) {\n return b === null;\n }\n\n if (b === null) {\n return false;\n }\n\n return handler(a, b);\n}\n","import type {ExistingProvider, ProviderToken} from '@angular/core';\n\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return {provide, useExisting, multi};\n}\n","import type {FactoryProvider, InjectionToken, ProviderToken} from '@angular/core';\nimport {inject} from '@angular/core';\n\nexport function tuiProvideOptions<T>(\n provide: InjectionToken<T>,\n options: Partial<T> | ProviderToken<Partial<T>>,\n fallback: T,\n): FactoryProvider {\n return {\n provide,\n useFactory: (): T => ({\n ...(inject(provide, {optional: true, skipSelf: true}) || fallback),\n ...(inject(options as any, {optional: true}) || options),\n }),\n };\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nfunction decorateMethod(\n originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true,\n): (this: object) => unknown {\n return function tuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<T>(\n target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<A extends unknown[], R>(\n target: (...args: A) => R,\n context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext:\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext\n | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new TuiPureException();\n }\n\n const {get, enumerable, value} = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable),\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched,\n });\n\n return patched as unknown;\n },\n };\n}\n\nexport class TuiPureException extends Error {\n constructor() {\n super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\n/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function tuiPx(value: number): string {\n ngDevMode && console.assert(Number.isFinite(value), 'Value must be finite number');\n\n return `${value}px`;\n}\n","import type {TuiValuesOf} from '@taiga-ui/cdk/types';\n\nexport function tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<TuiValuesOf<T>, T>(),\n )\n .values(),\n );\n}\n","import type {Type} from '@angular/core';\nimport {createComponent, DestroyRef, EnvironmentInjector, inject} from '@angular/core';\n\nimport {tuiCreateTokenFromFactory} from './create-token';\n\nconst MAP = tuiCreateTokenFromFactory(() => {\n const map = new Map();\n\n inject(DestroyRef).onDestroy(() => map.forEach((component) => component.destroy()));\n\n return map;\n});\n\nexport function tuiWithStyles(component: Type<unknown>): undefined {\n const map = inject(MAP);\n const environmentInjector = inject(EnvironmentInjector);\n\n if (!map.has(component)) {\n map.set(component, createComponent(component, {environmentInjector}));\n }\n\n return undefined;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/observables/index.d.ts
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@taiga-ui/cdk",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.31.0-canary.523b0e3",
|
4
4
|
"description": "Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance",
|
5
5
|
"keywords": [
|
6
6
|
"angular",
|
@@ -347,12 +347,12 @@
|
|
347
347
|
"@angular/common": ">=16.0.0",
|
348
348
|
"@angular/core": ">=16.0.0",
|
349
349
|
"@angular/forms": ">=16.0.0",
|
350
|
-
"@ng-web-apis/common": "^4.
|
351
|
-
"@ng-web-apis/mutation-observer": "^4.
|
352
|
-
"@ng-web-apis/platform": "^4.
|
353
|
-
"@ng-web-apis/resize-observer": "^4.
|
354
|
-
"@ng-web-apis/screen-orientation": "^4.
|
355
|
-
"@taiga-ui/event-plugins": "^4.
|
350
|
+
"@ng-web-apis/common": "^4.12.0",
|
351
|
+
"@ng-web-apis/mutation-observer": "^4.12.0",
|
352
|
+
"@ng-web-apis/platform": "^4.12.0",
|
353
|
+
"@ng-web-apis/resize-observer": "^4.12.0",
|
354
|
+
"@ng-web-apis/screen-orientation": "^4.12.0",
|
355
|
+
"@taiga-ui/event-plugins": "^4.5.0",
|
356
356
|
"@taiga-ui/polymorpheus": "^4.9.0",
|
357
357
|
"rxjs": ">=7.0.0"
|
358
358
|
},
|
@@ -1,6 +1,8 @@
|
|
1
|
+
import type { Element } from 'parse5/dist/tree-adapters/default';
|
1
2
|
export interface HtmlComment {
|
2
3
|
readonly tag?: string;
|
3
4
|
readonly withAttrs?: string[];
|
4
5
|
readonly pattern?: RegExp;
|
5
6
|
readonly comment: string;
|
7
|
+
readonly filterFn?: (element: Element) => boolean;
|
6
8
|
}
|
@@ -7,7 +7,7 @@ const template_resource_1 = require("../../../utils/templates/template-resource"
|
|
7
7
|
function addHTMLCommentTags({ resource, recorder, fileSystem, data, }) {
|
8
8
|
const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem);
|
9
9
|
const templateOffset = (0, template_resource_1.getTemplateOffset)(resource);
|
10
|
-
data.forEach(({ comment, tag, withAttrs, pattern }) => {
|
10
|
+
data.forEach(({ comment, tag, withAttrs, pattern, filterFn }) => {
|
11
11
|
if (pattern && template.match(pattern)) {
|
12
12
|
recorder.insertRight(templateOffset && templateOffset + 1, `<!-- ${insert_todo_1.TODO_MARK} ${comment} -->\n`);
|
13
13
|
}
|
@@ -15,9 +15,9 @@ function addHTMLCommentTags({ resource, recorder, fileSystem, data, }) {
|
|
15
15
|
return;
|
16
16
|
}
|
17
17
|
const elementStartOffsets = [
|
18
|
-
...(0, elements_1.findElementsWithAttributeOnTag)(template, withAttrs, [tag]),
|
18
|
+
...(0, elements_1.findElementsWithAttributeOnTag)(template, withAttrs, [tag], filterFn),
|
19
19
|
...(withAttrs.length
|
20
|
-
? (0, elements_1.findElementsWithAttributeOnTag)(template, withAttrs.map((attr) => `[${attr}]`), [tag])
|
20
|
+
? (0, elements_1.findElementsWithAttributeOnTag)(template, withAttrs.map((attr) => `[${attr}]`), [tag], filterFn)
|
21
21
|
: []),
|
22
22
|
].map(({ sourceCodeLocation }) => ((sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.startOffset) || 0) + templateOffset);
|
23
23
|
elementStartOffsets.forEach((offset) => {
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.HTML_COMMENTS = void 0;
|
4
|
+
const inputs_1 = require("../../../../utils/templates/inputs");
|
4
5
|
exports.HTML_COMMENTS = [
|
5
6
|
{
|
6
7
|
tag: 'tui-toggle',
|
@@ -67,4 +68,17 @@ exports.HTML_COMMENTS = [
|
|
67
68
|
withAttrs: ['disabled'],
|
68
69
|
comment: 'A link cannot have a "disabled" attribute. If you want a disabled appearance, use the tuiAppearanceState directive. See https://taiga-ui.dev/directives/appearance/API?tuiAppearanceState=disabled',
|
69
70
|
},
|
71
|
+
{
|
72
|
+
tag: 'tui-svg',
|
73
|
+
withAttrs: ['src'],
|
74
|
+
comment: 'For colored icons, please use <img src="\'name\' | tuiIcon" alt="icon" />',
|
75
|
+
filterFn: (element) => {
|
76
|
+
var _a;
|
77
|
+
const icon = (_a = (0, inputs_1.findAttr)(element.attrs, 'src')) === null || _a === void 0 ? void 0 : _a.value.replaceAll(/['"]/g, '');
|
78
|
+
return (!!icon &&
|
79
|
+
((icon.startsWith('tuiIconTds') &&
|
80
|
+
!!/Logo|LogoSquare|LogoSiteheader|Flags$/.exec(icon)) ||
|
81
|
+
!icon.startsWith('tuiIcon')));
|
82
|
+
},
|
83
|
+
},
|
70
84
|
];
|