@taiga-ui/addon-mobile 2.26.0 → 2.29.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 (60) hide show
  1. package/README.md +4 -5
  2. package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.js +10 -10
  3. package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.js.map +1 -1
  4. package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.min.js +1 -1
  5. package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.min.js.map +1 -1
  6. package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js +19 -15
  7. package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js.map +1 -1
  8. package/bundles/taiga-ui-addon-mobile-components-sheet.umd.min.js +1 -1
  9. package/bundles/taiga-ui-addon-mobile-components-sheet.umd.min.js.map +1 -1
  10. package/bundles/taiga-ui-addon-mobile-directives-ripple.umd.js +6 -6
  11. package/bundles/taiga-ui-addon-mobile-directives-ripple.umd.js.map +1 -1
  12. package/bundles/taiga-ui-addon-mobile-directives-ripple.umd.min.js +1 -1
  13. package/bundles/taiga-ui-addon-mobile-directives-ripple.umd.min.js.map +1 -1
  14. package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.js +1 -1
  15. package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.js.map +1 -1
  16. package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.min.js +1 -1
  17. package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.min.js.map +1 -1
  18. package/components/mobile-calendar/mobile-calendar.component.d.ts +7 -7
  19. package/components/mobile-calendar/mobile-calendar.strategy.d.ts +1 -1
  20. package/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.metadata.json +1 -1
  21. package/components/sheet/components/sheet/sheet.component.d.ts +4 -4
  22. package/components/sheet/directives/sheet-close/sheet-close.directive.d.ts +3 -2
  23. package/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.d.ts +1 -1
  24. package/components/sheet/taiga-ui-addon-mobile-components-sheet.metadata.json +1 -1
  25. package/directives/ripple/ripple.providers.d.ts +2 -2
  26. package/directives/ripple/taiga-ui-addon-mobile-directives-ripple.metadata.json +1 -1
  27. package/directives/sidebar/sidebar.directive.d.ts +1 -1
  28. package/directives/sidebar/taiga-ui-addon-mobile-directives-sidebar.metadata.json +1 -1
  29. package/esm2015/components/mobile-calendar/mobile-calendar.component.js +11 -11
  30. package/esm2015/components/mobile-calendar/mobile-calendar.strategy.js +1 -1
  31. package/esm2015/components/sheet/components/sheet/sheet.component.js +10 -9
  32. package/esm2015/components/sheet/directives/sheet-close/sheet-close.directive.js +14 -11
  33. package/esm2015/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.js +1 -1
  34. package/esm2015/directives/ripple/ripple.providers.js +8 -8
  35. package/esm2015/directives/sidebar/sidebar.directive.js +2 -2
  36. package/esm5/components/mobile-calendar/mobile-calendar.component.js +11 -11
  37. package/esm5/components/mobile-calendar/mobile-calendar.strategy.js +1 -1
  38. package/esm5/components/sheet/components/sheet/sheet.component.js +10 -9
  39. package/esm5/components/sheet/directives/sheet-close/sheet-close.directive.js +14 -11
  40. package/esm5/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.js +1 -1
  41. package/esm5/directives/ripple/ripple.providers.js +8 -8
  42. package/esm5/directives/sidebar/sidebar.directive.js +2 -2
  43. package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar.js +12 -12
  44. package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar.js.map +1 -1
  45. package/fesm2015/taiga-ui-addon-mobile-components-sheet.js +20 -16
  46. package/fesm2015/taiga-ui-addon-mobile-components-sheet.js.map +1 -1
  47. package/fesm2015/taiga-ui-addon-mobile-directives-ripple.js +7 -7
  48. package/fesm2015/taiga-ui-addon-mobile-directives-ripple.js.map +1 -1
  49. package/fesm2015/taiga-ui-addon-mobile-directives-sidebar.js +1 -1
  50. package/fesm2015/taiga-ui-addon-mobile-directives-sidebar.js.map +1 -1
  51. package/fesm5/taiga-ui-addon-mobile-components-mobile-calendar.js +12 -12
  52. package/fesm5/taiga-ui-addon-mobile-components-mobile-calendar.js.map +1 -1
  53. package/fesm5/taiga-ui-addon-mobile-components-sheet.js +20 -16
  54. package/fesm5/taiga-ui-addon-mobile-components-sheet.js.map +1 -1
  55. package/fesm5/taiga-ui-addon-mobile-directives-ripple.js +7 -7
  56. package/fesm5/taiga-ui-addon-mobile-directives-ripple.js.map +1 -1
  57. package/fesm5/taiga-ui-addon-mobile-directives-sidebar.js +1 -1
  58. package/fesm5/taiga-ui-addon-mobile-directives-sidebar.js.map +1 -1
  59. package/package.json +6 -6
  60. package/styles/tinkoff-ui-angular-mobile.less +1 -0
