@taiga-ui/cdk 3.29.2 → 3.30.0-dev.main-acad351
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/bundles/taiga-ui-cdk-components-alert-host.umd.js +32 -8
- package/bundles/taiga-ui-cdk-components-alert-host.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-dialog-host.umd.js +33 -11
- package/bundles/taiga-ui-cdk-components-dialog-host.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.js +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-observables.umd.js +10 -0
- package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-services.umd.js +3 -1
- package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-tokens.umd.js +1 -1
- package/bundles/taiga-ui-cdk-tokens.umd.js.map +1 -1
- package/components/alert-host/alert-host.component.d.ts +9 -5
- package/components/dialog-host/dialog-host.component.d.ts +8 -5
- package/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/esm2015/components/alert-host/alert-host.component.js +32 -6
- package/esm2015/components/dialog-host/dialog-host.component.js +31 -9
- package/esm2015/constants/version.js +2 -2
- package/esm2015/observables/index.js +2 -1
- package/esm2015/observables/scroll-from.js +10 -0
- package/esm2015/services/parents-scroll.service.js +4 -2
- package/esm2015/tokens/removed-element.js +2 -2
- package/fesm2015/taiga-ui-cdk-components-alert-host.js +31 -5
- package/fesm2015/taiga-ui-cdk-components-alert-host.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-components-dialog-host.js +30 -8
- package/fesm2015/taiga-ui-cdk-components-dialog-host.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-constants.js +1 -1
- package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-observables.js +10 -1
- package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-services.js +3 -1
- package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-tokens.js +1 -1
- package/fesm2015/taiga-ui-cdk-tokens.js.map +1 -1
- package/observables/index.d.ts +1 -0
- package/observables/scroll-from.d.ts +5 -0
- package/package.json +2 -2
- package/schematics/migration.json +5 -0
- package/schematics/ng-add/schema.json +1 -1
- package/schematics/ng-update/utils/templates/replace-attr-values.d.ts +10 -0
- package/schematics/ng-update/utils/templates/replace-attr-values.js +30 -0
- package/schematics/ng-update/v3/constants/templates.d.ts +1 -1
- package/schematics/ng-update/v3/constants/templates.js +3 -3
- package/schematics/ng-update/v3/interfaces/replaceable-attribute-value.d.ts +1 -1
- package/schematics/ng-update/v3/steps/migrate-templates.js +6 -20
- package/schematics/ng-update/v3-30/constants/constants.d.ts +2 -0
- package/schematics/ng-update/v3-30/constants/constants.js +8 -0
- package/schematics/ng-update/v3-30/constants/icons.d.ts +4 -0
- package/schematics/ng-update/v3-30/constants/icons.js +993 -0
- package/schematics/ng-update/v3-30/index.d.ts +3 -0
- package/schematics/ng-update/v3-30/index.js +33 -0
- package/schematics/ng-update/v3-30/steps/replace-text.d.ts +4 -0
- package/schematics/ng-update/v3-30/steps/replace-text.js +19 -0
- package/schematics/utils/templates/elements.d.ts +1 -1
- package/schematics/utils/templates/elements.js +2 -2
- /package/schematics/ng-update/{v3/interfaces → interfaces}/replaceable-attribute.d.ts +0 -0
- /package/schematics/ng-update/{v3/interfaces → interfaces}/replaceable-attribute.js +0 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
import { tuiTypedFromEvent } from './typed-from-event';
|
2
|
+
/**
|
3
|
+
* Normalizes scroll event in case element is `html` (document.documentElement)
|
4
|
+
*/
|
5
|
+
export function tuiScrollFrom(element) {
|
6
|
+
return tuiTypedFromEvent(element === element.ownerDocument.documentElement
|
7
|
+
? element.ownerDocument
|
8
|
+
: element, `scroll`);
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWZyb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvb2JzZXJ2YWJsZXMvc2Nyb2xsLWZyb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQWdCO0lBQzFDLE9BQU8saUJBQWlCLENBQ3BCLE9BQU8sS0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLGVBQWU7UUFDN0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhO1FBQ3ZCLENBQUMsQ0FBQyxPQUFPLEVBQ2IsUUFBUSxDQUNYLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHt0dWlUeXBlZEZyb21FdmVudH0gZnJvbSAnLi90eXBlZC1mcm9tLWV2ZW50JztcblxuLyoqXG4gKiBOb3JtYWxpemVzIHNjcm9sbCBldmVudCBpbiBjYXNlIGVsZW1lbnQgaXMgYGh0bWxgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0dWlTY3JvbGxGcm9tKGVsZW1lbnQ6IEVsZW1lbnQpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgcmV0dXJuIHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICBlbGVtZW50ID09PSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAgICAgICAgICA/IGVsZW1lbnQub3duZXJEb2N1bWVudFxuICAgICAgICAgICAgOiBlbGVtZW50LFxuICAgICAgICBgc2Nyb2xsYCxcbiAgICApO1xufVxuIl19
|
@@ -7,7 +7,9 @@ import * as i0 from "@angular/core";
|
|
7
7
|
* Service that subscribes to scroll events of all parent elements
|
8
8
|
*/
|
9
9
|
export class TuiParentsScrollService extends Observable {
|
10
|
-
constructor(
|
10
|
+
constructor(
|
11
|
+
// Destructuring here causes memory leak
|
12
|
+
el, win) {
|
11
13
|
super(subscriber => this.callback$.subscribe(subscriber));
|
12
14
|
this.callback$ = defer(() => {
|
13
15
|
let { nativeElement } = el;
|
@@ -31,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
31
33
|
type: Inject,
|
32
34
|
args: [WINDOW]
|
33
35
|
}] }]; } });
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50cy1zY3JvbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zZXJ2aWNlcy9wYXJlbnRzLXNjcm9sbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUU5Qzs7R0FFRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxVQUFpQjtJQUcxRDtJQUNJLHdDQUF3QztJQUNwQixFQUF1QixFQUMzQixHQUFXO1FBRTNCLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ3hCLElBQUksRUFBQyxhQUFhLEVBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsTUFBTSxZQUFZLEdBQTRCLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRW5FLE9BQU8sYUFBYSxDQUFDLGFBQWEsRUFBRTtnQkFDaEMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7Z0JBQzVDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDcEM7WUFFRCxPQUFPLEtBQUssQ0FDUixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQW9CLE9BQU8sQ0FBQyxFQUFFLENBQzdDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FDdkMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxSEF6QlEsdUJBQXVCLGtCQUtwQixVQUFVLGFBQ1YsTUFBTTt5SEFOVCx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7MEJBTUYsTUFBTTsyQkFBQyxVQUFVOzhCQUNHLE1BQU07MEJBQTFCLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7dHVpVHlwZWRGcm9tRXZlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtkZWZlciwgbWVyZ2UsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBzdWJzY3JpYmVzIHRvIHNjcm9sbCBldmVudHMgb2YgYWxsIHBhcmVudCBlbGVtZW50c1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWxsYmFjayQ6IE9ic2VydmFibGU8RXZlbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIC8vIERlc3RydWN0dXJpbmcgaGVyZSBjYXVzZXMgbWVtb3J5IGxlYWtcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBlbDogRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChXSU5ET1cpIHdpbjogV2luZG93LFxuICAgICkge1xuICAgICAgICBzdXBlcihzdWJzY3JpYmVyID0+IHRoaXMuY2FsbGJhY2skLnN1YnNjcmliZShzdWJzY3JpYmVyKSk7XG5cbiAgICAgICAgdGhpcy5jYWxsYmFjayQgPSBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICBsZXQge25hdGl2ZUVsZW1lbnR9ID0gZWw7XG4gICAgICAgICAgICBjb25zdCBldmVudFRhcmdldHM6IEFycmF5PEVsZW1lbnQgfCBXaW5kb3c+ID0gW3dpbiwgbmF0aXZlRWxlbWVudF07XG5cbiAgICAgICAgICAgIHdoaWxlIChuYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50ID0gbmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGV2ZW50VGFyZ2V0cy5wdXNoKG5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgICAgLi4uZXZlbnRUYXJnZXRzLm1hcDxPYnNlcnZhYmxlPEV2ZW50Pj4oZWxlbWVudCA9PlxuICAgICAgICAgICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudChlbGVtZW50LCBgc2Nyb2xsYCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -13,9 +13,9 @@ export const TUI_REMOVED_ELEMENT = new InjectionToken(`[TUI_REMOVED_ELEMENT]`, {
|
|
13
13
|
const { onRemovalComplete = stub.onRemovalComplete } = engine;
|
14
14
|
engine.onRemovalComplete = (element, context) => {
|
15
15
|
element$.next(element);
|
16
|
-
onRemovalComplete(element, context);
|
16
|
+
onRemovalComplete.call(engine, element, context);
|
17
17
|
};
|
18
18
|
return element$.pipe(switchMap(element => timer(0).pipe(map(() => null), startWith(element))), share());
|
19
19
|
},
|
20
20
|
});
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlZC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3Rva2Vucy9yZW1vdmVkLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixJQUFJLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsZUFBZSxFQUFjLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQsdUJBQXVCLEVBQ3ZCO0lBQ0ksT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE1BQU0sSUFBSSxHQUFHLEVBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFDLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNyRSxNQUFNLEVBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFDLEdBQUcsTUFBTSxDQUFDO1FBRTVELE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM1QyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDaEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2hCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ1QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FDckIsQ0FDSixFQUNELEtBQUssRUFBRSxDQUNWLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHvJtUFuaW1hdGlvbkVuZ2luZSBhcyBBbmltYXRpb25FbmdpbmV9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMvYnJvd3Nlcic7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0RmxhZ3MsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc2hhcmUsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogRWxlbWVudCBjdXJyZW50bHkgYmVpbmcgcmVtb3ZlZCBieSBBbmltYXRpb25FbmdpbmVcbiAqL1xuZXhwb3J0IGNvbnN0IFRVSV9SRU1PVkVEX0VMRU1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxFbGVtZW50IHwgbnVsbD4+KFxuICAgIGBbVFVJX1JFTU9WRURfRUxFTUVOVF1gLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3R1YiA9IHtvblJlbW92YWxDb21wbGV0ZTogKCkgPT4ge319O1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZSA9IGluamVjdChBbmltYXRpb25FbmdpbmUsIEluamVjdEZsYWdzLk9wdGlvbmFsKSB8fCBzdHViO1xuICAgICAgICAgICAgY29uc3Qge29uUmVtb3ZhbENvbXBsZXRlID0gc3R1Yi5vblJlbW92YWxDb21wbGV0ZX0gPSBlbmdpbmU7XG5cbiAgICAgICAgICAgIGVuZ2luZS5vblJlbW92YWxDb21wbGV0ZSA9IChlbGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCQubmV4dChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBvblJlbW92YWxDb21wbGV0ZS5jYWxsKGVuZ2luZSwgZWxlbWVudCwgY29udGV4dCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudCQucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZWxlbWVudCA9PlxuICAgICAgICAgICAgICAgICAgICB0aW1lcigwKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IG51bGwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKGVsZW1lbnQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG4iXX0=
|
@@ -1,17 +1,24 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { Injector, INJECTOR, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, NgModule } from '@angular/core';
|
2
|
+
import { Injector, INJECTOR, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Self, NgModule } from '@angular/core';
|
3
3
|
import { TUI_PARENT_ANIMATION } from '@taiga-ui/cdk/constants';
|
4
|
+
import { TuiDestroyService } from '@taiga-ui/cdk/services';
|
4
5
|
import { TUI_ALERTS } from '@taiga-ui/cdk/tokens';
|
5
6
|
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';
|
7
|
+
import * as i3 from 'rxjs';
|
8
|
+
import { combineLatest } from 'rxjs';
|
9
|
+
import { takeUntil } from 'rxjs/operators';
|
6
10
|
import * as i1 from '@angular/common';
|
7
11
|
import { CommonModule } from '@angular/common';
|
8
12
|
import * as i2 from '@taiga-ui/cdk/pipes';
|
9
13
|
import { TuiMapperPipeModule } from '@taiga-ui/cdk/pipes';
|
10
14
|
|
11
15
|
class TuiAlertHostComponent {
|
12
|
-
constructor(
|
13
|
-
this.
|
16
|
+
constructor(allAlerts, injector, destroy$, cdr) {
|
17
|
+
this.allAlerts = allAlerts;
|
14
18
|
this.injector = injector;
|
19
|
+
this.destroy$ = destroy$;
|
20
|
+
this.cdr = cdr;
|
21
|
+
this.alerts = [];
|
15
22
|
this.mapper = useValue => Injector.create({
|
16
23
|
providers: [
|
17
24
|
{
|
@@ -22,9 +29,19 @@ class TuiAlertHostComponent {
|
|
22
29
|
parent: this.injector,
|
23
30
|
});
|
24
31
|
}
|
32
|
+
ngOnInit() {
|
33
|
+
// Due to this view being parallel to app content, `markForCheck` from `async` pipe
|
34
|
+
// can happen after view was checked, so calling `detectChanges` instead
|
35
|
+
combineLatest(this.allAlerts)
|
36
|
+
.pipe(takeUntil(this.destroy$))
|
37
|
+
.subscribe(alerts => {
|
38
|
+
this.alerts = alerts;
|
39
|
+
this.cdr.detectChanges();
|
40
|
+
});
|
41
|
+
}
|
25
42
|
}
|
26
|
-
TuiAlertHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiAlertHostComponent, deps: [{ token: TUI_ALERTS }, { token: INJECTOR }], target: i0.ɵɵFactoryTarget.Component });
|
27
|
-
TuiAlertHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiAlertHostComponent, selector: "tui-alert-host", ngImport: i0, template: "<div\n *ngFor=\"let alert
|
43
|
+
TuiAlertHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiAlertHostComponent, deps: [{ token: TUI_ALERTS }, { token: INJECTOR }, { token: TuiDestroyService, self: true }, { token: ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
44
|
+
TuiAlertHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiAlertHostComponent, selector: "tui-alert-host", providers: [TuiDestroyService], ngImport: i0, template: "<div\n *ngFor=\"let alert of alerts\"\n class=\"t-wrapper\"\n @tuiParentAnimation\n>\n <ng-container\n *ngFor=\"let item of alert\"\n [ngComponentOutlet]=\"item.component.component\"\n [ngComponentOutletInjector]=\"item | tuiMapper : mapper\"\n ></ng-container>\n</div>\n", styles: ["tui-alert-host>.t-wrapper{position:fixed;top:0;left:0;display:flex;width:100%;height:100%;flex-direction:column;pointer-events:none}tui-alert-host>.t-wrapper>*{pointer-events:auto}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "tuiMapper": i2.TuiMapperPipe }, animations: [TUI_PARENT_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
28
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiAlertHostComponent, decorators: [{
|
29
46
|
type: Component,
|
30
47
|
args: [{
|
@@ -34,6 +51,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
34
51
|
// So that we do not force OnPush on custom alerts
|
35
52
|
// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection
|
36
53
|
changeDetection: ChangeDetectionStrategy.Default,
|
54
|
+
providers: [TuiDestroyService],
|
37
55
|
animations: [TUI_PARENT_ANIMATION],
|
38
56
|
encapsulation: ViewEncapsulation.None,
|
39
57
|
}]
|
@@ -43,6 +61,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
43
61
|
}] }, { type: i0.Injector, decorators: [{
|
44
62
|
type: Inject,
|
45
63
|
args: [INJECTOR]
|
64
|
+
}] }, { type: i3.Observable, decorators: [{
|
65
|
+
type: Self
|
66
|
+
}, {
|
67
|
+
type: Inject,
|
68
|
+
args: [TuiDestroyService]
|
69
|
+
}] }, { type: i0.ChangeDetectorRef, decorators: [{
|
70
|
+
type: Inject,
|
71
|
+
args: [ChangeDetectorRef]
|
46
72
|
}] }]; } });
|
47
73
|
|
48
74
|
class TuiAlertHostModule {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-components-alert-host.js","sources":["../../../projects/cdk/components/alert-host/alert-host.component.ts","../../../projects/cdk/components/alert-host/alert-host.template.html","../../../projects/cdk/components/alert-host/alert-host.module.ts","../../../projects/cdk/components/alert-host/taiga-ui-cdk-components-alert-host.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n INJECTOR,\n Injector,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_PARENT_ANIMATION} from '@taiga-ui/cdk/constants';\nimport {TUI_ALERTS} from '@taiga-ui/cdk/tokens';\nimport {TuiDialog, TuiMapper} from '@taiga-ui/cdk/types';\nimport {POLYMORPHEUS_CONTEXT} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'tui-alert-host',\n templateUrl: './alert-host.template.html',\n styleUrls: ['./alert-host.style.less'],\n // So that we do not force OnPush on custom alerts\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [TUI_PARENT_ANIMATION],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TuiAlertHostComponent<T extends TuiDialog<unknown, unknown
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-components-alert-host.js","sources":["../../../projects/cdk/components/alert-host/alert-host.component.ts","../../../projects/cdk/components/alert-host/alert-host.template.html","../../../projects/cdk/components/alert-host/alert-host.module.ts","../../../projects/cdk/components/alert-host/taiga-ui-cdk-components-alert-host.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n INJECTOR,\n Injector,\n OnInit,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_PARENT_ANIMATION} from '@taiga-ui/cdk/constants';\nimport {TuiDestroyService} from '@taiga-ui/cdk/services';\nimport {TUI_ALERTS} from '@taiga-ui/cdk/tokens';\nimport {TuiDialog, TuiMapper} from '@taiga-ui/cdk/types';\nimport {POLYMORPHEUS_CONTEXT} from '@tinkoff/ng-polymorpheus';\nimport {combineLatest, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-alert-host',\n templateUrl: './alert-host.template.html',\n styleUrls: ['./alert-host.style.less'],\n // So that we do not force OnPush on custom alerts\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [TuiDestroyService],\n animations: [TUI_PARENT_ANIMATION],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TuiAlertHostComponent<T extends TuiDialog<unknown, unknown>>\n implements OnInit\n{\n alerts: ReadonlyArray<readonly T[]> = [];\n\n constructor(\n @Inject(TUI_ALERTS) private readonly allAlerts: Array<Observable<readonly T[]>>,\n @Inject(INJECTOR) private readonly injector: Injector,\n @Self() @Inject(TuiDestroyService) private readonly destroy$: Observable<void>,\n @Inject(ChangeDetectorRef) private readonly cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\n // can happen after view was checked, so calling `detectChanges` instead\n combineLatest(this.allAlerts)\n .pipe(takeUntil(this.destroy$))\n .subscribe(alerts => {\n this.alerts = alerts;\n this.cdr.detectChanges();\n });\n }\n\n readonly mapper: TuiMapper<unknown, Injector> = useValue =>\n Injector.create({\n providers: [\n {\n provide: POLYMORPHEUS_CONTEXT,\n useValue,\n },\n ],\n parent: this.injector,\n });\n}\n","<div\n *ngFor=\"let alert of alerts\"\n class=\"t-wrapper\"\n @tuiParentAnimation\n>\n <ng-container\n *ngFor=\"let item of alert\"\n [ngComponentOutlet]=\"item.component.component\"\n [ngComponentOutletInjector]=\"item | tuiMapper : mapper\"\n ></ng-container>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk/pipes';\n\nimport {TuiAlertHostComponent} from './alert-host.component';\n\n@NgModule({\n imports: [CommonModule, TuiMapperPipeModule],\n declarations: [TuiAlertHostComponent],\n exports: [TuiAlertHostComponent],\n})\nexport class TuiAlertHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { InjectionToken, Component, ChangeDetectionStrategy, Inject, NgModule } from '@angular/core';
|
2
|
+
import { InjectionToken, ChangeDetectorRef, Component, ChangeDetectionStrategy, Inject, Self, NgModule } from '@angular/core';
|
3
3
|
import * as i7 from '@angular/platform-browser';
|
4
4
|
import { Title } from '@angular/platform-browser';
|
5
5
|
import { HISTORY } from '@ng-web-apis/common';
|
6
6
|
import { TUI_PARENT_ANIMATION } from '@taiga-ui/cdk/constants';
|
7
|
+
import { TuiDestroyService } from '@taiga-ui/cdk/services';
|
7
8
|
import { TUI_DIALOGS } from '@taiga-ui/cdk/tokens';
|
8
9
|
import * as i6 from 'rxjs';
|
9
10
|
import { of, combineLatest } from 'rxjs';
|
10
|
-
import { map } from 'rxjs/operators';
|
11
|
+
import { map, takeUntil } from 'rxjs/operators';
|
11
12
|
import * as i1 from '@angular/common';
|
12
13
|
import { CommonModule } from '@angular/common';
|
13
14
|
import * as i2 from '@taiga-ui/cdk/directives/focus-trap';
|
@@ -28,14 +29,26 @@ const TUI_DIALOG_CLOSES_ON_BACK = new InjectionToken('[TUI_DIALOG_CLOSES_ON_BACK
|
|
28
29
|
const FAKE_HISTORY_STATE = { label: 'ignoreMe' };
|
29
30
|
const isFakeHistoryState = (historyState) => (historyState === null || historyState === void 0 ? void 0 : historyState.label) === FAKE_HISTORY_STATE.label;
|
30
31
|
class TuiDialogHostComponent {
|
31
|
-
constructor(isDialogClosesOnBack$, dialogsByType, historyRef, titleService) {
|
32
|
+
constructor(isDialogClosesOnBack$, dialogsByType, historyRef, titleService, destroy$, cdr) {
|
32
33
|
this.isDialogClosesOnBack$ = isDialogClosesOnBack$;
|
33
34
|
this.dialogsByType = dialogsByType;
|
34
35
|
this.historyRef = historyRef;
|
35
36
|
this.titleService = titleService;
|
36
|
-
this.
|
37
|
-
|
38
|
-
|
37
|
+
this.destroy$ = destroy$;
|
38
|
+
this.cdr = cdr;
|
39
|
+
this.dialogs = [];
|
40
|
+
}
|
41
|
+
ngOnInit() {
|
42
|
+
// Due to this view being parallel to app content, `markForCheck` from `async` pipe
|
43
|
+
// can happen after view was checked, so calling `detectChanges` instead
|
44
|
+
combineLatest(this.dialogsByType)
|
45
|
+
.pipe(map(arr => new Array()
|
46
|
+
.concat(...arr)
|
47
|
+
.sort((a, b) => a.createdAt - b.createdAt)), takeUntil(this.destroy$))
|
48
|
+
.subscribe(dialogs => {
|
49
|
+
this.dialogs = dialogs;
|
50
|
+
this.cdr.detectChanges();
|
51
|
+
});
|
39
52
|
}
|
40
53
|
closeLast(dialogs, isDialogClosesOnBack) {
|
41
54
|
if (!isDialogClosesOnBack) {
|
@@ -62,8 +75,8 @@ class TuiDialogHostComponent {
|
|
62
75
|
}
|
63
76
|
}
|
64
77
|
}
|
65
|
-
TuiDialogHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiDialogHostComponent, deps: [{ token: TUI_DIALOG_CLOSES_ON_BACK }, { token: TUI_DIALOGS }, { token: HISTORY }, { token: Title }], target: i0.ɵɵFactoryTarget.Component });
|
66
|
-
TuiDialogHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiDialogHostComponent, selector: "tui-dialog-host", ngImport: i0, template: "<
|
78
|
+
TuiDialogHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiDialogHostComponent, deps: [{ token: TUI_DIALOG_CLOSES_ON_BACK }, { token: TUI_DIALOGS }, { token: HISTORY }, { token: Title }, { token: TuiDestroyService, self: true }, { token: ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
79
|
+
TuiDialogHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiDialogHostComponent, selector: "tui-dialog-host", providers: [TuiDestroyService], ngImport: i0, template: "<section\n *ngFor=\"let item of dialogs\"\n tuiFocusTrap\n tuiScrollRef\n tuiOverscroll=\"all\"\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"t-dialog\"\n @tuiParentAnimation\n [attr.aria-labelledby]=\"item.id\"\n>\n <ng-container *polymorpheusOutlet=\"item.component; context: item\"></ng-container>\n</section>\n<div\n *tuiLet=\"isDialogClosesOnBack$ | async as isDialogClosesOnBack\"\n class=\"t-overlay\"\n [class.t-overlay_visible]=\"dialogs.length\"\n (window:popstate)=\"closeLast(dialogs, !!isDialogClosesOnBack)\"\n (transitionend)=\"onDialog($event, !!dialogs.length, !!isDialogClosesOnBack)\"\n></div>\n", styles: [":host{position:fixed;left:0;bottom:0;width:100%;height:0}.t-overlay,.t-dialog{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:flex-start;outline:none;overflow:auto;overflow:overlay}.t-dialog{bottom:auto;height:100%}.t-overlay{height:100%;pointer-events:none;touch-action:none;opacity:0;letter-spacing:normal;transition:opacity var(--tui-duration),letter-spacing .01s;background:rgba(0,0,0,.75);-webkit-backdrop-filter:var(--tui-backdrop, none);backdrop-filter:var(--tui-backdrop, none)}.t-overlay_visible{opacity:1;letter-spacing:1px}.t-dialog:last-of-type{z-index:1}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.TuiFocusTrapDirective, selector: "[tuiFocusTrap]" }, { type: i3.TuiOverscrollDirective, selector: "[tuiOverscroll]", inputs: ["tuiOverscroll"] }, { type: i4.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }], pipes: { "async": i1.AsyncPipe }, animations: [TUI_PARENT_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.Default });
|
67
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiDialogHostComponent, decorators: [{
|
68
81
|
type: Component,
|
69
82
|
args: [{
|
@@ -73,6 +86,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
73
86
|
// So that we do not force OnPush on custom dialogs
|
74
87
|
// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection
|
75
88
|
changeDetection: ChangeDetectionStrategy.Default,
|
89
|
+
providers: [TuiDestroyService],
|
76
90
|
animations: [TUI_PARENT_ANIMATION],
|
77
91
|
}]
|
78
92
|
}], ctorParameters: function () { return [{ type: i6.Observable, decorators: [{
|
@@ -87,6 +101,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
87
101
|
}] }, { type: i7.Title, decorators: [{
|
88
102
|
type: Inject,
|
89
103
|
args: [Title]
|
104
|
+
}] }, { type: i6.Observable, decorators: [{
|
105
|
+
type: Self
|
106
|
+
}, {
|
107
|
+
type: Inject,
|
108
|
+
args: [TuiDestroyService]
|
109
|
+
}] }, { type: i0.ChangeDetectorRef, decorators: [{
|
110
|
+
type: Inject,
|
111
|
+
args: [ChangeDetectorRef]
|
90
112
|
}] }]; } });
|
91
113
|
|
92
114
|
class TuiDialogHostModule {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-components-dialog-host.js","sources":["../../../projects/cdk/components/dialog-host/dialog-host.component.ts","../../../projects/cdk/components/dialog-host/dialog-host.template.html","../../../projects/cdk/components/dialog-host/dialog-host.module.ts","../../../projects/cdk/components/dialog-host/taiga-ui-cdk-components-dialog-host.ts"],"sourcesContent":["import {ChangeDetectionStrategy
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-components-dialog-host.js","sources":["../../../projects/cdk/components/dialog-host/dialog-host.component.ts","../../../projects/cdk/components/dialog-host/dialog-host.template.html","../../../projects/cdk/components/dialog-host/dialog-host.module.ts","../../../projects/cdk/components/dialog-host/taiga-ui-cdk-components-dialog-host.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n InjectionToken,\n OnInit,\n Self,\n} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {HISTORY} from '@ng-web-apis/common';\nimport {TUI_PARENT_ANIMATION} from '@taiga-ui/cdk/constants';\nimport {TuiDestroyService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/cdk/tokens';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {combineLatest, Observable, of} from 'rxjs';\nimport {map, takeUntil} from 'rxjs/operators';\n\n/**\n * Is closing dialog on browser backward navigation enabled\n */\nexport const TUI_DIALOG_CLOSES_ON_BACK = new InjectionToken<Observable<boolean>>(\n '[TUI_DIALOG_CLOSES_ON_BACK]',\n {\n factory: () => of(false),\n },\n);\n\nconst FAKE_HISTORY_STATE = {label: 'ignoreMe'} as const;\nconst isFakeHistoryState = (\n historyState: Record<string, unknown>,\n): historyState is typeof FAKE_HISTORY_STATE =>\n historyState?.label === FAKE_HISTORY_STATE.label;\n\n@Component({\n selector: 'tui-dialog-host',\n templateUrl: './dialog-host.template.html',\n styleUrls: ['./dialog-host.style.less'],\n // So that we do not force OnPush on custom dialogs\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [TuiDestroyService],\n animations: [TUI_PARENT_ANIMATION],\n})\nexport class TuiDialogHostComponent<T extends TuiDialog<unknown, unknown>>\n implements OnInit\n{\n dialogs: readonly T[] = [];\n\n constructor(\n @Inject(TUI_DIALOG_CLOSES_ON_BACK)\n readonly isDialogClosesOnBack$: Observable<boolean>,\n @Inject(TUI_DIALOGS)\n private readonly dialogsByType: Array<Observable<readonly T[]>>,\n @Inject(HISTORY) private readonly historyRef: History,\n @Inject(Title) private readonly titleService: Title,\n @Self() @Inject(TuiDestroyService) private readonly destroy$: Observable<void>,\n @Inject(ChangeDetectorRef) private readonly cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\n // can happen after view was checked, so calling `detectChanges` instead\n combineLatest(this.dialogsByType)\n .pipe(\n map(arr =>\n new Array<T>()\n .concat(...arr)\n .sort((a, b) => a.createdAt - b.createdAt),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(dialogs => {\n this.dialogs = dialogs;\n this.cdr.detectChanges();\n });\n }\n\n closeLast(dialogs: readonly T[], isDialogClosesOnBack: boolean): void {\n if (!isDialogClosesOnBack) {\n return;\n }\n\n const [last] = dialogs.slice(-1);\n\n if (!last) {\n return;\n }\n\n if (dialogs.length > 1) {\n this.historyRef.pushState(FAKE_HISTORY_STATE, this.titleService.getTitle());\n }\n\n last.$implicit.complete();\n }\n\n onDialog(\n {propertyName}: TransitionEvent,\n popupOpened: boolean,\n isDialogClosesOnBack: boolean,\n ): void {\n if (!isDialogClosesOnBack || propertyName !== 'letter-spacing') {\n return;\n }\n\n if (popupOpened) {\n this.historyRef.pushState(FAKE_HISTORY_STATE, this.titleService.getTitle());\n } else if (isFakeHistoryState(this.historyRef.state)) {\n this.historyRef.back();\n }\n }\n}\n","<section\n *ngFor=\"let item of dialogs\"\n tuiFocusTrap\n tuiScrollRef\n tuiOverscroll=\"all\"\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"t-dialog\"\n @tuiParentAnimation\n [attr.aria-labelledby]=\"item.id\"\n>\n <ng-container *polymorpheusOutlet=\"item.component; context: item\"></ng-container>\n</section>\n<div\n *tuiLet=\"isDialogClosesOnBack$ | async as isDialogClosesOnBack\"\n class=\"t-overlay\"\n [class.t-overlay_visible]=\"dialogs.length\"\n (window:popstate)=\"closeLast(dialogs, !!isDialogClosesOnBack)\"\n (transitionend)=\"onDialog($event, !!dialogs.length, !!isDialogClosesOnBack)\"\n></div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiLetModule} from '@taiga-ui/cdk/directives';\nimport {TuiFocusTrapModule} from '@taiga-ui/cdk/directives/focus-trap';\nimport {TuiOverscrollModule} from '@taiga-ui/cdk/directives/overscroll';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDialogHostComponent} from './dialog-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiOverscrollModule,\n TuiFocusTrapModule,\n TuiLetModule,\n ],\n declarations: [TuiDialogHostComponent],\n exports: [TuiDialogHostComponent],\n})\nexport class TuiDialogHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-constants.js","sources":["../../../projects/cdk/constants/always-false-handler.ts","../../../projects/cdk/constants/always-true-handler.ts","../../../projects/cdk/constants/browser.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/stringify.ts","../../../projects/cdk/constants/matcher.ts","../../../projects/cdk/constants/parent-animation.ts","../../../projects/cdk/constants/polling-time.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const ALWAYS_FALSE_HANDLER = (): false => false;\n","/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const ALWAYS_TRUE_HANDLER = (): true => true;\n","/**\n * @deprecated\n * TODO: drop support of legacy Edge (EdgeHTML) in v4.x\n */\nexport const CHROMIUM_EDGE_START_VERSION = 79;\n","import {QueryList} from '@angular/core';\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 = () => {};\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\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON() {\n return rect;\n },\n};\n","import {TuiStringHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Default method to turn arbitrary object into string\n */\nexport const TUI_DEFAULT_STRINGIFY: TuiStringHandler<unknown> = item => String(item);\n","import {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nimport {TUI_DEFAULT_STRINGIFY} from './stringify';\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> = TUI_DEFAULT_STRINGIFY,\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> = TUI_DEFAULT_STRINGIFY,\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\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n","import {animateChild, query, style, transition, trigger} from '@angular/animations';\n\n/**\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\n */\nexport const TUI_PARENT_ANIMATION = trigger(`tuiParentAnimation`, [\n transition(`* => void`, [\n style({overflow: `hidden`}),\n query(`:scope > *`, [animateChild()], {optional: true}),\n ]),\n]);\n\n/**\n * Add on parent to stop initial :enter animation for children\n */\nexport const TUI_PARENT_STOP = trigger(`tuiParentStop`, [transition(`:enter`, [])]);\n","export const POLLING_TIME = 1000 / 15;\n","// Filtering SVGElements for TreeWalker\n// Filter must be a function in IE, other modern browsers are compliant to this format\nexport const svgNodeFilter: NodeFilter = ((node: Node) =>\n `ownerSVGElement` in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT) as any;\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","export const TUI_VERSION = `3.
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-constants.js","sources":["../../../projects/cdk/constants/always-false-handler.ts","../../../projects/cdk/constants/always-true-handler.ts","../../../projects/cdk/constants/browser.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/stringify.ts","../../../projects/cdk/constants/matcher.ts","../../../projects/cdk/constants/parent-animation.ts","../../../projects/cdk/constants/polling-time.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const ALWAYS_FALSE_HANDLER = (): false => false;\n","/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const ALWAYS_TRUE_HANDLER = (): true => true;\n","/**\n * @deprecated\n * TODO: drop support of legacy Edge (EdgeHTML) in v4.x\n */\nexport const CHROMIUM_EDGE_START_VERSION = 79;\n","import {QueryList} from '@angular/core';\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 = () => {};\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\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON() {\n return rect;\n },\n};\n","import {TuiStringHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Default method to turn arbitrary object into string\n */\nexport const TUI_DEFAULT_STRINGIFY: TuiStringHandler<unknown> = item => String(item);\n","import {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nimport {TUI_DEFAULT_STRINGIFY} from './stringify';\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> = TUI_DEFAULT_STRINGIFY,\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> = TUI_DEFAULT_STRINGIFY,\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\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n","import {animateChild, query, style, transition, trigger} from '@angular/animations';\n\n/**\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\n */\nexport const TUI_PARENT_ANIMATION = trigger(`tuiParentAnimation`, [\n transition(`* => void`, [\n style({overflow: `hidden`}),\n query(`:scope > *`, [animateChild()], {optional: true}),\n ]),\n]);\n\n/**\n * Add on parent to stop initial :enter animation for children\n */\nexport const TUI_PARENT_STOP = trigger(`tuiParentStop`, [transition(`:enter`, [])]);\n","export const POLLING_TIME = 1000 / 15;\n","// Filtering SVGElements for TreeWalker\n// Filter must be a function in IE, other modern browsers are compliant to this format\nexport const svgNodeFilter: NodeFilter = ((node: Node) =>\n `ownerSVGElement` in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT) as any;\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","export const TUI_VERSION = `3.30.0`;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -127,6 +127,15 @@ function tuiPreventDefault() {
|
|
127
127
|
return tap(event => event.preventDefault());
|
128
128
|
}
|
129
129
|
|
130
|
+
/**
|
131
|
+
* Normalizes scroll event in case element is `html` (document.documentElement)
|
132
|
+
*/
|
133
|
+
function tuiScrollFrom(element) {
|
134
|
+
return tuiTypedFromEvent(element === element.ownerDocument.documentElement
|
135
|
+
? element.ownerDocument
|
136
|
+
: element, `scroll`);
|
137
|
+
}
|
138
|
+
|
130
139
|
function tuiStopPropagation() {
|
131
140
|
return tap(e => {
|
132
141
|
e.stopPropagation();
|
@@ -157,5 +166,5 @@ function tuiZoneOptimized(ngZone) {
|
|
157
166
|
* Generated bundle index. Do not edit.
|
158
167
|
*/
|
159
168
|
|
160
|
-
export { TuiDragStage, TuiDragState, tuiControlValue, tuiDragAndDropFrom, tuiFocusVisibleObservable, tuiIfMap, tuiIsAlive, tuiIsObserved, tuiItemsQueryListObservable, tuiMouseDragFinishFrom, tuiMustBePresent, tuiPressedObservable, tuiPreventDefault, tuiQueryListChanges, tuiStopPropagation, tuiTypedFromEvent, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefull };
|
169
|
+
export { TuiDragStage, TuiDragState, tuiControlValue, tuiDragAndDropFrom, tuiFocusVisibleObservable, tuiIfMap, tuiIsAlive, tuiIsObserved, tuiItemsQueryListObservable, tuiMouseDragFinishFrom, tuiMustBePresent, tuiPressedObservable, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTypedFromEvent, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefull };
|
161
170
|
//# sourceMappingURL=taiga-ui-cdk-observables.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-observables.js","sources":["../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/mouse-drag-finish-from.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/is-alive.ts","../../../projects/cdk/observables/focus-visible-observable.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/is-observed.ts","../../../projects/cdk/observables/items-query-list-observable.ts","../../../projects/cdk/observables/must-be-present.ts","../../../projects/cdk/observables/pressed-observable.ts","../../../projects/cdk/observables/prevent-default.ts","../../../projects/cdk/observables/stop-propagation.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone-free.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {TuiValueChangesException} from '@taiga-ui/cdk/exceptions';\nimport {Observable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control: AbstractControl | AbstractControlDirective,\n): Observable<T> {\n return new Observable(subscriber => {\n if (!control.valueChanges) {\n throw new TuiValueChangesException();\n }\n\n control.valueChanges.pipe(startWith(control.value)).subscribe(subscriber);\n });\n}\n","import {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {fromEvent, Observable} from 'rxjs';\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 {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {merge, Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Letting go of the mouse after it was pressed\n * @param target\n */\nexport function tuiMouseDragFinishFrom<\n T extends TuiTypedEventTarget<TuiEventWith<DragEvent, T>>,\n>(target: Exclude<T, null>): Observable<TuiEventWith<MouseEvent, T>> {\n return merge(\n tuiTypedFromEvent(target, `mouseup`),\n tuiTypedFromEvent(target, `dragend`),\n );\n}\n","import {TuiOwnerDocumentException} from '@taiga-ui/cdk/exceptions';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {concat, merge, Observable} from 'rxjs';\nimport {endWith, map, repeat, take, takeWhile} from 'rxjs/operators';\n\nimport {tuiMouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport const enum TuiDragStage {\n Start,\n Continues,\n End,\n}\n\nexport class TuiDragState {\n constructor(readonly stage: TuiDragStage, readonly event: MouseEvent) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new TuiOwnerDocumentException();\n }\n\n return concat(\n tuiTypedFromEvent(element, `mousedown`).pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.Start, event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, `mousemove`).pipe(\n map(event => new TuiDragState(TuiDragStage.Continues, event)),\n ),\n tuiMouseDragFinishFrom(ownerDocument).pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.End, event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {OperatorFunction, pipe, timer} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\n/**\n * Operator to set lifespan after which current value is considered obsolete\n */\nexport function tuiIsAlive(lifespan: number = 0): OperatorFunction<unknown, boolean> {\n return pipe(\n switchMap(() => timer(lifespan).pipe(map(ALWAYS_FALSE_HANDLER), startWith(true))),\n distinctUntilChanged(),\n );\n}\n","import {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiOwnerDocumentException} from '@taiga-ui/cdk/exceptions';\nimport {tuiIsFalsy} from '@taiga-ui/cdk/utils';\nimport {tuiIsNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {concat, merge, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n ignoreElements,\n map,\n repeat,\n shareReplay,\n startWith,\n switchMap,\n take,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {tuiIsAlive} from './is-alive';\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nlet documentMouseUpIsAlive$: Observable<boolean>;\nlet documentMouseDownIsAlive$: Observable<boolean>;\n\nexport function tuiFocusVisibleObservable(element: Element): Observable<boolean> {\n const elementBlur$ = tuiTypedFromEvent(element, `blur`);\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new TuiOwnerDocumentException();\n }\n\n if (!documentMouseDownIsAlive$ || !documentMouseUpIsAlive$) {\n documentMouseUpIsAlive$ = tuiTypedFromEvent(ownerDocument, `mouseup`, {\n capture: true,\n }).pipe(\n tuiIsAlive(),\n startWith(false),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n documentMouseDownIsAlive$ = tuiTypedFromEvent(ownerDocument, `mousedown`, {\n capture: true,\n }).pipe(\n tuiIsAlive(),\n startWith(false),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n }\n\n return merge(\n // focus events excluding ones that came right after mouse action\n concat(\n tuiTypedFromEvent(element, `focus`).pipe(take(1)),\n // filtering out blur events when element remains focused so that we ignore browser tab focus loss\n elementBlur$.pipe(\n filter(() => !tuiIsNativeFocused(element)),\n take(1),\n ignoreElements(),\n ),\n ).pipe(\n repeat(),\n withLatestFrom(\n documentMouseDownIsAlive$,\n documentMouseUpIsAlive$,\n (_event, elementActual, documentActual) =>\n elementActual || documentActual,\n ),\n filter(tuiIsFalsy),\n ),\n ).pipe(\n switchMap(() =>\n elementBlur$.pipe(map(ALWAYS_FALSE_HANDLER), take(1), startWith(true)),\n ),\n distinctUntilChanged(),\n );\n}\n","import {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {EMPTY, Observable, OperatorFunction, pipe} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\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","import {Observer, Subject} from 'rxjs';\n\n/* In RxJS 7 All subjects now have an observed property */\ntype SubjectRxJS7plus<T> = Subject<T> & {observed: boolean};\n\n/* In RxJS 8 `observers` will be removed */\ntype SubjectRxJS6<T> = Subject<T> & {observers: Array<Observer<T>>};\n\nexport function tuiIsObserved<T>(observable: Subject<T>): boolean {\n return `observed` in observable\n ? (observable as SubjectRxJS7plus<T>).observed\n : !!(observable as SubjectRxJS6<T>)?.observers?.length;\n}\n","import {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\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\n/**\n * @deprecated An alias, use {@link tuiQueryListChanges} instead\n */\nexport const tuiItemsQueryListObservable = tuiQueryListChanges;\n","import {TuiValuePresentException} from '@taiga-ui/cdk/exceptions';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs/operators';\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","import {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiOwnerDocumentException} from '@taiga-ui/cdk/exceptions';\nimport {Observable} from 'rxjs';\nimport {filter, map, startWith, switchMap, take} from 'rxjs/operators';\n\nimport {tuiMouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport interface TuiPressedObservableOptions {\n onlyTrusted: boolean;\n}\n\nexport function tuiPressedObservable(\n element: Element,\n {onlyTrusted}: TuiPressedObservableOptions = {onlyTrusted: true},\n): Observable<boolean> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new TuiOwnerDocumentException();\n }\n\n return tuiTypedFromEvent(element, `mousedown`).pipe(\n filter(({isTrusted}) => isTrusted || !onlyTrusted),\n switchMap(() =>\n tuiMouseDragFinishFrom(ownerDocument).pipe(\n map(ALWAYS_FALSE_HANDLER),\n take(1),\n startWith(true),\n ),\n ),\n );\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(event => event.preventDefault());\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(e => {\n e.stopPropagation();\n });\n}\n","import {ChangeDetectorRef} from '@angular/core';\nimport {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function tuiWatch<T>(cdr: ChangeDetectorRef): MonoTypeOperatorFunction<T> {\n return tap(() => {\n cdr.markForCheck();\n });\n}\n","import {NgZone} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: (error: unknown) => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n ngZone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(ngZone), tuiZonefull(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-observables.js","sources":["../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/mouse-drag-finish-from.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/is-alive.ts","../../../projects/cdk/observables/focus-visible-observable.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/is-observed.ts","../../../projects/cdk/observables/items-query-list-observable.ts","../../../projects/cdk/observables/must-be-present.ts","../../../projects/cdk/observables/pressed-observable.ts","../../../projects/cdk/observables/prevent-default.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/stop-propagation.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone-free.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {TuiValueChangesException} from '@taiga-ui/cdk/exceptions';\nimport {Observable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control: AbstractControl | AbstractControlDirective,\n): Observable<T> {\n return new Observable(subscriber => {\n if (!control.valueChanges) {\n throw new TuiValueChangesException();\n }\n\n control.valueChanges.pipe(startWith(control.value)).subscribe(subscriber);\n });\n}\n","import {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {fromEvent, Observable} from 'rxjs';\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 {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {merge, Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Letting go of the mouse after it was pressed\n * @param target\n */\nexport function tuiMouseDragFinishFrom<\n T extends TuiTypedEventTarget<TuiEventWith<DragEvent, T>>,\n>(target: Exclude<T, null>): Observable<TuiEventWith<MouseEvent, T>> {\n return merge(\n tuiTypedFromEvent(target, `mouseup`),\n tuiTypedFromEvent(target, `dragend`),\n );\n}\n","import {TuiOwnerDocumentException} from '@taiga-ui/cdk/exceptions';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {concat, merge, Observable} from 'rxjs';\nimport {endWith, map, repeat, take, takeWhile} from 'rxjs/operators';\n\nimport {tuiMouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport const enum TuiDragStage {\n Start,\n Continues,\n End,\n}\n\nexport class TuiDragState {\n constructor(readonly stage: TuiDragStage, readonly event: MouseEvent) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new TuiOwnerDocumentException();\n }\n\n return concat(\n tuiTypedFromEvent(element, `mousedown`).pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.Start, event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, `mousemove`).pipe(\n map(event => new TuiDragState(TuiDragStage.Continues, event)),\n ),\n tuiMouseDragFinishFrom(ownerDocument).pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.End, event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {OperatorFunction, pipe, timer} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\n/**\n * Operator to set lifespan after which current value is considered obsolete\n */\nexport function tuiIsAlive(lifespan: number = 0): OperatorFunction<unknown, boolean> {\n return pipe(\n switchMap(() => timer(lifespan).pipe(map(ALWAYS_FALSE_HANDLER), startWith(true))),\n distinctUntilChanged(),\n );\n}\n","import {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiOwnerDocumentException} from '@taiga-ui/cdk/exceptions';\nimport {tuiIsFalsy} from '@taiga-ui/cdk/utils';\nimport {tuiIsNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {concat, merge, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n ignoreElements,\n map,\n repeat,\n shareReplay,\n startWith,\n switchMap,\n take,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {tuiIsAlive} from './is-alive';\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nlet documentMouseUpIsAlive$: Observable<boolean>;\nlet documentMouseDownIsAlive$: Observable<boolean>;\n\nexport function tuiFocusVisibleObservable(element: Element): Observable<boolean> {\n const elementBlur$ = tuiTypedFromEvent(element, `blur`);\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new TuiOwnerDocumentException();\n }\n\n if (!documentMouseDownIsAlive$ || !documentMouseUpIsAlive$) {\n documentMouseUpIsAlive$ = tuiTypedFromEvent(ownerDocument, `mouseup`, {\n capture: true,\n }).pipe(\n tuiIsAlive(),\n startWith(false),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n documentMouseDownIsAlive$ = tuiTypedFromEvent(ownerDocument, `mousedown`, {\n capture: true,\n }).pipe(\n tuiIsAlive(),\n startWith(false),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n }\n\n return merge(\n // focus events excluding ones that came right after mouse action\n concat(\n tuiTypedFromEvent(element, `focus`).pipe(take(1)),\n // filtering out blur events when element remains focused so that we ignore browser tab focus loss\n elementBlur$.pipe(\n filter(() => !tuiIsNativeFocused(element)),\n take(1),\n ignoreElements(),\n ),\n ).pipe(\n repeat(),\n withLatestFrom(\n documentMouseDownIsAlive$,\n documentMouseUpIsAlive$,\n (_event, elementActual, documentActual) =>\n elementActual || documentActual,\n ),\n filter(tuiIsFalsy),\n ),\n ).pipe(\n switchMap(() =>\n elementBlur$.pipe(map(ALWAYS_FALSE_HANDLER), take(1), startWith(true)),\n ),\n distinctUntilChanged(),\n );\n}\n","import {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {EMPTY, Observable, OperatorFunction, pipe} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\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","import {Observer, Subject} from 'rxjs';\n\n/* In RxJS 7 All subjects now have an observed property */\ntype SubjectRxJS7plus<T> = Subject<T> & {observed: boolean};\n\n/* In RxJS 8 `observers` will be removed */\ntype SubjectRxJS6<T> = Subject<T> & {observers: Array<Observer<T>>};\n\nexport function tuiIsObserved<T>(observable: Subject<T>): boolean {\n return `observed` in observable\n ? (observable as SubjectRxJS7plus<T>).observed\n : !!(observable as SubjectRxJS6<T>)?.observers?.length;\n}\n","import {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\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\n/**\n * @deprecated An alias, use {@link tuiQueryListChanges} instead\n */\nexport const tuiItemsQueryListObservable = tuiQueryListChanges;\n","import {TuiValuePresentException} from '@taiga-ui/cdk/exceptions';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs/operators';\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","import {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiOwnerDocumentException} from '@taiga-ui/cdk/exceptions';\nimport {Observable} from 'rxjs';\nimport {filter, map, startWith, switchMap, take} from 'rxjs/operators';\n\nimport {tuiMouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport interface TuiPressedObservableOptions {\n onlyTrusted: boolean;\n}\n\nexport function tuiPressedObservable(\n element: Element,\n {onlyTrusted}: TuiPressedObservableOptions = {onlyTrusted: true},\n): Observable<boolean> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new TuiOwnerDocumentException();\n }\n\n return tuiTypedFromEvent(element, `mousedown`).pipe(\n filter(({isTrusted}) => isTrusted || !onlyTrusted),\n switchMap(() =>\n tuiMouseDragFinishFrom(ownerDocument).pipe(\n map(ALWAYS_FALSE_HANDLER),\n take(1),\n startWith(true),\n ),\n ),\n );\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(event => event.preventDefault());\n}\n","import {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 {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(e => {\n e.stopPropagation();\n });\n}\n","import {ChangeDetectorRef} from '@angular/core';\nimport {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function tuiWatch<T>(cdr: ChangeDetectorRef): MonoTypeOperatorFunction<T> {\n return tap(() => {\n cdr.markForCheck();\n });\n}\n","import {NgZone} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: (error: unknown) => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n ngZone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(ngZone), tuiZonefull(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -121,7 +121,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
121
121
|
* Service that subscribes to scroll events of all parent elements
|
122
122
|
*/
|
123
123
|
class TuiParentsScrollService extends Observable {
|
124
|
-
constructor(
|
124
|
+
constructor(
|
125
|
+
// Destructuring here causes memory leak
|
126
|
+
el, win) {
|
125
127
|
super(subscriber => this.callback$.subscribe(subscriber));
|
126
128
|
this.callback$ = defer(() => {
|
127
129
|
let { nativeElement } = el;
|