@taiga-ui/addon-mobile 3.29.2 → 3.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.js +88 -67
  2. package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.js.map +1 -1
  3. package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js +35 -6
  4. package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js.map +1 -1
  5. package/bundles/taiga-ui-addon-mobile-components-tab-bar.umd.js +3 -4
  6. package/bundles/taiga-ui-addon-mobile-components-tab-bar.umd.js.map +1 -1
  7. package/bundles/taiga-ui-addon-mobile-directives-elastic-sticky.umd.js +12 -23
  8. package/bundles/taiga-ui-addon-mobile-directives-elastic-sticky.umd.js.map +1 -1
  9. package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.js +2 -2
  10. package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.js.map +1 -1
  11. package/components/pull-to-refresh/pull-to-refresh.component.d.ts +6 -5
  12. package/components/pull-to-refresh/pull-to-refresh.module.d.ts +1 -1
  13. package/components/pull-to-refresh/pull-to-refresh.service.d.ts +4 -2
  14. package/components/sheet/components/sheets-host/sheets-host.component.d.ts +9 -4
  15. package/components/sheet/sheet.service.d.ts +2 -1
  16. package/components/tab-bar/tab-bar-item.component.d.ts +2 -9
  17. package/directives/elastic-sticky/elastic-sticky.service.d.ts +2 -3
  18. package/esm2015/components/pull-to-refresh/loader-android/loader-android.component.js +2 -2
  19. package/esm2015/components/pull-to-refresh/pull-to-refresh.component.js +44 -22
  20. package/esm2015/components/pull-to-refresh/pull-to-refresh.module.js +5 -21
  21. package/esm2015/components/pull-to-refresh/pull-to-refresh.service.js +23 -19
  22. package/esm2015/components/sheet/components/sheets-host/sheets-host.component.js +27 -6
  23. package/esm2015/components/sheet/sheet.service.js +14 -4
  24. package/esm2015/components/tab-bar/tab-bar-item.component.js +4 -5
  25. package/esm2015/directives/elastic-sticky/elastic-sticky.service.js +10 -21
  26. package/esm2015/directives/sidebar/sidebar.component.js +3 -3
  27. package/fesm2015/taiga-ui-addon-mobile-components-pull-to-refresh.js +66 -55
  28. package/fesm2015/taiga-ui-addon-mobile-components-pull-to-refresh.js.map +1 -1
  29. package/fesm2015/taiga-ui-addon-mobile-components-sheet.js +35 -7
  30. package/fesm2015/taiga-ui-addon-mobile-components-sheet.js.map +1 -1
  31. package/fesm2015/taiga-ui-addon-mobile-components-tab-bar.js +3 -4
  32. package/fesm2015/taiga-ui-addon-mobile-components-tab-bar.js.map +1 -1
  33. package/fesm2015/taiga-ui-addon-mobile-directives-elastic-sticky.js +9 -20
  34. package/fesm2015/taiga-ui-addon-mobile-directives-elastic-sticky.js.map +1 -1
  35. package/fesm2015/taiga-ui-addon-mobile-directives-sidebar.js +2 -2
  36. package/fesm2015/taiga-ui-addon-mobile-directives-sidebar.js.map +1 -1
  37. package/package.json +4 -4
@@ -4,18 +4,17 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/core";
5
5
  import * as i2 from "@angular/common";