@@ -11,9 +11,9 @@ var TuiSidebarDirective = /** @class */ (function (_super) {
11
11
  _this.injector = injector;
12
12
  _this.componentFactoryResolver = componentFactoryResolver;
13
13
  _this.portalService = portalService;
14
+ _this.sidebarRef = null;
14
15
  _this.direction = 'left';
15
16
  _this.autoWidth = false;
16
- _this.sidebarRef = null;
17
17
  return _this;
18
18
  }
19
19
  Object.defineProperty(TuiSidebarDirective.prototype, "tuiSidebar", {
@@ -75,4 +75,4 @@ var TuiSidebarDirective = /** @class */ (function (_super) {
75
75
  return TuiSidebarDirective;
76
76
  }(PolymorpheusTemplate));
77
77
  export { TuiSidebarDirective };
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMvc2lkZWJhci8iLCJzb3VyY2VzIjpbInNpZGViYXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFDVCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBS3hEO0lBQXlDLHVDQUF3QjtJQWtCN0QsNkJBQ2tDLE9BQXdCLEVBQ25CLFFBQWtCLEVBRXBDLHdCQUFrRCxFQUN4QixhQUErQixFQUMvQyxpQkFBb0M7UUFObkUsWUFRSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFSaUMsYUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDbkIsY0FBUSxHQUFSLFFBQVEsQ0FBVTtRQUVwQyw4QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ3hCLG1CQUFhLEdBQWIsYUFBYSxDQUFrQjtRQXJCOUUsZUFBUyxHQUEyQixNQUFNLENBQUM7UUFHM0MsZUFBUyxHQUFHLEtBQUssQ0FBQztRQVdWLGdCQUFVLEdBQTZDLElBQUksQ0FBQzs7SUFXcEUsQ0FBQztJQW5CRCxzQkFBSSwyQ0FBVTthQUFkLFVBQWUsSUFBYTtZQUN4QixJQUFJLElBQUksRUFBRTtnQkFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDZjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDZjtRQUNMLENBQUM7OztPQUFBO0lBZUQseUNBQVcsR0FBWDtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sa0NBQUksR0FBWjtRQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7WUFDMUIsT0FBTztTQUNWO1FBRUQsSUFBTSxnQkFBZ0IsR0FDbEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRU8sa0NBQUksR0FBWjtRQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7WUFDMUIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7O2dCQWpDMEMsV0FBVyx1QkFBakQsTUFBTSxTQUFDLFdBQVc7Z0JBQzBCLFFBQVEsdUJBQXBELE1BQU0sU0FBQyxRQUFRO2dCQUUyQix3QkFBd0IsdUJBRGxFLE1BQU0sU0FBQyx3QkFBd0I7Z0JBRTBCLGdCQUFnQix1QkFBekUsTUFBTSxTQUFDLGdCQUFnQjtnQkFDc0IsaUJBQWlCLHVCQUE5RCxNQUFNLFNBQUMsaUJBQWlCOztJQXRCN0I7UUFEQyxLQUFLLENBQUMscUJBQXFCLENBQUM7MERBQ2M7SUFHM0M7UUFEQyxLQUFLLENBQUMscUJBQXFCLENBQUM7MERBQ1g7SUFHbEI7UUFEQyxLQUFLLEVBQUU7eURBT1A7SUFkUSxtQkFBbUI7UUFIL0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGNBQWM7U0FDM0IsQ0FBQztRQW9CTyxXQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNuQixXQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNoQixXQUFBLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBRWhDLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDeEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtPQXhCckIsbUJBQW1CLENBcUQvQjtJQUFELDBCQUFDO0NBQUEsQUFyREQsQ0FBeUMsb0JBQW9CLEdBcUQ1RDtTQXJEWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlQb3J0YWxTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpSG9yaXpvbnRhbERpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNUZW1wbGF0ZX0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtUdWlTaWRlYmFyQ29tcG9uZW50fSBmcm9tICcuL3NpZGViYXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHVpU2lkZWJhcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTaWRlYmFyRGlyZWN0aXZlIGV4dGVuZHMgUG9seW1vcnBoZXVzVGVtcGxhdGU8e30+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ3R1aVNpZGViYXJEaXJlY3Rpb24nKVxuICAgIGRpcmVjdGlvbjogVHVpSG9yaXpvbnRhbERpcmVjdGlvbiA9ICdsZWZ0JztcblxuICAgIEBJbnB1dCgndHVpU2lkZWJhckF1dG9XaWR0aCcpXG4gICAgYXV0b1dpZHRoID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB0dWlTaWRlYmFyKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNpZGViYXJSZWY6IENvbXBvbmVudFJlZjxUdWlTaWRlYmFyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVGVtcGxhdGVSZWYpIHJlYWRvbmx5IGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHt9PixcbiAgICAgICAgQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBASW5qZWN0KFR1aVBvcnRhbFNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgcG9ydGFsU2VydmljZTogVHVpUG9ydGFsU2VydmljZSxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250ZW50LCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2lkZWJhclJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShUdWlTaWRlYmFyQ29tcG9uZW50KTtcblxuICAgICAgICB0aGlzLnNpZGViYXJSZWYgPSB0aGlzLnBvcnRhbFNlcnZpY2UuYWRkKGNvbXBvbmVudEZhY3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLnNpZGViYXJSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2lkZWJhclJlZiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3J0YWxTZXJ2aWNlLnJlbW92ZSh0aGlzLnNpZGViYXJSZWYpO1xuICAgICAgICB0aGlzLnNpZGViYXJSZWYgPSBudWxsO1xuICAgIH1cbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMvc2lkZWJhci8iLCJzb3VyY2VzIjpbInNpZGViYXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFDVCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBS3hEO0lBQXlDLHVDQUF3QjtJQWtCN0QsNkJBQ2tDLE9BQXdCLEVBQ25CLFFBQWtCLEVBRXBDLHdCQUFrRCxFQUN4QixhQUErQixFQUMvQyxpQkFBb0M7UUFObkUsWUFRSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFSaUMsYUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDbkIsY0FBUSxHQUFSLFFBQVEsQ0FBVTtRQUVwQyw4QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ3hCLG1CQUFhLEdBQWIsYUFBYSxDQUFrQjtRQXRCdEUsZ0JBQVUsR0FBNkMsSUFBSSxDQUFDO1FBR3BFLGVBQVMsR0FBMkIsTUFBTSxDQUFDO1FBRzNDLGVBQVMsR0FBRyxLQUFLLENBQUM7O0lBb0JsQixDQUFDO0lBakJELHNCQUFJLDJDQUFVO2FBQWQsVUFBZSxJQUFhO1lBQ3hCLElBQUksSUFBSSxFQUFFO2dCQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNmO2lCQUFNO2dCQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNmO1FBQ0wsQ0FBQzs7O09BQUE7SUFhRCx5Q0FBVyxHQUFYO1FBQ0ksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxrQ0FBSSxHQUFaO1FBQ0ksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFFRCxJQUFNLGdCQUFnQixHQUNsQixJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTyxrQ0FBSSxHQUFaO1FBQ0ksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQzs7Z0JBakMwQyxXQUFXLHVCQUFqRCxNQUFNLFNBQUMsV0FBVztnQkFDMEIsUUFBUSx1QkFBcEQsTUFBTSxTQUFDLFFBQVE7Z0JBRTJCLHdCQUF3Qix1QkFEbEUsTUFBTSxTQUFDLHdCQUF3QjtnQkFFMEIsZ0JBQWdCLHVCQUF6RSxNQUFNLFNBQUMsZ0JBQWdCO2dCQUNzQixpQkFBaUIsdUJBQTlELE1BQU0sU0FBQyxpQkFBaUI7O0lBcEI3QjtRQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzswREFDYztJQUczQztRQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzswREFDWDtJQUdsQjtRQURDLEtBQUssRUFBRTt5REFPUDtJQWhCUSxtQkFBbUI7UUFIL0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGNBQWM7U0FDM0IsQ0FBQztRQW9CTyxXQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNuQixXQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNoQixXQUFBLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBRWhDLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDeEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtPQXhCckIsbUJBQW1CLENBcUQvQjtJQUFELDBCQUFDO0NBQUEsQUFyREQsQ0FBeUMsb0JBQW9CLEdBcUQ1RDtTQXJEWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlQb3J0YWxTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpSG9yaXpvbnRhbERpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNUZW1wbGF0ZX0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtUdWlTaWRlYmFyQ29tcG9uZW50fSBmcm9tICcuL3NpZGViYXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHVpU2lkZWJhcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTaWRlYmFyRGlyZWN0aXZlIGV4dGVuZHMgUG9seW1vcnBoZXVzVGVtcGxhdGU8e30+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHNpZGViYXJSZWY6IENvbXBvbmVudFJlZjxUdWlTaWRlYmFyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KCd0dWlTaWRlYmFyRGlyZWN0aW9uJylcbiAgICBkaXJlY3Rpb246IFR1aUhvcml6b250YWxEaXJlY3Rpb24gPSAnbGVmdCc7XG5cbiAgICBASW5wdXQoJ3R1aVNpZGViYXJBdXRvV2lkdGgnKVxuICAgIGF1dG9XaWR0aCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgdHVpU2lkZWJhcihvcGVuOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVGVtcGxhdGVSZWYpIHJlYWRvbmx5IGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHt9PixcbiAgICAgICAgQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBASW5qZWN0KFR1aVBvcnRhbFNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgcG9ydGFsU2VydmljZTogVHVpUG9ydGFsU2VydmljZSxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250ZW50LCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2lkZWJhclJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShUdWlTaWRlYmFyQ29tcG9uZW50KTtcblxuICAgICAgICB0aGlzLnNpZGViYXJSZWYgPSB0aGlzLnBvcnRhbFNlcnZpY2UuYWRkKGNvbXBvbmVudEZhY3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLnNpZGViYXJSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2lkZWJhclJlZiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3J0YWxTZXJ2aWNlLnJlbW92ZSh0aGlzLnNpZGViYXJSZWYpO1xuICAgICAgICB0aGlzLnNpZGViYXJSZWYgPSBudWxsO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { DOCUMENT, CommonModule } from '@angular/common';
3
- import { InjectionToken, Optional, ChangeDetectorRef, EventEmitter, Inject, Input, Output, HostBinding, ViewChild, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
4
- import { MONTHS_IN_YEAR, tuiPure, TuiDestroyService, TuiScrollService, TUI_IS_IOS, watch, TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonth, TuiDay, TuiDayRange, typedFromEvent, tuiDefaultProp, TuiMapperPipeModule } from '@taiga-ui/cdk';
3
+ import { InjectionToken, Optional, ChangeDetectorRef, EventEmitter, Inject, ViewChild, Input, Output, HostBinding, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
4
+ import { MONTHS_IN_YEAR, tuiPure, TuiDestroyService, TuiScrollService, TUI_IS_IOS, watch, TuiDay, TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonth, TuiDayRange, typedFromEvent, tuiDefaultProp, TuiMapperPipeModule } from '@taiga-ui/cdk';
5
5
  import { TUI_CLOSE_WORD, TUI_ORDERED_SHORT_WEEK_DAYS, TuiLinkModule, TuiButtonModule, TuiMonthPipeModule } from '@taiga-ui/core';
6
6
  import { TUI_CALENDAR_DATA_STREAM, TUI_CANCEL_WORD, TUI_DONE_WORD, TUI_CHOOSE_DAY_OR_RANGE_TEXTS } from '@taiga-ui/kit';
7
7
  import { Subject, EMPTY, race, timer, Observable } from 'rxjs';
@@ -183,21 +183,21 @@ let TuiMobileCalendarComponent = class TuiMobileCalendarComponent {
183
183
  this.doneWord$ = doneWord$;
184
184
  this.weekDays$ = weekDays$;
185
185
  this.chooseDayOrRangeTexts$ = chooseDayOrRangeTexts$;
186
+ this.today = TuiDay.currentLocal();
187
+ this.activeYear = this.initialYear;
188
+ this.activeMonth = this.initialMonth;
186
189
  this.single = true;
187
190
  this.min = TUI_FIRST_DAY;
188
191
  this.max = TUI_LAST_DAY;
189
192
  this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
190
- this.value = null;
191
193
  this.cancel = new EventEmitter();
192
194
  this.confirm = new EventEmitter();
195
+ this.value = null;
193
196
  this.years = Array.from({ length: RANGE }, (_, i) => i + STARTING_YEAR);
194
197
  this.months = Array.from({ length: RANGE * 12 }, (_, i) => new TuiMonth(Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR, i % MONTHS_IN_YEAR));
195
198
  this.disabledItemHandlerMapper = (disabledItemHandler, min, max) => item => item.dayBefore(min) ||
196
199
  (max !== null && item.dayAfter(max)) ||
197
200
  disabledItemHandler(item);
198
- this.today = TuiDay.currentLocal();
199
- this.activeYear = this.initialYear;
200
- this.activeMonth = this.initialMonth;
201
201
  this.isIOS = isIOS;
202
202
  valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {
203
203
  this.value = value;
@@ -372,6 +372,12 @@ TuiMobileCalendarComponent.ctorParameters = () => [
372
372
  { type: Observable, decorators: [{ type: Inject, args: [TUI_ORDERED_SHORT_WEEK_DAYS,] }] },
373
373
  { type: Observable, decorators: [{ type: Inject, args: [TUI_CHOOSE_DAY_OR_RANGE_TEXTS,] }] }
374
374
  ];
375
+ __decorate([
376
+ ViewChild('yearsScrollRef')
377
+ ], TuiMobileCalendarComponent.prototype, "yearsScrollRef", void 0);
378
+ __decorate([
379
+ ViewChild('monthsScrollRef')
380
+ ], TuiMobileCalendarComponent.prototype, "monthsScrollRef", void 0);
375
381
  __decorate([
376
382
  Input(),
377
383
  tuiDefaultProp()
@@ -397,12 +403,6 @@ __decorate([
397
403
  __decorate([
398
404
  HostBinding('class._ios')
399
405
  ], TuiMobileCalendarComponent.prototype, "isIOS", void 0);
400
- __decorate([
401
- ViewChild('yearsScrollRef')
402
- ], TuiMobileCalendarComponent.prototype, "yearsScrollRef", void 0);
403
- __decorate([
404
- ViewChild('monthsScrollRef')
405
- ], TuiMobileCalendarComponent.prototype, "monthsScrollRef", void 0);
406
406
  TuiMobileCalendarComponent = __decorate([
407
407
  Component({
408
408
  selector: 'tui-mobile-calendar',
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar.js","sources":["ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.module.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {MONTHS_IN_YEAR} from '@taiga-ui/cdk';\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\nexport const ANDROID_CYCLE = getCycle(ANDROID_LABEL, ANDROID_WEEK);\nexport const IOS_CYCLE = getCycle(IOS_LABEL, IOS_WEEK);\n\nfunction getCycle(label: number, week: number): ReadonlyArray<readonly number[]> {\n return Array.from({length: YEARLY_CYCLE}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) => label + weekCount(i, month) * week,\n ),\n );\n}\n\nfunction weekCount(year: number, month: number): number {\n const firstOfMonth = new Date(year + STARTING_YEAR, month, 1);\n const lastOfMonth = new Date(year + STARTING_YEAR, month + 1, 0);\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n","import {CdkVirtualScrollViewport, VirtualScrollStrategy} from '@angular/cdk/scrolling';\nimport {MONTHS_IN_YEAR, tuiPure, TuiScrollService} from '@taiga-ui/cdk';\nimport {Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear: number = 28,\n lastMonth: number = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendarComponent} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private index$ = new Subject<number>();\n\n private viewport: CdkVirtualScrollViewport | null = null;\n\n constructor(\n private readonly isIos: boolean,\n private readonly scrollService: TuiScrollService,\n ) {}\n\n @tuiPure\n get scrolledIndexChange(): Observable<number> {\n return this.index$.pipe(distinctUntilChanged());\n }\n\n attach(viewport: CdkVirtualScrollViewport) {\n const cycle = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n detach() {\n this.index$.complete();\n this.viewport = null;\n }\n\n onContentScrolled() {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n onDataLengthChanged() {}\n onContentRendered() {}\n onRenderedOffsetChanged() {}\n\n scrollToIndex(index: number, behavior: ScrollBehavior) {\n if (!this.viewport) {\n return;\n }\n\n const scrollTop = this.getOffsetForIndex(index);\n\n if (behavior !== 'smooth') {\n this.viewport.scrollToOffset(scrollTop, behavior);\n\n return;\n }\n\n this.scrollService\n .scroll$(this.viewport.elementRef.nativeElement, scrollTop)\n .subscribe();\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < cycle[year].length; month++) {\n accumulator += cycle[year][month];\n\n if (accumulator - cycle[year][month] / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIos\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport) {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport {ChangeDetectorRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {\n TUI_IS_IOS,\n TuiDayRange,\n TuiDestroyService,\n TuiScrollService,\n watch,\n} from '@taiga-ui/cdk';\nimport {TUI_CALENDAR_DATA_STREAM} from '@taiga-ui/kit';\nimport {EMPTY, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n 'Stream for updating value',\n);\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiScrollService,\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n deps: [TUI_IS_IOS, TuiScrollService],\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [\n [new Optional(), TUI_CALENDAR_DATA_STREAM],\n TuiDestroyService,\n ChangeDetectorRef,\n ],\n useFactory: valueStreamFactory,\n },\n];\n\nexport function valueStreamFactory(\n value$: Observable<TuiDayRange | null> | null,\n destroy$: Observable<void>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<TuiDayRange | null> {\n return (value$ || EMPTY).pipe(takeUntil(destroy$), watch(changeDetectorRef));\n}\n","import {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n ALWAYS_FALSE_HANDLER,\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_IS_IOS,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDay,\n TuiDayRange,\n tuiDefaultProp,\n TuiDestroyService,\n TuiMapper,\n TuiMonth,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TUI_CLOSE_WORD, TUI_ORDERED_SHORT_WEEK_DAYS} from '@taiga-ui/core';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit';\nimport {Observable, race, timer} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n flatMap,\n map,\n switchMap,\n switchMapTo,\n take,\n takeUntil,\n windowToggle,\n} from 'rxjs/operators';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-mobile-calendar',\n templateUrl: './mobile-calendar.template.html',\n styleUrls: ['./mobile-calendar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n})\nexport class TuiMobileCalendarComponent {\n @Input()\n @tuiDefaultProp()\n single = true;\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n value: TuiDay | TuiDayRange | null = null;\n\n @Output()\n readonly cancel = new EventEmitter<void>();\n\n @Output()\n readonly confirm = new EventEmitter<TuiDayRange | TuiDay>();\n\n @HostBinding('class._ios')\n readonly isIOS: boolean;\n\n readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n\n readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n readonly disabledItemHandlerMapper: TuiMapper<\n TuiBooleanHandler<TuiDay>,\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min: TuiDay, max: TuiDay) => item =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private readonly today = TuiDay.currentLocal();\n\n private activeYear = this.initialYear;\n\n private activeMonth = this.initialMonth;\n\n @ViewChild('yearsScrollRef')\n private readonly yearsScrollRef?: CdkVirtualScrollViewport;\n\n @ViewChild('monthsScrollRef')\n private readonly monthsScrollRef?: CdkVirtualScrollViewport;\n\n constructor(\n @Inject(TUI_IS_IOS) isIOS: boolean,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(TuiDestroyService)\n private readonly destroy$: TuiDestroyService,\n @Inject(TUI_VALUE_STREAM)\n valueChanges: Observable<TuiDayRange | null>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n @Inject(TUI_CANCEL_WORD) readonly cancelWord$: Observable<string>,\n @Inject(TUI_DONE_WORD) readonly doneWord$: Observable<string>,\n @Inject(TUI_ORDERED_SHORT_WEEK_DAYS)\n readonly weekDays$: Observable<\n [string, string, string, string, string, string, string]\n >,\n @Inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS)\n readonly chooseDayOrRangeTexts$: Observable<[string, string]>,\n ) {\n this.isIOS = isIOS;\n\n valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.value = value;\n });\n }\n\n get yearWidth(): number {\n return this.documentRef.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n ngAfterViewInit() {\n if (!this.monthsScrollRef) {\n return;\n }\n\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.monthsScrollRef.scrolledIndexChange\n .pipe(take(1), takeUntil(this.destroy$))\n .subscribe(() => {\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n this.initYearScroll();\n this.initMonthScroll();\n });\n }\n\n onClose() {\n this.cancel.emit();\n }\n\n onConfirm() {\n if (this.value) {\n this.confirm.emit(this.value);\n } else {\n this.cancel.emit();\n }\n }\n\n onDayClick(day: TuiDay) {\n if (this.single) {\n this.value = day;\n\n return;\n }\n\n if (\n this.value === null ||\n this.value instanceof TuiDay ||\n !this.value.isSingleDay\n ) {\n this.value = new TuiDayRange(day, day);\n\n return;\n }\n\n this.value = TuiDayRange.sort(this.value.from, day);\n }\n\n getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n onMonthChange(month: number) {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n setYear(year: number) {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n // Delay is required to run months scroll in the next frame to prevent flicker\n setTimeout(() => {\n this.scrollToActiveMonth();\n });\n }\n\n private get initialYear(): number {\n if (!this.value) {\n return this.today.year;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.year;\n }\n\n return this.value.from.year;\n }\n\n private get initialMonth(): number {\n if (!this.value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.month + (this.value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n return (\n this.value.from.month +\n (this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n private initYearScroll() {\n const {yearsScrollRef} = this;\n\n if (!yearsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchstart',\n );\n const touchend$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n const click$ = typedFromEvent(yearsScrollRef.elementRef.nativeElement, 'click');\n\n // Refresh activeYear\n yearsScrollRef\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n flatMap(x => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(\n yearsScrollRef.measureScrollOffset() / this.yearWidth,\n ) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter(activeYear => activeYear !== this.activeYear),\n takeUntil(this.destroy$),\n )\n .subscribe(activeYear => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race<unknown>(\n yearsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveYear('smooth');\n });\n }\n\n private initMonthScroll() {\n const {monthsScrollRef} = this;\n\n if (!monthsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n\n // Smooth scroll to closest month after scrolling is done\n touchstart$\n .pipe(\n switchMapTo(touchend$),\n switchMapTo(\n race<unknown>(\n monthsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveMonth('smooth');\n });\n }\n\n private scrollToActiveYear(behavior?: ScrollBehavior) {\n if (this.yearsScrollRef) {\n this.yearsScrollRef.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n behavior,\n );\n }\n }\n\n private scrollToActiveMonth(behavior?: ScrollBehavior) {\n if (this.monthsScrollRef) {\n this.monthsScrollRef.scrollToIndex(this.activeMonth, behavior);\n }\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n","import {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRippleModule} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TuiTouchableModule} from '@taiga-ui/addon-mobile/directives/touchable';\nimport {TuiPrimitiveCalendarMobileModule} from '@taiga-ui/addon-mobile/internal/primitive-calendar-mobile';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule, TuiLinkModule, TuiMonthPipeModule} from '@taiga-ui/core';\n\nimport {TuiMobileCalendarComponent} from './mobile-calendar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ScrollingModule,\n TuiTouchableModule,\n TuiRippleModule,\n TuiMapperPipeModule,\n TuiLinkModule,\n TuiPrimitiveCalendarMobileModule,\n TuiButtonModule,\n TuiMonthPipeModule,\n ],\n declarations: [TuiMobileCalendarComponent],\n exports: [TuiMobileCalendarComponent],\n})\nexport class TuiMobileCalendarModule {}\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-addon-mobile-components-mobile-calendar.js","sources":["ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.module.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {MONTHS_IN_YEAR} from '@taiga-ui/cdk';\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\nexport const ANDROID_CYCLE = getCycle(ANDROID_LABEL, ANDROID_WEEK);\nexport const IOS_CYCLE = getCycle(IOS_LABEL, IOS_WEEK);\n\nfunction getCycle(label: number, week: number): ReadonlyArray<readonly number[]> {\n return Array.from({length: YEARLY_CYCLE}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) => label + weekCount(i, month) * week,\n ),\n );\n}\n\nfunction weekCount(year: number, month: number): number {\n const firstOfMonth = new Date(year + STARTING_YEAR, month, 1);\n const lastOfMonth = new Date(year + STARTING_YEAR, month + 1, 0);\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n","import {CdkVirtualScrollViewport, VirtualScrollStrategy} from '@angular/cdk/scrolling';\nimport {MONTHS_IN_YEAR, tuiPure, TuiScrollService} from '@taiga-ui/cdk';\nimport {Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear: number = 28,\n lastMonth: number = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendarComponent} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly index$ = new Subject<number>();\n\n private viewport: CdkVirtualScrollViewport | null = null;\n\n constructor(\n private readonly isIos: boolean,\n private readonly scrollService: TuiScrollService,\n ) {}\n\n @tuiPure\n get scrolledIndexChange(): Observable<number> {\n return this.index$.pipe(distinctUntilChanged());\n }\n\n attach(viewport: CdkVirtualScrollViewport) {\n const cycle = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n detach() {\n this.index$.complete();\n this.viewport = null;\n }\n\n onContentScrolled() {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n onDataLengthChanged() {}\n onContentRendered() {}\n onRenderedOffsetChanged() {}\n\n scrollToIndex(index: number, behavior: ScrollBehavior) {\n if (!this.viewport) {\n return;\n }\n\n const scrollTop = this.getOffsetForIndex(index);\n\n if (behavior !== 'smooth') {\n this.viewport.scrollToOffset(scrollTop, behavior);\n\n return;\n }\n\n this.scrollService\n .scroll$(this.viewport.elementRef.nativeElement, scrollTop)\n .subscribe();\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < cycle[year].length; month++) {\n accumulator += cycle[year][month];\n\n if (accumulator - cycle[year][month] / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIos\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport) {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport {ChangeDetectorRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {\n TUI_IS_IOS,\n TuiDayRange,\n TuiDestroyService,\n TuiScrollService,\n watch,\n} from '@taiga-ui/cdk';\nimport {TUI_CALENDAR_DATA_STREAM} from '@taiga-ui/kit';\nimport {EMPTY, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n 'Stream for updating value',\n);\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiScrollService,\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n deps: [TUI_IS_IOS, TuiScrollService],\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [\n [new Optional(), TUI_CALENDAR_DATA_STREAM],\n TuiDestroyService,\n ChangeDetectorRef,\n ],\n useFactory: valueStreamFactory,\n },\n];\n\nexport function valueStreamFactory(\n value$: Observable<TuiDayRange | null> | null,\n destroy$: Observable<void>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<TuiDayRange | null> {\n return (value$ || EMPTY).pipe(takeUntil(destroy$), watch(changeDetectorRef));\n}\n","import {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n ALWAYS_FALSE_HANDLER,\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_IS_IOS,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDay,\n TuiDayRange,\n tuiDefaultProp,\n TuiDestroyService,\n TuiMapper,\n TuiMonth,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TUI_CLOSE_WORD, TUI_ORDERED_SHORT_WEEK_DAYS} from '@taiga-ui/core';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit';\nimport {Observable, race, timer} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n flatMap,\n map,\n switchMap,\n switchMapTo,\n take,\n takeUntil,\n windowToggle,\n} from 'rxjs/operators';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-mobile-calendar',\n templateUrl: './mobile-calendar.template.html',\n styleUrls: ['./mobile-calendar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n})\nexport class TuiMobileCalendarComponent {\n @ViewChild('yearsScrollRef')\n private readonly yearsScrollRef?: CdkVirtualScrollViewport;\n\n @ViewChild('monthsScrollRef')\n private readonly monthsScrollRef?: CdkVirtualScrollViewport;\n\n private readonly today = TuiDay.currentLocal();\n private activeYear = this.initialYear;\n private activeMonth = this.initialMonth;\n\n @Input()\n @tuiDefaultProp()\n single = true;\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Output()\n readonly cancel = new EventEmitter<void>();\n\n @Output()\n readonly confirm = new EventEmitter<TuiDayRange | TuiDay>();\n\n @HostBinding('class._ios')\n readonly isIOS: boolean;\n\n value: TuiDay | TuiDayRange | null = null;\n\n readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n\n readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n constructor(\n @Inject(TUI_IS_IOS) isIOS: boolean,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(TuiDestroyService)\n private readonly destroy$: TuiDestroyService,\n @Inject(TUI_VALUE_STREAM)\n valueChanges: Observable<TuiDayRange | null>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n @Inject(TUI_CANCEL_WORD) readonly cancelWord$: Observable<string>,\n @Inject(TUI_DONE_WORD) readonly doneWord$: Observable<string>,\n @Inject(TUI_ORDERED_SHORT_WEEK_DAYS)\n readonly weekDays$: Observable<\n [string, string, string, string, string, string, string]\n >,\n @Inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS)\n readonly chooseDayOrRangeTexts$: Observable<[string, string]>,\n ) {\n this.isIOS = isIOS;\n\n valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.value = value;\n });\n }\n\n get yearWidth(): number {\n return this.documentRef.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n ngAfterViewInit() {\n if (!this.monthsScrollRef) {\n return;\n }\n\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.monthsScrollRef.scrolledIndexChange\n .pipe(take(1), takeUntil(this.destroy$))\n .subscribe(() => {\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n this.initYearScroll();\n this.initMonthScroll();\n });\n }\n\n onClose() {\n this.cancel.emit();\n }\n\n onConfirm() {\n if (this.value) {\n this.confirm.emit(this.value);\n } else {\n this.cancel.emit();\n }\n }\n\n onDayClick(day: TuiDay) {\n if (this.single) {\n this.value = day;\n\n return;\n }\n\n if (\n this.value === null ||\n this.value instanceof TuiDay ||\n !this.value.isSingleDay\n ) {\n this.value = new TuiDayRange(day, day);\n\n return;\n }\n\n this.value = TuiDayRange.sort(this.value.from, day);\n }\n\n getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n onMonthChange(month: number) {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n setYear(year: number) {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n // Delay is required to run months scroll in the next frame to prevent flicker\n setTimeout(() => {\n this.scrollToActiveMonth();\n });\n }\n\n readonly disabledItemHandlerMapper: TuiMapper<\n TuiBooleanHandler<TuiDay>,\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min: TuiDay, max: TuiDay) => item =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private get initialYear(): number {\n if (!this.value) {\n return this.today.year;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.year;\n }\n\n return this.value.from.year;\n }\n\n private get initialMonth(): number {\n if (!this.value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.month + (this.value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n return (\n this.value.from.month +\n (this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n private initYearScroll() {\n const {yearsScrollRef} = this;\n\n if (!yearsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchstart',\n );\n const touchend$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n const click$ = typedFromEvent(yearsScrollRef.elementRef.nativeElement, 'click');\n\n // Refresh activeYear\n yearsScrollRef\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n flatMap(x => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(\n yearsScrollRef.measureScrollOffset() / this.yearWidth,\n ) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter(activeYear => activeYear !== this.activeYear),\n takeUntil(this.destroy$),\n )\n .subscribe(activeYear => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race<unknown>(\n yearsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveYear('smooth');\n });\n }\n\n private initMonthScroll() {\n const {monthsScrollRef} = this;\n\n if (!monthsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n\n // Smooth scroll to closest month after scrolling is done\n touchstart$\n .pipe(\n switchMapTo(touchend$),\n switchMapTo(\n race<unknown>(\n monthsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveMonth('smooth');\n });\n }\n\n private scrollToActiveYear(behavior?: ScrollBehavior) {\n if (this.yearsScrollRef) {\n this.yearsScrollRef.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n behavior,\n );\n }\n }\n\n private scrollToActiveMonth(behavior?: ScrollBehavior) {\n if (this.monthsScrollRef) {\n this.monthsScrollRef.scrollToIndex(this.activeMonth, behavior);\n }\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n","import {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRippleModule} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TuiTouchableModule} from '@taiga-ui/addon-mobile/directives/touchable';\nimport {TuiPrimitiveCalendarMobileModule} from '@taiga-ui/addon-mobile/internal/primitive-calendar-mobile';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule, TuiLinkModule, TuiMonthPipeModule} from '@taiga-ui/core';\n\nimport {TuiMobileCalendarComponent} from './mobile-calendar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ScrollingModule,\n TuiTouchableModule,\n TuiRippleModule,\n TuiMapperPipeModule,\n TuiLinkModule,\n TuiPrimitiveCalendarMobileModule,\n TuiButtonModule,\n TuiMonthPipeModule,\n ],\n declarations: [TuiMobileCalendarComponent],\n exports: [TuiMobileCalendarComponent],\n})\nexport class TuiMobileCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __param } from 'tslib';
2
- import { Inject, ElementRef, Component, ChangeDetectionStrategy, InjectionToken, NgZone, Input, ViewChild, ViewChildren, HostListener, ɵɵdefineInjectable, ɵɵinject, Injectable, Output, Directive, ContentChild, ChangeDetectorRef, TemplateRef, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { Inject, ElementRef, Component, ChangeDetectionStrategy, InjectionToken, NgZone, ViewChild, ViewChildren, Input, HostListener, ɵɵdefineInjectable, ɵɵinject, Injectable, Output, Directive, ContentChild, ChangeDetectorRef, TemplateRef, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
3
3
  import { typedFromEvent, tuiZonefree, TuiIdService, TUI_IS_IOS, EMPTY_QUERY, tuiZonefull, tuiPure, clamp, TUI_WINDOW_HEIGHT, TuiDestroyService, tuiDefaultProp, tuiRequiredSetter, TuiLetModule, TuiOverscrollModule } from '@taiga-ui/cdk';
4
4
  import { TUI_CLOSE_WORD, TUI_SCROLL_REF, tuiSlideInTop, tuiZonefulMap, TUI_ANIMATION_OPTIONS, tuiFadeIn, TuiButtonModule, TuiScrollbarModule } from '@taiga-ui/core';
5
5
  import { TUI_MORE_WORD } from '@taiga-ui/kit';
@@ -110,9 +110,9 @@ let TuiSheetComponent = class TuiSheetComponent {
110
110
  this.ngZone = ngZone;
111
111
  this.isIos = isIos;
112
112
  this.moreWord$ = moreWord$;
113
+ this.stopsRefs = EMPTY_QUERY;
113
114
  this.id = '';
114
115
  this.stuck$ = this.scroll$.pipe(map(y => Math.floor(y) > this.contentTop));
115
- this.stopsRefs = EMPTY_QUERY;
116
116
  }
117
117
  get stops() {
118
118
  return this.getStops(this.stopsRefs);
@@ -126,13 +126,13 @@ let TuiSheetComponent = class TuiSheetComponent {
126
126
  get context() {
127
127
  return Object.assign(Object.assign({}, this.item), { scroll$: this.scroll$.pipe(tuiZonefull(this.ngZone)) });
128
128
  }
129
+ onId(id) {
130
+ this.id = id;
131
+ }
129
132
  ngAfterViewInit() {
130
133
  const stops = [...this.stops, this.sheetTop, this.contentTop];
131
134
  this.elementRef.nativeElement.scrollTop = stops[this.item.initial];
132
135
  }
133
- onId(id) {
134
- this.id = id;
135
- }
136
136
  scrollTo(top = this.sheetTop) {
137
137
  const { nativeElement } = this.elementRef;
138
138
  if (this.isIos) {
@@ -161,9 +161,6 @@ TuiSheetComponent.ctorParameters = () => [
161
161
  { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_IOS,] }] },
162
162
  { type: Observable, decorators: [{ type: Inject, args: [TUI_MORE_WORD,] }] }
163
163
  ];
164
- __decorate([
165
- Input()
166
- ], TuiSheetComponent.prototype, "item", void 0);
167
164
  __decorate([
168
165
  ViewChild('sheet')
169
166
  ], TuiSheetComponent.prototype, "sheet", void 0);
@@ -173,6 +170,9 @@ __decorate([
173
170
  __decorate([
174
171
  ViewChildren('stops')
175
172
  ], TuiSheetComponent.prototype, "stopsRefs", void 0);
173
+ __decorate([
174
+ Input()
175
+ ], TuiSheetComponent.prototype, "item", void 0);
176
176
  __decorate([
177
177
  tuiPure
178
178
  ], TuiSheetComponent.prototype, "context", null);
@@ -193,10 +193,11 @@ TuiSheetComponent = __decorate([
193
193
  role: 'dialog',
194
194
  '[attr.aria-labelledby]': 'id',
195
195
  '[class._ios]': 'isIos',
196
+ '[class._stuck]': 'true',
196
197
  '[$.class._stuck]': 'stuck$',
197
198
  '($.class._stuck)': 'stuck$',
198
199
  },
199
- styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;left:0;bottom:0;right:0;transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;top:auto;border-radius:.75rem .75rem 0 0;overflow-y:auto;overflow-x:hidden;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;box-shadow:0 4rem var(--tui-base-01);padding-right:1rem;margin-left:-1rem;transform:scaleX(-1);-webkit-clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0);clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:0 0;width:0;height:0}:host._stuck{-ms-scroll-snap-type:none;scroll-snap-type:none}.t-bumpers{display:flex;height:100%;scroll-snap-align:start;scroll-margin:-1px}:host-context(.t-wrapper_closeable) .t-bumpers{scroll-snap-stop:always}.t-bumper{scroll-snap-stop:always;scroll-snap-align:start;height:1rem}.t-wrapper{border-radius:inherit;pointer-events:auto;scroll-snap-stop:always;scroll-snap-align:start}.t-wrapper_shadow{box-shadow:0 .25rem 1.5rem rgba(0,0,0,.12)}.t-top{box-shadow:0 .25rem 1.5rem rgba(0,0,0,.12);position:sticky;top:0;pointer-events:auto;border-radius:.8rem .8rem 0 0;transform:scaleX(-1);overflow:hidden}.t-top._clickthrough{pointer-events:none}:host-context(._overlay:not(._visible)) .t-top{transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;transform:scaleX(-1)!important}.t-image{display:block;width:100%}.t-sheet{position:relative;border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start;transform:scaleX(-1);box-shadow:0 4rem var(--tui-base-01)}.t-top:not(._rounded)~.t-sheet .t-bar{border-radius:0}.t-bar{transition-property:border-radius;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;position:sticky;top:0;z-index:1;height:1.5rem;margin-bottom:-1.5rem;border-radius:inherit;background:var(--tui-base-01);box-shadow:inset 0 1px rgba(255,255,255,.25)}.t-button{position:absolute;top:0;height:1.5rem;width:3rem;padding:0;border:0;opacity:0}.t-content{padding:0 1rem 1rem;border-radius:inherit;background:var(--tui-base-01)}.t-heading{padding-bottom:.5rem}"]
200
+ styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;left:0;bottom:0;right:0;transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;top:auto;border-radius:.75rem .75rem 0 0;overflow-y:auto;overflow-x:hidden;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;box-shadow:0 4rem var(--tui-base-01);padding-right:1rem;margin-left:-1rem;transform:scaleX(-1);-webkit-clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0);clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:0 0;width:0;height:0}:host._stuck{-ms-scroll-snap-type:none;scroll-snap-type:none}.t-bumpers{display:flex;height:100%}:host-context(.t-wrapper_closeable) .t-bumpers{scroll-snap-stop:always;scroll-snap-align:start;scroll-margin:-1px}.t-bumper{scroll-snap-stop:always;scroll-snap-align:start;height:1rem}.t-wrapper{border-radius:inherit;pointer-events:auto;scroll-snap-stop:always;scroll-snap-align:start}.t-wrapper_shadow{box-shadow:0 .25rem 1.5rem rgba(0,0,0,.12)}.t-top{box-shadow:0 .25rem 1.5rem rgba(0,0,0,.12);position:sticky;top:0;pointer-events:auto;border-radius:.8rem .8rem 0 0;transform:scaleX(-1);overflow:hidden}.t-top._clickthrough{pointer-events:none}:host-context(._overlay:not(._visible)) .t-top{transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;transform:scaleX(-1)!important}.t-image{display:block;width:100%}.t-sheet{position:relative;border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start;transform:scaleX(-1);box-shadow:0 4rem var(--tui-base-01)}.t-top:not(._rounded)~.t-sheet .t-bar{border-radius:0}.t-bar{transition-property:border-radius;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;position:sticky;top:0;z-index:1;height:1.5rem;margin-bottom:-1.5rem;border-radius:inherit;background:var(--tui-base-01);box-shadow:inset 0 1px rgba(255,255,255,.25)}.t-button{position:absolute;top:0;height:1.5rem;width:3rem;padding:0;border:0;opacity:0}.t-content{padding:0 1rem 1rem;border-radius:inherit;background:var(--tui-base-01)}.t-heading{padding-bottom:.5rem}"]
200
201
  }),
201
202
  __param(0, Inject(TUI_SHEET_SCROLL)),
202
203
  __param(1, Inject(ElementRef)),
@@ -317,7 +318,8 @@ TuiSheetsHostComponent = __decorate([
317
318
 
318
319
  // @dynamic
319
320
  let TuiSheetCloseDirective = class TuiSheetCloseDirective {
320
- constructor(dragged$, scroll$, windowRef, elementRef, sheet) {
321
+ constructor(ngZone, dragged$, scroll$, windowRef, elementRef, sheet) {
322
+ this.ngZone = ngZone;
321
323
  this.dragged$ = dragged$;
322
324
  this.scroll$ = scroll$;
323
325
  this.windowRef = windowRef;
@@ -325,7 +327,7 @@ let TuiSheetCloseDirective = class TuiSheetCloseDirective {
325
327
  this.sheet = sheet;
326
328
  this.close = merge(typedFromEvent(this.elementRef.nativeElement, TUI_SHEET_CLOSE), this.dragged$.pipe(startWith(false), switchMap(dragged => dragged
327
329
  ? EMPTY
328
- : this.scroll$.pipe(startWith(this.elementRef.nativeElement.scrollTop))), filter(y => { var _a; return ((_a = this.sheet.item) === null || _a === void 0 ? void 0 : _a.closeable) && this.shouldClose(y); })));
330
+ : this.scroll$.pipe(startWith(this.elementRef.nativeElement.scrollTop))), filter(y => { var _a; return ((_a = this.sheet.item) === null || _a === void 0 ? void 0 : _a.closeable) && this.shouldClose(y); }), distinctUntilChanged(), tuiZonefull(this.ngZone)));
329
331
  }
330
332
  shouldClose(scrollTop) {
331
333
  const min = Math.min(this.elementRef.nativeElement.scrollHeight - this.windowRef.innerHeight, this.sheet.stops[0] || Infinity);
@@ -333,6 +335,7 @@ let TuiSheetCloseDirective = class TuiSheetCloseDirective {
333
335
  }
334
336
  };
335
337
  TuiSheetCloseDirective.ctorParameters = () => [
338
+ { type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
336
339
  { type: Observable, decorators: [{ type: Inject, args: [TUI_SHEET_DRAGGED,] }] },
337
340
  { type: Observable, decorators: [{ type: Inject, args: [TUI_SHEET_SCROLL,] }] },
338
341
  { type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] },
@@ -346,11 +349,12 @@ TuiSheetCloseDirective = __decorate([
346
349
  Directive({
347
350
  selector: 'tui-sheet[close]',
348
351
  }),
349
- __param(0, Inject(TUI_SHEET_DRAGGED)),
350
- __param(1, Inject(TUI_SHEET_SCROLL)),
351
- __param(2, Inject(WINDOW)),
352
- __param(3, Inject(ElementRef)),
353
- __param(4, Inject(TuiSheetComponent))
352
+ __param(0, Inject(NgZone)),
353
+ __param(1, Inject(TUI_SHEET_DRAGGED)),
354
+ __param(2, Inject(TUI_SHEET_SCROLL)),
355
+ __param(3, Inject(WINDOW)),
356
+ __param(4, Inject(ElementRef)),
357
+ __param(5, Inject(TuiSheetComponent))
354
358
  ], TuiSheetCloseDirective);
355
359
 
356
360
  let TuiSheetStopDirective = class TuiSheetStopDirective {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-sheet.js","sources":["ng://@taiga-ui/addon-mobile/components/sheet/ios.hacks.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet-heading/sheet-heading.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet/sheet.providers.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet/sheet.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet-bar/sheet-bar.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet-options.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet.service.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheets-host/sheets-host.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-close/sheet-close.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-stop/sheet-stop.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-top/sheet-top.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet.module.ts","ng://@taiga-ui/addon-mobile/components/sheet/taiga-ui-addon-mobile-components-sheet.ts"],"sourcesContent":["import {NgZone} from '@angular/core';\nimport {tuiZonefree, typedFromEvent} from '@taiga-ui/cdk';\nimport {concat, merge, Observable, race, timer, zip} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n map,\n mapTo,\n share,\n startWith,\n switchMap,\n switchMapTo,\n take,\n takeUntil,\n} from 'rxjs/operators';\n\nexport function iosScrollFactory(\n element: HTMLElement,\n documentRef: Document,\n ngZone: NgZone,\n): Observable<number> {\n const load$ = typedFromEvent(element, 'load', {capture: true});\n const touchstart$ = typedFromEvent(element, 'touchstart', {passive: true});\n const touchmove$ = typedFromEvent(documentRef, 'touchmove', {passive: true});\n const touchend$ = typedFromEvent(documentRef, 'touchend');\n const scroll$ = typedFromEvent(element, 'scroll').pipe(map(() => element.scrollTop));\n const result$ = merge(\n load$.pipe(\n delay(0),\n map(() => element.scrollTop),\n ),\n touchstart$.pipe(\n switchMap(({touches}) => {\n const {screenY} = touches[0];\n const {scrollTop} = element;\n\n return concat(\n // Sometimes touch is triggered without scroll in iOS, filter that\n zip(touchmove$, scroll$).pipe(\n map(([{touches}]) => scrollTop + screenY - touches[0].screenY),\n takeUntil(touchend$),\n ),\n scroll$,\n );\n }),\n ),\n );\n\n return concat(scroll$.pipe(take(1)), result$).pipe(tuiZonefree(ngZone), share());\n}\n\nexport function processDragged(\n dragged$: Observable<boolean>,\n scroll$: Observable<unknown>,\n): Observable<boolean> {\n const touchstart$ = dragged$.pipe(filter(Boolean));\n const touchend$ = dragged$.pipe(filter(v => !v));\n const race$ = race(scroll$, timer(100)).pipe(\n debounceTime(200),\n take(1),\n mapTo(false),\n );\n\n return touchstart$.pipe(\n switchMapTo(touchend$.pipe(switchMapTo(race$), startWith(true))),\n startWith(false),\n );\n}\n\nexport function fakeSmoothScroll({style}: HTMLElement, offset: number) {\n style.transition = 'none';\n style.transform = `scaleX(-1) translate3d(0, ${offset}px, 0)`;\n\n setTimeout(() => {\n style.transition = '';\n style.transform = '';\n });\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {TUI_CLOSE_WORD} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\n\nexport const TUI_SHEET_CLOSE = 'tui-sheet-close';\nexport const TUI_SHEET_ID = 'tui-sheet-id';\n\n@Component({\n selector: '[tuiSheetHeading]',\n templateUrl: 'sheet-heading.template.html',\n styleUrls: ['sheet-heading.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSheetHeadingComponent implements AfterViewInit {\n readonly id = this.idService.generate();\n\n constructor(\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n ) {}\n\n ngAfterViewInit() {\n this.elementRef.nativeElement.dispatchEvent(\n new CustomEvent(TUI_SHEET_ID, {bubbles: true, detail: this.id}),\n );\n }\n\n onClick() {\n this.elementRef.nativeElement.dispatchEvent(\n new CustomEvent(TUI_SHEET_CLOSE, {bubbles: true}),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, NgZone, Provider} from '@angular/core';\nimport {TUI_IS_IOS, tuiZonefree, typedFromEvent} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core';\nimport {merge, Observable} from 'rxjs';\nimport {map, mapTo, share} from 'rxjs/operators';\n\nimport {iosScrollFactory} from '../../ios.hacks';\n\nexport const TUI_SHEET_SCROLL = new InjectionToken<number>(\n 'Current scrollTop of a sheet',\n);\n\nexport const TUI_SHEET_DRAGGED = new InjectionToken<boolean>(\n 'The sheet is being dragged',\n);\n\nexport const TUI_SHEET_OFFSET = new InjectionToken<number>(\n 'Offset from the top at which the sheet stops',\n {\n factory: () => 16,\n },\n);\n\nexport const TUI_SHEET_PROVIDERS: Provider[] = [\n {\n provide: TUI_SHEET_DRAGGED,\n deps: [ElementRef],\n useFactory: sheetDraggedFactory,\n },\n {\n provide: TUI_SHEET_SCROLL,\n deps: [ElementRef, NgZone, DOCUMENT, TUI_IS_IOS],\n useFactory: sheetScrollFactory,\n },\n {\n provide: TUI_SCROLL_REF,\n useExisting: ElementRef,\n },\n];\n\nexport function sheetDraggedFactory({\n nativeElement,\n}: ElementRef<HTMLElement>): Observable<boolean> {\n return merge(\n typedFromEvent(nativeElement, 'touchstart', {passive: true}).pipe(mapTo(true)),\n typedFromEvent(nativeElement, 'touchend').pipe(mapTo(false)),\n );\n}\n\nexport function sheetScrollFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n ngZone: NgZone,\n documentRef: Document,\n isIos: boolean,\n): Observable<number> {\n return isIos\n ? iosScrollFactory(nativeElement, documentRef, ngZone)\n : merge(\n typedFromEvent(nativeElement, 'scroll'),\n typedFromEvent(nativeElement, 'load', {capture: true}),\n ).pipe(\n map(() => nativeElement.scrollTop),\n tuiZonefree(ngZone),\n share(),\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {EMPTY_QUERY, TUI_IS_IOS, tuiPure, tuiZonefull} from '@taiga-ui/cdk';\nimport {tuiSlideInTop} from '@taiga-ui/core';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {fakeSmoothScroll} from '../../ios.hacks';\nimport {TuiSheet} from '../../sheet';\nimport {TUI_SHEET_ID} from '../sheet-heading/sheet-heading.component';\nimport {TUI_SHEET_PROVIDERS, TUI_SHEET_SCROLL} from './sheet.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-sheet',\n templateUrl: 'sheet.template.html',\n styleUrls: ['sheet.style.less'],\n providers: TUI_SHEET_PROVIDERS,\n animations: [tuiSlideInTop],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'dialog',\n '[attr.aria-labelledby]': 'id',\n '[class._ios]': 'isIos',\n '[$.class._stuck]': 'stuck$',\n '($.class._stuck)': 'stuck$',\n },\n})\nexport class TuiSheetComponent<T> implements AfterViewInit {\n @Input()\n item!: TuiSheet<T>;\n\n id = '';\n\n readonly stuck$ = this.scroll$.pipe(map(y => Math.floor(y) > this.contentTop));\n\n @ViewChild('sheet')\n private readonly sheet?: ElementRef<HTMLElement>;\n\n @ViewChild('content')\n private readonly content?: ElementRef<HTMLElement>;\n\n @ViewChildren('stops')\n private readonly stopsRefs: QueryList<ElementRef<HTMLElement>> = EMPTY_QUERY;\n\n constructor(\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(TUI_IS_IOS) readonly isIos: boolean,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n get stops(): readonly number[] {\n return this.getStops(this.stopsRefs);\n }\n\n get imageStop(): number {\n return (this.item.imageSlide && this.stops[this.stops.length - 1]) || 0;\n }\n\n get imageHeight(): number {\n return this.contentTop - this.sheetTop;\n }\n\n @tuiPure\n get context(): TuiSheet<T> {\n return {\n ...this.item,\n scroll$: this.scroll$.pipe(tuiZonefull(this.ngZone)),\n };\n }\n\n ngAfterViewInit() {\n const stops = [...this.stops, this.sheetTop, this.contentTop];\n\n this.elementRef.nativeElement.scrollTop = stops[this.item.initial];\n }\n\n @HostListener(TUI_SHEET_ID, ['$event.detail'])\n onId(id: string) {\n this.id = id;\n }\n\n scrollTo(top: number = this.sheetTop) {\n const {nativeElement} = this.elementRef;\n\n if (this.isIos) {\n fakeSmoothScroll(nativeElement, top - nativeElement.scrollTop - 16);\n }\n\n nativeElement.scrollTo({top, behavior: 'smooth'});\n }\n\n private get contentTop(): number {\n return this.content?.nativeElement.offsetTop ?? Infinity;\n }\n\n private get sheetTop(): number {\n return this.sheet?.nativeElement.offsetTop ?? Infinity;\n }\n\n @tuiPure\n private getStops(stops: QueryList<ElementRef<HTMLElement>>): readonly number[] {\n return stops\n .toArray()\n .map(\n ({nativeElement}) => nativeElement.offsetTop + nativeElement.clientHeight,\n );\n }\n}\n","import {ChangeDetectionStrategy, Component, Inject, NgZone} from '@angular/core';\nimport {clamp} from '@taiga-ui/cdk';\nimport {tuiZonefulMap} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\n\nimport {TuiSheetComponent} from '../sheet/sheet.component';\nimport {TUI_SHEET_SCROLL} from '../sheet/sheet.providers';\n\n@Component({\n selector: 'tui-sheet-bar',\n templateUrl: 'sheet-bar.template.html',\n styleUrls: ['sheet-bar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSheetBarComponent {\n readonly rotate$ = this.scroll$.pipe(\n tuiZonefulMap(y => clamp(10 - (y - this.stop) / 5, 0, 10), this.ngZone),\n );\n\n constructor(\n @Inject(TuiSheetComponent) private readonly sheet: TuiSheetComponent<unknown>,\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(NgZone) private readonly ngZone: NgZone,\n ) {}\n\n private get stop() {\n return this.sheet.stops[0] ?? 0;\n }\n}\n","import {InjectionToken} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiSheet} from './sheet';\n\nexport interface TuiSheetOptions<I = undefined, O = unknown> {\n readonly image: PolymorpheusContent<TuiSheet<O, I>>;\n readonly imageSlide: boolean;\n readonly stops: readonly string[];\n readonly initial: number;\n readonly closeable: boolean;\n readonly overlay: boolean;\n readonly data: I;\n}\n\nexport const TUI_SHEET_DEFAULT_OPTIONS: Omit<TuiSheetOptions, 'data'> = {\n image: '',\n imageSlide: true,\n stops: [],\n initial: 0,\n closeable: true,\n overlay: false,\n};\n\nexport const TUI_SHEET_OPTIONS = new InjectionToken<Omit<TuiSheetOptions, 'data'>>(\n 'Default parameters for sheet component',\n {\n factory: () => TUI_SHEET_DEFAULT_OPTIONS,\n },\n);\n","import {Inject, Injectable} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, EMPTY, Observable} from 'rxjs';\n\nimport {TuiSheet} from './sheet';\nimport {TUI_SHEET_OPTIONS, TuiSheetOptions} from './sheet-options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiSheetService {\n readonly sheets$ = new BehaviorSubject<TuiSheet<any, any>[]>([]);\n\n constructor(@Inject(TUI_SHEET_OPTIONS) private readonly options: TuiSheetOptions) {}\n\n open<G>(\n content: PolymorpheusContent<TuiSheet<G>>,\n options: Partial<TuiSheetOptions> = {},\n ): Observable<G> {\n return new Observable($implicit => {\n const completeWith = (result: G) => {\n $implicit.next(result);\n $implicit.complete();\n };\n const sheet: TuiSheet<any> = {\n ...this.options,\n ...options,\n content,\n completeWith,\n $implicit,\n scroll$: EMPTY,\n };\n\n this.sheets$.next([...this.sheets$.value, sheet]);\n\n return () => {\n this.sheets$.next(this.sheets$.value.filter(item => item !== sheet));\n };\n });\n }\n}\n","import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {TUI_WINDOW_HEIGHT} from '@taiga-ui/cdk';\nimport {TUI_ANIMATION_OPTIONS, tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\n\nimport {TuiSheet} from '../../sheet';\nimport {TuiSheetService} from '../../sheet.service';\nimport {TUI_SHEET_OFFSET} from '../sheet/sheet.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-sheets-host',\n templateUrl: 'sheets-host.template.html',\n styleUrls: ['sheets-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n})\nexport class TuiSheetsHostComponent {\n constructor(\n @Inject(TUI_SHEET_OFFSET) private readonly offset: number,\n @Inject(TUI_ANIMATION_OPTIONS) readonly options: AnimationOptions,\n @Inject(TuiSheetService) readonly service: TuiSheetService,\n @Inject(TUI_WINDOW_HEIGHT) readonly height$: Observable<number>,\n ) {}\n\n close({closeable, $implicit}: TuiSheet<unknown>) {\n if (closeable) {\n $implicit.complete();\n }\n }\n\n getHeight(height: number | null): number {\n return (height ?? 0) - this.offset;\n }\n}\n","import {Directive, ElementRef, Inject, Output} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {typedFromEvent} from '@taiga-ui/cdk';\nimport {EMPTY, merge, Observable} from 'rxjs';\nimport {filter, startWith, switchMap} from 'rxjs/operators';\n\nimport {TuiSheetComponent} from '../../components/sheet/sheet.component';\nimport {\n TUI_SHEET_DRAGGED,\n TUI_SHEET_SCROLL,\n} from '../../components/sheet/sheet.providers';\nimport {TUI_SHEET_CLOSE} from '../../components/sheet-heading/sheet-heading.component';\n\n// @dynamic\n@Directive({\n selector: 'tui-sheet[close]',\n})\nexport class TuiSheetCloseDirective {\n @Output()\n readonly close: Observable<unknown> = merge(\n typedFromEvent(this.elementRef.nativeElement, TUI_SHEET_CLOSE),\n this.dragged$.pipe(\n startWith(false),\n switchMap(dragged =>\n dragged\n ? EMPTY\n : this.scroll$.pipe(\n startWith(this.elementRef.nativeElement.scrollTop),\n ),\n ),\n filter(y => this.sheet.item?.closeable && this.shouldClose(y)),\n ),\n );\n\n constructor(\n @Inject(TUI_SHEET_DRAGGED) private readonly dragged$: Observable<boolean>,\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiSheetComponent) private readonly sheet: TuiSheetComponent<unknown>,\n ) {}\n\n private shouldClose(scrollTop: number): boolean {\n const min = Math.min(\n this.elementRef.nativeElement.scrollHeight - this.windowRef.innerHeight,\n this.sheet.stops[0] || Infinity,\n );\n\n return scrollTop < min / 2;\n }\n}\n","import {Directive, ElementRef, Inject} from '@angular/core';\nimport {TuiDestroyService} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n takeUntil,\n throttleTime,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {\n TUI_SHEET_DRAGGED,\n TUI_SHEET_SCROLL,\n} from '../../components/sheet/sheet.providers';\n\n@Directive({\n selector: '[tuiSheetStop]',\n providers: [TuiDestroyService],\n})\nexport class TuiSheetStopDirective {\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(TuiDestroyService) destroy$: Observable<unknown>,\n @Inject(TUI_SHEET_DRAGGED) dragged$: Observable<boolean>,\n @Inject(TUI_SHEET_SCROLL) scroll$: Observable<number>,\n @Inject(TUI_SCROLL_REF) {nativeElement}: ElementRef<HTMLElement>,\n ) {\n scroll$\n .pipe(\n map(y => Math.floor(y) > elementRef.nativeElement.offsetTop),\n distinctUntilChanged(),\n withLatestFrom(dragged$),\n map(([above, dragged]) => !above && !dragged),\n filter(Boolean),\n throttleTime(100),\n takeUntil(destroy$),\n )\n .subscribe(() => {\n nativeElement.style.overflow = 'hidden';\n nativeElement.classList.remove('_stuck'); // iOS\n nativeElement.scrollTop = elementRef.nativeElement.offsetTop;\n\n setTimeout(() => {\n nativeElement.style.overflow = '';\n }, 100);\n });\n }\n}\n","import {Directive, Inject, Input} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {clamp, tuiDefaultProp} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_SHEET_OFFSET, TUI_SHEET_SCROLL} from '../../components/sheet/sheet.providers';\n\n// So that borders get rounded when image is visible for at least 10px\nconst OFFSET = 10;\n\n// @dynamic\n@Directive({\n selector: '[tuiSheetTop]',\n host: {\n '[$.style.transform]': 'transform$',\n '($.style.transform)': 'transform$',\n '[$.class._rounded]': 'rounded$',\n '($.class._rounded)': 'rounded$',\n '[$.class._clickthrough]': 'clickthrough$',\n '($.class._clickthrough)': 'clickthrough$',\n },\n})\nexport class TuiSheetTopDirective {\n @Input('tuiSheetTop')\n @tuiDefaultProp()\n stop = 0;\n\n readonly transform$ = this.scroll$.pipe(\n map(y => `translateY(${this.getY(y)}%) scaleX(-1)`),\n );\n\n readonly rounded$ = this.scroll$.pipe(map(y => y < this.stop + OFFSET));\n\n readonly clickthrough$ = this.scroll$.pipe(map(y => !!Math.round(this.getY(y))));\n\n constructor(\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(TUI_SHEET_OFFSET) private readonly offset: number,\n @Inject(WINDOW) private readonly windowRef: Window,\n ) {}\n\n private getY(scrollTop: number): number {\n const value = scrollTop - this.stop;\n const total = this.windowRef.innerHeight - this.offset - this.stop;\n\n return this.stop && clamp(100 - (value / total) * 100, 0, 100);\n }\n}\n","import {ContentChild, Directive, Inject} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {clamp, tuiPure} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TuiSheetComponent} from '../../components/sheet/sheet.component';\nimport {\n TUI_SHEET_DRAGGED,\n TUI_SHEET_OFFSET,\n TUI_SHEET_SCROLL,\n} from '../../components/sheet/sheet.providers';\nimport {processDragged} from '../../ios.hacks';\n\n// Safety offset for shadow\nconst OFFSET = 16;\n\n// @dynamic\n@Directive({\n selector: '[tuiSheetWrapper]',\n host: {\n '[$.class._overlay]': 'overlay$',\n '($.class._overlay)': 'overlay$',\n '[$.class._visible]': 'visible$',\n '($.class._visible)': 'visible$',\n '[$.style.height.px]': 'height$',\n '($.style.height.px)': 'height$',\n },\n})\nexport class TuiSheetWrapperDirective {\n // Trying to get overflow: visible as early as possible for Safari\n touched = false;\n\n @ContentChild(TuiSheetComponent)\n private readonly sheet?: TuiSheetComponent<unknown>;\n\n @ContentChild(TuiSheetComponent, {read: TUI_SHEET_DRAGGED})\n private readonly dragged$!: Observable<boolean>;\n\n @ContentChild(TuiSheetComponent, {read: TUI_SHEET_SCROLL})\n private readonly scroll$!: Observable<number>;\n\n constructor(\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_SHEET_OFFSET) private readonly offset: number,\n ) {}\n\n @tuiPure\n get overlay$(): Observable<boolean> {\n return this.scroll$.pipe(\n map(y => y + 16 > this.windowRef.innerHeight - this.offset),\n );\n }\n\n @tuiPure\n get visible$(): Observable<boolean> {\n return processDragged(this.dragged$, this.scroll$);\n }\n\n @tuiPure\n get height$(): Observable<number> {\n return this.scroll$.pipe(map(this.getHeight.bind(this)));\n }\n\n private getHeight(value: number): number {\n return clamp(this.withImage(value) + OFFSET, OFFSET, this.windowRef.innerHeight);\n }\n\n private withImage(value: number): number {\n return !this.sheet?.imageStop || Math.floor(value) > this.sheet.imageStop\n ? value\n : value - this.sheet.imageHeight;\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Inject,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {tuiDefaultProp, tuiRequiredSetter} from '@taiga-ui/cdk';\nimport {PolymorpheusTemplate} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Subject} from 'rxjs';\nimport {endWith, ignoreElements, switchMap} from 'rxjs/operators';\n\nimport {TuiSheet} from './sheet';\nimport {TuiSheetService} from './sheet.service';\nimport {TuiSheetOptions} from './sheet-options';\n\n@Directive({\n selector: 'ng-template[tuiSheet]',\n})\nexport class TuiSheetDirective extends PolymorpheusTemplate<TuiSheet<never>> {\n private readonly open$ = new Subject<boolean>();\n\n @Input('tuiSheetOptions')\n @tuiDefaultProp()\n options: Partial<TuiSheetOptions> = {};\n\n @Input()\n @tuiRequiredSetter()\n set tuiSheet(open: boolean) {\n this.open$.next(open);\n }\n\n @Output()\n tuiSheetChange = this.open$.pipe(\n switchMap(open =>\n open\n ? this.service\n .open(this, this.options)\n .pipe(ignoreElements(), endWith(false))\n : EMPTY,\n ),\n );\n\n constructor(\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TemplateRef) templateRef: TemplateRef<TuiSheet<never>>,\n @Inject(TuiSheetService) private readonly service: TuiSheetService,\n ) {\n super(templateRef, changeDetectorRef);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule, NO_ERRORS_SCHEMA} from '@angular/core';\nimport {TuiLetModule, TuiOverscrollModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule, TuiScrollbarModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiSheetComponent} from './components/sheet/sheet.component';\nimport {TuiSheetBarComponent} from './components/sheet-bar/sheet-bar.component';\nimport {TuiSheetHeadingComponent} from './components/sheet-heading/sheet-heading.component';\nimport {TuiSheetsHostComponent} from './components/sheets-host/sheets-host.component';\nimport {TuiSheetCloseDirective} from './directives/sheet-close/sheet-close.directive';\nimport {TuiSheetStopDirective} from './directives/sheet-stop/sheet-stop.directive';\nimport {TuiSheetTopDirective} from './directives/sheet-top/sheet-top.directive';\nimport {TuiSheetWrapperDirective} from './directives/sheet-wrapper/sheet-wrapper.directive';\nimport {TuiSheetDirective} from './sheet.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiLetModule,\n TuiButtonModule,\n TuiOverscrollModule,\n TuiScrollbarModule,\n ],\n declarations: [\n TuiSheetsHostComponent,\n TuiSheetComponent,\n TuiSheetBarComponent,\n TuiSheetHeadingComponent,\n TuiSheetTopDirective,\n TuiSheetDirective,\n TuiSheetWrapperDirective,\n TuiSheetCloseDirective,\n TuiSheetStopDirective,\n ],\n exports: [\n TuiSheetsHostComponent,\n TuiSheetComponent,\n TuiSheetHeadingComponent,\n TuiSheetDirective,\n ],\n schemas: [NO_ERRORS_SCHEMA],\n})\nexport class TuiSheetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["OFFSET"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-sheet.js","sources":["ng://@taiga-ui/addon-mobile/components/sheet/ios.hacks.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet-heading/sheet-heading.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet/sheet.providers.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet/sheet.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheet-bar/sheet-bar.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet-options.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet.service.ts","ng://@taiga-ui/addon-mobile/components/sheet/components/sheets-host/sheets-host.component.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-close/sheet-close.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-stop/sheet-stop.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-top/sheet-top.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet.directive.ts","ng://@taiga-ui/addon-mobile/components/sheet/sheet.module.ts","ng://@taiga-ui/addon-mobile/components/sheet/taiga-ui-addon-mobile-components-sheet.ts"],"sourcesContent":["import {NgZone} from '@angular/core';\nimport {tuiZonefree, typedFromEvent} from '@taiga-ui/cdk';\nimport {concat, merge, Observable, race, timer, zip} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n map,\n mapTo,\n share,\n startWith,\n switchMap,\n switchMapTo,\n take,\n takeUntil,\n} from 'rxjs/operators';\n\nexport function iosScrollFactory(\n element: HTMLElement,\n documentRef: Document,\n ngZone: NgZone,\n): Observable<number> {\n const load$ = typedFromEvent(element, 'load', {capture: true});\n const touchstart$ = typedFromEvent(element, 'touchstart', {passive: true});\n const touchmove$ = typedFromEvent(documentRef, 'touchmove', {passive: true});\n const touchend$ = typedFromEvent(documentRef, 'touchend');\n const scroll$ = typedFromEvent(element, 'scroll').pipe(map(() => element.scrollTop));\n const result$ = merge(\n load$.pipe(\n delay(0),\n map(() => element.scrollTop),\n ),\n touchstart$.pipe(\n switchMap(({touches}) => {\n const {screenY} = touches[0];\n const {scrollTop} = element;\n\n return concat(\n // Sometimes touch is triggered without scroll in iOS, filter that\n zip(touchmove$, scroll$).pipe(\n map(([{touches}]) => scrollTop + screenY - touches[0].screenY),\n takeUntil(touchend$),\n ),\n scroll$,\n );\n }),\n ),\n );\n\n return concat(scroll$.pipe(take(1)), result$).pipe(tuiZonefree(ngZone), share());\n}\n\nexport function processDragged(\n dragged$: Observable<boolean>,\n scroll$: Observable<unknown>,\n): Observable<boolean> {\n const touchstart$ = dragged$.pipe(filter(Boolean));\n const touchend$ = dragged$.pipe(filter(v => !v));\n const race$ = race(scroll$, timer(100)).pipe(\n debounceTime(200),\n take(1),\n mapTo(false),\n );\n\n return touchstart$.pipe(\n switchMapTo(touchend$.pipe(switchMapTo(race$), startWith(true))),\n startWith(false),\n );\n}\n\nexport function fakeSmoothScroll({style}: HTMLElement, offset: number) {\n style.transition = 'none';\n style.transform = `scaleX(-1) translate3d(0, ${offset}px, 0)`;\n\n setTimeout(() => {\n style.transition = '';\n style.transform = '';\n });\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {TUI_CLOSE_WORD} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\n\nexport const TUI_SHEET_CLOSE = 'tui-sheet-close';\nexport const TUI_SHEET_ID = 'tui-sheet-id';\n\n@Component({\n selector: '[tuiSheetHeading]',\n templateUrl: 'sheet-heading.template.html',\n styleUrls: ['sheet-heading.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSheetHeadingComponent implements AfterViewInit {\n readonly id = this.idService.generate();\n\n constructor(\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n ) {}\n\n ngAfterViewInit() {\n this.elementRef.nativeElement.dispatchEvent(\n new CustomEvent(TUI_SHEET_ID, {bubbles: true, detail: this.id}),\n );\n }\n\n onClick() {\n this.elementRef.nativeElement.dispatchEvent(\n new CustomEvent(TUI_SHEET_CLOSE, {bubbles: true}),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, NgZone, Provider} from '@angular/core';\nimport {TUI_IS_IOS, tuiZonefree, typedFromEvent} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core';\nimport {merge, Observable} from 'rxjs';\nimport {map, mapTo, share} from 'rxjs/operators';\n\nimport {iosScrollFactory} from '../../ios.hacks';\n\nexport const TUI_SHEET_SCROLL = new InjectionToken<number>(\n 'Current scrollTop of a sheet',\n);\n\nexport const TUI_SHEET_DRAGGED = new InjectionToken<boolean>(\n 'The sheet is being dragged',\n);\n\nexport const TUI_SHEET_OFFSET = new InjectionToken<number>(\n 'Offset from the top at which the sheet stops',\n {\n factory: () => 16,\n },\n);\n\nexport const TUI_SHEET_PROVIDERS: Provider[] = [\n {\n provide: TUI_SHEET_DRAGGED,\n deps: [ElementRef],\n useFactory: sheetDraggedFactory,\n },\n {\n provide: TUI_SHEET_SCROLL,\n deps: [ElementRef, NgZone, DOCUMENT, TUI_IS_IOS],\n useFactory: sheetScrollFactory,\n },\n {\n provide: TUI_SCROLL_REF,\n useExisting: ElementRef,\n },\n];\n\nexport function sheetDraggedFactory({\n nativeElement,\n}: ElementRef<HTMLElement>): Observable<boolean> {\n return merge(\n typedFromEvent(nativeElement, 'touchstart', {passive: true}).pipe(mapTo(true)),\n typedFromEvent(nativeElement, 'touchend').pipe(mapTo(false)),\n );\n}\n\nexport function sheetScrollFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n ngZone: NgZone,\n documentRef: Document,\n isIos: boolean,\n): Observable<number> {\n return isIos\n ? iosScrollFactory(nativeElement, documentRef, ngZone)\n : merge(\n typedFromEvent(nativeElement, 'scroll'),\n typedFromEvent(nativeElement, 'load', {capture: true}),\n ).pipe(\n map(() => nativeElement.scrollTop),\n tuiZonefree(ngZone),\n share(),\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {EMPTY_QUERY, TUI_IS_IOS, tuiPure, tuiZonefull} from '@taiga-ui/cdk';\nimport {tuiSlideInTop} from '@taiga-ui/core';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {fakeSmoothScroll} from '../../ios.hacks';\nimport {TuiSheet} from '../../sheet';\nimport {TUI_SHEET_ID} from '../sheet-heading/sheet-heading.component';\nimport {TUI_SHEET_PROVIDERS, TUI_SHEET_SCROLL} from './sheet.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-sheet',\n templateUrl: 'sheet.template.html',\n styleUrls: ['sheet.style.less'],\n providers: TUI_SHEET_PROVIDERS,\n animations: [tuiSlideInTop],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'dialog',\n '[attr.aria-labelledby]': 'id',\n '[class._ios]': 'isIos',\n '[class._stuck]': 'true', // Initially disable snapping for Firefox\n '[$.class._stuck]': 'stuck$',\n '($.class._stuck)': 'stuck$',\n },\n})\nexport class TuiSheetComponent<T> implements AfterViewInit {\n @ViewChild('sheet')\n private readonly sheet?: ElementRef<HTMLElement>;\n\n @ViewChild('content')\n private readonly content?: ElementRef<HTMLElement>;\n\n @ViewChildren('stops')\n private readonly stopsRefs: QueryList<ElementRef<HTMLElement>> = EMPTY_QUERY;\n\n @Input()\n item!: TuiSheet<T>;\n\n id = '';\n\n readonly stuck$ = this.scroll$.pipe(map(y => Math.floor(y) > this.contentTop));\n\n constructor(\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(TUI_IS_IOS) readonly isIos: boolean,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n get stops(): readonly number[] {\n return this.getStops(this.stopsRefs);\n }\n\n get imageStop(): number {\n return (this.item.imageSlide && this.stops[this.stops.length - 1]) || 0;\n }\n\n get imageHeight(): number {\n return this.contentTop - this.sheetTop;\n }\n\n @tuiPure\n get context(): TuiSheet<T> {\n return {\n ...this.item,\n scroll$: this.scroll$.pipe(tuiZonefull(this.ngZone)),\n };\n }\n\n @HostListener(TUI_SHEET_ID, ['$event.detail'])\n onId(id: string) {\n this.id = id;\n }\n\n ngAfterViewInit() {\n const stops = [...this.stops, this.sheetTop, this.contentTop];\n\n this.elementRef.nativeElement.scrollTop = stops[this.item.initial];\n }\n\n scrollTo(top: number = this.sheetTop) {\n const {nativeElement} = this.elementRef;\n\n if (this.isIos) {\n fakeSmoothScroll(nativeElement, top - nativeElement.scrollTop - 16);\n }\n\n nativeElement.scrollTo({top, behavior: 'smooth'});\n }\n\n private get contentTop(): number {\n return this.content?.nativeElement.offsetTop ?? Infinity;\n }\n\n private get sheetTop(): number {\n return this.sheet?.nativeElement.offsetTop ?? Infinity;\n }\n\n @tuiPure\n private getStops(stops: QueryList<ElementRef<HTMLElement>>): readonly number[] {\n return stops\n .toArray()\n .map(\n ({nativeElement}) => nativeElement.offsetTop + nativeElement.clientHeight,\n );\n }\n}\n","import {ChangeDetectionStrategy, Component, Inject, NgZone} from '@angular/core';\nimport {clamp} from '@taiga-ui/cdk';\nimport {tuiZonefulMap} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\n\nimport {TuiSheetComponent} from '../sheet/sheet.component';\nimport {TUI_SHEET_SCROLL} from '../sheet/sheet.providers';\n\n@Component({\n selector: 'tui-sheet-bar',\n templateUrl: 'sheet-bar.template.html',\n styleUrls: ['sheet-bar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSheetBarComponent {\n readonly rotate$ = this.scroll$.pipe(\n tuiZonefulMap(y => clamp(10 - (y - this.stop) / 5, 0, 10), this.ngZone),\n );\n\n constructor(\n @Inject(TuiSheetComponent) private readonly sheet: TuiSheetComponent<unknown>,\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(NgZone) private readonly ngZone: NgZone,\n ) {}\n\n private get stop() {\n return this.sheet.stops[0] ?? 0;\n }\n}\n","import {InjectionToken} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiSheet} from './sheet';\n\nexport interface TuiSheetOptions<I = undefined, O = unknown> {\n readonly image: PolymorpheusContent<TuiSheet<O, I>>;\n readonly imageSlide: boolean;\n readonly stops: readonly string[];\n readonly initial: number;\n readonly closeable: boolean;\n readonly overlay: boolean;\n readonly data: I;\n}\n\nexport const TUI_SHEET_DEFAULT_OPTIONS: Omit<TuiSheetOptions, 'data'> = {\n image: '',\n imageSlide: true,\n stops: [],\n initial: 0,\n closeable: true,\n overlay: false,\n};\n\nexport const TUI_SHEET_OPTIONS = new InjectionToken<Omit<TuiSheetOptions, 'data'>>(\n 'Default parameters for sheet component',\n {\n factory: () => TUI_SHEET_DEFAULT_OPTIONS,\n },\n);\n","import {Inject, Injectable} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, EMPTY, Observable} from 'rxjs';\n\nimport {TuiSheet} from './sheet';\nimport {TUI_SHEET_OPTIONS, TuiSheetOptions} from './sheet-options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiSheetService {\n readonly sheets$ = new BehaviorSubject<TuiSheet<any, any>[]>([]);\n\n constructor(@Inject(TUI_SHEET_OPTIONS) private readonly options: TuiSheetOptions) {}\n\n open<G>(\n content: PolymorpheusContent<TuiSheet<G>>,\n options: Partial<TuiSheetOptions> = {},\n ): Observable<G> {\n return new Observable($implicit => {\n const completeWith = (result: G) => {\n $implicit.next(result);\n $implicit.complete();\n };\n const sheet: TuiSheet<any> = {\n ...this.options,\n ...options,\n content,\n completeWith,\n $implicit,\n scroll$: EMPTY,\n };\n\n this.sheets$.next([...this.sheets$.value, sheet]);\n\n return () => {\n this.sheets$.next(this.sheets$.value.filter(item => item !== sheet));\n };\n });\n }\n}\n","import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {TUI_WINDOW_HEIGHT} from '@taiga-ui/cdk';\nimport {TUI_ANIMATION_OPTIONS, tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\n\nimport {TuiSheet} from '../../sheet';\nimport {TuiSheetService} from '../../sheet.service';\nimport {TUI_SHEET_OFFSET} from '../sheet/sheet.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-sheets-host',\n templateUrl: 'sheets-host.template.html',\n styleUrls: ['sheets-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n})\nexport class TuiSheetsHostComponent {\n constructor(\n @Inject(TUI_SHEET_OFFSET) private readonly offset: number,\n @Inject(TUI_ANIMATION_OPTIONS) readonly options: AnimationOptions,\n @Inject(TuiSheetService) readonly service: TuiSheetService,\n @Inject(TUI_WINDOW_HEIGHT) readonly height$: Observable<number>,\n ) {}\n\n close({closeable, $implicit}: TuiSheet<unknown>) {\n if (closeable) {\n $implicit.complete();\n }\n }\n\n getHeight(height: number | null): number {\n return (height ?? 0) - this.offset;\n }\n}\n","import {Directive, ElementRef, Inject, NgZone, Output} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiZonefull, typedFromEvent} from '@taiga-ui/cdk';\nimport {EMPTY, merge, Observable} from 'rxjs';\nimport {distinctUntilChanged, filter, startWith, switchMap} from 'rxjs/operators';\n\nimport {TuiSheetComponent} from '../../components/sheet/sheet.component';\nimport {\n TUI_SHEET_DRAGGED,\n TUI_SHEET_SCROLL,\n} from '../../components/sheet/sheet.providers';\nimport {TUI_SHEET_CLOSE} from '../../components/sheet-heading/sheet-heading.component';\n\n// @dynamic\n@Directive({\n selector: 'tui-sheet[close]',\n})\nexport class TuiSheetCloseDirective {\n @Output()\n readonly close: Observable<unknown> = merge(\n typedFromEvent(this.elementRef.nativeElement, TUI_SHEET_CLOSE),\n this.dragged$.pipe(\n startWith(false),\n switchMap(dragged =>\n dragged\n ? EMPTY\n : this.scroll$.pipe(\n startWith(this.elementRef.nativeElement.scrollTop),\n ),\n ),\n filter(y => this.sheet.item?.closeable && this.shouldClose(y)),\n distinctUntilChanged(),\n tuiZonefull(this.ngZone),\n ),\n );\n\n constructor(\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(TUI_SHEET_DRAGGED) private readonly dragged$: Observable<boolean>,\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiSheetComponent) private readonly sheet: TuiSheetComponent<unknown>,\n ) {}\n\n private shouldClose(scrollTop: number): boolean {\n const min = Math.min(\n this.elementRef.nativeElement.scrollHeight - this.windowRef.innerHeight,\n this.sheet.stops[0] || Infinity,\n );\n\n return scrollTop < min / 2;\n }\n}\n","import {Directive, ElementRef, Inject} from '@angular/core';\nimport {TuiDestroyService} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core';\nimport {Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n takeUntil,\n throttleTime,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {\n TUI_SHEET_DRAGGED,\n TUI_SHEET_SCROLL,\n} from '../../components/sheet/sheet.providers';\n\n@Directive({\n selector: '[tuiSheetStop]',\n providers: [TuiDestroyService],\n})\nexport class TuiSheetStopDirective {\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(TuiDestroyService) destroy$: Observable<unknown>,\n @Inject(TUI_SHEET_DRAGGED) dragged$: Observable<boolean>,\n @Inject(TUI_SHEET_SCROLL) scroll$: Observable<number>,\n @Inject(TUI_SCROLL_REF) {nativeElement}: ElementRef<HTMLElement>,\n ) {\n scroll$\n .pipe(\n map(y => Math.floor(y) > elementRef.nativeElement.offsetTop),\n distinctUntilChanged(),\n withLatestFrom(dragged$),\n map(([above, dragged]) => !above && !dragged),\n filter(Boolean),\n throttleTime(100),\n takeUntil(destroy$),\n )\n .subscribe(() => {\n nativeElement.style.overflow = 'hidden';\n nativeElement.classList.remove('_stuck'); // iOS\n nativeElement.scrollTop = elementRef.nativeElement.offsetTop;\n\n setTimeout(() => {\n nativeElement.style.overflow = '';\n }, 100);\n });\n }\n}\n","import {Directive, Inject, Input} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {clamp, tuiDefaultProp} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_SHEET_OFFSET, TUI_SHEET_SCROLL} from '../../components/sheet/sheet.providers';\n\n// So that borders get rounded when image is visible for at least 10px\nconst OFFSET = 10;\n\n// @dynamic\n@Directive({\n selector: '[tuiSheetTop]',\n host: {\n '[$.style.transform]': 'transform$',\n '($.style.transform)': 'transform$',\n '[$.class._rounded]': 'rounded$',\n '($.class._rounded)': 'rounded$',\n '[$.class._clickthrough]': 'clickthrough$',\n '($.class._clickthrough)': 'clickthrough$',\n },\n})\nexport class TuiSheetTopDirective {\n @Input('tuiSheetTop')\n @tuiDefaultProp()\n stop = 0;\n\n readonly transform$ = this.scroll$.pipe(\n map(y => `translateY(${this.getY(y)}%) scaleX(-1)`),\n );\n\n readonly rounded$ = this.scroll$.pipe(map(y => y < this.stop + OFFSET));\n\n readonly clickthrough$ = this.scroll$.pipe(map(y => !!Math.round(this.getY(y))));\n\n constructor(\n @Inject(TUI_SHEET_SCROLL) private readonly scroll$: Observable<number>,\n @Inject(TUI_SHEET_OFFSET) private readonly offset: number,\n @Inject(WINDOW) private readonly windowRef: Window,\n ) {}\n\n private getY(scrollTop: number): number {\n const value = scrollTop - this.stop;\n const total = this.windowRef.innerHeight - this.offset - this.stop;\n\n return this.stop && clamp(100 - (value / total) * 100, 0, 100);\n }\n}\n","import {ContentChild, Directive, Inject} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {clamp, tuiPure} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TuiSheetComponent} from '../../components/sheet/sheet.component';\nimport {\n TUI_SHEET_DRAGGED,\n TUI_SHEET_OFFSET,\n TUI_SHEET_SCROLL,\n} from '../../components/sheet/sheet.providers';\nimport {processDragged} from '../../ios.hacks';\n\n// Safety offset for shadow\nconst OFFSET = 16;\n\n// @dynamic\n@Directive({\n selector: '[tuiSheetWrapper]',\n host: {\n '[$.class._overlay]': 'overlay$',\n '($.class._overlay)': 'overlay$',\n '[$.class._visible]': 'visible$',\n '($.class._visible)': 'visible$',\n '[$.style.height.px]': 'height$',\n '($.style.height.px)': 'height$',\n },\n})\nexport class TuiSheetWrapperDirective {\n @ContentChild(TuiSheetComponent)\n private readonly sheet?: TuiSheetComponent<unknown>;\n\n @ContentChild(TuiSheetComponent, {read: TUI_SHEET_DRAGGED})\n private readonly dragged$!: Observable<boolean>;\n\n @ContentChild(TuiSheetComponent, {read: TUI_SHEET_SCROLL})\n private readonly scroll$!: Observable<number>;\n\n // Trying to get overflow: visible as early as possible for Safari\n touched = false;\n\n constructor(\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_SHEET_OFFSET) private readonly offset: number,\n ) {}\n\n @tuiPure\n get overlay$(): Observable<boolean> {\n return this.scroll$.pipe(\n map(y => y + 16 > this.windowRef.innerHeight - this.offset),\n );\n }\n\n @tuiPure\n get visible$(): Observable<boolean> {\n return processDragged(this.dragged$, this.scroll$);\n }\n\n @tuiPure\n get height$(): Observable<number> {\n return this.scroll$.pipe(map(this.getHeight.bind(this)));\n }\n\n private getHeight(value: number): number {\n return clamp(this.withImage(value) + OFFSET, OFFSET, this.windowRef.innerHeight);\n }\n\n private withImage(value: number): number {\n return !this.sheet?.imageStop || Math.floor(value) > this.sheet.imageStop\n ? value\n : value - this.sheet.imageHeight;\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Inject,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {tuiDefaultProp, tuiRequiredSetter} from '@taiga-ui/cdk';\nimport {PolymorpheusTemplate} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Subject} from 'rxjs';\nimport {endWith, ignoreElements, switchMap} from 'rxjs/operators';\n\nimport {TuiSheet} from './sheet';\nimport {TuiSheetService} from './sheet.service';\nimport {TuiSheetOptions} from './sheet-options';\n\n@Directive({\n selector: 'ng-template[tuiSheet]',\n})\nexport class TuiSheetDirective extends PolymorpheusTemplate<TuiSheet<never>> {\n private readonly open$ = new Subject<boolean>();\n\n @Input('tuiSheetOptions')\n @tuiDefaultProp()\n options: Partial<TuiSheetOptions> = {};\n\n @Input()\n @tuiRequiredSetter()\n set tuiSheet(open: boolean) {\n this.open$.next(open);\n }\n\n @Output()\n tuiSheetChange = this.open$.pipe(\n switchMap(open =>\n open\n ? this.service\n .open(this, this.options)\n .pipe(ignoreElements(), endWith(false))\n : EMPTY,\n ),\n );\n\n constructor(\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TemplateRef) templateRef: TemplateRef<TuiSheet<never>>,\n @Inject(TuiSheetService) private readonly service: TuiSheetService,\n ) {\n super(templateRef, changeDetectorRef);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule, NO_ERRORS_SCHEMA} from '@angular/core';\nimport {TuiLetModule, TuiOverscrollModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule, TuiScrollbarModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiSheetComponent} from './components/sheet/sheet.component';\nimport {TuiSheetBarComponent} from './components/sheet-bar/sheet-bar.component';\nimport {TuiSheetHeadingComponent} from './components/sheet-heading/sheet-heading.component';\nimport {TuiSheetsHostComponent} from './components/sheets-host/sheets-host.component';\nimport {TuiSheetCloseDirective} from './directives/sheet-close/sheet-close.directive';\nimport {TuiSheetStopDirective} from './directives/sheet-stop/sheet-stop.directive';\nimport {TuiSheetTopDirective} from './directives/sheet-top/sheet-top.directive';\nimport {TuiSheetWrapperDirective} from './directives/sheet-wrapper/sheet-wrapper.directive';\nimport {TuiSheetDirective} from './sheet.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiLetModule,\n TuiButtonModule,\n TuiOverscrollModule,\n TuiScrollbarModule,\n ],\n declarations: [\n TuiSheetsHostComponent,\n TuiSheetComponent,\n TuiSheetBarComponent,\n TuiSheetHeadingComponent,\n TuiSheetTopDirective,\n TuiSheetDirective,\n TuiSheetWrapperDirective,\n TuiSheetCloseDirective,\n TuiSheetStopDirective,\n ],\n exports: [\n TuiSheetsHostComponent,\n TuiSheetComponent,\n TuiSheetHeadingComponent,\n TuiSheetDirective,\n ],\n schemas: [NO_ERRORS_SCHEMA],\n})\nexport class TuiSheetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["OFFSET"],"mappings":"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"}