6
6
  export class TuiTabBarItemComponent {
7
- constructor(animationOptions) {
8
- this.animationOptions = animationOptions;
7
+ constructor(animation) {
8
+ this.animation = animation;
9
9
  this.icon = '';
10
10
  this.badge = null;
11
- this.animation = Object.assign({ value: '' }, this.animationOptions);
12
11
  }
13
12
  format(value) {
14
13
  return value > 999 ? '999+' : String(value);
15
14
  }
16
15
  }
17
16
  TuiTabBarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiTabBarItemComponent, deps: [{ token: TUI_ANIMATION_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
18
- TuiTabBarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiTabBarItemComponent, selector: "button[tuiTabBarItem], a[tuiTabBarItem]", inputs: { icon: "icon", badge: "badge" }, ngImport: i0, template: "<tui-svg\n class=\"t-icon\"\n [src]=\"icon\"\n></tui-svg>\n<span class=\"t-wrapper\">\n <span\n *ngIf=\"badge as value\"\n class=\"t-badge\"\n [@tuiScaleIn]=\"animation\"\n >\n {{ format(value) }}\n </span>\n</span>\n<span class=\"t-text\">\n <ng-content></ng-content>\n</span>\n", styles: [":host{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;flex:1 0;font:inherit;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}:host:nth-child(1){color:var(--tui-tab-1, inherit)}:host:nth-child(2){color:var(--tui-tab-2, inherit)}:host:nth-child(3){color:var(--tui-tab-3, inherit)}:host:nth-child(4){color:var(--tui-tab-4, inherit)}:host:nth-child(5){color:var(--tui-tab-5, inherit)}:host:nth-child(6){color:var(--tui-tab-6, inherit)}:host:nth-child(7){color:var(--tui-tab-7, inherit)}:host:nth-child(8){color:var(--tui-tab-8, inherit)}:host:nth-child(9){color:var(--tui-tab-9, inherit)}:host:nth-child(10){color:var(--tui-tab-10, inherit)}.t-icon{width:1.75rem;height:1.75rem;margin:.375rem 0 .125rem;pointer-events:none}.t-wrapper{position:absolute;top:.125rem;left:1rem;display:flex;width:100%;justify-content:center;pointer-events:none}.t-badge{display:flex;height:1.125rem;min-width:1.125rem;align-items:center;padding:0 .25rem;border-radius:1rem;font-size:.8125rem;box-sizing:border-box;color:var(--tui-base-01);background:var(--tui-error-fill)}.t-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}\n"], components: [{ type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [tuiScaleIn], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17
+ TuiTabBarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiTabBarItemComponent, selector: "button[tuiTabBarItem], a[tuiTabBarItem]", inputs: { icon: "icon", badge: "badge" }, ngImport: i0, template: "<tui-svg\n class=\"t-icon\"\n [src]=\"icon\"\n></tui-svg>\n<span class=\"t-wrapper\">\n <span\n *ngIf=\"badge as value\"\n class=\"t-badge\"\n [@tuiScaleIn]=\"animation\"\n >\n {{ format(value) }}\n </span>\n</span>\n<span class=\"t-text\">\n <ng-content></ng-content>\n</span>\n", styles: [":host{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;flex:1 0;font:inherit;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}:host:nth-child(1){color:var(--tui-tab-1, inherit)}:host:nth-child(2){color:var(--tui-tab-2, inherit)}:host:nth-child(3){color:var(--tui-tab-3, inherit)}:host:nth-child(4){color:var(--tui-tab-4, inherit)}:host:nth-child(5){color:var(--tui-tab-5, inherit)}:host:nth-child(6){color:var(--tui-tab-6, inherit)}:host:nth-child(7){color:var(--tui-tab-7, inherit)}:host:nth-child(8){color:var(--tui-tab-8, inherit)}:host:nth-child(9){color:var(--tui-tab-9, inherit)}:host:nth-child(10){color:var(--tui-tab-10, inherit)}.t-icon{width:1.75rem;height:1.75rem;margin:.375rem 0 .125rem;pointer-events:none}.t-wrapper{position:absolute;top:.125rem;left:1rem;display:flex;width:100%;justify-content:center;pointer-events:none}.t-badge{display:flex;height:1.125rem;min-width:1.125rem;align-items:center;justify-content:center;padding:0 .25rem;border-radius:1rem;font-size:.8125rem;box-sizing:border-box;color:var(--tui-base-01);background:var(--tui-error-fill)}.t-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}\n"], components: [{ type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [tuiScaleIn], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiTabBarItemComponent, decorators: [{
20
19
  type: Component,
21
20
  args: [{
@@ -33,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
33
32
  }], badge: [{
34
33
  type: Input
35
34
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJhci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL3RhYi1iYXIvdGFiLWJhci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL3RhYi1iYXIvdGFiLWJhci1pdGVtLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVNqRSxNQUFNLE9BQU8sc0JBQXNCO0lBUy9CLFlBRXFCLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVHZELFNBQUksR0FBRyxFQUFFLENBQUM7UUFHVixVQUFLLEdBQW1CLElBQUksQ0FBQztRQUVwQixjQUFTLEdBQUcsZ0JBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSyxJQUFJLENBQUMsZ0JBQWdCLENBQVUsQ0FBQztJQUtqRSxDQUFDO0lBRUosTUFBTSxDQUFDLEtBQWE7UUFDaEIsT0FBTyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOztvSEFoQlEsc0JBQXNCLGtCQVVuQixxQkFBcUI7d0dBVnhCLHNCQUFzQix5SENYbkMsdVVBZ0JBLDRrRERQZ0IsQ0FBQyxVQUFVLENBQUM7NEZBRWYsc0JBQXNCO2tCQVBsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5Q0FBeUM7b0JBQ25ELFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUN4QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUMzQjs7MEJBV1EsTUFBTTsyQkFBQyxxQkFBcUI7NENBUmpDLElBQUk7c0JBREgsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VFVJX0FOSU1BVElPTl9PUFRJT05TLCB0dWlTY2FsZUlufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnV0dG9uW3R1aVRhYkJhckl0ZW1dLCBhW3R1aVRhYkJhckl0ZW1dJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLWJhci1pdGVtLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYi1iYXItaXRlbS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW3R1aVNjYWxlSW5dLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJCYXJJdGVtQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIGljb24gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgYmFkZ2U/OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHJlYWRvbmx5IGFuaW1hdGlvbiA9IHt2YWx1ZTogJycsIC4uLnRoaXMuYW5pbWF0aW9uT3B0aW9uc30gYXMgY29uc3Q7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUVUlfQU5JTUFUSU9OX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0aW9uT3B0aW9uczogQW5pbWF0aW9uT3B0aW9ucyxcbiAgICApIHt9XG5cbiAgICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+IDk5OSA/ICc5OTkrJyA6IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxufVxuIiwiPHR1aS1zdmdcbiAgICBjbGFzcz1cInQtaWNvblwiXG4gICAgW3NyY109XCJpY29uXCJcbj48L3R1aS1zdmc+XG48c3BhbiBjbGFzcz1cInQtd3JhcHBlclwiPlxuICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiYmFkZ2UgYXMgdmFsdWVcIlxuICAgICAgICBjbGFzcz1cInQtYmFkZ2VcIlxuICAgICAgICBbQHR1aVNjYWxlSW5dPVwiYW5pbWF0aW9uXCJcbiAgICA+XG4gICAgICAgIHt7IGZvcm1hdCh2YWx1ZSkgfX1cbiAgICA8L3NwYW4+XG48L3NwYW4+XG48c3BhbiBjbGFzcz1cInQtdGV4dFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJhci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL3RhYi1iYXIvdGFiLWJhci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL3RhYi1iYXIvdGFiLWJhci1pdGVtLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVNqRSxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLFlBQW9ELFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBTC9FLFNBQUksR0FBRyxFQUFFLENBQUM7UUFHVixVQUFLLEdBQW1CLElBQUksQ0FBQztJQUVxRCxDQUFDO0lBRW5GLE1BQU0sQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7b0hBWFEsc0JBQXNCLGtCQU9YLHFCQUFxQjt3R0FQaEMsc0JBQXNCLHlIQ1huQyx1VUFnQkEsbW1ERFBnQixDQUFDLFVBQVUsQ0FBQzs0RkFFZixzQkFBc0I7a0JBUGxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlDQUF5QztvQkFDbkQsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUM7aUJBQzNCOzswQkFRZ0IsTUFBTTsyQkFBQyxxQkFBcUI7NENBTHpDLElBQUk7c0JBREgsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VFVJX0FOSU1BVElPTl9PUFRJT05TLCB0dWlTY2FsZUlufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnV0dG9uW3R1aVRhYkJhckl0ZW1dLCBhW3R1aVRhYkJhckl0ZW1dJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLWJhci1pdGVtLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYi1iYXItaXRlbS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW3R1aVNjYWxlSW5dLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJCYXJJdGVtQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIGljb24gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgYmFkZ2U/OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoVFVJX0FOSU1BVElPTl9PUFRJT05TKSByZWFkb25seSBhbmltYXRpb246IEFuaW1hdGlvbk9wdGlvbnMpIHt9XG5cbiAgICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+IDk5OSA/ICc5OTkrJyA6IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxufVxuIiwiPHR1aS1zdmdcbiAgICBjbGFzcz1cInQtaWNvblwiXG4gICAgW3NyY109XCJpY29uXCJcbj48L3R1aS1zdmc+XG48c3BhbiBjbGFzcz1cInQtd3JhcHBlclwiPlxuICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiYmFkZ2UgYXMgdmFsdWVcIlxuICAgICAgICBjbGFzcz1cInQtYmFkZ2VcIlxuICAgICAgICBbQHR1aVNjYWxlSW5dPVwiYW5pbWF0aW9uXCJcbiAgICA+XG4gICAgICAgIHt7IGZvcm1hdCh2YWx1ZSkgfX1cbiAgICA8L3NwYW4+XG48L3NwYW4+XG48c3BhbiBjbGFzcz1cInQtdGV4dFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cbiJdfQ==
@@ -1,38 +1,30 @@
1
- import { ElementRef, Inject, Injectable, NgZone, Optional, Self } from '@angular/core';
2
- import { WINDOW } from '@ng-web-apis/common';
3
- import { TuiDestroyService, tuiGetElementOffset, tuiTypedFromEvent, tuiZoneOptimized, } from '@taiga-ui/cdk';
1
+ import { ElementRef, Inject, Injectable, NgZone, Self } from '@angular/core';
2
+ import { TuiDestroyService, tuiGetElementOffset, tuiScrollFrom, tuiZoneOptimized, } from '@taiga-ui/cdk';
4
3
  import { SCROLL_REF_SELECTOR, TUI_SCROLL_REF } from '@taiga-ui/core';
5
4
  import { Observable } from 'rxjs';
6
5
  import { distinctUntilChanged, map, skip, startWith, switchMap, take, takeUntil, } from 'rxjs/operators';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "@taiga-ui/cdk";
9
8
  export class TuiElasticStickyService extends Observable {
10
- constructor(scrollRef, { nativeElement }, ngZone, win, destroy$) {
9
+ constructor(scrollRef, { nativeElement }, ngZone, destroy$) {
11
10
  super(subscriber => ngZone.onStable
12
11
  .pipe(take(1), switchMap(() => {
13
- const closest = nativeElement.closest(SCROLL_REF_SELECTOR);
14
- const host = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.nativeElement) || closest;
12
+ const host = nativeElement.closest(SCROLL_REF_SELECTOR) ||
13
+ scrollRef.nativeElement;
15
14
  const { offsetHeight } = nativeElement;
16
- const offsetTop = this.getInitialOffset(host || win, nativeElement);
17
- return tuiTypedFromEvent(host || win, `scroll`).pipe(map(() => Math.max(1 -
18
- Math.max(Math.round(host ? host.scrollTop : win.pageYOffset) - offsetTop, 0) /
15
+ const { offsetTop } = tuiGetElementOffset(host, nativeElement);
16
+ return tuiScrollFrom(host).pipe(map(() => Math.max(1 -
17
+ Math.max(Math.round(host.scrollTop) - offsetTop, 0) /
19
18
  offsetHeight, 0)));
20
19
  }), startWith(1), distinctUntilChanged(), skip(1), tuiZoneOptimized(ngZone), takeUntil(destroy$))
21
20
  .subscribe(subscriber));
22
21
  }
23
- getInitialOffset(host, element) {
24
- return `nodeType` in host
25
- ? tuiGetElementOffset(host, element).offsetTop
26
- : element.getBoundingClientRect().top;
27
- }
28
22
  }
29
- TuiElasticStickyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiElasticStickyService, deps: [{ token: TUI_SCROLL_REF, optional: true }, { token: ElementRef }, { token: NgZone }, { token: WINDOW }, { token: TuiDestroyService, self: true }], target: i0.ɵɵFactoryTarget.Injectable });
23
+ TuiElasticStickyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiElasticStickyService, deps: [{ token: TUI_SCROLL_REF }, { token: ElementRef }, { token: NgZone }, { token: TuiDestroyService, self: true }], target: i0.ɵɵFactoryTarget.Injectable });
30
24
  TuiElasticStickyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiElasticStickyService });
31
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiElasticStickyService, decorators: [{
32
26
  type: Injectable
33
27
  }], ctorParameters: function () { return [{ type: i0.ElementRef, decorators: [{
34
- type: Optional
35
- }, {
36
28
  type: Inject,
37
29
  args: [TUI_SCROLL_REF]
38
30
  }] }, { type: i0.ElementRef, decorators: [{
@@ -41,13 +33,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
41
33
  }] }, { type: i0.NgZone, decorators: [{
42
34
  type: Inject,
43
35
  args: [NgZone]
44
- }] }, { type: Window, decorators: [{
45
- type: Inject,
46
- args: [WINDOW]
47
36
  }] }, { type: i1.TuiDestroyService, decorators: [{
48
37
  type: Self
49
38
  }, {
50
39
  type: Inject,
51
40
  args: [TuiDestroyService]
52
41
  }] }]; } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpYy1zdGlja3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9kaXJlY3RpdmVzL2VsYXN0aWMtc3RpY2t5L2VsYXN0aWMtc3RpY2t5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3hCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxVQUFrQjtJQUMzRCxZQUdJLFNBQXlDLEVBQ3JCLEVBQUMsYUFBYSxFQUEwQixFQUM1QyxNQUFjLEVBQ2QsR0FBVyxFQUNRLFFBQTJCO1FBRTlELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNmLE1BQU0sQ0FBQyxRQUFRO2FBQ1YsSUFBSSxDQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzNELE1BQU0sSUFBSSxHQUFHLENBQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLGFBQWEsS0FBSSxPQUFPLENBQUM7WUFDakQsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLGFBQWEsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ25DLElBQUksSUFBSSxHQUFHLEVBQ1gsYUFBYSxDQUNoQixDQUFDO1lBRUYsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUNMLElBQUksQ0FBQyxHQUFHLENBQ0osQ0FBQztnQkFDRyxJQUFJLENBQUMsR0FBRyxDQUNKLElBQUksQ0FBQyxLQUFLLENBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUMxQyxHQUFHLFNBQVMsRUFDYixDQUFDLENBQ0o7b0JBQ0csWUFBWSxFQUNwQixDQUFDLENBQ0osQ0FDSixDQUNKLENBQUM7UUFDTixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osb0JBQW9CLEVBQUUsRUFDdEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUN4QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3RCO2FBQ0EsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUM3QixDQUFDO0lBQ04sQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQXNCLEVBQUUsT0FBb0I7UUFDakUsT0FBTyxVQUFVLElBQUksSUFBSTtZQUNyQixDQUFDLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7WUFDOUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM5QyxDQUFDOztxSEFyRFEsdUJBQXVCLGtCQUdwQixjQUFjLDZCQUVkLFVBQVUsYUFDVixNQUFNLGFBQ04sTUFBTSxhQUNFLGlCQUFpQjt5SEFSNUIsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQUdGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsY0FBYzs7MEJBRXJCLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsTUFBTTs4QkFDTyxNQUFNOzBCQUExQixNQUFNOzJCQUFDLE1BQU07OzBCQUNiLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSwgT3B0aW9uYWwsIFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXSU5ET1d9IGZyb20gJ0BuZy13ZWItYXBpcy9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICB0dWlHZXRFbGVtZW50T2Zmc2V0LFxuICAgIHR1aVR5cGVkRnJvbUV2ZW50LFxuICAgIHR1aVpvbmVPcHRpbWl6ZWQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtTQ1JPTExfUkVGX1NFTEVDVE9SLCBUVUlfU0NST0xMX1JFRn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHVpRWxhc3RpY1N0aWNreVNlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9TQ1JPTExfUkVGKVxuICAgICAgICBzY3JvbGxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCxcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSB7bmF0aXZlRWxlbWVudH06IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KE5nWm9uZSkgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoV0lORE9XKSB3aW46IFdpbmRvdyxcbiAgICAgICAgQFNlbGYoKSBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKSBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHN1YnNjcmliZXIgPT5cbiAgICAgICAgICAgIG5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdCA9IG5hdGl2ZUVsZW1lbnQuY2xvc2VzdChTQ1JPTExfUkVGX1NFTEVDVE9SKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvc3QgPSBzY3JvbGxSZWY/Lm5hdGl2ZUVsZW1lbnQgfHwgY2xvc2VzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHtvZmZzZXRIZWlnaHR9ID0gbmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFRvcCA9IHRoaXMuZ2V0SW5pdGlhbE9mZnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IHx8IHdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR1aVR5cGVkRnJvbUV2ZW50KGhvc3QgfHwgd2luLCBgc2Nyb2xsYCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPyBob3N0LnNjcm9sbFRvcCA6IHdpbi5wYWdlWU9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAtIG9mZnNldFRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCgxKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgdHVpWm9uZU9wdGltaXplZChuZ1pvbmUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHN1YnNjcmliZXIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5pdGlhbE9mZnNldChob3N0OiBFbGVtZW50IHwgV2luZG93LCBlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBgbm9kZVR5cGVgIGluIGhvc3RcbiAgICAgICAgICAgID8gdHVpR2V0RWxlbWVudE9mZnNldChob3N0LCBlbGVtZW50KS5vZmZzZXRUb3BcbiAgICAgICAgICAgIDogZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpYy1zdGlja3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9kaXJlY3RpdmVzL2VsYXN0aWMtc3RpY2t5L2VsYXN0aWMtc3RpY2t5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUNILGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd4QixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsVUFBa0I7SUFDM0QsWUFDNEIsU0FBa0MsRUFDdEMsRUFBQyxhQUFhLEVBQTBCLEVBQzVDLE1BQWMsRUFDSyxRQUEyQjtRQUU5RCxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDZixNQUFNLENBQUMsUUFBUTthQUNWLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNYLE1BQU0sSUFBSSxHQUNOLGFBQWEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7Z0JBQzFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDNUIsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLGFBQWEsQ0FBQztZQUNyQyxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRTdELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUNMLElBQUksQ0FBQyxHQUFHLENBQ0osQ0FBQztnQkFDRyxJQUFJLENBQUMsR0FBRyxDQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsRUFDdEMsQ0FBQyxDQUNKO29CQUNHLFlBQVksRUFDcEIsQ0FBQyxDQUNKLENBQ0osQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLG9CQUFvQixFQUFFLEVBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFDeEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN0QjthQUNBLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FDN0IsQ0FBQztJQUNOLENBQUM7O3FIQXhDUSx1QkFBdUIsa0JBRXBCLGNBQWMsYUFDZCxVQUFVLGFBQ1YsTUFBTSxhQUNFLGlCQUFpQjt5SEFMNUIsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQUdGLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsTUFBTTs7MEJBQ2IsSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lLCBTZWxmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgdHVpR2V0RWxlbWVudE9mZnNldCxcbiAgICB0dWlTY3JvbGxGcm9tLFxuICAgIHR1aVpvbmVPcHRpbWl6ZWQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtTQ1JPTExfUkVGX1NFTEVDVE9SLCBUVUlfU0NST0xMX1JFRn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHVpRWxhc3RpY1N0aWNreVNlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9TQ1JPTExfUkVGKSBzY3JvbGxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHtuYXRpdmVFbGVtZW50fTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQFNlbGYoKSBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKSBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHN1YnNjcmliZXIgPT5cbiAgICAgICAgICAgIG5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaG9zdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudC5jbG9zZXN0KFNDUk9MTF9SRUZfU0VMRUNUT1IpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7b2Zmc2V0SGVpZ2h0fSA9IG5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7b2Zmc2V0VG9wfSA9IHR1aUdldEVsZW1lbnRPZmZzZXQoaG9zdCwgbmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0dWlTY3JvbGxGcm9tKGhvc3QpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoaG9zdC5zY3JvbGxUb3ApIC0gb2Zmc2V0VG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKDEpLFxuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICB0dWlab25lT3B0aW1pemVkKG5nWm9uZSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoc3Vic2NyaWJlciksXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -11,8 +11,8 @@ export class TuiSidebarComponent {
11
11
  constructor(options, directive) {
12
12
  this.options = options;
13
13
  this.directive = directive;
14
- this.left = Object.assign({ value: 'left' }, this.options);
15
- this.right = Object.assign({ value: 'right' }, this.options);
14
+ this.left = Object.assign(Object.assign({}, this.options), { value: 'left' });
15
+ this.right = Object.assign(Object.assign({}, this.options), { value: 'right' });
16
16
  }
17
17
  get animation() {
18
18
  return this.direction === 'left' ? this.left : this.right;
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
57
57
  type: HostBinding,
58
58
  args: ['class']
59
59
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1tb2JpbGUvZGlyZWN0aXZlcy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMvc2lkZWJhci9zaWRlYmFyLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gscUJBQXFCLEVBR3JCLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLDRDQUE0QztBQUM1QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBU3hELE1BQU0sT0FBTyxtQkFBbUI7SUFXNUIsWUFDb0QsT0FBeUIsRUFDM0IsU0FBOEI7UUFENUIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFaL0QsU0FBSSxHQUFHLGdCQUNwQixLQUFLLEVBQUUsTUFBTSxJQUNWLElBQUksQ0FBQyxPQUFPLENBQ1QsQ0FBQztRQUVNLFVBQUssR0FBRyxnQkFDckIsS0FBSyxFQUFFLE9BQU8sSUFDWCxJQUFJLENBQUMsT0FBTyxDQUNULENBQUM7SUFLUixDQUFDO0lBRUosSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFDSSxrQkFBa0I7UUFDbEIsT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7O2lIQXhDUSxtQkFBbUIsa0JBWWhCLHFCQUFxQixhQUNyQixtQkFBbUI7cUdBYnRCLG1CQUFtQix3SkMzQmhDLG9OQVNBLGdrQ0RnQmdCLENBQUMsVUFBVSxDQUFDOzRGQUVmLG1CQUFtQjtrQkFQL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUseUJBQXlCO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDbkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQztpQkFDM0I7OzBCQWFRLE1BQU07MkJBQUMscUJBQXFCOzswQkFDNUIsTUFBTTsyQkFBQyxtQkFBbUI7NENBSTNCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxhQUFhO2dCQU10QixrQkFBa0I7c0JBRHJCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5pbWF0aW9uT3B0aW9uc30gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFRVSV9BTklNQVRJT05fT1BUSU9OUyxcbiAgICBUdWlBbmltYXRpb25PcHRpb25zLFxuICAgIFR1aUhvcml6b250YWxEaXJlY3Rpb24sXG4gICAgdHVpU2xpZGVJbixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG4vLyBUT0RPOiBmaW5kIHRoZSBiZXN0IHdheSBmb3IgcHJldmVudCBjeWNsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtUdWlTaWRlYmFyRGlyZWN0aXZlfSBmcm9tICcuL3NpZGViYXIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhc2lkZVt0dWlTaWRlYmFyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2lkZWJhci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW3R1aVNsaWRlSW5dLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWZ0ID0ge1xuICAgICAgICB2YWx1ZTogJ2xlZnQnLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmlnaHQgPSB7XG4gICAgICAgIHZhbHVlOiAncmlnaHQnLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9BTklNQVRJT05fT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBBbmltYXRpb25PcHRpb25zLFxuICAgICAgICBASW5qZWN0KFR1aVNpZGViYXJEaXJlY3RpdmUpIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0aXZlOiBUdWlTaWRlYmFyRGlyZWN0aXZlLFxuICAgICkge31cblxuICAgIEBIb3N0QmluZGluZygnQHR1aVNsaWRlSW4nKVxuICAgIGdldCBhbmltYXRpb24oKTogVHVpQW5pbWF0aW9uT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gdGhpcy5sZWZ0IDogdGhpcy5yaWdodDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgZGlyZWN0aW9uSG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdC0ke3RoaXMuZGlyZWN0aXZlLmRpcmVjdGlvbn1gO1xuICAgIH1cblxuICAgIGdldCBkaXJlY3Rpb24oKTogVHVpSG9yaXpvbnRhbERpcmVjdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5kaXJlY3Rpb247XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRlbnQoKTogUG9seW1vcnBoZXVzQ29udGVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5jb250ZW50O1xuICAgIH1cblxuICAgIGdldCBhdXRvV2lkdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5hdXRvV2lkdGg7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZS5jaGVjaygpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICB0dWlBY3RpdmVab25lXG4gICAgY2xhc3M9XCJ0LXdyYXBwZXJcIlxuICAgIFtjbGFzcy50LXdyYXBwZXJfYXV0by13aWR0aF09XCJhdXRvV2lkdGhcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbnRlbnQgYXMgdGV4dFwiPlxuICAgICAgICB7eyB0ZXh0IH19XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1tb2JpbGUvZGlyZWN0aXZlcy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMvc2lkZWJhci9zaWRlYmFyLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gscUJBQXFCLEVBR3JCLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLDRDQUE0QztBQUM1QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBU3hELE1BQU0sT0FBTyxtQkFBbUI7SUFXNUIsWUFDb0QsT0FBeUIsRUFDM0IsU0FBOEI7UUFENUIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFaL0QsU0FBSSxHQUFHLGdDQUNqQixJQUFJLENBQUMsT0FBTyxLQUNmLEtBQUssRUFBRSxNQUFNLEdBQ1AsQ0FBQztRQUVNLFVBQUssR0FBRyxnQ0FDbEIsSUFBSSxDQUFDLE9BQU8sS0FDZixLQUFLLEVBQUUsT0FBTyxHQUNSLENBQUM7SUFLUixDQUFDO0lBRUosSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFDSSxrQkFBa0I7UUFDbEIsT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7O2lIQXhDUSxtQkFBbUIsa0JBWWhCLHFCQUFxQixhQUNyQixtQkFBbUI7cUdBYnRCLG1CQUFtQix3SkMzQmhDLG9OQVNBLGdrQ0RnQmdCLENBQUMsVUFBVSxDQUFDOzRGQUVmLG1CQUFtQjtrQkFQL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUseUJBQXlCO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDbkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQztpQkFDM0I7OzBCQWFRLE1BQU07MkJBQUMscUJBQXFCOzswQkFDNUIsTUFBTTsyQkFBQyxtQkFBbUI7NENBSTNCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxhQUFhO2dCQU10QixrQkFBa0I7c0JBRHJCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5pbWF0aW9uT3B0aW9uc30gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFRVSV9BTklNQVRJT05fT1BUSU9OUyxcbiAgICBUdWlBbmltYXRpb25PcHRpb25zLFxuICAgIFR1aUhvcml6b250YWxEaXJlY3Rpb24sXG4gICAgdHVpU2xpZGVJbixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG4vLyBUT0RPOiBmaW5kIHRoZSBiZXN0IHdheSBmb3IgcHJldmVudCBjeWNsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtUdWlTaWRlYmFyRGlyZWN0aXZlfSBmcm9tICcuL3NpZGViYXIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhc2lkZVt0dWlTaWRlYmFyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2lkZWJhci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW3R1aVNsaWRlSW5dLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWZ0ID0ge1xuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgIHZhbHVlOiAnbGVmdCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmlnaHQgPSB7XG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgdmFsdWU6ICdyaWdodCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9BTklNQVRJT05fT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBBbmltYXRpb25PcHRpb25zLFxuICAgICAgICBASW5qZWN0KFR1aVNpZGViYXJEaXJlY3RpdmUpIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0aXZlOiBUdWlTaWRlYmFyRGlyZWN0aXZlLFxuICAgICkge31cblxuICAgIEBIb3N0QmluZGluZygnQHR1aVNsaWRlSW4nKVxuICAgIGdldCBhbmltYXRpb24oKTogVHVpQW5pbWF0aW9uT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gdGhpcy5sZWZ0IDogdGhpcy5yaWdodDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgZGlyZWN0aW9uSG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdC0ke3RoaXMuZGlyZWN0aXZlLmRpcmVjdGlvbn1gO1xuICAgIH1cblxuICAgIGdldCBkaXJlY3Rpb24oKTogVHVpSG9yaXpvbnRhbERpcmVjdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5kaXJlY3Rpb247XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRlbnQoKTogUG9seW1vcnBoZXVzQ29udGVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5jb250ZW50O1xuICAgIH1cblxuICAgIGdldCBhdXRvV2lkdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5hdXRvV2lkdGg7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZS5jaGVjaygpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICB0dWlBY3RpdmVab25lXG4gICAgY2xhc3M9XCJ0LXdyYXBwZXJcIlxuICAgIFtjbGFzcy50LXdyYXBwZXJfYXV0by13aWR0aF09XCJhdXRvV2lkdGhcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbnRlbnQgYXMgdGV4dFwiPlxuICAgICAgICB7eyB0ZXh0IH19XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,15 +1,16 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Inject, InjectionToken, inject, ElementRef, Injectable, HostBinding, Output, NgModule } from '@angular/core';
3
- import * as i2$1 from '@tinkoff/ng-polymorpheus';
2
+ import { Component, ChangeDetectionStrategy, Inject, InjectionToken, inject, ElementRef, Injectable, HostBinding, Self, Input, Output, NgModule } from '@angular/core';
3
+ import * as i1$1 from '@tinkoff/ng-polymorpheus';
4
4
  import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent, PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
5
5
  import * as i1 from '@taiga-ui/cdk';
6
- import { TUI_IS_IOS, tuiTypedFromEvent, TuiOverscrollModule, TuiRepeatTimesModule } from '@taiga-ui/cdk';
7
- import * as i1$1 from 'rxjs';
8
- import { EMPTY, Observable, merge, of } from 'rxjs';
6
+ import { TUI_IS_IOS, tuiTypedFromEvent, tuiScrollFrom, TuiDestroyService, tuiDefaultProp, TuiRepeatTimesModule } from '@taiga-ui/cdk';
7
+ import * as i3 from 'rxjs';
8
+ import { EMPTY, Observable } from 'rxjs';
9
9
  import * as i2 from '@angular/common';
10
10
  import { CommonModule } from '@angular/common';
11
- import { filter, switchMap, map, takeUntil, endWith, scan, distinctUntilChanged } from 'rxjs/operators';
12
- import { TuiSvgModule } from '@taiga-ui/core';
11
+ import { TUI_SCROLL_REF, TuiSvgModule } from '@taiga-ui/core';
12
+ import { startWith, switchMap, filter, map, tap, takeUntil, endWith, scan, takeWhile, distinctUntilChanged, share } from 'rxjs/operators';
13
+ import { __decorate } from 'tslib';
13
14
 
14
15
  const LOADED_STEP = 8;
15
16
  const ROTATE_X_STEP = 30;
@@ -79,38 +80,41 @@ const TUI_LOADED = TUI_PULL_TO_REFRESH_LOADED;
79
80
 
80
81
  const MICRO_OFFSET = Math.pow(10, -6);
81
82
  class TuiPullToRefreshService extends Observable {
82
- constructor(el, isIos, loaded$, threshold, component) {
83
+ constructor(el, scrollRef, loaded$, threshold, component) {
83
84
  super(subscriber => (component ? this.pulling$ : EMPTY).subscribe(subscriber));
84
85
  this.el = el;
85
- this.isIos = isIos;
86
+ this.scrollRef = scrollRef;
86
87
  this.loaded$ = loaded$;
87
88
  this.threshold = threshold;
88
- this.pulling$ = merge(tuiTypedFromEvent(this.element, `touchstart`, { passive: true }).pipe(filter(() => this.element.scrollTop === 0), switchMap(touchStart => tuiTypedFromEvent(this.element, `touchmove`).pipe(map(touchMove => touchMove.touches[0].clientY - touchStart.touches[0].clientY), takeUntil(tuiTypedFromEvent(this.element, `touchend`)), endWith(0)))), this.loaded$.pipe(map(() => NaN))).pipe(scan((max, current) => {
89
- if (Number.isNaN(current)) {
90
- return 0;
91
- }
92
- const androidLoading = !this.isIos && max === this.threshold;
93
- const dropped = current === 0 && max > this.threshold;
94
- return androidLoading || dropped
95
- ? this.threshold
96
- : current + current * MICRO_OFFSET;
97
- }, 0));
89
+ // Hack for iOS to determine if pulling stopped due to scroll
90
+ // because Safari does not support `touch-action: pan-down`
91
+ this.touched = false;
92
+ this.pulling$ = this.loaded$.pipe(startWith(null), switchMap(() => tuiTypedFromEvent(this.element, `touchstart`, { passive: true }).pipe(filter(() => !this.scrollTop), map(({ touches }) => touches[0].clientY), switchMap(start => tuiTypedFromEvent(this.element, `touchmove`).pipe(tap(() => {
93
+ this.touched = true;
94
+ }), map(({ touches }) => touches[0].clientY - start), filter(distance => distance > 0), takeUntil(tuiTypedFromEvent(this.element, `touchend`).pipe(tap(() => {
95
+ this.touched = false;
96
+ }))), takeUntil(tuiScrollFrom(this.scrollRef.nativeElement)), endWith(0))), scan((prev, current) => !current && !this.touched && prev > this.threshold
97
+ ? this.threshold
98
+ : current + current * MICRO_OFFSET, 0), takeWhile(distance => distance !== this.threshold, true), startWith(0))), distinctUntilChanged(), share());
98
99
  }
99
100
  get element() {
100
101
  return this.el.nativeElement;
101
102
  }
103
+ get scrollTop() {
104
+ return this.scrollRef.nativeElement.scrollTop;
105
+ }
102
106
  }
103
- TuiPullToRefreshService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshService, deps: [{ token: ElementRef }, { token: TUI_IS_IOS }, { token: TUI_PULL_TO_REFRESH_LOADED }, { token: TUI_PULL_TO_REFRESH_THRESHOLD }, { token: TUI_PULL_TO_REFRESH_COMPONENT }], target: i0.ɵɵFactoryTarget.Injectable });
107
+ TuiPullToRefreshService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshService, deps: [{ token: ElementRef }, { token: TUI_SCROLL_REF }, { token: TUI_PULL_TO_REFRESH_LOADED }, { token: TUI_PULL_TO_REFRESH_THRESHOLD }, { token: TUI_PULL_TO_REFRESH_COMPONENT }], target: i0.ɵɵFactoryTarget.Injectable });
104
108
  TuiPullToRefreshService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshService });
105
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshService, decorators: [{
106
110
  type: Injectable
107
111
  }], ctorParameters: function () { return [{ type: i0.ElementRef, decorators: [{
108
112
  type: Inject,
109
113
  args: [ElementRef]
110
- }] }, { type: undefined, decorators: [{
114
+ }] }, { type: i0.ElementRef, decorators: [{
111
115
  type: Inject,
112
- args: [TUI_IS_IOS]
113
- }] }, { type: i1$1.Observable, decorators: [{
116
+ args: [TUI_SCROLL_REF]
117
+ }] }, { type: i3.Observable, decorators: [{
114
118
  type: Inject,
115
119
  args: [TUI_PULL_TO_REFRESH_LOADED]
116
120
  }] }, { type: undefined, decorators: [{
@@ -148,7 +152,7 @@ class TuiMobileLoaderAndroidComponent {
148
152
  }
149
153
  }
150
154
  TuiMobileLoaderAndroidComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileLoaderAndroidComponent, deps: [{ token: POLYMORPHEUS_CONTEXT }, { token: TUI_PULL_TO_REFRESH_THRESHOLD }], target: i0.ɵɵFactoryTarget.Component });
151
- TuiMobileLoaderAndroidComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileLoaderAndroidComponent, selector: "tui-mobile-android-loader", host: { properties: { "class._visible": "this.percent", "class._dropped": "this.dropped", "style.transform": "this.hostTransform" } }, ngImport: i0, template: "<svg\n *ngIf=\"percent !== 100; else loading\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n>\n <defs>\n <mask id=\"mask-1\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n />\n </g>\n</svg>\n<ng-template #loading>\n <svg\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-loading\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"50\"\n stroke-dasharray=\"314\"\n class=\"t-circle\"\n ></circle>\n </svg>\n</ng-template>\n", styles: [":host{box-shadow:0 1.5rem 1rem #00000008,0 .75rem .75rem #0000000a,0 .25rem .375rem #0000000d;transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;top:-1.5rem;left:50%;display:flex;height:2.25rem;width:2.25rem;background-color:var(--tui-secondary);border-radius:6.25rem;align-items:center;justify-content:center;margin-left:-1.125rem;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-loading{display:block;width:1rem;border-radius:100%;animation:tuiLoaderRotate 3s linear infinite}.t-circle{fill:none;stroke:var(--tui-text-01);stroke-width:1.5rem;animation:tuiLoaderDashOffset 3s linear infinite}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
+ TuiMobileLoaderAndroidComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileLoaderAndroidComponent, selector: "tui-mobile-android-loader", host: { properties: { "class._visible": "this.percent", "class._dropped": "this.dropped", "style.transform": "this.hostTransform" } }, ngImport: i0, template: "<div class=\"t-wrapper\">\n <svg\n *ngIf=\"percent !== 100; else loading\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n />\n </g>\n </svg>\n</div>\n<ng-template #loading>\n <svg\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-loading\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"50\"\n stroke-dasharray=\"314\"\n class=\"t-circle\"\n ></circle>\n </svg>\n</ng-template>\n", styles: [":host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:-webkit-sticky;position:sticky;top:0;z-index:1;display:block;height:0;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-wrapper{box-shadow:0 1.5rem 1rem #00000008,0 .75rem .75rem #0000000a,0 .25rem .375rem #0000000d;position:absolute;top:-2.5rem;left:50%;display:flex;height:2.25rem;width:2.25rem;background-color:var(--tui-secondary);border-radius:6.25rem;align-items:center;justify-content:center;margin-left:-1.125rem}.t-loading{display:block;width:1rem;border-radius:100%;animation:tuiLoaderRotate 3s linear infinite}.t-circle{fill:none;stroke:var(--tui-text-01);stroke-width:1.5rem;animation:tuiLoaderDashOffset 3s linear infinite}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
152
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileLoaderAndroidComponent, decorators: [{
153
157
  type: Component,
154
158
  args: [{
@@ -176,21 +180,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
176
180
  const TUI_ANDROID_LOADER = new PolymorpheusComponent(TuiMobileLoaderAndroidComponent);
177
181
 
178
182
  class TuiPullToRefreshComponent {
179
- constructor(isIOS, threshold, component, pulling$) {
183
+ constructor(destroy$, { nativeElement }, isIOS, threshold, component, pulling$) {
180
184
  this.isIOS = isIOS;
181
185
  this.threshold = threshold;
182
186
  this.component = component;
183
187
  this.pulling$ = pulling$;
184
- this.pulled = this.pulling$.pipe(distinctUntilChanged(), filter(distance => distance === this.threshold));
185
- // TODO: Move to iOS loader somehow, like contentTransform$ below
188
+ this.styleHandler = this.isIOS
189
+ ? distance => ({ transform: `translateY(${distance / 2}px)` })
190
+ : () => null;
191
+ this.pulled = this.pulling$.pipe(filter(distance => distance === this.threshold));
186
192
  this.dropped$ = this.pulling$.pipe(map(distance => distance <= MICRO_OFFSET || distance === this.threshold), distinctUntilChanged());
187
- this.contentTransform$ = this.isIOS && this.component === TUI_IOS_LOADER
188
- ? this.pulling$.pipe(map(distance => `translateY(${distance / 2}px)`))
189
- : of(null);
193
+ // Ensure scrolling down is impossible while pulling
194
+ tuiScrollFrom(nativeElement)
195
+ .pipe(startWith(null), takeUntil(destroy$))
196
+ .subscribe(() => {
197
+ if (nativeElement.scrollTop) {
198
+ nativeElement.style.touchAction = '';
199
+ }
200
+ else {
201
+ nativeElement.style.touchAction = 'pan-down';
202
+ }
203
+ });
190
204
  }
191
205
  }
192
- TuiPullToRefreshComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshComponent, deps: [{ token: TUI_IS_IOS }, { token: TUI_PULL_TO_REFRESH_THRESHOLD }, { token: TUI_PULL_TO_REFRESH_COMPONENT }, { token: TuiPullToRefreshService }], target: i0.ɵɵFactoryTarget.Component });
193
- TuiPullToRefreshComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiPullToRefreshComponent, selector: "tui-pull-to-refresh", outputs: { pulled: "pulled" }, providers: [TuiPullToRefreshService], ngImport: i0, template: "<div\n tuiOverscroll\n [class.t-drop-animation]=\"dropped$ | async\"\n [style.transform]=\"contentTransform$ | async\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-container *polymorpheusOutlet=\"component; context: {$implicit: (pulling$ | async) || 0}\"></ng-container>\n", styles: [":host{position:relative;display:block;overflow:hidden}.t-drop-animation{transition:all var(--tui-duration) cubic-bezier(.4,0,.2,1)}\n"], directives: [{ type: i1.TuiOverscrollDirective, selector: "[tuiOverscroll]", inputs: ["tuiOverscroll"] }, { type: i2$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
206
+ TuiPullToRefreshComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshComponent, deps: [{ token: TuiDestroyService, self: true }, { token: TUI_SCROLL_REF }, { token: TUI_IS_IOS }, { token: TUI_PULL_TO_REFRESH_THRESHOLD }, { token: TUI_PULL_TO_REFRESH_COMPONENT }, { token: TuiPullToRefreshService }], target: i0.ɵɵFactoryTarget.Component });
207
+ TuiPullToRefreshComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiPullToRefreshComponent, selector: "tui-pull-to-refresh", inputs: { styleHandler: "styleHandler" }, outputs: { pulled: "pulled" }, providers: [TuiPullToRefreshService, TuiDestroyService], ngImport: i0, template: "<ng-container *polymorpheusOutlet=\"component; context: {$implicit: (pulling$ | async) || 0}\"></ng-container>\n\n<div\n [class.t-drop]=\"dropped$ | async\"\n [ngStyle]=\"styleHandler((pulling$ | async) || 0)\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".t-drop{transition:all var(--tui-duration) cubic-bezier(.4,0,.2,1)}\n"], directives: [{ type: i1$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
208
+ __decorate([
209
+ tuiDefaultProp()
210
+ ], TuiPullToRefreshComponent.prototype, "styleHandler", void 0);
194
211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshComponent, decorators: [{
195
212
  type: Component,
196
213
  args: [{
@@ -198,9 +215,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
198
215
  templateUrl: './pull-to-refresh.template.html',
199
216
  styleUrls: ['./pull-to-refresh.style.less'],
200
217
  changeDetection: ChangeDetectionStrategy.OnPush,
201
- providers: [TuiPullToRefreshService],
218
+ providers: [TuiPullToRefreshService, TuiDestroyService],
202
219
  }]
203
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
220
+ }], ctorParameters: function () { return [{ type: i3.Observable, decorators: [{
221
+ type: Inject,
222
+ args: [TuiDestroyService]
223
+ }, {
224
+ type: Self
225
+ }] }, { type: i0.ElementRef, decorators: [{
226
+ type: Inject,
227
+ args: [TUI_SCROLL_REF]
228
+ }] }, { type: undefined, decorators: [{
204
229
  type: Inject,
205
230
  args: [TUI_IS_IOS]
206
231
  }] }, { type: undefined, decorators: [{
@@ -209,10 +234,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
209
234
  }] }, { type: undefined, decorators: [{
210
235
  type: Inject,
211
236
  args: [TUI_PULL_TO_REFRESH_COMPONENT]
212
- }] }, { type: i1$1.Observable, decorators: [{
237
+ }] }, { type: i3.Observable, decorators: [{
213
238
  type: Inject,
214
239
  args: [TuiPullToRefreshService]
215
- }] }]; }, propDecorators: { pulled: [{
240
+ }] }]; }, propDecorators: { styleHandler: [{
241
+ type: Input
242
+ }], pulled: [{
216
243
  type: Output
217
244
  }] } });
218
245
 
@@ -221,28 +248,12 @@ class TuiPullToRefreshModule {
221
248
  TuiPullToRefreshModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
222
249
  TuiPullToRefreshModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshModule, declarations: [TuiPullToRefreshComponent,
223
250
  TuiMobileLoaderAndroidComponent,
224
- TuiMobileLoaderIOSComponent], imports: [CommonModule,
225
- TuiSvgModule,
226
- TuiOverscrollModule,
227
- TuiRepeatTimesModule,
228
- PolymorpheusModule], exports: [TuiPullToRefreshComponent] });
229
- TuiPullToRefreshModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshModule, imports: [[
230
- CommonModule,
231
- TuiSvgModule,
232
- TuiOverscrollModule,
233
- TuiRepeatTimesModule,
234
- PolymorpheusModule,
235
- ]] });
251
+ TuiMobileLoaderIOSComponent], imports: [CommonModule, TuiSvgModule, TuiRepeatTimesModule, PolymorpheusModule], exports: [TuiPullToRefreshComponent] });
252
+ TuiPullToRefreshModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshModule, imports: [[CommonModule, TuiSvgModule, TuiRepeatTimesModule, PolymorpheusModule]] });
236
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPullToRefreshModule, decorators: [{
237
254
  type: NgModule,
238
255
  args: [{
239
- imports: [
240
- CommonModule,
241
- TuiSvgModule,
242
- TuiOverscrollModule,
243
- TuiRepeatTimesModule,
244
- PolymorpheusModule,
245
- ],
256
+ imports: [CommonModule, TuiSvgModule, TuiRepeatTimesModule, PolymorpheusModule],
246
257
  declarations: [
247
258
  TuiPullToRefreshComponent,
248
259
  TuiMobileLoaderAndroidComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-pull-to-refresh.js","sources":["../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.service.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.module.ts","../../../projects/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {POLYMORPHEUS_CONTEXT, PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\n\nconst LOADED_STEP = 8;\nconst ROTATE_X_STEP = 30;\n\n@Component({\n selector: 'tui-mobile-ios-loader',\n templateUrl: './loader-ios.template.html',\n styleUrls: ['./loader-ios.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderIOSComponent {\n readonly steps = 12;\n\n constructor(\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context: TuiContextWithImplicit<number>,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n ) {}\n\n get finished(): boolean {\n return this.percent >= 100;\n }\n\n get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n isShown(index: number): boolean {\n return this.percent > (index + 1) * LOADED_STEP;\n }\n\n calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n\nexport const TUI_IOS_LOADER = new PolymorpheusComponent(TuiMobileLoaderIOSComponent);\n","<svg\n width=\"36\"\n height=\"36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid\"\n>\n <ng-container *tuiRepeatTimes=\"let index of steps\">\n <g\n *ngIf=\"isShown(index)\"\n [attr.transform]=\"calculateTransform(index)\"\n >\n <rect\n x=\"47\"\n y=\"22\"\n rx=\"7.05\"\n ry=\"3.3\"\n width=\"6\"\n height=\"16\"\n fill=\"#c7c9cc\"\n >\n <animate\n *ngIf=\"finished\"\n attributeName=\"opacity\"\n values=\"1;0\"\n keyTimes=\"0;1\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n [attr.begin]=\"calculateAnimationBegin(index)\"\n ></animate>\n </rect>\n </g>\n </ng-container>\n</svg>\n","import {inject, InjectionToken} from '@angular/core';\nimport {TUI_IS_IOS, TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Observable} from 'rxjs';\n\nimport {TUI_ANDROID_LOADER} from './loader-android/loader-android.component';\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\n\n/**\n * Stream that emits when loading is over\n */\nexport const TUI_PULL_TO_REFRESH_LOADED = new InjectionToken<Observable<unknown>>(\n `[TUI_PULL_TO_REFRESH_LOADED]`,\n {\n factory: () => EMPTY,\n },\n);\n\n/**\n * Pull threshold in pixels until loading starts\n */\nexport const TUI_PULL_TO_REFRESH_THRESHOLD = new InjectionToken<number>(\n `[TUI_PULL_TO_REFRESH_THRESHOLD]`,\n {\n factory: () => 50,\n },\n);\n\n/**\n * Loading indicator component that gets current pull distance in pixels as context\n */\nexport const TUI_PULL_TO_REFRESH_COMPONENT = new InjectionToken<\n PolymorpheusContent<TuiContextWithImplicit<number>>\n>(`[TUI_PULL_TO_REFRESH_COMPONENT]`, {\n factory: () => (inject(TUI_IS_IOS) ? TUI_IOS_LOADER : TUI_ANDROID_LOADER),\n});\n\n/**\n * @deprecated renamed to {@link TUI_PULL_TO_REFRESH_LOADED}\n */\nexport const TUI_LOADED = TUI_PULL_TO_REFRESH_LOADED;\n","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TUI_IS_IOS, tuiTypedFromEvent} from '@taiga-ui/cdk';\nimport {EMPTY, merge, Observable} from 'rxjs';\nimport {endWith, filter, map, scan, switchMap, takeUntil} from 'rxjs/operators';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_LOADED,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\n\nexport const MICRO_OFFSET = 10 ** -6;\n\n@Injectable()\nexport class TuiPullToRefreshService extends Observable<number> {\n private readonly pulling$ = merge(\n tuiTypedFromEvent(this.element, `touchstart`, {passive: true}).pipe(\n filter(() => this.element.scrollTop === 0),\n switchMap(touchStart =>\n tuiTypedFromEvent(this.element, `touchmove`).pipe(\n map(\n touchMove =>\n touchMove.touches[0].clientY - touchStart.touches[0].clientY,\n ),\n takeUntil(tuiTypedFromEvent(this.element, `touchend`)),\n endWith(0),\n ),\n ),\n ),\n this.loaded$.pipe(map(() => NaN)),\n ).pipe(\n scan((max, current) => {\n if (Number.isNaN(current)) {\n return 0;\n }\n\n const androidLoading = !this.isIos && max === this.threshold;\n const dropped = current === 0 && max > this.threshold;\n\n return androidLoading || dropped\n ? this.threshold\n : current + current * MICRO_OFFSET;\n }, 0),\n );\n\n constructor(\n @Inject(ElementRef) private readonly el: ElementRef<HTMLElement>,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n @Inject(TUI_PULL_TO_REFRESH_LOADED) private readonly loaded$: Observable<unknown>,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n @Inject(TUI_PULL_TO_REFRESH_COMPONENT) component: unknown,\n ) {\n super(subscriber => (component ? this.pulling$ : EMPTY).subscribe(subscriber));\n }\n\n private get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, Inject} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {POLYMORPHEUS_CONTEXT, PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\nimport {MICRO_OFFSET} from '../pull-to-refresh.service';\n\nconst ROTATE_X_DEFAULT = 180;\nconst ROTATE_X_MAX = 500;\nconst ROTATE_X_MULTIPLIER = 2.3;\n\n@Component({\n selector: 'tui-mobile-android-loader',\n templateUrl: './loader-android.template.html',\n styleUrls: ['./loader-android.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderAndroidComponent {\n constructor(\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context: TuiContextWithImplicit<number>,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n ) {}\n\n get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.percent * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n\n @HostBinding('class._visible')\n get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n get opacity(): number {\n return this.context.$implicit / (this.threshold * 1.5);\n }\n\n @HostBinding('class._dropped')\n get dropped(): boolean {\n return (\n this.context.$implicit <= MICRO_OFFSET ||\n this.context.$implicit === this.threshold\n );\n }\n\n @HostBinding('style.transform')\n get hostTransform(): string {\n return `translateY(${Math.min(this.context.$implicit, this.threshold * 1.5)}px)`;\n }\n}\n\nexport const TUI_ANDROID_LOADER = new PolymorpheusComponent(\n TuiMobileLoaderAndroidComponent,\n);\n","<svg\n *ngIf=\"percent !== 100; else loading\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n>\n <defs>\n <mask id=\"mask-1\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n />\n </g>\n</svg>\n<ng-template #loading>\n <svg\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-loading\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"50\"\n stroke-dasharray=\"314\"\n class=\"t-circle\"\n ></circle>\n </svg>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, Inject, Output} from '@angular/core';\nimport {TUI_IS_IOS, TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable, of} from 'rxjs';\nimport {distinctUntilChanged, filter, map} from 'rxjs/operators';\n\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\nimport {MICRO_OFFSET, TuiPullToRefreshService} from './pull-to-refresh.service';\n\n@Component({\n selector: 'tui-pull-to-refresh',\n templateUrl: './pull-to-refresh.template.html',\n styleUrls: ['./pull-to-refresh.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiPullToRefreshService],\n})\nexport class TuiPullToRefreshComponent {\n @Output()\n readonly pulled: Observable<unknown> = this.pulling$.pipe(\n distinctUntilChanged(),\n filter(distance => distance === this.threshold),\n );\n\n // TODO: Move to iOS loader somehow, like contentTransform$ below\n readonly dropped$: Observable<boolean> = this.pulling$.pipe(\n map(distance => distance <= MICRO_OFFSET || distance === this.threshold),\n distinctUntilChanged(),\n );\n\n readonly contentTransform$: Observable<string | null> =\n this.isIOS && this.component === TUI_IOS_LOADER\n ? this.pulling$.pipe(map(distance => `translateY(${distance / 2}px)`))\n : of(null);\n\n constructor(\n @Inject(TUI_IS_IOS) private readonly isIOS: boolean,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n @Inject(TUI_PULL_TO_REFRESH_COMPONENT)\n readonly component: PolymorpheusContent<TuiContextWithImplicit<number>>,\n @Inject(TuiPullToRefreshService) readonly pulling$: Observable<number>,\n ) {}\n}\n","<div\n tuiOverscroll\n [class.t-drop-animation]=\"dropped$ | async\"\n [style.transform]=\"contentTransform$ | async\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-container *polymorpheusOutlet=\"component; context: {$implicit: (pulling$ | async) || 0}\"></ng-container>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiOverscrollModule, TuiRepeatTimesModule} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiMobileLoaderAndroidComponent} from './loader-android/loader-android.component';\nimport {TuiMobileLoaderIOSComponent} from './loader-ios/loader-ios.component';\nimport {TuiPullToRefreshComponent} from './pull-to-refresh.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiSvgModule,\n TuiOverscrollModule,\n TuiRepeatTimesModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiPullToRefreshComponent,\n TuiMobileLoaderAndroidComponent,\n TuiMobileLoaderIOSComponent,\n ],\n exports: [TuiPullToRefreshComponent],\n})\nexport class TuiPullToRefreshModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-pull-to-refresh.js","sources":["../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.service.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.module.ts","../../../projects/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {POLYMORPHEUS_CONTEXT, PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\n\nconst LOADED_STEP = 8;\nconst ROTATE_X_STEP = 30;\n\n@Component({\n selector: 'tui-mobile-ios-loader',\n templateUrl: './loader-ios.template.html',\n styleUrls: ['./loader-ios.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderIOSComponent {\n readonly steps = 12;\n\n constructor(\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context: TuiContextWithImplicit<number>,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n ) {}\n\n get finished(): boolean {\n return this.percent >= 100;\n }\n\n get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n isShown(index: number): boolean {\n return this.percent > (index + 1) * LOADED_STEP;\n }\n\n calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n\nexport const TUI_IOS_LOADER = new PolymorpheusComponent(TuiMobileLoaderIOSComponent);\n","<svg\n width=\"36\"\n height=\"36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid\"\n>\n <ng-container *tuiRepeatTimes=\"let index of steps\">\n <g\n *ngIf=\"isShown(index)\"\n [attr.transform]=\"calculateTransform(index)\"\n >\n <rect\n x=\"47\"\n y=\"22\"\n rx=\"7.05\"\n ry=\"3.3\"\n width=\"6\"\n height=\"16\"\n fill=\"#c7c9cc\"\n >\n <animate\n *ngIf=\"finished\"\n attributeName=\"opacity\"\n values=\"1;0\"\n keyTimes=\"0;1\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n [attr.begin]=\"calculateAnimationBegin(index)\"\n ></animate>\n </rect>\n </g>\n </ng-container>\n</svg>\n","import {inject, InjectionToken} from '@angular/core';\nimport {TUI_IS_IOS, TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Observable} from 'rxjs';\n\nimport {TUI_ANDROID_LOADER} from './loader-android/loader-android.component';\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\n\n/**\n * Stream that emits when loading is over\n */\nexport const TUI_PULL_TO_REFRESH_LOADED = new InjectionToken<Observable<unknown>>(\n `[TUI_PULL_TO_REFRESH_LOADED]`,\n {\n factory: () => EMPTY,\n },\n);\n\n/**\n * Pull threshold in pixels until loading starts\n */\nexport const TUI_PULL_TO_REFRESH_THRESHOLD = new InjectionToken<number>(\n `[TUI_PULL_TO_REFRESH_THRESHOLD]`,\n {\n factory: () => 50,\n },\n);\n\n/**\n * Loading indicator component that gets current pull distance in pixels as context\n */\nexport const TUI_PULL_TO_REFRESH_COMPONENT = new InjectionToken<\n PolymorpheusContent<TuiContextWithImplicit<number>>\n>(`[TUI_PULL_TO_REFRESH_COMPONENT]`, {\n factory: () => (inject(TUI_IS_IOS) ? TUI_IOS_LOADER : TUI_ANDROID_LOADER),\n});\n\n/**\n * @deprecated renamed to {@link TUI_PULL_TO_REFRESH_LOADED}\n */\nexport const TUI_LOADED = TUI_PULL_TO_REFRESH_LOADED;\n","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {tuiScrollFrom, tuiTypedFromEvent} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core';\nimport {EMPTY, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n endWith,\n filter,\n map,\n scan,\n share,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs/operators';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_LOADED,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\n\nexport const MICRO_OFFSET = 10 ** -6;\n\n@Injectable()\nexport class TuiPullToRefreshService extends Observable<number> {\n // Hack for iOS to determine if pulling stopped due to scroll\n // because Safari does not support `touch-action: pan-down`\n private touched = false;\n\n private readonly pulling$ = this.loaded$.pipe(\n startWith(null),\n switchMap(() =>\n tuiTypedFromEvent(this.element, `touchstart`, {passive: true}).pipe(\n filter(() => !this.scrollTop),\n map(({touches}) => touches[0].clientY),\n switchMap(start =>\n tuiTypedFromEvent(this.element, `touchmove`).pipe(\n tap((): void => {\n this.touched = true;\n }),\n map(({touches}) => touches[0].clientY - start),\n filter(distance => distance > 0),\n takeUntil(\n tuiTypedFromEvent(this.element, `touchend`).pipe(\n tap((): void => {\n this.touched = false;\n }),\n ),\n ),\n takeUntil(tuiScrollFrom(this.scrollRef.nativeElement)),\n endWith(0),\n ),\n ),\n scan(\n (prev, current) =>\n !current && !this.touched && prev > this.threshold\n ? this.threshold\n : current + current * MICRO_OFFSET,\n 0,\n ),\n takeWhile(distance => distance !== this.threshold, true),\n startWith(0),\n ),\n ),\n distinctUntilChanged(),\n share(),\n );\n\n constructor(\n @Inject(ElementRef) private readonly el: ElementRef<HTMLElement>,\n @Inject(TUI_SCROLL_REF) private readonly scrollRef: ElementRef<HTMLElement>,\n @Inject(TUI_PULL_TO_REFRESH_LOADED) private readonly loaded$: Observable<unknown>,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n @Inject(TUI_PULL_TO_REFRESH_COMPONENT) component: unknown,\n ) {\n super(subscriber => (component ? this.pulling$ : EMPTY).subscribe(subscriber));\n }\n\n private get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get scrollTop(): number {\n return this.scrollRef.nativeElement.scrollTop;\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, Inject} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {POLYMORPHEUS_CONTEXT, PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\nimport {MICRO_OFFSET} from '../pull-to-refresh.service';\n\nconst ROTATE_X_DEFAULT = 180;\nconst ROTATE_X_MAX = 500;\nconst ROTATE_X_MULTIPLIER = 2.3;\n\n@Component({\n selector: 'tui-mobile-android-loader',\n templateUrl: './loader-android.template.html',\n styleUrls: ['./loader-android.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderAndroidComponent {\n constructor(\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context: TuiContextWithImplicit<number>,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n ) {}\n\n get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.percent * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n\n @HostBinding('class._visible')\n get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n get opacity(): number {\n return this.context.$implicit / (this.threshold * 1.5);\n }\n\n @HostBinding('class._dropped')\n get dropped(): boolean {\n return (\n this.context.$implicit <= MICRO_OFFSET ||\n this.context.$implicit === this.threshold\n );\n }\n\n @HostBinding('style.transform')\n get hostTransform(): string {\n return `translateY(${Math.min(this.context.$implicit, this.threshold * 1.5)}px)`;\n }\n}\n\nexport const TUI_ANDROID_LOADER = new PolymorpheusComponent(\n TuiMobileLoaderAndroidComponent,\n);\n","<div class=\"t-wrapper\">\n <svg\n *ngIf=\"percent !== 100; else loading\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n />\n </g>\n </svg>\n</div>\n<ng-template #loading>\n <svg\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-loading\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"50\"\n stroke-dasharray=\"314\"\n class=\"t-circle\"\n ></circle>\n </svg>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n Input,\n Output,\n Self,\n} from '@angular/core';\nimport {\n TUI_IS_IOS,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiDestroyService,\n TuiHandler,\n tuiScrollFrom,\n} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, filter, map, startWith, takeUntil} from 'rxjs/operators';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\nimport {MICRO_OFFSET, TuiPullToRefreshService} from './pull-to-refresh.service';\n\n@Component({\n selector: 'tui-pull-to-refresh',\n templateUrl: './pull-to-refresh.template.html',\n styleUrls: ['./pull-to-refresh.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiPullToRefreshService, TuiDestroyService],\n})\nexport class TuiPullToRefreshComponent {\n @Input()\n @tuiDefaultProp()\n styleHandler: TuiHandler<number, Record<string, any> | null> = this.isIOS\n ? distance => ({transform: `translateY(${distance / 2}px)`})\n : () => null;\n\n @Output()\n readonly pulled: Observable<unknown> = this.pulling$.pipe(\n filter(distance => distance === this.threshold),\n );\n\n readonly dropped$: Observable<boolean> = this.pulling$.pipe(\n map(distance => distance <= MICRO_OFFSET || distance === this.threshold),\n distinctUntilChanged(),\n );\n\n constructor(\n @Inject(TuiDestroyService) @Self() destroy$: Observable<unknown>,\n @Inject(TUI_SCROLL_REF) {nativeElement}: ElementRef<HTMLElement>,\n @Inject(TUI_IS_IOS) private readonly isIOS: boolean,\n @Inject(TUI_PULL_TO_REFRESH_THRESHOLD) private readonly threshold: number,\n @Inject(TUI_PULL_TO_REFRESH_COMPONENT)\n readonly component: PolymorpheusContent<TuiContextWithImplicit<number>>,\n @Inject(TuiPullToRefreshService) readonly pulling$: Observable<number>,\n ) {\n // Ensure scrolling down is impossible while pulling\n tuiScrollFrom(nativeElement)\n .pipe(startWith(null), takeUntil(destroy$))\n .subscribe(() => {\n if (nativeElement.scrollTop) {\n nativeElement.style.touchAction = '';\n } else {\n nativeElement.style.touchAction = 'pan-down';\n }\n });\n }\n}\n","<ng-container *polymorpheusOutlet=\"component; context: {$implicit: (pulling$ | async) || 0}\"></ng-container>\n\n<div\n [class.t-drop]=\"dropped$ | async\"\n [ngStyle]=\"styleHandler((pulling$ | async) || 0)\"\n>\n <ng-content></ng-content>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRepeatTimesModule} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiMobileLoaderAndroidComponent} from './loader-android/loader-android.component';\nimport {TuiMobileLoaderIOSComponent} from './loader-ios/loader-ios.component';\nimport {TuiPullToRefreshComponent} from './pull-to-refresh.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule, TuiRepeatTimesModule, PolymorpheusModule],\n declarations: [\n TuiPullToRefreshComponent,\n TuiMobileLoaderAndroidComponent,\n TuiMobileLoaderIOSComponent,\n ],\n exports: [TuiPullToRefreshComponent],\n})\nexport class TuiPullToRefreshModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}